00001
00002
00003
00004
00005
00006
00014 #ifndef CIFDATAINFO_H
00015 #define CIFDATAINFO_H
00016
00017
00018 #include <string>
00019 #include <vector>
00020
00021 #include "DataInfo.h"
00022 #include "DicFile.h"
00023
00024
00025 class CifDataInfo : public DataInfo
00026 {
00027 public:
00028 CifDataInfo(DicFile& dictFile);
00029 ~CifDataInfo();
00030
00031 void GetVersion(std::string& version);
00032
00033 const std::vector<std::string>& GetCatNames();
00034
00035 const std::vector<std::string>& GetItemsNames();
00036
00037 bool IsCatDefined(const std::string& catName) const;
00038
00039 bool IsItemDefined(const std::string& itemName);
00040
00041 const std::vector<std::string>& GetCatKeys(const std::string& catName);
00042
00043 const std::vector<std::string>& GetCatAttribute(const std::string& catName,
00044 const std::string& refCatName, const std::string& refAttrName);
00045
00046 const std::vector<std::string>&
00047 GetItemAttribute(const std::string& itemName,
00048 const std::string& refCatName, const std::string& refAttrName);
00049
00050 virtual void GetCatItemsNames(std::vector<std::string>& itemsNames,
00051 const std::string& catName);
00052
00053 protected:
00054 DicFile& _dictFile;
00055
00056 private:
00057 std::string _version;
00058 std::vector<std::string> _catsNames;
00059 std::vector<std::string> _itemsNames;
00060 std::vector<std::string> _catKeyItems;
00061 std::vector<std::string> _catAttrib;
00062 std::vector<std::string> _itemAttrib;
00063 std::vector<std::string> _itemTypeListAttrib;
00064
00065 void _GetDictVersion(std::string& dictVer);
00066 bool _isDictCategory(const std::string& category) const;
00067
00068 const std::vector<std::string>&
00069 GetItemAttributeForItemTypeListCat(const std::string& itemName,
00070 const std::string& refCatName,
00071 const std::string& refAttrName);
00072 };
00073
00074
00075 #endif