00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef __RECORD_H
00015 #define __RECORD_H
00016
00017 #include <string>
00018 #include <map>
00019 #include <list>
00020 using namespace std;
00021
00022 #include "field.h"
00023
00024 #define loopRecordFields(r,v) loopSingle((r)->listFields(),v,class field,list)
00025
00026 class record {
00027 string name;
00028 map<string,class field> fields;
00029 int maxFields;
00030 bool relations;
00031 bool main;
00032 bool named;
00033 bool ordered;
00034 string idField;
00035 public:
00036 record();
00037
00038
00039 const string getName() const;
00040 void setName(const string v);
00041
00042
00043 class field& getFields(const string v);
00044 list<class field>& listFields();
00045 void setFields(class field &v);
00046 void delFields(const string v);
00047 const bool isFields(const string v) const;
00048
00049
00050 const bool getRelations() const;
00051 void setRelations(const bool v);
00052
00053
00054 const bool getMain() const;
00055 void setMain(const bool v);
00056
00057
00058 const bool getNamed() const;
00059 void setNamed(const bool v);
00060
00061
00062 const bool getOrdered() const;
00063 void setOrdered(const bool v);
00064
00065
00066 const string getIdField() const;
00067 void setIdField(const string v);
00068
00069 void xml(ofstream &f, int l=0, int r=0);
00070 };
00071
00072
00073
00074 #define loopRecords(v) loopMap(record_repo.listRecord(),v,class record)
00075
00076 class recordRepository {
00077 map<string,record> records;
00078 public:
00079 class record& getRecord(const string v);
00080 void setRecord(class record& v);
00081 map<string,class record>& listRecord();
00082 void delRecord(const string v);
00083 const bool isRecord(const string v) const;
00084 };
00085
00086 extern recordRepository record_repo;
00087
00088 #endif // __RECORD_H