VR-Forces Development_Version 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);
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  virtual void addAlias(const DtString& alias);
202 
204  virtual bool hasAlias(const DtSymbolString& alias);
205 
207  virtual const aliasContainer& aliases() const;
208 
210  virtual void setReadonly(bool flag);
211 
213  virtual bool isReadonly() const;
214 
217  virtual void reset();
218 
221 
222  virtual bool isVariableReference() const;
225  virtual void setIsVariableReference(bool value);
226 
229  virtual void clearAllVariableReferenceFlags();
230 
232 
236  virtual int alignment() const;
237 
242 
243  virtual DtSymbolString variableName() const;
244  virtual void setVariableName(const DtSymbolString variableName);
246 
251  virtual const DtReaderWriter* defaultRWValue() const;
252  virtual DtReaderWriter* defaultRWValue();
253 
256  virtual void setDefaultRWValue(DtReaderWriter*);
257 
261  virtual bool checkAndSetDefaultRWValue(DtlObjPtr args,
262  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
263  const DtVariableBindingsList& variableBindings = nullVariableReference());
265 
268  virtual DtString toXml() const;
269 
271  static DtReaderWriter* createFromXmlFile(const DtFilename&);
272 
274  static DtReaderWriter* createFromXml(const DtString&);
275 
277  static DtReaderWriter* createFromEnvironment(DtEnvironmentSP);
278 
280  virtual bool toXml(const DtFilename&) const;
281 
283  virtual bool fromXml(const DtString&);
284 
286  virtual bool fromXmlFile(const DtFilename&);
287  virtual void putSelf(DtEnvironmentSP, DtEnvValueSP parent) const;
288 
292  static DtString getAttribute(DtEnvironmentSP env, const DtString& name, DtEnvValueSP root);
293 
295  virtual void putData(DtEnvironmentSP, DtEnvValueSP value) const;
296 
298  virtual void putVariableReference(DtEnvironmentSP, DtEnvValueSP value) const;
299 
300  virtual void getSelf(const DtEnvironmentSP, const DtEnvValueSP root,
301  const SearchPaths& searchPaths = SearchPaths(),
302  const DtVariableBindingsList& bindings = DtVariableBindingsList());
303 
305  virtual void getData(const DtEnvironmentSP, const DtEnvValueSP,
306  const SearchPaths& searchPaths = SearchPaths(),
307  const DtVariableBindingsList& bindings = DtVariableBindingsList());
308 
310  virtual void unrecognizedItem(const DtEnvironmentSP env, const DtEnvValueSP root,
311  const SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
312 
314  virtual void getVariableReference(DtEnvironmentSP, DtEnvValueSP value);
315 
317 
322  virtual bool variableIsBound() const;
326  virtual void unbindVariable();
327 
328  static void setPostGetSelfCallback(DtGetSelfCallbackFcn fcn, void* usrData);
329 
330  static void setPrePutSelfCallback(DtPutSelfCallbackFcn fcn, void* usrData);
331 
333 
334  const DtReaderWriterRegistry& registry() const;
335  DtReaderWriterRegistry& registry();
337 
346  virtual void setName(const DtString&);
347 
351  virtual const char* readerWriterType() const;
352 
354  static const char* theXmlType();
355 
356  virtual const char* xmlType() const
357  {
358  return theXmlType();
359  }
360 
363  virtual DtString prettyPrint() const;
364 
365  std::string debugText() const;
366 
376  virtual void bindVariables(DtVariableBindingsList variableBindings);
377 
378  typedef std::pair<DtSymbolString, DtString> DtVariableNameType;
382  virtual std::list<DtVariableNameType> unboundVariables() const;
383 
388  static const DtFilename& appPath();
389 
390  bool invalid() const;
391 
393  virtual bool hasChild(const DtReaderWriter* p) const;
394 
395  typedef DtReaderWriterFactory* (*DtReaderWriterFactoryCreatorFcn)();
396 
398  static void setFactoryCreatorFunction(DtReaderWriterFactoryCreatorFcn fcn);
399 
400  static void createReaderWriterFactory();
401  static void cleanupFactory();
402 
406  static DtReaderWriterFactory* factory();
407 
410  virtual bool hasVariableReference() const;
411 
415  virtual void bindLocalVariables(const DtVariableBindingsList& variableBindings);
416 
420  virtual DtPropertyInterface* property();
421  virtual const DtPropertyInterface* property() const;
423 
426  virtual void recordUpdateTime() const {}
427 
430  virtual bool wasUpdatedSince(DtTime t) const { return true; }
431 
432 
433 protected:
437  virtual void bindToRwAsVariable(const DtReaderWriter* rw);
438 
439 protected:
440 
449 
451 
454 
456 
460 
461  static bool theCreatorFcnSet;
463  static DtReaderWriterFactoryCreatorFcn theFactoryCreatorFcn;
464 
466  bool myInvalid;
467 };
468 
470 {
471  return myRegistry;
472 }
473 
475 {
476  return myRegistry;
477 }
478 
479 inline bool DtReaderWriter::invalid() const
480 {
481  return myInvalid;
482 }
483 

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)