VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtDynamicTerrainChange.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
10 
11 #pragma once
12 
13 #include <vrvUtil/vrvUtil.h>
14 #include <vlutil/vlString.h>
15 
16 #include <boost/optional.hpp>
17 
18 #include <iosfwd>
19 
20 namespace makVrv
21 {
22  class DtDynamicTerrainGeometry;
23 
43  {
44  public:
47  enum TypeEnum
48  {
53  BoolType
54  };
55 
57  static DtString ToString(TypeEnum t);
59  static TypeEnum ToEnum(const DtString& str);
60 
62  DtString print() const;
63 
67 
68  static DtDynamicTerrainChange* Create(
69  DtDynamicTerrainGeometry* geometry, const DtString& key, const DtString& value);
70  static DtDynamicTerrainChange* Create(
71  DtDynamicTerrainGeometry* geometry, const DtString& key, double value);
72  static DtDynamicTerrainChange* Create(
73  DtDynamicTerrainGeometry* geometry, const DtString& key, int value);
74  static DtDynamicTerrainChange* Create(
75  DtDynamicTerrainGeometry* geometry, const DtString& ket, bool value);
77 
78  class Builder;
79 
83  static Builder* CreateBuilder();
84 
87  static DtDynamicTerrainChange* Merge(
88  const DtDynamicTerrainChange& data1,
89  const DtDynamicTerrainChange& data2);
90 
92  virtual ~DtDynamicTerrainChange();
93 
97  virtual DtDynamicTerrainChange* clone() const;
98 
100  virtual const DtDynamicTerrainGeometry* geometry() const = 0;
101 
103  virtual unsigned int size() const = 0;
104 
110  virtual DtString key(unsigned int index = 0) const = 0;
111 
117  virtual TypeEnum type(unsigned int index = 0) const;
118 
120 
121  virtual boost::optional<DtString> stringValue(const DtString& key) const = 0;
122  virtual boost::optional<double> doubleValue(const DtString& key) const = 0;
123  virtual boost::optional<int> intValue(const DtString& key) const = 0;
124  virtual boost::optional<bool> boolValue(const DtString& key) const = 0;
126 
129 
130 
131 
136 
137  DtString stringValue(const DtString& key, const DtString& def) const;
138  double doubleValue(const DtString& key, double def) const;
139  int intValue(const DtString& key, int def) const;
140  bool boolValue(const DtString& key, bool def) const;
142 
145  template <typename T>
146  boost::optional<T> getValue(const DtString& key) const;
147  };
148 
150  class DT_DLL_VRVUTIL DtDynamicTerrainChange::Builder : public DtDynamicTerrainChange
151  {
152  public:
153  virtual Builder* setGeometry(DtDynamicTerrainGeometry*) = 0;
154  virtual Builder* setGeometry(const DtDynamicTerrainGeometry*) = 0;
155  virtual Builder* addAllFrom(const DtDynamicTerrainChange&) = 0;
156  virtual Builder* addAllFrom(const DtDynamicTerrainChange*);
157 
158  virtual Builder* addKeyValue(const DtString& key, const DtString& value) = 0;
159  virtual Builder* addKeyValue(const DtString& key, double value) = 0;
160  virtual Builder* addKeyValue(const DtString& key, int value) = 0;
161  virtual Builder* addKeyValue(const DtString& key, bool value) = 0;
162  };
163 
164  template <>
165  inline boost::optional<DtString> DtDynamicTerrainChange::getValue<DtString>(
166  const DtString& key) const
167  {
168  return stringValue(key);
169  }
170 
171  template <>
172  inline boost::optional<double> DtDynamicTerrainChange::getValue<double>(
173  const DtString& key) const
174  {
175  return doubleValue(key);
176  }
177 
178  template <>
179  inline boost::optional<int> DtDynamicTerrainChange::getValue<int>(
180  const DtString& key) const
181  {
182  return intValue(key);
183  }
184 
185  template <>
186  inline boost::optional<bool> DtDynamicTerrainChange::getValue<bool>(
187  const DtString& key) const
188  {
189  return boolValue(key);
190  }
191 
193  DT_DLL_VRVUTIL std::ostream& operator<<(
194  std::ostream&, const DtDynamicTerrainChange&);
195 
197 }
TypeEnum
Enumeration representing the type of an attribute.
Definition: DtDynamicTerrainChange.h:47
#define DT_DLL_VRVUTIL
Definition: vrvUtil.h:34
Represents (possibly infinite) area of space.
Definition: DtDynamicTerrainGeometry.h:20
DT_DLL_VRFGUICORE makVrv::DtMessage & operator<<(DtMessage &msg, const makVrf::DtNetworkMessageAgentInterface &)
voidpf void uLong size
Definition: ioapi.h:39
Contains DLL export macros.
Definition: DtDynamicTerrainChange.h:52
Definition: DtDynamicTerrainChange.h:49
Definition: DtDynamicTerrainChange.h:50
Command which can be given to the dynamic terrain system to perform some change.
Definition: DtDynamicTerrainChange.h:42
DT_DLL_VRVUTIL DtDynamicTerrainChange * new_clone(const DtDynamicTerrainChange &change)
Definition: DtDynamicTerrainChange.h:51
void print(double **a, int r, int c, char *str)

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)