File: DictObjContInfo.h

package info (click to toggle)
librcsb-core-wrapper 1.005-13
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 16,576 kB
  • sloc: xml: 122,915; cpp: 25,250; ansic: 3,736; makefile: 1,033; sh: 772; lex: 294; yacc: 235; perl: 213; python: 121; csh: 30
file content (213 lines) | stat: -rw-r--r-- 4,564 bytes parent folder | download | duplicates (6)
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