#include "X3DField.h" namespace X3DTK { const X3DField X3DField::null = X3DField(typeid(void), 0); X3DField::X3DField(const std::type_info &type, unsigned char *data) : _type(type), _data(data) { } void FieldLoader::load(X3DField &field, const SFString &value) { *reinterpret_cast(field.data()) = (value.upper() == "TRUE"); } void FieldLoader::load(X3DField &field, const SFString &value) { *reinterpret_cast(field.data()) = value.toInt(); } void FieldLoader::load(X3DField &field, const SFString &value) { *reinterpret_cast(field.data()) = value.toFloat(); } SFString FieldWriter::write(const X3DField &field) { if (*reinterpret_cast(field.data())) return "TRUE"; return "FALSE"; } SFString FieldWriter::write(const X3DField &field) { return SFString::number(*reinterpret_cast(field.data())); } SFString FieldWriter::write(const X3DField &field) { return SFString::number(*reinterpret_cast(field.data())); } void FieldWriter::writeToFile(SFString &output, const SFString &name, const X3DField &field, const SFString &init) { SFString value; if (*reinterpret_cast(field.data())) value = "TRUE"; else value = "FALSE"; if (value != init) output += " " + name + "=\"" + value + "\""; } void FieldWriter::writeToFile(SFString &output, const SFString &name, const X3DField &field, const SFString &init) { SFString value = SFString::number(*reinterpret_cast(field.data())); if (value != init) output += " " + name + "=\"" + value + "\""; } void FieldWriter::writeToFile(SFString &output, const SFString &name, const X3DField &field, const SFString &init) { SFString value = SFString::number(*reinterpret_cast(field.data())); if (value != init) output += " " + name + "=\"" + value + "\""; } void FieldWriter::write(SFString &output, const bool &value) { if (value) output += "TRUE"; else output += "FALSE"; } void FieldWriter::write(SFString &output, const int &value) { output += SFString::number(value); } void FieldWriter::write(SFString &output, const float &value) { output += SFString::number(value); } }