libbbb  1.2.1
Groups common code used in some applications and libraries.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
varmap.h
Go to the documentation of this file.
1 /* ========================================================================= */
2 /* ------------------------------------------------------------------------- *//*
12 
13 
14  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15  Please read COPYING and README files in root folder
16  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 */
18 /* ------------------------------------------------------------------------- */
19 /* ========================================================================= */
20 #ifndef __VARMAP_INC__
21 #define __VARMAP_INC__
22 //
23 //
24 //
25 //
26 /* INCLUDES ------------------------------------------------------------ */
27 
28 #include <QMap>
29 #include <QString>
30 #include <QStringList>
31 #include "vardata.h"
32 
33 /* INCLUDES ============================================================ */
34 //
35 //
36 //
37 //
38 /* DEFINITIONS --------------------------------------------------------- */
39 
40 namespace bbb {
41 
42 /* DEFINITIONS ========================================================= */
43 //
44 //
45 //
46 //
47 /* CLASS --------------------------------------------------------------- */
48 
56 class
57  BBBSHARED_EXPORT
58  VarMap {
59 
60  //
61  //
62  //
63  //
64  /* DEFINITIONS ----------------------------------------------------- */
65 
66 public:
67 
69  typedef QMap<QString, VarData*> vmap;
70 
72  typedef QMap<QString, VarData*>::iterator iterator;
73 
75  enum UniteType {
76  FavorMine,
77  FavorOther,
78  AppendOther
79  };
80 
81  /* DEFINITIONS ===================================================== */
82  //
83  //
84  //
85  //
86  /* DATA ------------------------------------------------------------ */
87 
88 protected:
89 
91  vmap vars_;
92 
93  /* DATA ============================================================ */
94  //
95  //
96  //
97  //
98  /* FUNCTIONS ------------------------------------------------------- */
99 
100 public:
101 
102 
104  VarMap ( void );
105 
107  virtual ~VarMap ( void );
108 
110  void add ( VarData * vd );
111 
113  int count ( void ) const
114  { return vars_.count(); }
115 
117  int count ( const QString & s_name ) const;
118 
120  void clear ( void );
121 
123  void clear ( const QString & s_name );
124 
126  bool delVar ( const QString & s_name );
127 
129  QStringList names ( void ) const
130  { return vars_.keys(); }
131 
133  iterator begin ( void )
134  { return vars_.begin(); }
135 
137  iterator end ( void )
138  { return vars_.end(); }
139 
140 
141 
142  /* -------------------------------------------------------------------- */
146 
147 
149  void setValue ( const QString & s_name, const QStringList & sl );
150 
152  void setValue ( const QString & s_name, QString s, int index = 0 );
153 
155  void setValue ( const QString & s_name, qint64 i, int index = 0 );
156 
158  void setValue ( const QString & s_name, bool b, int index = 0 );
159 
161  void setValue ( const QString & s_name, double d, int index = 0 );
162 
164  void appendValue ( const QString & s_name, QString s );
165 
167  void appendValue ( const QString & s_name, qint64 i );
168 
170  void appendValue ( const QString & s_name, bool b );
171 
173  void appendValue ( const QString & s_name, double d );
174 
176  void append ( const QString & s_name, const QStringList & sl );
177 
179  /* ==================================================================== */
180 
181 
182  /* -------------------------------------------------------------------- */
186 
187 
189  bool contains ( const QString & s_name ) const
190  { return vars_.contains( s_name ); }
191 
193  VarData * value ( const QString & s_name ) const
194  { return vars_.value( s_name ); }
195 
197  VarData * sureValue ( const QString & s_name );
198 
200  QString valueS ( const QString & s_name, int i = 0 ) const
201  {
202  VarData * vd = vars_.value( s_name );
203  if ( ( vd == NULL ) || ( vd->count() == 0 ) ) {
204  return QString();
205  } else {
206  return vd->value( i );
207  }
208  }
209 
211  QStringList valueSL ( const QString & s_name ) const
212  {
213  VarData * vd = vars_.value( s_name );
214  if ( vd == NULL ) {
215  return QStringList();
216  } else {
217  const QStringList & sl = vd->valueSL();
218  return sl;
219  }
220  }
221 
223  /* ==================================================================== */
224 
225 
226  /* -------------------------------------------------------------------- */
230 
231 
233  bool isInteger ( const QString & s_name, int i = 0 ) const;
234 
236  bool isDouble ( const QString & s_name, int i = 0 ) const;
237 
239  bool isBool ( const QString & s_name, int i = 0 ) const;
240 
242  qint64 toInteger ( const QString & s_name, bool * b_ok = NULL, int i = 0 ) const;
243 
245  double toDouble ( const QString & s_name, bool * b_ok = NULL, int i = 0 ) const;
246 
248  bool toBool ( const QString & s_name, bool * b_ok = NULL, int i = 0 ) const;
249 
251  /* ==================================================================== */
252 
253 
254 
256  void unite ( const VarMap & other, UniteType ut = FavorOther );
257 
259  void extendToFit ( const QString & s_name, int i );
260 
262 
267  static QStringList toNamespaceList ( const QString & s );
268 
269 
270 
271  /* FUNCTIONS ======================================================= */
272  //
273  //
274  //
275  //
276 
277 }; /* class VarMap */
278 
279 /* CLASS =============================================================== */
280 //
281 //
282 //
283 //
284 } // namespace bbb
285 
286 #endif // __VARMAP_INC__
287 /* ------------------------------------------------------------------------- */
288 /* ========================================================================= */