VR-Forces 4.7 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*>&);

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)