VR-Forces Developer's Guide
 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) 2025 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() override;
41 
43  virtual void getSelf(
44  DtlObjPtr args,
45  const std::vector<DtFilename> &searchPaths = std::vector<DtFilename>(),
46  const DtVariableBindingsList &variableBindings =
47  nullVariableReference()) override;
48 
50  virtual void writeSelf(std::string &fp, int indentLevel = 0,
51  bool writeUnspecified = false,
52  const DtFilename &path = DtFilename::nullFilename()) override;
53 
59 
60  virtual const DtReaderWriter* findVariableBinding(const DtString& rwTypeString,
61  const DtString& variableName, const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>()) const;
62  virtual DtReaderWriter* findVariableBinding(const DtString& rwTypeString,
63  const DtString& variableName, const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>());
65 
67 
68  virtual const DtReaderWriter* findVariableBinding(const DtString& variableName,
69  const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>()) const;
70  virtual DtReaderWriter* findVariableBinding(const DtString& variableName,
71  const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>());
73 
74  template <typename RW_Type>
75  const RW_Type* findAndCastVariableBinding(const DtString& variableName) const
76  {
77  const DtReaderWriter* rw = findVariableBinding(variableName);
78  if (rw)
79  {
80  return dynamic_cast<const RW_Type*>(rw);
81  }
82  return 0;
83  }
84 
88  static DtRwVariableBindings* createBinding(const std::list<DtReaderWriter::DtVariableNameType> &);
89 
94  virtual DtReaderWriter* addVariableBinding(const DtSymbolString& name, const char* type);
95 
98  virtual void addVariable(DtReaderWriter*);
99 
100  virtual void removeVariable(DtReaderWriter*);
101 
102  virtual void removeVariable(const DtReaderWriter*);
103 
105  virtual void clearVariables();
106 
110  virtual const char *readerWriterType() const override;
111 
113  virtual int getSize() const;
114 
116  virtual char* encode(char*) const;
117 
119  virtual const char* decode(const char*);
120 
121  bool operator==(const DtRwVariableBindings&) const;
122  bool operator!=(const DtRwVariableBindings&) const;
123 
124  virtual DtString prettyPrint() const override;
125 
126  // 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
127  virtual void setVariableSubstitutions(const std::map<DtString, DtString>&);
128  virtual const std::map<DtString, DtString>& variableSubstitutions() const;
129 
132  virtual void merge(const DtRwVariableBindings&);
133 
134 protected:
136  virtual const DtReaderWriter* internalFindVariableBinding(const DtString& rwTypeString,
137  const DtString& variableName, const std::map<DtString, DtString>& variableSubstitutions = std::map<DtString, DtString>()) const;
138 
141  virtual void copyVariables(const DtRwVariableBindings& other);
142 
145  virtual bool keywordMatches(const DtSymbolString& lhs, const DtString& rhs,
146  const std::map<DtString, DtString>& variableSubstitutions) const;
147 
148 protected:
149  std::map<DtString, DtString> myVariableSubstitutions;
150 };
151 
152 typedef std::shared_ptr<DtRwVariableBindings> DtVariableBindingsSharedPtr;
153 
160  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. This can be used in place of dynamic-ca...
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:149
This class allows one to collect and compare strings using an index number instead of having to do st...
Definition: symbolString.h:27
std::shared_ptr< DtRwVariableBindings > DtVariableBindingsSharedPtr
Definition: rwVariableBindings.h:152
Definition: readerWriter.h:85
Definition: readerWriterRegistry.h:39
virtual DtString prettyPrint() const
Routine to return a human readable form of the reader/writer variable. Not all reader/writer classes ...
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. It keeps a list of name...
Definition: rwVariableBindings.h:27
const RW_Type * findAndCastVariableBinding(const DtString &variableName) const
Definition: rwVariableBindings.h:75
bool operator!=(const DtReaderWriter &rhs) const
Definition: readerWriter.h:121
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. buffer must have at least the number of bytes returned...
virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
Top level to read itself from an input stream. searchPath is passed down to all DtReaderWriter member...
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...

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)