VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 
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 
142  virtual bool isPublished() const;
143  virtual void setIsPublished(bool isPub);
145 
149  virtual unsigned disRecordType() const;
150  virtual void setDisRecordType(unsigned recType);
152 
154  virtual void clearVariables();
155 
157  virtual void reset();
158 
161  virtual void removeVariable(DtReaderWriter*);
162  virtual void removeVariable(const DtReaderWriter*);
164 
166  virtual void invalidateCache();
167 
169  virtual void invalidateCacheForProperty(const DtString& propName);
170 
171 
174 
176  static bool rollUpInteger(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
177 
179  static bool rollUpReal(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
180 
182  static bool rollUpString(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
183 
185  static bool rollUpBoolean(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
187 
188 protected:
190  virtual void filterIgnoredProperties(DtReaderWriter* rw, const std::set<DtString>& ignore);
191 
193  virtual void getInterface(DtPropertyInterface* pFace, DtlObjPtr args,
194  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
195  const DtVariableBindingsList& variableBindings = nullVariableReference());
196 
197  virtual void writeSelf(std::string& fp, int indentLevel, bool writeUnspecified, const DtFilename& path);
198 
199  virtual void putData(std::string&, int indentLevel = 0);
200 
201  virtual int hlaAlignment(const DtPropertyInterface* field) const;
202 
204  virtual void getSize(const DtPropertyInterface*, int& size) const;
205 
206  virtual char* encode(const DtPropertyInterface*, char* buf) const;
207  virtual const char* decode(DtPropertyInterface* iFace, const char* buf);
208 
210  virtual void unrecognizedItem(const DtEnvironmentSP env, const DtEnvValueSP root,
211  const DtReaderWriter::SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
212 
214  virtual bool traverseAndModifyPercentage(DtRwProperties& results, const DtRwProperties& baseValues,
215  const DtReaderWriter* percentage, const DtString& base) const;
216 
217 protected:
219 
220  mutable std::multimap<DtString, DtReaderWriter*> myRwPropertyCache;
221  mutable tbb::spin_mutex* myCacheMutex;
222 
224 
228 
231  mutable int mySizeAtLastCheck;
232 
234  unsigned myDisRecordType;
235 };

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)