VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
propertyInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2018 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
14 #include <readerWriter/rwString.h>
15 #include <readerWriter/rwVector.h>
16 #include <vlutil/vlTime.h>
17 
18 #include <string>
19 #include <boost/optional.hpp>
20 
21 // Must be incremented whenever the encoding for properties changes.
22 const int DtPropertyVersion = 1;
23 
49 {
50 public:
51 
54  {
55  Replace = 0x00000001, // Replace contents wholesale
56  MinimalSimilarityCheck = 0x00000002, // Do not do a stringent compare on items -- allows for partial item replacement
57  RollUp = 0x00000004, // This will add up numerical items and keep string items if the values are similar, else it will remove.
58  // Any item that exists in the to be merged that does not exist in the source will be added as long as
59  // the structures are similar, else they will be ignored
60  AddMissing = 0x00000008,// Any items missing will be added to the target
61  KeepPublishedSettings = 0x00000010 // Keeps the current setting for whether the property is published
62  };
63 
64  virtual ~DtPropertyInterface();
65 
68 
81  template <typename ValueType>
82  boost::optional<ValueType> propertyValue() const;
83 
90  template <typename ValueType>
91  bool setPropertyValue(ValueType val);
93 
116 
117  virtual const DtPropertyInterface* findPropertyInterface(const DtString& propertyName) const
118  {
119  return 0;
120  }
121 
122  virtual DtPropertyInterface* findPropertyInterface(const DtString& propertyName)
123  {
124  return 0;
125  }
127 
149 
150  template <typename SpecificPropType>
151  const SpecificPropType* findProperty(const DtString& propertyName) const;
152  template <typename SpecificPropType>
153  SpecificPropType* findProperty(const DtString& propertyName);
155 
158 
180  template <typename ValueType>
181  boost::optional<ValueType> findPropertyValue(const DtString& propertyName) const;
182 
199  template <typename ValueType>
200  bool findAndSetPropertyValue(const DtString& propertyName, ValueType val);
202 
209 
216  virtual bool addProperty(DtPropertyInterface* property)
217  {
218  return false;
219  }
220 
227  template <typename SpecificPropType>
228  SpecificPropType* addNewProperty(const DtString& propertyName);
230 
237 
238  virtual bool removeProperty(const DtString& propertyName)
239  {
240  return false;
241  }
242 
243  virtual bool removeProperty(const DtPropertyInterface* property)
244  {
245  return false;
246  }
248 
251  virtual void copy(const DtPropertyInterface& rhs) = 0;
252 
255 
258  virtual char* encode(char*) const = 0;
259 
262  virtual const char* decode(const char*) = 0;
263 
266  virtual void getSize(int& size) const = 0;
267 
270  int getSize() const;
271 
273  virtual int hlaAlignment() const = 0;
275 
277  virtual const char* propertyType() const = 0;
278 
280  virtual DtSymbolString propertyName() const = 0;
281 
283  virtual void setPropertyName(const DtString& propertyName) = 0;
284 
285  virtual DtString stringRep(const DtString& root = "") const = 0;
286 
287 
289 
292  virtual DtReaderWriter* readerWriter() = 0;
293  virtual const DtReaderWriter* readerWriter() const = 0;
295 
300  virtual bool isSimilarProperty(const DtPropertyInterface* rhs, bool strict = true) const;
301 
311  //
313  virtual bool merge(const DtPropertyInterface& target, MergeFlags,
314  const DtMergePath& path = DtMergePath(), const std::set<DtString>& ignore = std::set<DtString>()) = 0;
315 
317  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
318  const DtVariableBindingsList& variableBindings) = 0;
319 
322  virtual bool isPublishedArg(DtlObjPtr arg, unsigned& disVarRecType);
323 
325  virtual void copyPublishingSettings(const DtPropertyInterface& prop);
326 
329  virtual void setKeepPublishingSettings(bool keep) = 0;
330  virtual bool keepPublishingSettings() const = 0;
331 
334  virtual bool isUpdateNeeded(DtTime t) const = 0;
335 
337  virtual bool hasReceivedUpdateSince(DtTime t) const = 0;
338 
342  virtual DtTime updateClockTime() const = 0;
343 
346  virtual bool isPublished() const = 0;
347  virtual void setIsPublished(bool isPub) = 0;
349 
353  virtual unsigned disRecordType() const = 0;
354  virtual void setDisRecordType(unsigned recType) = 0;
356 
358  virtual void reset() = 0;
359 
362  virtual bool isDebugEnabled() const = 0;
363  virtual void setDebugEnabled(bool en) = 0;
365 
367  virtual void processPublicationArgs(DtlObjPtr arg);
368  virtual void processPublicationArg(DtlObjPtr arg);
369 };
370 
371 #define propertyInterface_INL_
372 #include "propertyInterface.inl"
373 #undef propertyInterface_INL_
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
This class allows one to collect and compare strings using an index number instead of having to do st...
Definition: symbolString.h:27
const int DtPropertyVersion
Definition: propertyInterface.h:22
voidpf void uLong size
Definition: ioapi.h:39
Definition: readerWriter.h:85
boost::optional< T > findPropertyValue(const DtReaderWriter &properties, const DtString &propertyName)
Finds the ReaderWriter object in the given set of properties with the specified name and returns its ...
virtual bool removeProperty(const DtString &propertyName)
Definition: propertyInterface.h:238
Interface class used to define minimal interface for a property. The DtPropertyInterface class provid...
Definition: propertyInterface.h:48
const SpecificRwType * findProperty(const DtReaderWriter &properties, const DtString &propertyName)
Finds the ReaderWriter object in the given set of properties with the specified name. Then verifies that the ReaderWriter matches the type specified as the template argument. Returns a valid pointer if successful.
virtual bool addProperty(DtPropertyInterface *property)
Adds an existing property to the properties container. The container will take ownership of the given...
Definition: propertyInterface.h:216
virtual DtPropertyInterface * findPropertyInterface(const DtString &propertyName)
Definition: propertyInterface.h:122
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
virtual bool removeProperty(const DtPropertyInterface *property)
Definition: propertyInterface.h:243
std::vector< DtMergePathStruct > DtMergePath
Definition: readerWriterFactory.h:181
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 const DtPropertyInterface * findPropertyInterface(const DtString &propertyName) const
Definition: propertyInterface.h:117
void setPropertyValue(DtReaderWriter *prop, T val)
Sets the value of the given ReaderWriter property. The template parameter type must be an appropriate...
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 findAndSetPropertyValue(DtReaderWriter &properties, const DtString &propertyName, T val)
Finds the ReaderWriter object in the given set of properties with the specified name and sets its val...
File: rwVector.h.
MergeFlags
Determines how two lists of properties will be merged by the merge function.
Definition: propertyInterface.h:53

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)