#define MAX_COL_LENGTH 8 #define TABLE_ALREADY_EXISTS -200 #define BAD_COL_LENGTH -201 #define BAD_COL_TYPE -202 #define BAD_COL_NAME -203 #define NO_SUCH_TABLE -204 #define NO_SUCH_COLUMN -205 #define NULL_VALUE -206 #define END_OF_SCAN -207 #define NOT_ON_ROW -208 typedef enum {INT_COL,CHAR_COL} colType_t; typedef struct { char name[MAX_COL_LENGTH]; colType_t col_type; int col_len; } colRec_t; typedef struct { char *col_name; int is_null; colType_t type; union { char *char_val; int int_val; } u; } valRec_t; struct scanDesc_t; int CreateTable(char *table_name, int num_cols, colRec_t *atts); int GetNumColumns(char *table_name, int *num_cols); int GetColumnNames(char *table_name,char *names[]); int GetColumnTypes(char *table_name,colType_t types[]); int GetColumnLength(char *table_name,int col_num, int *col_len); int GetColumnNum(char *table_name,char *col_name, int *col_num); int InsertRow(char *table_name, int num_vals, valRec_t *vals); int ScanBegin(char *table_name, struct scanDesc_t **scan); int ScanNext(struct scanDesc_t *scan); int ScanUpdate(struct scanDesc_t *scan, int num_vals, valRec_t *vals); int ScanDelete(struct scanDesc_t *scan); int ScanEnd(struct scanDesc_t *scan); int GetString(struct scanDesc_t *scan, char *col_name, char **val); int GetString2(struct scanDesc_t *scan, int col_num, char **val); int GetInteger(struct scanDesc_t *scan, char *col_name, int *val); int GetInteger2(struct scanDesc_t *scan, int col_num, int *val);