VAPoR  3.0.0
ParamNode.h
Go to the documentation of this file.
1 //
2 // $Id$
3 //
4 
5 #ifndef _ParamNode_h_
6 #define _ParamNode_h_
7 
8 #include <iostream>
9 #include <map>
10 #include <vector>
11 #include <string>
12 #include <vapor/MyBase.h>
13 #include <vapor/XmlNode.h>
14 
15 namespace VAPoR {
16 
17 class ParamsBase;
18 //
30 class PARAMS_API ParamNode : public XmlNode {
31 public:
32 
36 
47  ParamNode(
48  const string &tag, const map<string, string> &attrs,
49  size_t numChildrenHint = 0
50  );
51 
52  ParamNode(
53  const string &tag,
54  size_t numChildrenHint = 0
55  );
56 
64  virtual ParamNode *Construct(
65  const string &tag, const map<string, string> &attrs,
66  size_t numChildrenHint = 0
67  ) { return(new ParamNode(tag, attrs, numChildrenHint)); }
68 
75  ParamNode(const ParamNode &pn);
76 
80  ParamNode* NodeCopy();
81 
83  ParamNode* ShallowCopy();
84 
94  virtual ParamNode* deepCopy() ;
95 
96  virtual ~ParamNode();
97 
98 
100 
112  //
113  int SetElementDouble(
114  const string &tag, double value
115  );
127  //
128  int SetElementDouble(
129  const string &tag, const vector<double> &values
130  );
142  //
143  int SetElementDouble(
144  const vector<string> &tagpath, const vector<double> &values
145  );
146 
159  virtual const vector<double> GetElementDouble(const vector<string> &tagpath, const vector<double>& defaultVal = XmlNode::_emptyDoubleVec );
160 
173  virtual const vector<double> GetElementDouble(const string &tag, const vector<double>& defaultVal = XmlNode::_emptyDoubleVec);
174 
175  int SetElementLong(
176  const string &tag, const vector<long> &values
177  );
189  //
190  int SetElementLong(
191  const string &tag, long value
192  );
204  //
205  int SetElementLong(
206  const vector<string> &tagpath, const vector<long> &values
207  );
221  virtual const vector<long> GetElementLong(const vector<string> &tagpath, const vector<long>& defaultVal = XmlNode::_emptyLongVec);
234  virtual const vector<long> GetElementLong(const string &tag, const vector<long>& defaultVal= XmlNode::_emptyLongVec);
235 
236 
248  //
249  int SetElementString(
250  const string &tag, const string &value
251  );
263  //
264  int SetElementString(
265  const vector<string> &tagpath, const string &value
266  );
279  //
280  int SetElementStringVec(const string &tag, const vector<string> &values);
293  //
294  int SetElementStringVec(const vector<string> &tagpath, const vector<string> &values);
295 
296  //
309  virtual const string GetElementString(const string &tag, const string& defaultVal = XmlNode::_emptyString);
310 
323  virtual const string GetElementString(const vector<string> &tagpath, const string& defaultVal = XmlNode::_emptyString );
324 
337  virtual void GetElementStringVec(const vector<string> &tagpath, vector <string> &vec, const vector<string>& defaultVal = _emptyStringVec) ;
350  virtual void GetElementStringVec(const string &tag, vector <string> &vec, const vector<string>& defaultVal = _emptyStringVec);
351 
364  //
365  int AddNode(const string& tag, ParamNode* child);
366 
381  //
382  int InsertNode(const string& tag, ParamNode* child, int index);
383 
398  //
399  int AddNode(const vector<string>& tagpath, ParamNode* child);
400 
401 
412  //
413  ParamNode *GetChild(size_t index) const {return((ParamNode *) XmlNode::GetChild(index));}
414 
422  //
423  ParamNode *GetNode(const vector<string> &tagpath);
424 
440  //
441  ParamNode *GetNode(const string &tag) const {return((ParamNode *) XmlNode::GetChild(tag));}
448  //
449  int ReplaceNode(const vector<string> &tagpath, ParamNode* newNode);
450 
457  //
458  int ReplaceNode(const string &tag, ParamNode* newNode);
459 
464  //
465  int DeleteNode(const string &tag);
466 
472  //
473  int DeleteNode(const vector<string> &tagpath);
474 
479  //
480  int DeleteChildren(const string &tag);
481 
487  //
488  int DeleteChildren(const vector<string> &tagpath);
489 
499  //
500  void SetParamsBase(ParamsBase* pBase) {_paramsBase = pBase;}
501 
509  //
510 ParamsBase* GetParamsBase() const {return _paramsBase;}
511 #ifndef DOXYGEN_SKIP_THIS
512 static const string _paramsBaseAttr;
513 static const string _paramNodeAttr;
514 
515 private:
516  static const string _typeAttr;
517 
518 
519  vector<long> _longvec;
520  vector<double>_doublevec;
521 
522  ParamsBase* _paramsBase;
523 #endif //DOXYGEN_SKIP_THIS
524 };
525 
526 };
527 
528 #endif // _ParamNode_h_
ParamsBase * GetParamsBase() const
Definition: ParamNode.h:510
Nodes with state in Xml tree representation.
Definition: ParamsBase.h:90
ParamNode * GetNode(const string &tag) const
Definition: ParamNode.h:441
void SetParamsBase(ParamsBase *pBase)
Definition: ParamNode.h:500
virtual ParamNode * Construct(const string &tag, const map< string, string > &attrs, size_t numChildrenHint=0)
Definition: ParamNode.h:64
#define PARAMS_API
Definition: DC.h:10
An Xml tree.
Definition: ParamNode.h:30
ParamNode * GetChild(size_t index) const
Definition: ParamNode.h:413