VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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;
226 
227  UnresolvedQuery();
228  };
229 
230  typedef std::multimap<DtFeature::Key::String, UnresolvedQuery> UnresolvedQueryMap;
231 
237 
240 
243 
244  std::set<std::string> myQueryJoinTokens;
245 
246  std::auto_ptr<DtConfigStringTokenizer> myTokenizer;
247 
248  boost::scoped_ptr<DtConsoleCommandManager> myCommandManager;
249  boost::scoped_ptr<DtConsoleCommandOwner> myCommandOwner;
250  };
251 
253  DT_DLL_features std::ostream& operator<<(std::ostream&, const DtAttributeConfigParser&);
254 }
std::map< DtFeature::Key::String, DtQuery > DtQueryMap
Map of query names to queries.
Definition: attributeConfigParser.h:86
#define DT_DLL_features
stop complaining about multiple independent base classes for boost::noncopyable this should probably ...
Definition: featuresDefines.h:41
std::string myQueryName
Name of query which features must pass for this transform.
Definition: attributeConfigParser.h:63
DtFeature::Key::String myAttributeName
Name of attribute which will hold the value produced.
Definition: attributeConfigParser.h:67
Definition: attributeConfigParser.h:39
boost::scoped_ptr< DtConsoleCommandManager > myCommandManager
Definition: attributeConfigParser.h:248
std::string myExpression
Text expression.
Definition: attributeConfigParser.h:69
DtFeature::Key::String name
Definition: attributeConfigParser.h:220
std::set< std::string > myQueryJoinTokens
Definition: attributeConfigParser.h:244
bool resolving
Definition: attributeConfigParser.h:223
std::string myQueryName
Definition: attributeConfigParser.h:151
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
TransformVector myTransforms
Set of transforms.
Definition: attributeConfigParser.h:242
This is a class which maintains a list of string command names and the callback functions that are to...
Definition: consoleCommandManager.h:56
tbb::recursive_mutex Mutex
Definition: attributeConfigParser.h:215
DtQuery schema
Definition: attributeConfigParser.h:222
std::vector< std::string > StringVector
Definition: attributeConfigParser.h:81
Definition: attributeConfigParser.h:218
Represents a set of characeters a DtFeature object can have. DtQuery objects are the way to communica...
Definition: query.h:38
std::auto_ptr< DtConfigStringTokenizer > myTokenizer
Definition: attributeConfigParser.h:246
StringVector::const_iterator ConstStringIterator
Definition: attributeConfigParser.h:83
A utility class for use with DtConsoleCommandManager. This class takes ownership of an arbitrary numb...
Definition: consoleCommandManager.h:168
bool resolved
Definition: attributeConfigParser.h:224
Mutex myMutex
Definition: attributeConfigParser.h:216
Parser for feature system configuration file. Constructs a set of DtQuery objects, each with a name from the configuration file. Also constructs a list of DtFeatureTransform objects, using DtQuery names as filters.
Definition: attributeConfigParser.h:78
AttributeType
Attribute value type of transform.
Definition: attributeConfigParser.h:37
Exception subclass used within DtAttributeConfigParser.
Definition: attributeConfigParser.h:125
AttributeType myAttributeType
Attribute type of transform.
Definition: attributeConfigParser.h:65
StringVector::iterator StringIterator
Definition: attributeConfigParser.h:82
Case insensitive string.
Definition: feature.h:71
bool clearPrevious
Definition: attributeConfigParser.h:225
std::vector< std::string > StringVector
Definition: attributeConfigParser.h:34
Represents a feature attribute transform.
Definition: attributeConfigParser.h:32
Thrown when a query is requested which has unresolved components.
Definition: attributeConfigParser.h:136
Represents a GIS feature. Features consist of a DtFeatureGeometry (2.5D geometric vector data) and a ...
Definition: feature.h:37
UnresolvedQueryMap myUnresolvedQueries
Holds queries as string vectors until they are resolved (turned into DtQuery objects). This is done so queries can be modified by source-specific configurations before named query replacement is done.
Definition: attributeConfigParser.h:236
std::multimap< DtFeature::Key::String, UnresolvedQuery > UnresolvedQueryMap
Definition: attributeConfigParser.h:230
Definition: attributeConfigParser.h:40
boost::scoped_ptr< DtConsoleCommandOwner > myCommandOwner
Definition: attributeConfigParser.h:249
std::vector< DtFeatureTransform > TransformVector
Sequence of transforms.
Definition: attributeConfigParser.h:89
bool myQueryExistsUnresolved
Definition: attributeConfigParser.h:152
DtQueryMap myQueryMap
Map of named queries, defined in config file.
Definition: attributeConfigParser.h:239
std::vector< std::string > tokens
Definition: attributeConfigParser.h:221
void print(double **a, int r, int c, char *str)

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)