CifLoadReorganizer.h

Go to the documentation of this file.
00001 /*$$FILE$$*/
00002 /*$$VERSION$$*/
00003 /*$$DATE$$*/
00004 /*$$LICENSE$$*/
00005 
00006 
00007 #ifndef CIF_LOAD_REORGANIZER_H
00008 #define CIF_LOAD_REORGANIZER_H
00009 
00010 
00011 #include "mapped_ptr_vector.h"
00012 #include "mapped_ptr_vector.C"
00013 
00014 #include "CifReorganizerBase.h"
00015 #include "DdlFile.h"
00016 #include "DicFile.h"
00017 
00018 
00019 class DdlLoadCont : public DdlCont
00020 {
00021   protected:
00022     int _verbose;
00023     DicFile* _dic;
00024 
00025     virtual void LoadDdlItems(vector<vector<string> >& combo,
00026       const unsigned int configIndex);
00027     virtual void LoadDdlItems(vector<vector<string> >& combo,
00028       const unsigned int configIndex, const string& value);
00029 
00030   public:
00031     DdlLoadCont(FileNavigator* fnav, DicFile* dicFile,
00032       const string& dataBlockName, const string& id,
00033       DdlContInfo& inDdlContInfo);
00034     virtual ~DdlLoadCont();
00035 
00036     void SetVerbose(int verbose);
00037 
00038     virtual int Load();
00039 };
00040 
00041 
00042 class DdlItemCont : public DdlLoadCont
00043 {
00044   private:
00045     typedef struct
00046     {
00047         string name;
00048         int generation;
00049     } family_member;
00050  
00051     // A convenient and complete decendency list
00052     vector<family_member> _decendency;
00053 
00054     void GetItemDecendency(vector<family_member>& decendency);
00055 
00056     void LoadDdlItems(vector<vector<string> >& combo,
00057       const unsigned int configIndex);
00058 
00059   public:
00060     DdlItemCont(FileNavigator* fnav, DicFile* dicFile,
00061       const string& dataBlockName, const string& itemName);
00062     ~DdlItemCont();
00063 
00064     int Load();
00065 };
00066 
00067 
00068 class DdlDictCont : public DdlLoadCont
00069 {
00070   private:
00071     mapped_ptr_vector<DdlCont> _items;
00072     mapped_ptr_vector<DdlCont> _subcategories;
00073     mapped_ptr_vector<DdlCont> _categories;
00074 
00075     void Init();
00076 
00077     int WriteDdlContLocations(const vector<uWord>& indices);
00078 
00079     int BuildDdlContainers(unsigned int index, const string& ddlCatName,
00080       const string& ddlItemName, mapped_ptr_vector<DdlCont>& containers);
00081 
00082     void LoadDdlItems(vector<vector<string> >& combo,
00083       const unsigned int configIndex);
00084 
00085     DdlCont* GetDdlContainers(const string& contName,
00086       mapped_ptr_vector<DdlCont>& containers, const DdlContInfo& contInfo);
00087 
00088   public:
00089     DdlDictCont(const string& dataBlockName, FileNavigator* fnav);
00090     DdlDictCont(const string& dataBlockName, FileNavigator* fnav,
00091       DicFile* dicFile);
00092     virtual ~DdlDictCont();
00093 
00094     int Load();
00095     int Write();
00096     int Read(uWord which);
00097 
00098     DdlCont* GetDdlCont(const string& contName, const DdlContInfo& contInfo);
00099 
00100     int PrintDdlContainers(const string& ddlCatName,
00101       const string& ddlItemName, const DdlContInfo& contInfo);
00102 };
00103 
00104 
00105 class DictFileCont
00106 {
00107   private:
00108     bool _verbose;
00109 
00110     string _ddlFileName;
00111     string _dicFileName;
00112     string _fnavFileName;
00113 
00114     DdlFile* _ddl;
00115     DicFile* _dic;
00116     FileNavigator* _fnav;
00117 
00118     ISTable* _ddlformat;
00119     ISTable* _dicformat;
00120 
00121     mapped_ptr_vector<DdlDictCont> _dictionaries;
00122 
00123     DdlDictCont* _currDictContP;
00124 
00125     void IntInit(const string& fnavFileName);
00126 
00127     void OpenFile(const eFileMode fileMode);
00128 
00129   public:
00130     DictFileCont(const string& fnavFileName, const string& dicFileName,
00131       const string& ddlFileName, const bool verbose = false);
00132     DictFileCont(const string& fnavFileName);
00133     ~DictFileCont();
00134 
00135     int Init();
00136     int Write();
00137     void Read();
00138 
00139     unsigned int GetNumDictionaries();
00140     void GetDictionaryNames(vector<string>& dictNames);
00141 
00142     void SetCurrentDictionary(const string& dictionaryName);
00143     DdlDictCont* GetCurrDictCont();
00144 
00145     void Print();
00146 };
00147 
00148 
00149 #endif
00150 

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