VR-Forces 4.6 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 
165 
168 
170  static bool rollUpInteger(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
171 
173  static bool rollUpReal(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
174 
176  static bool rollUpString(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
177 
179  static bool rollUpBoolean(const DtReaderWriter* source, DtReaderWriter* destination, const DtMergePath& path);
181 
182 protected:
184  virtual void filterIgnoredProperties(DtReaderWriter* rw, const std::set<DtString>& ignore);
185 
187  virtual void getInterface(DtPropertyInterface* pFace, DtlObjPtr args,
188  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
189  const DtVariableBindingsList& variableBindings = nullVariableReference());
190 
191  virtual void writeSelf(std::string& fp, int indentLevel, bool writeUnspecified, const DtFilename& path);
192 
193  virtual void putData(std::string&, int indentLevel = 0);
194 
195  virtual int hlaAlignment(const DtPropertyInterface* field) const;
196 
198  virtual void getSize(const DtPropertyInterface*, int& size) const;
199 
200  virtual char* encode(const DtPropertyInterface*, char* buf) const;
201  virtual const char* decode(DtPropertyInterface* iFace, const char* buf);
202 
204  virtual void unrecognizedItem(const DtEnvironmentSP env, const DtEnvValueSP root,
205  const DtReaderWriter::SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
206 
208  virtual bool traverseAndModifyPercentage(DtRwProperties& results, const DtRwProperties& baseValues,
209  const DtReaderWriter* percentage, const DtString& base) const;
210 
211 protected:
213 
214  mutable std::multimap<DtString, DtReaderWriter*> myRwPropertyCache;
215  mutable tbb::spin_mutex* myCacheMutex;
216 
218 
222 
225  mutable int mySizeAtLastCheck;
226 
228  unsigned myDisRecordType;
229 };

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)