Changeset 13 in flair-dev for trunk/include/FlairCore/io_data.h
- Timestamp:
- 04/08/16 15:39:24 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/FlairCore/io_data.h
r2 r13 19 19 class io_data_impl; 20 20 21 namespace flair { namespace core { 21 namespace flair { 22 namespace core { 22 23 23 24 class Object; 24 25 25 26 27 virtual std::string GetDescription() const =0;28 //size in bytes29 virtual size_t GetSize() const =0;30 26 class DataType { 27 public: 28 virtual std::string GetDescription() const = 0; 29 // size in bytes 30 virtual size_t GetSize() const = 0; 31 }; 31 32 32 class DummyType: public DataType {33 34 size_t GetSize() const {return 0;}35 std::string GetDescription() const {return "dummy";};36 37 33 class DummyType : public DataType { 34 public: 35 size_t GetSize() const { return 0; } 36 std::string GetDescription() const { return "dummy"; }; 37 }; 38 extern DummyType dummyType; 38 39 39 class ScalarType: public DataType { 40 public: 41 ScalarType(size_t _size):size(_size) {} 42 size_t GetSize() const {return size;} 43 virtual std::string GetDescription() const {return "scalar";}; 44 private: 45 size_t size; 46 }; 40 class ScalarType : public DataType { 41 public: 42 ScalarType(size_t _size) : size(_size) {} 43 size_t GetSize() const { return size; } 44 virtual std::string GetDescription() const { return "scalar"; }; 47 45 48 class SignedIntegerType: public ScalarType { 49 public: 50 SignedIntegerType(size_t sizeInBits):ScalarType(sizeInBits/8){} 51 std::string GetDescription() const {return "int"+std::to_string(GetSize()*8)+"_t";}; 52 }; 53 extern SignedIntegerType Int8Type; 54 extern SignedIntegerType Int16Type; 46 private: 47 size_t size; 48 }; 55 49 56 class FloatType: public ScalarType { 57 public: 58 FloatType():ScalarType(4){} 59 std::string GetDescription() const {return "float";}; 60 }; 61 extern FloatType floatType; 50 class SignedIntegerType : public ScalarType { 51 public: 52 SignedIntegerType(size_t sizeInBits) : ScalarType(sizeInBits / 8) {} 53 std::string GetDescription() const { 54 return "int" + std::to_string(GetSize() * 8) + "_t"; 55 }; 56 }; 57 extern SignedIntegerType Int8Type; 58 extern SignedIntegerType Int16Type; 62 59 60 class FloatType : public ScalarType { 61 public: 62 FloatType() : ScalarType(4) {} 63 std::string GetDescription() const { return "float"; }; 64 }; 65 extern FloatType floatType; 63 66 64 /*! \class io_data 65 * 66 * \brief Abstract class for data types. 67 * 68 * Use this class to define a custom data type. Data types ares used for logging and graphs. \n 69 * The reimplemented class must call SetSize() in its constructor. \n 70 * io_data can be constructed with n samples (see io_data::io_data). 71 * In this case, old samples can be accessed throug io_data::Prev. 72 */ 73 class io_data: public Mutex { 74 friend class IODevice; 75 friend class ::IODevice_impl; 76 friend class ::io_data_impl; 67 /*! \class io_data 68 * 69 * \brief Abstract class for data types. 70 * 71 * Use this class to define a custom data type. Data types ares used for logging 72 *and graphs. \n 73 * The reimplemented class must call SetSize() in its constructor. \n 74 * io_data can be constructed with n samples (see io_data::io_data). 75 * In this case, old samples can be accessed throug io_data::Prev. 76 */ 77 class io_data : public Mutex { 78 friend class IODevice; 79 friend class ::IODevice_impl; 80 friend class ::io_data_impl; 77 81 78 79 80 81 82 83 84 85 86 87 88 io_data(const Object* parent,std::string name,int n);82 public: 83 /*! 84 * \brief Constructor 85 * 86 * Construct an io_data. \n 87 * 88 * \param parent parent 89 * \param name name 90 * \param n number of samples 91 */ 92 io_data(const Object *parent, std::string name, int n); 89 93 90 91 92 93 94 94 /*! 95 * \brief Destructor 96 * 97 */ 98 virtual ~io_data(); 95 99 96 97 98 99 100 101 100 /*! 101 * \brief Set data time 102 * 103 * \param time time 104 */ 105 void SetDataTime(Time time); 102 106 103 104 105 106 107 108 107 /*! 108 * \brief Data time 109 * 110 * \return data time 111 */ 112 Time DataTime(void) const; 109 113 110 111 112 113 114 115 116 117 118 119 120 121 const io_data*Prev(int n) const;114 /*! 115 * \brief Previous data 116 * 117 * Access previous data. io_data must have been constructed with 118 * n>1, io_data::SetPtrToCircle must have been set and 119 * io_data::prev must have been allocated. 120 * 121 * \param n previous data number 122 * 123 * \return previous data 124 */ 125 const io_data *Prev(int n) const; 122 126 123 virtual DataType const&GetDataType() const =0;127 virtual DataType const &GetDataType() const = 0; 124 128 125 protected: 126 /*! 127 * \brief Specify the description of the reimplemented class data's 128 * 129 * This method must be called in the constructor of the reimplemented class, once by element. \n 130 * Each element description must be called in the same order as CopyDatas put the datas in the buffer. \n 131 * The description will be used for the log descriptor file. 132 * 133 * \param description description of the element 134 * \param datatype type of the element 135 */ 136 void AppendLogDescription(std::string description, DataType const &datatype); 129 protected: 130 /*! 131 * \brief Specify the description of the reimplemented class data's 132 * 133 * This method must be called in the constructor of the reimplemented class, 134 *once by element. \n 135 * Each element description must be called in the same order as CopyDatas put 136 *the datas in the buffer. \n 137 * The description will be used for the log descriptor file. 138 * 139 * \param description description of the element 140 * \param datatype type of the element 141 */ 142 void AppendLogDescription(std::string description, DataType const &datatype); 137 143 138 139 140 141 142 143 144 /*! 145 * \brief Set the datas to circle 146 * 147 * \param ptr pointer to the data to circle 148 */ 149 void SetPtrToCircle(void **ptr); 144 150 145 146 147 148 149 150 151 io_data*prev;151 /*! 152 * \brief Pointer to previous data 153 * 154 * Reimplemented class must allocate this pointer if n>1. \n 155 * Pointer must be allocated with the same kind of reimplemented class. 156 */ 157 io_data *prev; 152 158 153 private: 154 /*! 155 * \brief Copy datas 156 * 157 * This method is automatically called by IODevice::ProcessUpdate to log io_data datas. \n 158 * This method must be reimplemented, in order to copy the datas to the logs. 159 * Copied datas must be of size io_data::Size. 160 * 161 * \param dst destination buffer 162 */ 163 virtual void CopyDatas(char* dst) const =0; 159 private: 160 /*! 161 * \brief Copy datas 162 * 163 * This method is automatically called by IODevice::ProcessUpdate to log 164 *io_data datas. \n 165 * This method must be reimplemented, in order to copy the datas to the logs. 166 * Copied datas must be of size io_data::Size. 167 * 168 * \param dst destination buffer 169 */ 170 virtual void CopyDatas(char *dst) const = 0; 164 171 165 166 172 io_data_impl *pimpl_; 173 }; 167 174 168 175 } // end namespace core
Note:
See TracChangeset
for help on using the changeset viewer.