00001 #pragma once
00002 #ifndef __SYSTAB_UTIL_H__
00003 #define __SYSTAB_UTIL_H__
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "cslib/CSLog.h"
00027
00028
00029 class SysTabRec: public CSRefStringBuffer {
00030 void logError(const char *text = NULL);
00031
00032 bool findRecord();
00033
00034 bool badRecord;
00035
00036 uint32_t recordLength, start_of_record;
00037
00038 public:
00039 const char *db_name, *file_name, *table_name;
00040 char *ptr, *end_of_record, *end_of_data;
00041
00042 SysTabRec(const char *db_name_arg, const char *file_name_arg, const char *table_name_arg):
00043 CSRefStringBuffer(64),
00044 badRecord(false),
00045 recordLength(0),
00046 start_of_record(0),
00047 db_name(db_name_arg),
00048 file_name(file_name_arg),
00049 table_name(table_name_arg),
00050 ptr(NULL),
00051 end_of_record(NULL),
00052 end_of_data(NULL)
00053 {
00054 }
00055
00056
00057 bool firstRecord();
00058 bool nextRecord();
00059 void resetRecord();
00060
00061 uint8_t getInt1Field();
00062 uint32_t getInt4Field();
00063 const char *getStringField();
00064
00065 bool isValidRecord()
00066 {
00067 return ((ptr == end_of_record) && !badRecord);
00068 }
00069
00070
00071 void clear();
00072 void beginRecord();
00073 void endRecord();
00074 void setInt1Field(uint8_t val);
00075 void setInt4Field(uint32_t val);
00076 void setStringField(const char *val);
00077 void setStringField(const char *val, uint32_t len);
00078
00079
00080 };
00081
00082 CSString *getPBMSPath(CSString *db_path);
00083 CSPath *getSysFile(CSString *db_path, const char *name, size_t min_size);
00084
00085 #endif // __SYSTAB_UTIL_H__
00086