Glob_Var.h
上传用户:lkd6667
上传日期:2015-05-13
资源大小:1448k
文件大小:3k
源码类别:

其他数据库

开发平台:

C/C++

  1. #ifndef GLOB_VAR_H
  2. #define GLOB_VAR_H
  3. #include "Buffer.h"
  4. #include <iostream>
  5. using namespace std;
  6. extern char CurLocation[256];
  7. extern char CurRelationName[33];
  8. extern char* ErrorMessage[];
  9. enum MSG {CREATE,SELECT,INSERT,UPDATE,DELETE,DROP,QUIT,
  10.           SHOWDB,SHOWTABLE,USE,HELP,UNORMAL,NEW,DEFAULT,DROPDB};
  11. //I---int  C---char   F---float
  12. enum  Column_Type {I,C,F};    
  13. // >  >=  <  <=  =  !=  between…and…;
  14. enum Operator_Type {B, BE, L, LE, E, NE,BETWEEN,ALL};
  15. /////////////////////////////////////////////////////////////////////////////////////////////
  16. //ptr是块指针,Offset精确定位到块中的具体位置
  17. typedef struct TKey_Location* pKey_Location;
  18. typedef struct TKey_Location
  19. {
  20.   _F_FileAddr ptr ; 
  21.   int     offset; 
  22.   bool operator==(TKey_Location key)
  23.   {
  24.     return (this->ptr == key.ptr && this->offset == key.offset);
  25.   }
  26.   bool operator!=(TKey_Location key)
  27.   {
  28.     if(this->ptr == key.ptr && this->offset == key.offset)
  29.       return false;
  30.     return true;
  31.   }
  32. }Key_Location;
  33. /////////////////////////////////////////////////////////////////////////////////////////////
  34. //支持int,char和float类型
  35. union Column_Value
  36. {
  37.     int    IntValue;
  38.     char*  pCharValue;  
  39.     float  FloatValue;
  40. };   
  41. /////////////////////////////////////////////////////////////////////////////////////////////
  42. //catalog给index的关于选择范围的信息
  43. //使用者:index
  44. typedef struct TKey_Attr* pKey_Attr;
  45. typedef struct TKey_Attr
  46. {
  47.    Column_Value value;
  48.    pKey_Attr next;
  49.    TKey_Attr(){next = NULL;}
  50. }Key_Attr;
  51. typedef  struct TCondtion_Info  
  52. {     
  53. Operator_Type OperType;
  54. pKey_Attr min;
  55. pKey_Attr max;
  56. TCondtion_Info(){
  57. min = NULL;
  58. max = NULL;
  59. OperType = B;
  60. }
  61. }Condition_Info;
  62. /////////////////////////////////////////////////////////////////////////////////////////////
  63. //Catalog得出的关于选择需要的字段信息
  64. //使用者:Record
  65. typedef struct TSelect_Cell
  66. {
  67. char ColumnName[32];
  68. Column_Type ColType;
  69. int PriorLength;
  70. int ColLength;
  71. TSelect_Cell* next;
  72. TSelect_Cell():PriorLength(0),ColLength(0),ColType(I) 
  73. {
  74. this->next = NULL;
  75. strcpy(this->ColumnName,"");
  76. }
  77. }Select_Cell;
  78. class Select_Rec_Info
  79. {
  80. public:
  81. Select_Cell* head;
  82. int ColumnNum;
  83.     int             RecordLength;
  84. Select_Rec_Info():ColumnNum(0) {this->head=NULL;}
  85. ~Select_Rec_Info(){};
  86. };
  87. /////////////////////////////////////////////////////////////////////////////////////////////
  88. //Catalog将待插入记录填完整后形成的完整的记录信息
  89. //使用者:Record
  90. typedef  struct TCell_Info
  91. {
  92. Column_Type    ColType;
  93. Column_Value value;
  94. int  PriorLength;
  95. int ColLength;
  96. TCell_Info* next;
  97. TCell_Info(){
  98. next = NULL;
  99. ColType = I;
  100. PriorLength = 0;
  101. ColLength = 0;
  102. }
  103. }Cell_Info;
  104. class Rec_Info
  105. {
  106. public:
  107. Cell_Info*  head;
  108. int     ColNum;
  109. int     RecordLength;
  110.   Rec_Info(){
  111. head = NULL;
  112. ColNum = 0;
  113. }
  114. ~Rec_Info(){};
  115. };
  116. #endif  //GLOB_BAR_H