type.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. #include <ecpgtype.h>
  2. struct ECPGtype;
  3. struct ECPGstruct_member
  4. {
  5. char    *name;
  6. struct ECPGtype *typ;
  7. struct ECPGstruct_member *next;
  8. };
  9. struct ECPGtype
  10. {
  11. enum ECPGttype typ;
  12. long size; /* For array it is the number of elements.
  13.  * For varchar it is the maxsize of the
  14.  * area. */
  15. union
  16. {
  17. struct ECPGtype *element; /* For an array this is the type
  18.  * of the element */
  19. struct ECPGstruct_member *members;
  20. /* A pointer to a list of members. */
  21. } u;
  22. };
  23. /* Everything is malloced. */
  24. void ECPGmake_struct_member(char *, struct ECPGtype *, struct ECPGstruct_member **);
  25. struct ECPGtype *ECPGmake_simple_type(enum ECPGttype, long);
  26. struct ECPGtype *ECPGmake_varchar_type(enum ECPGttype, long);
  27. struct ECPGtype *ECPGmake_array_type(struct ECPGtype *, long);
  28. struct ECPGtype *ECPGmake_struct_type(struct ECPGstruct_member *, enum ECPGttype type);
  29. struct ECPGstruct_member *ECPGstruct_member_dup(struct ECPGstruct_member *);
  30. /* Frees a type. */
  31. void ECPGfree_struct_member(struct ECPGstruct_member *);
  32. void ECPGfree_type(struct ECPGtype *);
  33. /* Dump a type.
  34.    The type is dumped as:
  35.    type-tag <comma> reference-to-variable <comma> arrsize <comma> size <comma>
  36.    Where:
  37.    type-tag is one of the simple types or varchar.
  38.    reference-to-variable can be a reference to a struct element.
  39.    arrsize is the size of the array in case of array fetches. Otherwise 0.
  40.    size is the maxsize in case it is a varchar. Otherwise it is the size of
  41.    the variable (required to do array fetches of structs).
  42.  */
  43. void ECPGdump_a_type(FILE *, const char *, struct ECPGtype *, const char *, struct ECPGtype *, const char *, const char *);
  44. /* A simple struct to keep a variable and its type. */
  45. struct ECPGtemp_type
  46. {
  47. struct ECPGtype *typ;
  48. const char *name;
  49. };
  50. extern const char *ECPGtype_name(enum ECPGttype typ);
  51. /* some stuff for whenever statements */
  52. enum WHEN_TYPE
  53. {
  54. W_NOTHING,
  55. W_CONTINUE,
  56. W_BREAK,
  57. W_SQLPRINT,
  58. W_GOTO,
  59. W_DO,
  60. W_STOP
  61. };
  62. struct when
  63. {
  64. enum WHEN_TYPE code;
  65. char    *command;
  66. char    *str;
  67. };
  68. struct index
  69. {
  70. int index1;
  71. int index2;
  72. char    *str;
  73. };
  74. struct this_type
  75. {
  76. enum ECPGttype type_enum;
  77. char    *type_str;
  78. int type_dimension;
  79. int type_index;
  80. };
  81. struct _include_path
  82. {
  83. char    *path;
  84. struct _include_path *next;
  85. };
  86. struct cursor
  87. {
  88. char    *name;
  89. char    *command;
  90. char    *connection;
  91. struct arguments *argsinsert;
  92. struct arguments *argsresult;
  93. struct cursor *next;
  94. };
  95. struct typedefs
  96. {
  97. char    *name;
  98. struct this_type *type;
  99. struct ECPGstruct_member *struct_member_list;
  100. struct typedefs *next;
  101. };
  102. struct _defines
  103. {
  104. char    *old;
  105. char    *new;
  106. struct _defines *next;
  107. };
  108. /* This is a linked list of the variable names and types. */
  109. struct variable
  110. {
  111. char    *name;
  112. struct ECPGtype *type;
  113. int brace_level;
  114. struct variable *next;
  115. };
  116. struct arguments
  117. {
  118. struct variable *variable;
  119. struct variable *indicator;
  120. struct arguments *next;
  121. };