46 #ifndef _INCLUDED_Field3D_ProceduralField_H_
47 #define _INCLUDED_Field3D_ProceduralField_H_
70 #define REGISTER_FIELD_TYPES(FIELDCLASS) \
71 factory.registerField(FIELDCLASS<half>::create); \
72 factory.registerField(FIELDCLASS<float>::create); \
73 factory.registerField(FIELDCLASS<double>::create); \
74 factory.registerField(FIELDCLASS<V3h>::create); \
75 factory.registerField(FIELDCLASS<V3f>::create); \
76 factory.registerField(FIELDCLASS<V3d>::create)
78 #define INSTANTIATE_FIELD_TYPES(FIELDCLASS) \
79 template class FIELDCLASS<half>; \
80 template class FIELDCLASS<float>; \
81 template class FIELDCLASS<double>; \
82 template class FIELDCLASS<V3h>; \
83 template class FIELDCLASS<V3f>; \
84 template class FIELDCLASS<V3d>
119 template <
class Data_T>
127 typedef boost::intrusive_ptr<ProceduralField>
Ptr;
139 return "ProceduralField";
166 virtual Data_T
value(
int i,
int j,
int k)
const = 0;
174 const Data_T& defaultVal)
const;
179 const Data_T& defaultVal)
const;
217 const half& defaultVal)
const
219 return metadata().intMetadata(name, static_cast<int>(defaultVal));
227 const float& defaultVal)
const
229 return metadata().intMetadata(name, static_cast<int>(defaultVal));
237 const double& defaultVal)
const
239 return metadata().intMetadata(name, static_cast<int>(defaultVal));
247 const V3h& defaultVal)
const
249 return V3h(metadata().vecIntMetadata(name, defaultVal));
257 const V3f& defaultVal)
const
259 return V3f(metadata().vecIntMetadata(name, defaultVal));
267 const V3d& defaultVal)
const
269 return V3d(metadata().vecIntMetadata(name, defaultVal));
277 const half& defaultVal)
const
279 return metadata().floatMetadata(name, static_cast<float>(defaultVal));
287 const float& defaultVal)
const
289 return metadata().floatMetadata(name, defaultVal);
297 const double& defaultVal)
const
299 return metadata().floatMetadata(name, static_cast<float>(defaultVal));
307 const V3h& defaultVal)
const
309 return V3h(metadata().vecFloatMetadata(name, defaultVal));
317 const V3f& defaultVal)
const
319 return V3f(metadata().vecFloatMetadata(name, defaultVal));
327 const V3d& defaultVal)
const
329 return V3d(metadata().vecFloatMetadata(name, defaultVal));
338 #endif // Include guard