File: table.h

package info (click to toggle)
craft 3.5-10
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 18,000 kB
  • ctags: 1,602
  • sloc: cpp: 3,794; makefile: 2,319; ansic: 857; sh: 385
file content (147 lines) | stat: -rw-r--r-- 5,035 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#ifndef table_h
#define table_h
 
/*======================================================================*/
/*= CHANGES AND UPDATES                                                =*/
/*======================================================================*/
/*= date   person file       subject                                   =*/
/*=--------------------------------------------------------------------=*/
/*=                                                                    =*/
/*= 260493 hua    table.h    created                                   =*/
/*=                                                                    =*/
/*======================================================================*/

#include "stdlib.h"
#include "stdio.h"
#include "string.h"

#include "errorhandling.h"
#include "xfile.h"
#include "lru.h"

#include "bool.h"
#include "io.h"
#include "objects.h"

/*----------------------------------------------------------------------*/
/* CLASS table (deklarations)                                           */
/*----------------------------------------------------------------------*/

#define max_columns      20
#define max_rows      10000
#define rows_per_grab    10

#define col_type_int    1
#define col_type_float  2
#define col_type_text   3
#define col_type_point  4
#define col_type_cube   5
#define col_type_config 6
#define col_type_vector 7
#define col_type_plane  8

#define no_lru_candidate -1

class table
  {public : 

     int  number_of_columns;
     int  number_of_rows;
     int  column_length;
     int  id;
     int  data_size;
     bool was_write_access;
     bool is_lru;
     int  row_no;
 
     lru  *lru_queue;
     int  lru_size;
     int  column_type  [max_columns];
     int  column_size  [max_columns];
     char column_name  [max_columns][128];
     int  column_index [max_columns];
     char *data;

     char name [128];
     char dir  [128];

     table  (char dir [], char name [], bool &is_new, int lru_size = 0);
     ~table ();

     void  check_bound (int adr, int row_no, int column_no, char action []);
     void  save        ();
     void  load        ();

     void  rename      (char  new_dir [], char new_name []);
     void  rename      (char  new_name []);
     void  copy        (table *destination); 

     int   add_column  (char name [], int type);
     int   column_no   (char name []);
     int   num_columns (); 

     int   candidate   (bool &with_remove);
     int   freshest    (int no);
     int   num_rows    ();
     int   add_row     ();
     int   insert_row  (int row_no);
     void  delete_row  (int row_no);
     void  clear       ();
     void  access_row  (int row_no);
    

     int    read_int    (int row_no, int column_no);
     float  read_float  (int row_no, int column_no);
     char*  read_text   (int row_no, int column_no);
     point  read_point  (int row_no, int column_no);
     plane  read_plane  (int row_no, int column_no);
     cube   read_cube   (int row_no, int column_no);
     config read_config (int row_no, int column_no);
     vector read_vector (int row_no, int column_no);

     void  write       (int row_no, int column_no, int    value);
     void  write       (int row_no, int column_no, float  value);
     void  write       (int row_no, int column_no, double value);
     void  write       (int row_no, int column_no, char   value []);
     void  write       (int row_no, int column_no, point  value);
     void  write       (int row_no, int column_no, plane  value);
     void  write       (int row_no, int column_no, cube   value);
     void  write       (int row_no, int column_no, config value);
     void  write       (int row_no, int column_no, vector value);

     int   append      (int column_no, int    value);
     int   append      (int column_no, float  value);
     int   append      (int column_no, double value);
     int   append      (int column_no, char   value []);
     int   append      (int column_no, point  value);
     int   append      (int column_no, plane  value);
     int   append      (int column_no, cube   value);
     int   append      (int column_no, config value);
     int   append      (int column_no, vector value);

 };

/*----------------------------------------------------------------------*/
/* MODULE table handler (deklarations)                                  */
/*----------------------------------------------------------------------*/

#define resident        0
#define paged           1
#define max_open_tables 5000

void open_table_handler  (char global_table_dir [], 
                          char local_table_dir  []);
void close_table_handler (bool flush_buffers);
void dump_table_handler  ();
void flush_table_handler ();

bool  table_exists (char dir [], char name []);
table *table_open  (char name [],
                    bool &is_new,
                    int  paging_mode = paged,
                    int  lru_size    = 0);
void  table_close  (table *);
void  table_rename (table *t, char new_name []);
void  table_delete (table *t);

#endif