VR-Forces 4.8 Class Documentation
 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 bool isSimilarProperty(const DtPropertyInterface* rhs, bool strict = true) const;
167 
168 protected:
169  virtual void getData(const DtEnvironmentSP env, const DtEnvValueSP root,
170  const DtReaderWriter::SearchPaths& searchPaths, const DtVariableBindingsList& varBindings);
171  virtual void putData(DtEnvironmentSP, DtEnvValueSP value) const;
172 
173 protected:
174 
176 };
177 
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.
Definition: propertyInterface.h:48
virtual bool addField(DtPropertyInterface *field)
Definition: rwPropertiesStructure.h:106
A structure composed of distinct fields, each of which is itself a property.
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.
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.
DtPropertyInterface * myScratchItem
Definition: rwPropertiesStructure.h:175
A list of properties.
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.
boost::optional< ValueType > findFieldValue(const DtString &fieldName) const
Definition: rwPropertiesStructure.h:81
SpecificPropType * findField(const DtString &fieldName)
Definition: rwPropertiesStructure.h:66
virtual const DtPropertyInterface * findPropertyInterface(const DtString &propertyName) const

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)