VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
attributeConfigParser.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <iosfwd>
12 #include <features/feature.h>
13 #include <features/query.h>
16 
17 #include <vlutil/vlExceptions.h>
18 
19 #include <boost/ptr_container/ptr_map.hpp>
20 #include <tbb/recursive_mutex.h>
21 
22 #include <set>
23 
26 
27 namespace MAKVRinTerra
28 {
29  class DtAttributeConfigParser;
30 
33  {
34  typedef std::vector<std::string> StringVector;
35 
38  {
41  DoubleAttr
42  };
43 
45  static AttributeType stringToType(const std::string& str);
46 
49  boost::optional<DtFeature::Attribute> evaluate() const;
50 
52  boost::optional<DtFeature::Attribute> evaluate(const DtFeature& feature) const;
53 
55  void print(std::ostream&) const;
56 
57  bool read(StringVector::const_iterator&, StringVector::const_iterator);
58 
60  bool read(std::istream&);
61 
63  std::string myQueryName;
69  std::string myExpression;
70  };
71 
73  DT_DLL_features std::ostream& operator<<(std::ostream&, const DtFeatureTransform&);
74 
79  {
80  public:
81  typedef std::vector<std::string> StringVector;
82  typedef StringVector::iterator StringIterator;
83  typedef StringVector::const_iterator ConstStringIterator;
84 
86  typedef std::map<DtFeature::Key::String, DtQuery> DtQueryMap;
87 
89  typedef std::vector<DtFeatureTransform> TransformVector;
90 
92  DtAttributeConfigParser(DtConsoleCommandManager* mgr=0, const std::string& name="config");
93 
95  virtual ~DtAttributeConfigParser();
96 
102  virtual bool readAttributeConfig(
103  const std::string& filename,
104  const DtQuery& schema = DtQuery());
105 
107  virtual DtQueryMap queryMap() const;
108 
110  virtual DtQuery findQuery(std::string) const;
111 
113  virtual TransformVector transforms() const;
114 
116  virtual void print(std::ostream&) const;
117 
119  virtual std::string pprintQueries() const;
120 
122  virtual std::string pprintTransforms() const;
123 
126  {
127  public:
129  const char *errorMessage,
130  const DtException *previousException = 0) throw();
131 
132  virtual ~DtParseException() throw();
133  };
134 
137  {
138  public:
139  DtNamedQueryException(std::string missingQueryName,
140  bool existsUnresolved, const DtException* previousException = 0) throw();
141 
142  virtual ~DtNamedQueryException() throw();
143 
144  std::string queryName() const;
145 
148  bool queryExistsUnresolved() const;
149 
150  protected:
151  std::string myQueryName;
153  };
154 
159  virtual DtQuery buildQuery(const StringVector& queryToks);
160 
163  virtual DtQuery buildQueryNoThrow(std::string line);
164 
165  protected:
182  virtual bool resolveNamedQueries();
183 
184  virtual bool resolveNamedQuery(std::string queryName);
185 
188  virtual StringVector extractQuery(
190 
195  virtual DtQuery buildQueryAndBlock(
196  const StringVector& queryToks,
197  ConstStringIterator& itr);
198 
202  virtual DtQuery buildFirstQuery(
203  const StringVector& queryToks,
204  ConstStringIterator& itr);
205 
210  virtual DtQuery queryInsideParen(
211  const StringVector& parenToks,
212  ConstStringIterator& itr);
213 
214  protected:
215  typedef tbb::recursive_mutex Mutex;
216  mutable Mutex myMutex;
217 
219  {
221  std::vector<std::string> tokens;
223  bool resolving;
224  bool resolved;
225 
226  UnresolvedQuery();
227  };
228 
229  typedef std::multimap<DtFeature::Key::String, UnresolvedQuery> UnresolvedQueryMap;
230 
236 
239 
242 
243  std::set<std::string> myQueryJoinTokens;
244 
245  std::auto_ptr<DtConfigStringTokenizer> myTokenizer;
246 
247  boost::scoped_ptr<DtConsoleCommandManager> myCommandManager;
248  boost::scoped_ptr<DtConsoleCommandOwner> myCommandOwner;
249  };
250 
252  DT_DLL_features std::ostream& operator<<(std::ostream&, const DtAttributeConfigParser&);
253 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)