VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
rwPropertiesStructure.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
10 
11 #pragma once
12 
14 
22 {
23 public:
24  // Implement so can be used in a map
26 
27  DtRwPropertiesStructure(const DtString& name, DtReaderWriterRegistry* parentRegistry = 0);
29  DtReaderWriterRegistry* parentRegistry = 0);
31  DtReaderWriterRegistry* parentRegistry = 0);
33  virtual ~DtRwPropertiesStructure();
34 
41  inline const DtPropertyInterface* findFieldPropertyInterface(const DtString& fieldName) const
42  {
43  return findPropertyInterface(fieldName);
44  }
45 
47  {
48  return findPropertyInterface(fieldName);
49  }
51 
59  template <typename SpecificPropType>
60  const SpecificPropType* findField(const DtString& fieldName) const
61  {
62  return findProperty<SpecificPropType>(fieldName);
63  }
64 
65  template <typename SpecificPropType>
66  SpecificPropType* findField(const DtString& fieldName)
67  {
68  return findProperty<SpecificPropType>(fieldName);
69  }
71 
80  template <typename ValueType>
81  boost::optional<ValueType> findFieldValue(const DtString& fieldName) const
82  {
83  return findPropertyValue<ValueType>(fieldName);
84  }
85 
92  template <typename ValueType>
93  bool findAndSetFieldValue(const DtString& fieldName, ValueType val)
94  {
95  return findAndSetPropertyValue<ValueType>(fieldName, val);
96  }
98 
106  virtual bool addField(DtPropertyInterface* field)
107  {
108  return addProperty(field);
109  }
110 
116  template <typename SpecificPropType>
117  SpecificPropType* addNewField(const DtString& fieldName)
118  {
119  return addNewProperty<SpecificPropType>(fieldName);
120  }
122 
129  virtual bool removeField(const DtString& propertyName)
130  {
131  return removeProperty(propertyName);
132  }
133 
134  virtual bool removeField(const DtPropertyInterface* property)
135  {
136  return removeProperty(property);
137  }
139 
147  DtPropertyInterface& operator[](const DtString& fieldName);
148 
149  const DtPropertyInterface& operator[](const DtString& fieldName) const;
151 
152  virtual void putSelf(std::string& fp, int indentLevel, bool writeUnspecified,
153  const DtFilename& path);
154 
155  virtual const char* readerWriterType() const;
156 
158  static const char* theXmlType();
159 
160  virtual const char* xmlType() const
161  {
162  return theXmlType();
163  }
164 
166  virtual void copyVariables(const DtRwVariableBindings& other);
167 
169  virtual bool isSimilarProperty(const DtPropertyInterface* rhs, bool strict = true) const;
170 
171 protected:
172  virtual void getData(const DtEnvironmentSP env, const DtEnvValueSP root,
173  const DtReaderWriter::SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
174  virtual void putData(DtEnvironmentSP, DtEnvValueSP value) const;
175 
176 protected:
177 
179 };
180 
DtRwProperties & operator=(const DtRwProperties &orig)
#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
const DtPropertyInterface * findFieldPropertyInterface(const DtString &fieldName) const
Definition: rwPropertiesStructure.h:41
DtPropertyInterface * findFieldPropertyInterface(const DtString &fieldName)
Definition: rwPropertiesStructure.h:46
virtual bool addProperty(DtPropertyInterface *)
Adds an existing property to this list. This class will then take ownership of the property...
DT_DLL_readerWriter DtBoost::shared_ptr< DtEnvironment > DtEnvironmentSP
Definition: readerWriter.h:30
virtual bool removeProperty(const DtString &propertyName)
bool findAndSetFieldValue(const DtString &fieldName, ValueType val)
This is a convenience function that combines the functionality of findField and setPropertyValue to i...
Definition: rwPropertiesStructure.h:93
Definition: readerWriterRegistry.h:39
virtual bool removeField(const DtString &propertyName)
Definition: rwPropertiesStructure.h:129
SpecificPropType * addNewField(const DtString &fieldName)
Adds a new property of the specified type as a field to the structure and returns pointer to the new ...
Definition: rwPropertiesStructure.h:117
Interface class used to define minimal interface for a property. The DtPropertyInterface class provid...
Definition: propertyInterface.h:48
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
virtual bool addField(DtPropertyInterface *field)
Adds a new property of the specified type as a field to the structure and returns pointer to the new ...
Definition: rwPropertiesStructure.h:106
A structure composed of distinct fields, each of which is itself a property. The DtRwPropertiesStruct...
Definition: rwPropertiesStructure.h:21
virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
Override to allow a variable to be assigned to a property of derived type.
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
virtual bool removeField(const DtPropertyInterface *property)
Definition: rwPropertiesStructure.h:134
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
const SpecificPropType * findField(const DtString &fieldName) const
Definition: rwPropertiesStructure.h:60
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...
virtual void putData(std::string &, int indentLevel=0)
Deriving class overrides these to get/put class specific data.
virtual void putSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
Top level call to write itself to file. If write unspecified is true, will write entries that are uns...
DtPropertyInterface * myScratchItem
Definition: rwPropertiesStructure.h:178
A list of properties. A DtPropertyInterface object that is a specialized version of DtRwVariableBindi...
Definition: rwProperties.h:126
static const char * theXmlType()
The type that is used when archiving to an XML stream.
virtual const char * xmlType() const
Definition: rwPropertiesStructure.h:160
virtual bool isSimilarProperty(const DtPropertyInterface *rhs, bool strict=true) const
Returns true if the readerWriterType is the same. Subclasses can do extra checking. If strict is true, some property types will do extra checking and fail if the types do not exactly match. If false, these types will do a basic check, which can be useful when the the types are similar enough to perform a merge.
boost::optional< ValueType > findFieldValue(const DtString &fieldName) const
This is a convenience function that combines the functionality of findField and setPropertyValue to i...
Definition: rwPropertiesStructure.h:81
virtual void copyVariables(const DtRwVariableBindings &other)
Clones variables using the property factory.
SpecificPropType * findField(const DtString &fieldName)
Definition: rwPropertiesStructure.h:66
virtual const DtPropertyInterface * findPropertyInterface(const DtString &propertyName) const

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)