VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rwVariableBindings.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
15 #include <list>
16 #include <vlutil/vlSmartPointers.h>
17 
28 {
29 private:
32 
33 public:
34  DtRwVariableBindings(const DtString& name, DtReaderWriterRegistry* parentRegistry = 0);
35  DtRwVariableBindings(const DtString& name, const DtRwVariableBindings& orig,
36  DtReaderWriterRegistry* parentRegistry = 0, bool copyVariables = true);
38  DtReaderWriterRegistry* parentRegistry = 0, bool copyVariables = true);
40  virtual ~DtRwVariableBindings();
41 
43  virtual void getSelf(DtlObjPtr args, const std::vector<DtFilename>& searchPaths = std::vector<DtFilename>(),
44  const DtVariableBindingsList& variableBindings = nullVariableReference());
45 
47  virtual void writeSelf(std::string& fp, int indentLevel = 0,
48  bool writeUnspecified = false,
49  const DtFilename& path = DtFilename::nullFilename());
50 
56 
57  virtual const DtReaderWriter* findVariableBinding(const DtString& rwTypeString,
58  const DtString& variableName, const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>()) const;
59  virtual DtReaderWriter* findVariableBinding(const DtString& rwTypeString,
60  const DtString& variableName, const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>());
62 
64 
65  virtual const DtReaderWriter* findVariableBinding(const DtString& variableName,
66  const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>()) const;
67  virtual DtReaderWriter* findVariableBinding(const DtString& variableName,
68  const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>());
70 
71  template <typename RW_Type>
72  const RW_Type* findAndCastVariableBinding(const DtString& variableName) const
73  {
74  const DtReaderWriter* rw = findVariableBinding(variableName);
75  if (rw)
76  {
77  return dynamic_cast<const RW_Type*>(rw);
78  }
79  return 0;
80  }
81 
85  static DtRwVariableBindings* createBinding(const std::list<DtReaderWriter::DtVariableNameType> &);
86 
91  virtual DtReaderWriter* addVariableBinding(const DtSymbolString& name, const char* type);
92 
95  virtual void addVariable(DtReaderWriter*);
96 
97  virtual void removeVariable(DtReaderWriter*);
98 
99  virtual void removeVariable(const DtReaderWriter*);
100 
102  virtual void clearVariables();
103 
107  virtual const char* readerWriterType() const;
108 
110  virtual int getSize() const;
111 
113  virtual char* encode(char*) const;
114 
116  virtual const char* decode(const char*);
117 
118  bool operator==(const DtRwVariableBindings&) const;
119  bool operator!=(const DtRwVariableBindings&) const;
120 
121  virtual DtString prettyPrint() const;
122 
123  // When looking to find a variable, any variable that has the substitutions key name will be found as that, and bound to the name that is given as the substitute
124  virtual void setVariableSubstitutions(const std::map<DtString, DtString>&);
125  virtual const std::map<DtString, DtString>& variableSubstitutions() const;
126 
129  virtual void merge(const DtRwVariableBindings&);
130 
131 protected:
133  virtual const DtReaderWriter* internalFindVariableBinding(const DtString& rwTypeString,
134  const DtString& variableName, const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>()) const;
135 
138  virtual void copyVariables(const DtRwVariableBindings& other);
139 
142  virtual bool keywordMatches(const DtSymbolString& lhs, const DtString& rhs,
143  const std::map<DtString, DtString>& variableSubstitutions) const;
144 
145 protected:
146  std::map<DtString, DtString> myVariableSubstitutions;
147 };
148 
149 typedef DtBoost::shared_ptr<DtRwVariableBindings> DtVariableBindingsSharedPtr;
150 
157  const std::list<const DtRwVariableBindings*>&);
bool operator==(const DtReaderWriter &) const
Equivalence operator.
virtual const char * readerWriterType() const
Used to supply a string type that this reader writer type is.
DT_DLL_readerWriter int getSize(const DtString &val)
The number of bytes required to encode the value.
#define DT_DLL_readerWriter
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: readerWriterDefines.h:34
std::map< DtString, DtString > myVariableSubstitutions
Definition: rwVariableBindings.h:146
Definition: symbolString.h:20
Definition: readerWriter.h:85
Definition: readerWriterRegistry.h:39
virtual DtString prettyPrint() const
Routine to return a human readable form of the reader/writer variable.
DtBoost::shared_ptr< DtRwVariableBindings > DtVariableBindingsSharedPtr
Definition: rwVariableBindings.h:149
virtual void writeSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
Called from putSelf, calls myRegistry.putSelf which in turn calls putSelf on each reader/writer in th...
ReaderWriter object that maintains a list of reader-writer variable bindings.
Definition: rwVariableBindings.h:27
const RW_Type * findAndCastVariableBinding(const DtString &variableName) const
Definition: rwVariableBindings.h:72
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
DT_DLL_readerWriter char * encode(const DtFilename &val, char *buffer)
Serializes the provided value val into buffer.
virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
Top level to read itself from an input stream.
DT_DLL_readerWriter bool substituteVariablesInString(DtString &string, const std::list< const DtRwVariableBindings * > &)
Replaces any variables in the specified string with their values specified in the variable bindings l...
static const DtVariableBindingsList & nullVariableReference()
const DtReaderWriter & operator=(const DtReaderWriter &orig)
assignment operator
DT_DLL_readerWriter const char * decode(DtString &val, const char *buffer)
Decodes a value from buffer and places the result in val of the type specified by val...
bool operator!=(const DtReaderWriter &rhs)
Definition: readerWriter.h:121

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)