VR-Forces 4.3.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
rwProperties.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 
12 #include "vlutil/vlString.h"
15 
16 namespace tbb
17 {
18  class spin_mutex;
19 }
20 
26 {
27 private:
30 
31 public:
32 
33  DtRwProperties(const DtString& name, DtReaderWriterRegistry* parentRegistry = 0);
34  DtRwProperties(const DtString& name, const DtRwProperties& orig,
35  DtReaderWriterRegistry* parentRegistry = 0);
36  DtRwProperties(const DtRwProperties& orig,
37  DtReaderWriterRegistry* parentRegistry = 0);
39  virtual ~DtRwProperties();
40 
42  virtual void getSelf(DtlObjPtr args,
43  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
44  const DtVariableBindingsList& variableBindings = nullVariableReference());
45  virtual DtlObjPtr getData(DtlObjPtr args,
46  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
47  const DtVariableBindingsList& variableBindings = nullVariableReference());
48 
52  virtual const char* readerWriterType() const;
53 
55  virtual bool isValidProperty(const DtPropertyInterface*) const;
56 
58  virtual DtPropertyInterface* createProperty(DtlObjPtr args, DtReaderWriterRegistry* parentRegistry);
59 
61  virtual char* encode(char*) const;
62 
64  virtual const char* decode(const char*);
65 
67  virtual void getSize(int& size) const;
68 
69  //
71  static DtReaderWriterPropertyFactory* propertyFactory();
72  static void cleanupPropertyFactory();
73 
75  virtual void copyVariables(const DtRwVariableBindings& other);
76 
77  virtual bool isReadonly() const;
78 
80  virtual int hlaAlignment() const;
81 
84  virtual int requiredPadding(const char* buf, const DtPropertyInterface* field) const;
85 
87  virtual const char* propertyType() const;
88 
90  virtual int count() const;
91 
95  virtual const DtReaderWriter* findProperty(const DtString& propName) const;
96  virtual DtReaderWriter* findProperty(const DtString& propName);
98 
99  virtual DtString stringRep(const DtString& root = "") const;
100 
112  virtual bool merge(const DtPropertyInterface& target, MergeFlags, const DtMergePath& path = DtMergePath(),
113  const std::set<DtString>& ignore = std::set<DtString>());
114 
119  virtual DtRwProperties createFromPercentages(const DtRwProperties& percentages, const DtRwProperties& baseValues,
120  const DtString& base = "Base-");
121 
124  virtual bool findRootAndVariable(const DtString& varName, DtReaderWriter*& root, DtReaderWriter*& variable) const;
127  virtual DtReaderWriter* readerWriter();
128  virtual const DtReaderWriter* readerWriter() const;
130 
133  virtual DtPropertyInterface* property();
134  virtual const DtPropertyInterface* property() const;
136 
138  virtual bool wasUpdatedSince(DtTime t) const;
139 
141  virtual void clearVariables();
142 
144  virtual void reset();
145 
148  virtual void removeVariable(DtReaderWriter*);
149  virtual void removeVariable(const DtReaderWriter*);
151 
152 
155 
157  static bool rollUpInteger(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
158 
160  static bool rollUpReal(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
161 
163  static bool rollUpString(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
164 
166  static bool rollUpBoolean(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
168 
169 protected:
171  virtual void filterIgnoredProperties(DtReaderWriter* rw, const std::set<DtString>& ignore);
172 
174  virtual void getInterface(DtPropertyInterface* pFace, DtlObjPtr args,
175  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
176  const DtVariableBindingsList& variableBindings = nullVariableReference());
177 
178  virtual void writeSelf(FILE* fp, int indentLevel, bool writeUnspecified, const DtFilename& path);
179 
180  virtual void putData(FILE*, int indentLevel = 0);
181 
182  virtual int hlaAlignment(const DtPropertyInterface* field) const;
183 
185  virtual void getSize(const DtPropertyInterface*, int& size) const;
186 
187  virtual char* encode(const DtPropertyInterface*, char* buf) const;
188  virtual const char* decode(DtPropertyInterface* iFace, const char* buf);
189 
191  virtual void unrecognizedItem(const DtEnvironmentSP env, const DtEnvValueSP root,
192  const DtReaderWriter::SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
193 
195  virtual bool traverseAndModifyPercentage(DtRwProperties& results, const DtRwProperties& baseValues,
196  const DtReaderWriter* percentage, const DtString& base) const;
197 
198 protected:
200 
201  mutable std::multimap<DtString, DtReaderWriter*> myRwPropertyCache;
202  mutable tbb::spin_mutex* myCacheMutex;
203 
205 
209 
212  mutable int mySizeAtLastCheck;
213 };
214 
215 #define rwProperties_INL_
216 #include "propertyInterface.inl"
217 #undef rwProperties_INL_

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)