added support for char, short, long, unsigned int, and double types

This commit is contained in:
Anselme 2017-01-19 16:53:18 +01:00
parent 4d1c310489
commit ee1bf11bfd
2 changed files with 50 additions and 0 deletions

View File

@ -22,6 +22,41 @@ template <> std::istream& Property<bool>::loadBinary(std::istream& is) { return
template <> std::istream& Property<bool>::loadAscii(std::istream& is) { return is >> value; }
template <> AbstractProperty::PropertyType Property<bool>::getStaticPropertyType() { return AbstractProperty::BOOLEAN; }
// UNSIGNED INTEGER PROPERTY
template <> std::ostream& Property<unsigned int>::saveBinary(std::ostream& os) { return os.write((char*)&value, sizeof(unsigned int)); }
template <> std::ostream& Property<unsigned int>::saveAscii(std::ostream& os) { return os << value; }
template <> std::istream& Property<unsigned int>::loadBinary(std::istream& is) { return is.read((char*)&value, sizeof(unsigned int)); }
template <> std::istream& Property<unsigned int>::loadAscii(std::istream& is) { return is >> value; }
template <> AbstractProperty::PropertyType Property<unsigned int>::getStaticPropertyType() { return AbstractProperty::UNSIGNED_INTEGER; }
// BYTE PROPERTY
template <> std::ostream& Property<char>::saveBinary(std::ostream& os) { return os.write((char*)&value, sizeof(char)); }
template <> std::ostream& Property<char>::saveAscii(std::ostream& os) { return os << value; }
template <> std::istream& Property<char>::loadBinary(std::istream& is) { return is.read((char*)&value, sizeof(char)); }
template <> std::istream& Property<char>::loadAscii(std::istream& is) { return is >> value; }
template <> AbstractProperty::PropertyType Property<char>::getStaticPropertyType() { return AbstractProperty::BYTE; }
// SHORT PROPERTY
template <> std::ostream& Property<short>::saveBinary(std::ostream& os) { return os.write((char*)&value, sizeof(short)); }
template <> std::ostream& Property<short>::saveAscii(std::ostream& os) { return os << value; }
template <> std::istream& Property<short>::loadBinary(std::istream& is) { return is.read((char*)&value, sizeof(short)); }
template <> std::istream& Property<short>::loadAscii(std::istream& is) { return is >> value; }
template <> AbstractProperty::PropertyType Property<short>::getStaticPropertyType() { return AbstractProperty::SHORT; }
// LONG PROPERTY
template <> std::ostream& Property<long>::saveBinary(std::ostream& os) { return os.write((char*)&value, sizeof(long)); }
template <> std::ostream& Property<long>::saveAscii(std::ostream& os) { return os << value; }
template <> std::istream& Property<long>::loadBinary(std::istream& is) { return is.read((char*)&value, sizeof(long)); }
template <> std::istream& Property<long>::loadAscii(std::istream& is) { return is >> value; }
template <> AbstractProperty::PropertyType Property<long>::getStaticPropertyType() { return AbstractProperty::LONG; }
// DOUBLE PROPERTY
template <> std::ostream& Property<double>::saveBinary(std::ostream& os) { return os.write((char*)&value, sizeof(double)); }
template <> std::ostream& Property<double>::saveAscii(std::ostream& os) { return os << value; }
template <> std::istream& Property<double>::loadBinary(std::istream& is) { return is.read((char*)&value, sizeof(double)); }
template <> std::istream& Property<double>::loadAscii(std::istream& is) { return is >> value; }
template <> AbstractProperty::PropertyType Property<double>::getStaticPropertyType() { return AbstractProperty::DOUBLE; }
// VEC2 PROPERTY
template <> std::ostream& Property<glm::vec2>::saveBinary(std::ostream& os) { return os.write((char*)glm::value_ptr(value), sizeof(float)*value.length()); }
template <> std::ostream& Property<glm::vec2>::saveAscii(std::ostream& os) { os << "["; for(int i=0; i<value.length(); ++i) os << (glm::value_ptr(value)[i]) << (i == value.length()-1 ? "]" : ", "); return os; }

View File

@ -12,6 +12,11 @@
type &var = var##Property.getValueRef();\
#define INT(var) PROPERTY(int, var)
#define UINT(var) PROPERTY(unsigned int, var)
#define LONG(var) PROPERTY(long, var)
#define SHORT(var) PROPERTY(short, var)
#define BYTE(var) PROPERTY(char, var)
#define DOUBLE(var) PROPERTY(double, var)
#define FLOAT(var) PROPERTY(float, var)
#define BOOL(var) PROPERTY(bool, var)
#define VEC2(var) PROPERTY(glm::vec2, var)
@ -30,8 +35,13 @@
#define VECTOR_INT(var) VECTOR_PROPERTY(int, var)
#define VECTOR_UINT(var) VECTOR_PROPERTY(unsigned int, var)
#define VECTOR_FLOAT(var) VECTOR_PROPERTY(float, var)
#define VECTOR_BOOL(var) VECTOR_PROPERTY(bool, var)
#define VECTOR_SHORT(var) VECTOR_PROPERTY(short, var)
#define VECTOR_BYTE(var) VECTOR_PROPERTY(char, var)
#define VECTOR_LONG(var) VECTOR_PROPERTY(long, var)
#define VECTOR_DOUBLE(var) VECTOR_PROPERTY(double, var)
#define VECTOR_VEC2(var) VECTOR_PROPERTY(glm::vec2, var)
#define VECTOR_VEC3(var) VECTOR_PROPERTY(glm::vec3, var)
#define VECTOR_MAT4(var) VECTOR_PROPERTY(glm::mat4, var)
@ -57,7 +67,12 @@ public:
UNDEFINED,
INTEGER,
SHORT,
LONG,
BYTE,
UNSIGNED_INTEGER,
FLOAT,
DOUBLE,
BOOLEAN,
VEC2,
VEC3,