1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
|
//$$FILE$$
//$$VERSION$$
//$$DATE$$
//$$LICENSE$$
/*!
** \file DictObjContInfo.h
**
** \brief Header file for ObjContInfo, DictObjContInfo, CatObjContInfo,
** SubcatObjContInfo and ItemObjContInfo classes.
*/
#ifndef DICTOBJCONTINFO_H
#define DICTOBJCONTINFO_H
#include <string>
#include <map>
#include "Serializer.h"
#include "rcsb_types.h"
#include "CifString.h"
/**
** \class ObjContInfo
**
** \brief Public class that represents a generic information class for the
** generic object container.
**
** This class represents a generic information class for the generic object
** container. It is intended to be used as a base class for information
** classes of object containers. It defines the names of categories and the
** names of items, that are used in attributes retrieval method of ObjCont
** class.
*/
class ObjContInfo
{
public:
/**
** \class Item
**
** \brief Private class that represents an item.
*/
class Item
{
public:
std::string descr;
std::string itemName;
};
/**
** \class Cat
**
** \brief Private class that represents a category.
*/
class Cat
{
public:
std::string catName;
std::string col1;
bool nonDefaultValue;
bool inheritance;
std::vector<Item> items;
};
std::string _objContInfoDescr;
std::vector<Cat> _cats;
std::map<std::pair<std::string, std::string>, std::pair<unsigned int,
unsigned int> > _catMap;
/**
** Utility method, not part of users public API, and will soon be
** removed.
*/
void AddCat(const std::string& catName);
/**
** Utility method, not part of users public API, and will soon be
** removed.
*/
void AddCat(const std::string& catName, const std::string& col1,
const bool nonDefaultValue = false, const bool inheritance = false);
/**
** Utility method, not part of users public API, and will soon be
** removed.
*/
void AddItem(const std::string& descr, const std::string& itemName);
/**
** Utility method, not part of users public API, and will soon be
** removed.
*/
unsigned int GetItemIndex(const std::string& catName,
const std::string& itemName) const;
/**
** Utility method, not part of users public API, and will soon be
** removed.
*/
std::pair<unsigned int, unsigned int> GetItemIndices(
const std::string& catName, const std::string& itemName) const;
#ifndef VLAD_PYTHON_GLUE
/**
** Utility method, not part of users public API, and will soon be
** removed.
*/
virtual ~ObjContInfo();
#endif
protected:
/**
** Utility method, not part of users public API, and will soon be
** removed.
*/
ObjContInfo();
private:
std::vector<Cat>::iterator currCat;
};
/**
** \class DictObjContInfo
**
** \brief Private class that represents an information class for the
** dictionary object container.
*/
class DictObjContInfo : public ObjContInfo
{
public:
static DictObjContInfo& GetInstance();
private:
DictObjContInfo();
DictObjContInfo(const DictObjContInfo& in);
~DictObjContInfo();
DictObjContInfo& operator=(const DictObjContInfo& in);
};
/**
** \class CatObjContInfo
**
** \brief Private class that represents an information class for the
** category object container.
*/
class CatObjContInfo : public ObjContInfo
{
public:
static CatObjContInfo& GetInstance();
private:
CatObjContInfo();
CatObjContInfo(const CatObjContInfo& in);
~CatObjContInfo();
CatObjContInfo& operator=(const CatObjContInfo& in);
};
/**
** \class SubcatObjContInfo
**
** \brief Private class that represents an information class for the
** sub-category object container.
*/
class SubcatObjContInfo : public ObjContInfo
{
public:
static SubcatObjContInfo& GetInstance();
private:
SubcatObjContInfo();
SubcatObjContInfo(const SubcatObjContInfo& in);
~SubcatObjContInfo();
SubcatObjContInfo& operator=(const SubcatObjContInfo& in);
};
/**
** \class ItemObjContInfo
**
** \brief Private class that represents an information class for the
** item object container.
*/
class ItemObjContInfo : public ObjContInfo
{
public:
static ItemObjContInfo& GetInstance();
private:
ItemObjContInfo();
ItemObjContInfo(const ItemObjContInfo& in);
~ItemObjContInfo();
ItemObjContInfo& operator=(const ItemObjContInfo& in);
};
#endif // DICTOBJCONTINFO_H
|