3 #include <core_api/lsglobaldefinitions.h>
4 #include <core_api/iso_iec_988_1999.h>
5 #include <core_api/lsinterface.h>
6 #include <core_api/lsstring.h>
7 #include <core_api/lspod.h>
18 class LSAttribute_Implementation;
101 CORE_API_EXPORT
bool isValid()
const;
160 CORE_API_EXPORT
void*
operator new(
size_t tSize);
165 CORE_API_EXPORT
void operator delete(
void* p);
168 template<
class T>
void createFrom(
const T& value);
175 #define DECLARE_LSATTRIBUTE_TYPE(T) \
176 template<> CORE_API_EXPORT LSAttribute::LSAttribute(const T& value); \
177 template<> CORE_API_EXPORT T LSAttribute::getValue<T>() const; \
178 template<> CORE_API_EXPORT void LSAttribute::setValue<T>(const T& value); \
179 template<> CORE_API_EXPORT bool LSAttribute::hasType<T>() const;
182 #define DECLARE_LSATTRIBUTE_POD_TYPE(T) \
183 DECLARE_LSATTRIBUTE_TYPE(LSPod<T>) \
184 template<> CORE_API_EXPORT void LSAttribute::createFrom<LSPod<T> >(const LSPod<T>& value); \
185 template<> inline LSAttribute::LSAttribute(const T& value) : LSInterface(0) \
186 { createFrom(LSPod<T>(value)); } \
187 template<> inline T LSAttribute::getValue<T>() const \
188 { return LSAttribute::getValue<LSPod<T> >().get(); } \
189 template<> inline void LSAttribute::setValue<T>(const T& value) \
190 { LSAttribute::setValue<LSPod<T> >(value); } \
191 template<> inline bool LSAttribute::hasType<T>() const \
192 { return LSAttribute::hasType<LSPod<T> >(); }
195 typedef std::map<const LSString, LSString> StringMap;
197 DECLARE_LSATTRIBUTE_TYPE(int8_t)
198 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<int8_t>)
199 DECLARE_LSATTRIBUTE_TYPE(uint8_t)
200 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<uint8_t>)
201 DECLARE_LSATTRIBUTE_TYPE(int16_t)
202 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<int16_t>)
203 DECLARE_LSATTRIBUTE_TYPE(uint16_t)
204 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<uint16_t>)
205 DECLARE_LSATTRIBUTE_TYPE(int32_t)
206 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<int32_t>)
207 DECLARE_LSATTRIBUTE_TYPE(uint32_t)
208 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<uint32_t>)
209 DECLARE_LSATTRIBUTE_TYPE(int64_t)
210 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<int64_t>)
211 DECLARE_LSATTRIBUTE_TYPE(uint64_t)
212 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<uint64_t>)
213 DECLARE_LSATTRIBUTE_TYPE(
double)
214 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<double>)
215 DECLARE_LSATTRIBUTE_TYPE(
bool)
217 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<LSString>)
218 DECLARE_LSATTRIBUTE_POD_TYPE(std::set<LSString>)
219 DECLARE_LSATTRIBUTE_POD_TYPE(StringMap)
220 DECLARE_LSATTRIBUTE_TYPE(Eigen::Vector2d)
221 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<Eigen::Vector2d>)
222 DECLARE_LSATTRIBUTE_TYPE(Eigen::Vector2f)
223 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<Eigen::Vector2f>)
224 DECLARE_LSATTRIBUTE_TYPE(Eigen::Vector2i)
225 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<Eigen::Vector2i>)
226 DECLARE_LSATTRIBUTE_TYPE(Eigen::Vector2ui)
227 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<Eigen::Vector2us>)
228 DECLARE_LSATTRIBUTE_TYPE(Eigen::Vector3d)
229 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<Eigen::Vector3d>)
230 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<std::vector<Eigen::Vector3d> >)
231 DECLARE_LSATTRIBUTE_TYPE(Eigen::Vector3f)
232 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<Eigen::Vector3f>)
233 DECLARE_LSATTRIBUTE_TYPE(Eigen::Vector3us)
234 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<Eigen::Vector3ui>)
235 DECLARE_LSATTRIBUTE_TYPE(Eigen::Vector4d)
236 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<Eigen::Vector4d>)
237 DECLARE_LSATTRIBUTE_TYPE(Eigen::Vector4f)
238 DECLARE_LSATTRIBUTE_TYPE(Eigen::Matrix4d)
239 DECLARE_LSATTRIBUTE_POD_TYPE(std::vector<Eigen::Matrix4d>)
240 DECLARE_LSATTRIBUTE_TYPE(Eigen::Matrix4f)