VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
30 
31 typedef DT_DLL_vrfutil DtBoost::shared_ptr<DtEnvironment> DtEnvironmentSP;
32 
84 class DT_DLL_vrfutil DtReaderWriter : public DtObjectDebugger<DtReaderWriter>
85 {
86 public:
87 
88  typedef std::vector<DtSymbolString> aliasContainer;
89  typedef std::vector<DtSymbolString>::iterator aliasIter;
90  typedef std::vector<DtSymbolString>::const_iterator aliasConstIter;
91  typedef std::vector<DtFilename> SearchPaths;
92 
95 
100  parentRegistry = NULL, bool readonly = false);
101  DtReaderWriter(const DtSymbolString& name, DtReaderWriterRegistry*
102  parentRegistry = NULL, bool readonly = false);
103 
105  DtReaderWriter(const DtString& name, const DtReaderWriter& orig,
106  DtReaderWriterRegistry* parentRegistry = NULL);
107  DtReaderWriter(const DtSymbolString& name, const DtReaderWriter& orig,
108  DtReaderWriterRegistry* parentRegistry = NULL);
109 
111  explicit DtReaderWriter(const DtReaderWriter&,
112  DtReaderWriterRegistry* parentRegistry = NULL);
113 
115  const DtReaderWriter& operator=(const DtReaderWriter& orig);
116 
118  bool operator==(const DtReaderWriter&) const;
119 
120  bool operator!=(const DtReaderWriter& rhs) { return !(*this == rhs); };
121 
123  virtual ~DtReaderWriter();
124 
132  virtual void putSelf(FILE* fp, int indentLevel = 0,
133  bool writeUnspecified = false, const DtFilename& path =
134  DtFilename::nullFilename());
135 
137  virtual void postPutSelf();
138 
140  virtual void prePutSelf();
141 
147  virtual void getSelf(DtlObjPtr args,
148  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
149  const DtVariableBindingsList& variableBindings = nullVariableReference());
150 
152  virtual void postGetSelf();
153 
155  virtual void preGetSelf();
156 
159  virtual void writeSelf(FILE* fp, int indentLevel = 0,
160  bool writeUnspecified = false,
161  const DtFilename& path = DtFilename::nullFilename());
162 
164 
165  virtual void putData(FILE *fp, int indentLevel = 0);
166  virtual DtlObjPtr getData(DtlObjPtr args, const SearchPaths& searchPaths,
167  const DtVariableBindingsList& variableBindings);
169 
171  virtual DtSymbolString name() const;
172 
173  static void putIndent(FILE* fp, int indentLevel);
174 
177  static const DtVariableBindingsList& nullVariableReference();
178 
194 
195  virtual void setValueSpecified(bool specified, bool recurse = false);
196  virtual bool valueSpecified() const;
198 
200  virtual void addAlias(const DtSymbolString& alias);
201 
203  virtual bool hasAlias(const DtSymbolString& alias);
204 
206  virtual const aliasContainer& aliases() const;
207 
209  virtual void setReadonly(bool flag);
210 
212  virtual bool isReadonly() const;
213 
216  virtual void reset();
217 
220 
221  virtual bool isVariableReference() const;
224  virtual void setIsVariableReference(bool value);
225 
228  virtual void clearAllVariableReferenceFlags();
229 
231 
235  virtual int alignment() const;
236 
241 
242  virtual DtSymbolString variableName() const;
243  virtual void setVariableName(const DtSymbolString variableName);
245 
250  virtual const DtReaderWriter* defaultRWValue() const;
251  virtual DtReaderWriter* defaultRWValue();
252 
255  virtual void setDefaultRWValue(DtReaderWriter*);
256 
260  virtual bool checkAndSetDefaultRWValue(DtlObjPtr args,
261  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
262  const DtVariableBindingsList& variableBindings = nullVariableReference());
264 
267  virtual DtString toXml() const;
268 
270  static DtReaderWriter* createFromXmlFile(const DtFilename&);
271 
273  static DtReaderWriter* createFromXml(const DtString&);
274 
276  static DtReaderWriter* createFromEnvironment(DtEnvironmentSP);
277 
279  virtual bool toXml(const DtFilename&) const;
280 
282  virtual bool fromXml(const DtString&);
283 
285  virtual bool fromXmlFile(const DtFilename&);
286  virtual void putSelf(DtEnvironmentSP, DtEnvValueSP parent) const;
287 
291  static DtString getAttribute(DtEnvironmentSP env, const DtString& name, DtEnvValueSP root);
292 
294  virtual void putData(DtEnvironmentSP, DtEnvValueSP value) const;
295 
297  virtual void putVariableReference(DtEnvironmentSP, DtEnvValueSP value) const;
298 
299  virtual void getSelf(const DtEnvironmentSP, const DtEnvValueSP root,
300  const SearchPaths& searchPaths = SearchPaths(),
301  const DtVariableBindingsList& bindings = DtVariableBindingsList());
302 
304  virtual void getData(const DtEnvironmentSP, const DtEnvValueSP,
305  const SearchPaths& searchPaths = SearchPaths(),
306  const DtVariableBindingsList& bindings = DtVariableBindingsList());
307 
309  virtual void unrecognizedItem(const DtEnvironmentSP env, const DtEnvValueSP root,
310  const SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
311 
313  virtual void getVariableReference(DtEnvironmentSP, DtEnvValueSP value);
314 
316 
321  virtual bool variableIsBound() const;
325  virtual void unbindVariable();
326 
327  static void setPostGetSelfCallback(DtGetSelfCallbackFcn fcn, void* usrData);
328 
329  static void setPrePutSelfCallback(DtPutSelfCallbackFcn fcn, void* usrData);
330 
332 
333  const DtReaderWriterRegistry& registry() const;
334  DtReaderWriterRegistry& registry();
336 
345  virtual void setName(const DtString&);
346 
350  virtual const char* readerWriterType() const;
351 
353  static const char* theXmlType();
354 
355  virtual const char* xmlType() const
356  {
357  return theXmlType();
358  }
359 
362  virtual DtString prettyPrint() const;
363 
364  std::string debugText() const;
365 
375  virtual void bindVariables(DtVariableBindingsList variableBindings);
376 
377  typedef std::pair<DtSymbolString, DtString> DtVariableNameType;
381  virtual std::list<DtVariableNameType> unboundVariables() const;
382 
387  static const DtFilename& appPath();
388 
389  bool invalid() const;
390 
392  virtual bool hasChild(const DtReaderWriter* p) const;
393 
394  typedef DtReaderWriterFactory* (*DtReaderWriterFactoryCreatorFcn)();
395 
397  static void setFactoryCreatorFunction(DtReaderWriterFactoryCreatorFcn fcn);
398 
399  static void createReaderWriterFactory();
400  static void cleanupFactory();
401 
405  static DtReaderWriterFactory* factory();
406 
409  virtual bool hasVariableReference() const;
410 
414  virtual void bindLocalVariables(const DtVariableBindingsList& variableBindings);
415 
419  virtual DtPropertyInterface* property();
420  virtual const DtPropertyInterface* property() const;
422 
425  virtual void recordUpdateTime() const {}
426 
429  virtual bool wasUpdatedSince(DtTime t) const { return true; }
430 
431 
432 protected:
436  virtual void bindToRwAsVariable(const DtReaderWriter* rw);
437 
438 protected:
439 
440  const DtSymbolString myName;
446  DtSymbolString myVariableName;
448 
450 
453 
455 
459 
460  static bool theCreatorFcnSet;
462  static DtReaderWriterFactoryCreatorFcn theFactoryCreatorFcn;
463 
465  bool myInvalid;
466 };
467 
469 {
470  return myRegistry;
471 }
472 
474 {
475  return myRegistry;
476 }
477 
478 inline bool DtReaderWriter::invalid() const
479 {
480  return myInvalid;
481 }
482 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)