14 #include <vlutil/vlString.h>
16 #include <boost/optional.hpp>
22 class DtDynamicTerrainGeometry;
57 static DtString ToString(TypeEnum t);
59 static TypeEnum ToEnum(
const DtString& str);
83 static Builder* CreateBuilder();
103 virtual unsigned int size()
const = 0;
110 virtual DtString key(
unsigned int index = 0)
const = 0;
117 virtual TypeEnum type(
unsigned int index = 0)
const;
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;
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;
145 template <
typename T>
146 boost::optional<T> getValue(
const DtString& key)
const;
150 class DT_DLL_VRVUTIL DtDynamicTerrainChange::Builder :
public DtDynamicTerrainChange
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*);
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;
165 inline boost::optional<DtString> DtDynamicTerrainChange::getValue<DtString>(
168 return stringValue(key);
172 inline boost::optional<double> DtDynamicTerrainChange::getValue<double>(
175 return doubleValue(key);
179 inline boost::optional<int> DtDynamicTerrainChange::getValue<int>(
182 return intValue(key);
186 inline boost::optional<bool> DtDynamicTerrainChange::getValue<bool>(
189 return boolValue(key);
194 std::ostream&,
const DtDynamicTerrainChange&);