00001
00002
00003
00004
00005
00006
00015 #ifndef DICTOBJCONTINFO_H
00016 #define DICTOBJCONTINFO_H
00017
00018
00019 #include <string>
00020 #include <map>
00021
00022 #include "Serializer.h"
00023 #include "rcsb_types.h"
00024
00025 using std::string;
00026 using std::pair;
00027 using std::map;
00028
00041 class ObjContInfo
00042 {
00043 public:
00044 static const string CIF_DDL_CATEGORY_BLOCK;
00045 static const string CIF_DDL_CATEGORY_DATABLOCK;
00046 static const string CIF_DDL_CATEGORY_DATABLOCK_METHODS;
00047 static const string CIF_DDL_CATEGORY_ITEM;
00048 static const string CIF_DDL_CATEGORY_ITEM_LINKED;
00049 static const string CIF_DDL_CATEGORY_CATEGORY;
00050 static const string CIF_DDL_CATEGORY_CATEGORY_EXAMPLES;
00051 static const string CIF_DDL_CATEGORY_NDB_CATEGORY_EXAMPLES;
00052 static const string CIF_DDL_CATEGORY_CATEGORY_KEY;
00053 static const string CIF_DDL_CATEGORY_CATEGORY_GROUP;
00054 static const string CIF_DDL_CATEGORY_CATEGORY_GROUP_LIST;
00055 static const string CIF_DDL_CATEGORY_CATEGORY_METHODS;
00056 static const string CIF_DDL_CATEGORY_SUB_CATEGORY;
00057 static const string CIF_DDL_CATEGORY_SUB_CATEGORY_EXAMPLES;
00058 static const string CIF_DDL_CATEGORY_SUB_CATEGORY_METHODS;
00059 static const string CIF_DDL_CATEGORY_ITEM_SUB_CATEGORY;
00060 static const string CIF_DDL_CATEGORY_ITEM_TYPE;
00061 static const string CIF_DDL_CATEGORY_ITEM_TYPE_CONDITIONS;
00062 static const string CIF_DDL_CATEGORY_ITEM_METHODS;
00063 static const string CIF_DDL_CATEGORY_ITEM_TYPE_LIST;
00064 static const string CIF_DDL_CATEGORY_ITEM_STRUCTURE;
00065 static const string CIF_DDL_CATEGORY_ITEM_STRUCTURE_LIST;
00066 static const string CIF_DDL_CATEGORY_ITEM_DESCRIPTION;
00067 static const string CIF_DDL_CATEGORY_NDB_ITEM_DESCRIPTION;
00068 static const string CIF_DDL_CATEGORY_NDB_CATEGORY_DESCRIPTION;
00069 static const string CIF_DDL_CATEGORY_ITEM_EXAMPLES;
00070 static const string CIF_DDL_CATEGORY_NDB_ITEM_EXAMPLES;
00071 static const string CIF_DDL_CATEGORY_ITEM_DEPENDENT;
00072 static const string CIF_DDL_CATEGORY_ITEM_RELATED;
00073 static const string CIF_DDL_CATEGORY_ITEM_RANGE;
00074 static const string CIF_DDL_CATEGORY_ITEM_ENUMERATION;
00075 static const string CIF_DDL_CATEGORY_NDB_ITEM_ENUMERATION;
00076 static const string CIF_DDL_CATEGORY_ITEM_DEFAULT;
00077 static const string CIF_DDL_CATEGORY_ITEM_ALIASES;
00078 static const string CIF_DDL_CATEGORY_DICTIONARY;
00079 static const string CIF_DDL_CATEGORY_DICTIONARY_HISTORY;
00080 static const string CIF_DDL_CATEGORY_ITEM_UNITS;
00081 static const string CIF_DDL_CATEGORY_ITEM_UNITS_LIST;
00082 static const string CIF_DDL_CATEGORY_ITEM_UNITS_CONVERSION;
00083 static const string CIF_DDL_CATEGORY_METHOD_LIST;
00084
00085 static const string CIF_DDL_ITEM_ID;
00086 static const string CIF_DDL_ITEM_CATEGORY_ID;
00087 static const string CIF_DDL_ITEM_SUB_CATEGORY_ID;
00088 static const string CIF_DDL_ITEM_METHOD_ID;
00089 static const string CIF_DDL_ITEM_PARENT_NAME;
00090 static const string CIF_DDL_ITEM_CHILD_NAME;
00091 static const string CIF_DDL_ITEM_ALIAS_NAME;
00092 static const string CIF_DDL_ITEM_DICTIONARY;
00093 static const string CIF_DDL_ITEM_TITLE;
00094 static const string CIF_DDL_ITEM_VERSION;
00095 static const string CIF_DDL_ITEM_NAME;
00096 static const string CIF_DDL_ITEM_CODE;
00097 static const string CIF_DDL_ITEM_PRIMITIVE_CODE;
00098 static const string CIF_DDL_ITEM_CONSTRUCT;
00099 static const string CIF_DDL_ITEM_ORGANIZATION;
00100 static const string CIF_DDL_ITEM_INDEX;
00101 static const string CIF_DDL_ITEM_DIMENSION;
00102 static const string CIF_DDL_ITEM_DATABLOCK_ID;
00103 static const string CIF_DDL_ITEM_DESCRIPTION;
00104 static const string CIF_DDL_ITEM_NDB_DESCRIPTION;
00105 static const string CIF_DDL_ITEM_CASE;
00106 static const string CIF_DDL_ITEM_MANDATORY_CODE;
00107 static const string CIF_DDL_ITEM_DETAIL;
00108 static const string CIF_DDL_ITEM_MAXIMUM;
00109 static const string CIF_DDL_ITEM_MINIMUM;
00110 static const string CIF_DDL_ITEM_VALUE;
00111 static const string CIF_DDL_ITEM_DEPENDENT_NAME;
00112 static const string CIF_DDL_ITEM_RELATED_NAME;
00113 static const string CIF_DDL_ITEM_FUNCTION_CODE;
00114 static const string CIF_DDL_ITEM_OFFSET;
00115 static const string CIF_DDL_ITEM_OPERATOR;
00116 static const string CIF_DDL_ITEM_FACTOR;
00117 static const string CIF_DDL_ITEM_FROM_CODE;
00118 static const string CIF_DDL_ITEM_TO_CODE;
00119 static const string CIF_DDL_ITEM_UPDATE;
00120 static const string CIF_DDL_ITEM_REVISION;
00121 static const string CIF_DDL_ITEM_INLINE;
00122 static const string CIF_DDL_ITEM_LANGUAGE;
00123 static const string CIF_DDL_ITEM_PARENT_ID;
00124
00130 class Item
00131 {
00132 public:
00133 string descr;
00134 string itemName;
00135 };
00136
00142 class Cat
00143 {
00144 public:
00145 string catName;
00146 string col1;
00147 bool nonDefaultValue;
00148 bool inheritance;
00149 vector<Item> items;
00150 };
00151
00152 string _objContInfoDescr;
00153
00154 vector<Cat> _cats;
00155
00156 map<pair<string, string>, pair<unsigned int, unsigned int> > _catMap;
00157
00162 ObjContInfo();
00163
00168 void AddCat(const string& catName, const string& col1,
00169 const bool nonDefaultValue = false, const bool inheritance = false);
00170
00175 void AddItem(const string& descr, const string& itemName);
00176
00181 unsigned int GetItemIndex(const string& catName,
00182 const string& itemName) const;
00183
00188 pair<unsigned int, unsigned int> GetItemIndices(
00189 const string& catName, const string& itemName) const;
00190
00195 ~ObjContInfo();
00196
00197 private:
00198 vector<Cat>::iterator currCat;
00199 };
00200
00201
00208 class DictObjContInfo : public ObjContInfo
00209 {
00210 public:
00211 DictObjContInfo();
00212 };
00213
00214
00221 class CatObjContInfo : public ObjContInfo
00222 {
00223 public:
00224 CatObjContInfo();
00225 };
00226
00227
00234 class SubcatObjContInfo : public ObjContInfo
00235 {
00236 public:
00237 SubcatObjContInfo();
00238 };
00239
00240
00247 class ItemObjContInfo : public ObjContInfo
00248 {
00249 public:
00250 ItemObjContInfo();
00251 };
00252
00253
00254 extern class DictObjContInfo RcsbDict;
00255 extern class CatObjContInfo RcsbCat;
00256 extern class SubcatObjContInfo RcsbSubcat;
00257 extern class ItemObjContInfo RcsbItem;
00258
00259
00260 #endif // DICTOBJCONTINFO_H