complex_data.hpp
Go to the documentation of this file.00001 #ifndef MUSCLE_COMPLEX_DATA_HPP 00002 #define MUSCLE_COMPLEX_DATA_HPP 00003 00004 #include <vector> 00005 #include <cstring> 00006 #include "muscle_types.h" 00007 00008 // For 00009 // Keep in sync with muscle.util.data.SerializableDatatype! 00010 typedef enum { 00011 COMPLEX_NULL, COMPLEX_MAP, COMPLEX_COLLECTION, 00012 COMPLEX_STRING, COMPLEX_BOOLEAN, COMPLEX_BYTE, COMPLEX_SHORT, COMPLEX_INT, COMPLEX_LONG, COMPLEX_FLOAT, COMPLEX_DOUBLE, 00013 COMPLEX_STRING_ARR, COMPLEX_BOOLEAN_ARR, COMPLEX_BYTE_ARR, COMPLEX_SHORT_ARR, COMPLEX_INT_ARR, COMPLEX_LONG_ARR, COMPLEX_FLOAT_ARR, COMPLEX_DOUBLE_ARR, 00014 COMPLEX_BOOLEAN_MATRIX_2D, COMPLEX_BYTE_MATRIX_2D, COMPLEX_SHORT_MATRIX_2D, COMPLEX_INT_MATRIX_2D, COMPLEX_LONG_MATRIX_2D, COMPLEX_FLOAT_MATRIX_2D, COMPLEX_DOUBLE_MATRIX_2D, 00015 COMPLEX_BOOLEAN_MATRIX_3D, COMPLEX_BYTE_MATRIX_3D, COMPLEX_SHORT_MATRIX_3D, COMPLEX_INT_MATRIX_3D, COMPLEX_LONG_MATRIX_3D, COMPLEX_FLOAT_MATRIX_3D, COMPLEX_DOUBLE_MATRIX_3D, 00016 COMPLEX_BOOLEAN_MATRIX_4D, COMPLEX_BYTE_MATRIX_4D, COMPLEX_SHORT_MATRIX_4D, COMPLEX_INT_MATRIX_4D, COMPLEX_LONG_MATRIX_4D, COMPLEX_FLOAT_MATRIX_4D, COMPLEX_DOUBLE_MATRIX_4D, 00017 COMPLEX_JAVA_BYTE_OBJECT } muscle_complex_t; 00018 00019 namespace muscle { 00020 00021 class ComplexData { 00022 public: 00024 ComplexData(muscle_complex_t type, std::vector<int>* dimensions); 00028 ComplexData(void *data, muscle_complex_t type, std::vector<int>* dimensions); 00030 ComplexData(void *data, muscle_datatype_t type, size_t len); 00031 ~ComplexData(); 00033 void *getData(); 00035 const void *getData() const; 00037 muscle_complex_t getType() const; 00039 std::vector<int> getDimensions() const; 00041 size_t length() const; 00043 size_t sizeOfPrimitive() const; 00045 int index(int x, int y) const; 00046 int index(int x, int y, int z) const; 00047 int index(int x, int y, int z, int zz) const; 00049 int fidx(int x, int y) const { return x*dims[1]+y; } 00050 int fidx(int x, int y, int z) const { return (x*dims[1] + y)*dims[2]+z; } 00051 int fidx(int x, int y, int z, int zz) const { return ((x*dims[1] + y)*dims[2]+z)*dims[3]+zz; } 00052 // properties of muscle_complex_t 00054 static size_t sizeOfPrimitive(muscle_complex_t type); 00056 static int dimensions(muscle_complex_t type); 00058 static muscle_complex_t getType(muscle_datatype_t type); 00059 private: 00060 static void checkDimensions(muscle_complex_t type, std::vector<int>* dimensions); 00061 muscle_complex_t type; 00062 void *value; 00063 std::vector<int> dims; 00064 }; 00065 00066 } 00067 00068 #endif
Generated on Thu Oct 18 14:28:28 2012 for Muscle C/C++ API by
![doxygen](doxygen.png)