CifReorganizerBase.h

Go to the documentation of this file.
00001 //$$FILE$$
00002 //$$VERSION$$
00003 //$$DATE$$
00004 //$$LICENSE$$
00005 
00006 
00007 #ifndef CIF_REORGANIZER_BASE_H
00008 #define CIF_REORGANIZER_BASE_H
00009 
00010 #include <map>
00011 
00012 #include "FileNavigator.h"
00013 #include "FileNavigatorError.h"
00014 
00015 
00016 class DdlContInfo
00017 {
00018   protected:
00019     class DdlItem
00020     {
00021       public:
00022         string descr;
00023         string ddlItemName;
00024     };
00025 
00026     class DdlCat
00027     {
00028       public:
00029         string ddlCatName;
00030         string col1;
00031         bool nonDefaultValue;
00032         bool inheritance;
00033         vector<DdlItem> ddlItems;
00034     };
00035 
00036   private:
00037     vector<DdlCat>::iterator currDdlCat;
00038 
00039   public:
00040     static const string CIF_DDL_CATEGORY_BLOCK;
00041     static const string CIF_DDL_CATEGORY_DATABLOCK;
00042     static const string CIF_DDL_CATEGORY_DATABLOCK_METHODS;
00043     static const string CIF_DDL_CATEGORY_ITEM;
00044     static const string CIF_DDL_CATEGORY_ITEM_LINKED;
00045     static const string CIF_DDL_CATEGORY_CATEGORY;
00046     static const string CIF_DDL_CATEGORY_CATEGORY_EXAMPLES;
00047     static const string CIF_DDL_CATEGORY_NDB_CATEGORY_EXAMPLES;
00048     static const string CIF_DDL_CATEGORY_CATEGORY_KEY;
00049     static const string CIF_DDL_CATEGORY_CATEGORY_GROUP;
00050     static const string CIF_DDL_CATEGORY_CATEGORY_GROUP_LIST;
00051     static const string CIF_DDL_CATEGORY_CATEGORY_METHODS;
00052     static const string CIF_DDL_CATEGORY_SUB_CATEGORY;
00053     static const string CIF_DDL_CATEGORY_SUB_CATEGORY_EXAMPLES;
00054     static const string CIF_DDL_CATEGORY_SUB_CATEGORY_METHODS;
00055     static const string CIF_DDL_CATEGORY_ITEM_SUB_CATEGORY;
00056     static const string CIF_DDL_CATEGORY_ITEM_TYPE;
00057     static const string CIF_DDL_CATEGORY_ITEM_TYPE_CONDITIONS;
00058     static const string CIF_DDL_CATEGORY_ITEM_METHODS;
00059     static const string CIF_DDL_CATEGORY_ITEM_TYPE_LIST;
00060     static const string CIF_DDL_CATEGORY_ITEM_STRUCTURE;
00061     static const string CIF_DDL_CATEGORY_ITEM_STRUCTURE_LIST;
00062     static const string CIF_DDL_CATEGORY_ITEM_DESCRIPTION;
00063     static const string CIF_DDL_CATEGORY_NDB_ITEM_DESCRIPTION;
00064     static const string CIF_DDL_CATEGORY_NDB_CATEGORY_DESCRIPTION;
00065     static const string CIF_DDL_CATEGORY_ITEM_EXAMPLES;
00066     static const string CIF_DDL_CATEGORY_NDB_ITEM_EXAMPLES;
00067     static const string CIF_DDL_CATEGORY_ITEM_DEPENDENT;
00068     static const string CIF_DDL_CATEGORY_ITEM_RELATED;
00069     static const string CIF_DDL_CATEGORY_ITEM_RANGE;
00070     static const string CIF_DDL_CATEGORY_ITEM_ENUMERATION;
00071     static const string CIF_DDL_CATEGORY_NDB_ITEM_ENUMERATION;
00072     static const string CIF_DDL_CATEGORY_ITEM_DEFAULT;
00073     static const string CIF_DDL_CATEGORY_ITEM_ALIASES;
00074     static const string CIF_DDL_CATEGORY_DICTIONARY;
00075     static const string CIF_DDL_CATEGORY_DICTIONARY_HISTORY;
00076     static const string CIF_DDL_CATEGORY_ITEM_UNITS;
00077     static const string CIF_DDL_CATEGORY_ITEM_UNITS_LIST;
00078     static const string CIF_DDL_CATEGORY_ITEM_UNITS_CONVERSION;
00079     static const string CIF_DDL_CATEGORY_METHOD_LIST;
00080 
00081     static const string CIF_DDL_ITEM_ID;
00082     static const string CIF_DDL_ITEM_CATEGORY_ID;
00083     static const string CIF_DDL_ITEM_SUB_CATEGORY_ID;
00084     static const string CIF_DDL_ITEM_METHOD_ID;
00085     static const string CIF_DDL_ITEM_PARENT_NAME;
00086     static const string CIF_DDL_ITEM_CHILD_NAME;
00087     static const string CIF_DDL_ITEM_ALIAS_NAME;
00088     static const string CIF_DDL_ITEM_DICTIONARY;
00089     static const string CIF_DDL_ITEM_TITLE;
00090     static const string CIF_DDL_ITEM_VERSION;
00091     static const string CIF_DDL_ITEM_NAME;
00092     static const string CIF_DDL_ITEM_CODE;
00093     static const string CIF_DDL_ITEM_PRIMITIVE_CODE;
00094     static const string CIF_DDL_ITEM_CONSTRUCT;
00095     static const string CIF_DDL_ITEM_ORGANIZATION;
00096     static const string CIF_DDL_ITEM_INDEX;
00097     static const string CIF_DDL_ITEM_DIMENSION;
00098     static const string CIF_DDL_ITEM_DATABLOCK_ID;
00099     static const string CIF_DDL_ITEM_DESCRIPTION;
00100     static const string CIF_DDL_ITEM_NDB_DESCRIPTION;
00101     static const string CIF_DDL_ITEM_CASE;
00102     static const string CIF_DDL_ITEM_MANDATORY_CODE;
00103     static const string CIF_DDL_ITEM_DETAIL;
00104     static const string CIF_DDL_ITEM_MAXIMUM;
00105     static const string CIF_DDL_ITEM_MINIMUM;
00106     static const string CIF_DDL_ITEM_VALUE;
00107     static const string CIF_DDL_ITEM_DEPENDENT_NAME;
00108     static const string CIF_DDL_ITEM_RELATED_NAME;
00109     static const string CIF_DDL_ITEM_FUNCTION_CODE;
00110     static const string CIF_DDL_ITEM_OFFSET;
00111     static const string CIF_DDL_ITEM_OPERATOR;
00112     static const string CIF_DDL_ITEM_FACTOR;
00113     static const string CIF_DDL_ITEM_FROM_CODE;
00114     static const string CIF_DDL_ITEM_TO_CODE;
00115     static const string CIF_DDL_ITEM_UPDATE;
00116     static const string CIF_DDL_ITEM_REVISION;
00117     static const string CIF_DDL_ITEM_INLINE;
00118     static const string CIF_DDL_ITEM_LANGUAGE;
00119     static const string CIF_DDL_ITEM_PARENT_ID;
00120 
00121     string _contInfoDescr;
00122 
00123     vector<DdlCat> _ddlCats;
00124 
00125     map<pair<string, string>, pair<unsigned int, unsigned int> > _ddlCatMap;
00126 
00127     DdlContInfo();
00128 
00129     void AddDdlCat(const string& ddlCatName, const string& col1,
00130       const bool nonDefaultValue = false, const bool inheritance = false);
00131     void AddDdlItem(const string& descr, const string& ddlItemName);
00132 
00133     unsigned int GetDdlItemIndex(const string& ddlCatName,
00134       const string& ddlItemName) const;
00135     pair<unsigned int, unsigned int> GetDdlItemIndices(
00136       const string& ddlCatName, const string& ddlItemName) const;
00137 };
00138 
00139 
00140 class DdlDictContInfo : public DdlContInfo
00141 {
00142   public:
00143     DdlDictContInfo::DdlDictContInfo();
00144 };
00145 
00146 
00147 class DdlCatContInfo : public DdlContInfo
00148 {
00149   public:
00150     DdlCatContInfo::DdlCatContInfo();
00151 };
00152 
00153 
00154 class DdlSubcatContInfo : public DdlContInfo
00155 {
00156   public:
00157     DdlSubcatContInfo::DdlSubcatContInfo();
00158 };
00159 
00160 
00161 class DdlItemContInfo : public DdlContInfo
00162 {
00163   public:
00164     DdlItemContInfo::DdlItemContInfo();
00165 };
00166 
00167 
00168 class DdlCont
00169 {
00170   private:
00171     int ReadDdlItem(const pair<unsigned int, unsigned int>& indexPair,
00172       unsigned int Index);
00173     int WriteDdlItem(const pair<unsigned int, unsigned int>& indices);
00174 
00175   protected:
00176     string _datablock;
00177     string _id; 
00178 
00179     const DdlContInfo& contInfo;
00180 
00181     vector<Word> _index;
00182 
00183     vector<vector<vector<string> > > _ddlItemsStore;
00184 
00185     FileNavigator* _fnav;
00186 
00187  public:
00188     DdlCont(const string& datablock, const string& id,
00189       const DdlContInfo& inDdlContInfo, FileNavigator* fnav);
00190     virtual ~DdlCont();
00191 
00192     void Init();
00193 
00194     string GetName();
00195 
00196     virtual int Read(uWord which, unsigned int Index = 0);
00197     virtual int Write();
00198 
00199     void GetDdlItem(vector<string>& ddlItem,
00200       const string& ddlCatName, const string& ddlItemName);
00201 
00202     void Print();
00203 };
00204 
00205 
00206 extern class DdlDictContInfo RcsbDdlDict;
00207 extern class DdlCatContInfo RcsbDdlCat;
00208 extern class DdlSubcatContInfo RcsbDdlSubcat;
00209 extern class DdlItemContInfo RcsbDdlItem;
00210 
00211 
00212 #endif

Generated on Tue Apr 3 08:46:22 2007 for cifobj-loader-v7.0 by  doxygen 1.5.1