VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
readerWriter.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 "stdio.h"
12 #include <mtl/mtl.h>
13 #include <vlutil/vlString.h>
14 #include "vrfutil/objectCounter.h"
18 #include <vlutil/vlMachineTypes.h>
19 #include "tdbutil/symbolString.h"
20 #include <mtl/environment.h>
21 #include <vlutil/vlFilename.h>
22 #include <list>
23 #include "vrfutil/vrfutilDefines.h"
24 #include <vlutil/vlSmartPointers.h>
25 #include <vlutil/vlTime.h>
26 
27 #include <ostream>
28 
32 
33 typedef DT_DLL_vrfutil DtBoost::shared_ptr<DtEnvironment> DtEnvironmentSP;
34 
86 class DT_DLL_vrfutil DtReaderWriter : public DtObjectDebugger<DtReaderWriter>
87 {
88 public:
89 
90  typedef std::vector<DtSymbolString> aliasContainer;
91  typedef std::vector<DtSymbolString>::iterator aliasIter;
92  typedef std::vector<DtSymbolString>::const_iterator aliasConstIter;
93  typedef std::vector<DtFilename> SearchPaths;
94 
97 
102  parentRegistry = NULL, bool readonly = false);
104  parentRegistry = NULL, bool readonly = false);
105 
107  DtReaderWriter(const DtString& name, const DtReaderWriter& orig,
108  DtReaderWriterRegistry* parentRegistry = NULL);
109  DtReaderWriter(const DtSymbolString& name, const DtReaderWriter& orig,
110  DtReaderWriterRegistry* parentRegistry = NULL);
111 
113  explicit DtReaderWriter(const DtReaderWriter&,
114  DtReaderWriterRegistry* parentRegistry = NULL);
115 
117  const DtReaderWriter& operator=(const DtReaderWriter& orig);
118 
120  bool operator==(const DtReaderWriter&) const;
121 
122  bool operator!=(const DtReaderWriter& rhs) { return !(*this == rhs); };
123 
125  virtual ~DtReaderWriter();
126 
134  virtual void putSelf(std::string& fp, int indentLevel = 0,
135  bool writeUnspecified = false, const DtFilename& path =
136  DtFilename::nullFilename());
137 
139  virtual void postPutSelf();
140 
142  virtual void prePutSelf();
143 
149  virtual void getSelf(DtlObjPtr args,
150  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
151  const DtVariableBindingsList& variableBindings = nullVariableReference());
152 
154  virtual void postGetSelf();
155 
157  virtual void preGetSelf();
158 
161  virtual void writeSelf(std::string& fp, int indentLevel = 0,
162  bool writeUnspecified = false,
163  const DtFilename& path = DtFilename::nullFilename());
164 
166 
167  virtual void putData(std::string& fp, int indentLevel = 0);
168  virtual DtlObjPtr getData(DtlObjPtr args, const SearchPaths& searchPaths,
169  const DtVariableBindingsList& variableBindings);
171 
173  virtual DtSymbolString name() const;
174 
175  static void putIndent(std::string& fp, int indentLevel);
176 
179  static const DtVariableBindingsList& nullVariableReference();
180 
196 
197  virtual void setValueSpecified(bool specified, bool recurse = false);
198  virtual bool valueSpecified() const;
200 
202  virtual void addAlias(const DtSymbolString& alias);
203  virtual void addAlias(const DtString& alias);
204 
206  virtual bool hasAlias(const DtSymbolString& alias);
207 
209  virtual const aliasContainer& aliases() const;
210 
212  virtual void setReadonly(bool flag);
213 
215  inline bool isReadonly() const
216  {
217  return myReadOnlyFlag;
218  }
219 
222  virtual void reset();
223 
226 
227  virtual bool isVariableReference() const;
230  virtual void setIsVariableReference(bool value);
231 
234  virtual void clearAllVariableReferenceFlags();
235 
237 
241  virtual int alignment() const;
242 
247 
248  virtual DtSymbolString variableName() const;
249  virtual void setVariableName(const DtSymbolString variableName);
251 
256  virtual const DtReaderWriter* defaultRWValue() const;
257  virtual DtReaderWriter* defaultRWValue();
258 
261  virtual void setDefaultRWValue(DtReaderWriter*);
262 
266  virtual bool checkAndSetDefaultRWValue(DtlObjPtr args,
267  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
268  const DtVariableBindingsList& variableBindings = nullVariableReference());
270 
273  virtual DtString toXml() const;
274 
276  static DtReaderWriter* createFromXmlFile(const DtFilename&, bool createAsProperty = false);
277 
279  static DtReaderWriter* createFromXml(const DtString&, bool createAsProperty = false);
280 
282  static DtReaderWriter* createFromEnvironment(DtEnvironmentSP, bool createAsProperty = false);
283 
285  virtual bool toXml(const DtFilename&) const;
286 
288  virtual bool fromXml(const DtString&);
289 
291  virtual bool fromXmlFile(const DtFilename&);
292  virtual void putSelf(DtEnvironmentSP, DtEnvValueSP parent) const;
293 
297  static DtString getAttribute(DtEnvironmentSP env, const DtString& name, DtEnvValueSP root);
298 
300  virtual void putData(DtEnvironmentSP, DtEnvValueSP value) const;
301 
303  virtual void putVariableReference(DtEnvironmentSP, DtEnvValueSP value) const;
304 
305  virtual void getSelf(const DtEnvironmentSP, const DtEnvValueSP root,
306  const SearchPaths& searchPaths = SearchPaths(),
307  const DtVariableBindingsList& bindings = DtVariableBindingsList());
308 
310  virtual void getData(const DtEnvironmentSP, const DtEnvValueSP,
311  const SearchPaths& searchPaths = SearchPaths(),
312  const DtVariableBindingsList& bindings = DtVariableBindingsList());
313 
315  virtual void unrecognizedItem(const DtEnvironmentSP env, const DtEnvValueSP root,
316  const SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
317 
319  virtual void getVariableReference(DtEnvironmentSP, DtEnvValueSP value);
320 
322 
327  virtual bool variableIsBound() const;
331  virtual void unbindVariable();
332 
333  static void setPostGetSelfCallback(DtGetSelfCallbackFcn fcn, void* usrData);
334  static void setPrePutSelfCallback(DtPutSelfCallbackFcn fcn, void* usrData);
335 
336  static void setPutIndent(bool);
337  static bool putIndent();
338 
340 
341  const DtReaderWriterRegistry& registry() const;
342  DtReaderWriterRegistry& registry();
344 
353  virtual void setName(const DtString&);
354 
358  virtual const char* readerWriterType() const;
359 
361  static const char* theXmlType();
362 
363  virtual const char* xmlType() const
364  {
365  return theXmlType();
366  }
367 
370  virtual DtString prettyPrint() const;
371 
372  std::string debugText() const;
373 
383  virtual void bindVariables(DtVariableBindingsList variableBindings);
384 
385  typedef std::pair<DtSymbolString, DtString> DtVariableNameType;
389  virtual std::list<DtVariableNameType> unboundVariables() const;
390 
395  static const DtFilename& appPath();
396 
397  bool invalid() const;
398 
400  virtual bool hasChild(const DtReaderWriter* p) const;
401 
402  typedef DtReaderWriterFactory* (*DtReaderWriterFactoryCreatorFcn)();
403 
405  static void setFactoryCreatorFunction(DtReaderWriterFactoryCreatorFcn fcn);
406 
407  static void createReaderWriterFactory();
408  static void cleanupFactory();
409 
413  static DtReaderWriterFactory* factory();
414 
417  virtual bool hasVariableReference() const;
418 
422  virtual void bindLocalVariables(const DtVariableBindingsList& variableBindings);
423 
427  virtual DtPropertyInterface* property();
428  virtual const DtPropertyInterface* property() const;
430 
433  virtual void recordUpdateTime() const;
434 
437  virtual bool wasUpdatedSince(DtTime t) const;
438 
441  virtual bool changedSinceLastChecked();
442 
445  virtual bool peekChangedSinceLastChecked() const;
446 
447 
448 protected:
452  virtual void bindToRwAsVariable(const DtReaderWriter* rw);
453 
454 protected:
455 
464 
466 
469 
471 
475 
476  static bool theCreatorFcnSet;
478  static DtReaderWriterFactoryCreatorFcn theFactoryCreatorFcn;
479  static bool thePutIndent;
480 
482  bool myInvalid;
483 
487 };
488 
490 {
491  return myRegistry;
492 }
493 
495 {
496  return myRegistry;
497 }
498 
499 inline bool DtReaderWriter::invalid() const
500 {
501  return myInvalid;
502 }
503 
505 
506 inline std::string& operator<<(std::string& a, const std::string& b) { a += b; return a; }
507 inline std::string& operator<<(std::string& a, const char* b) { a += b; return a; }
508 inline std::string& operator<<(std::string& a, char b) { a += b; return a; }
509 DT_DLL_vrfutil std::string& operator<<(std::string&, int);
510 DT_DLL_vrfutil std::string& operator<<(std::string&, unsigned int);
511 DT_DLL_vrfutil std::string& operator<<(std::string&, double);
512 DT_DLL_vrfutil std::string& operator<<(std::string&, float);

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)