openmbvcppinterface  3.1.0
OpenMBV C++ Interface
dynamicivbody.h
1/*
2 OpenMBV - Open Multi Body Viewer.
3 Copyright (C) 2009 Markus Friedrich
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18*/
19
20#ifndef _OPENMBV_DYNAICIVBODY_H_
21#define _OPENMBV_DYNAICIVBODY_H_
22
23#include <openmbvcppinterface/body.h>
24#include <hdf5serie/vectorserie.h>
25#include <string>
26#include <utility>
27
28namespace OpenMBV {
29
35 class DynamicIvBody : public Body {
36 friend class ObjectFactory;
37 public:
39 void setIvFileName(std::string ivFileName_) { ivContent=""; ivFileName=std::move(ivFileName_); }
40 std::string getIvFileName() { return ivFileName; }
41
43 void setIvContent(std::string ivContent_) { ivFileName=""; ivContent=std::move(ivContent_); }
44 const std::string& getIvContent() { return ivContent; }
45
50 void setDataSize(size_t s) { dataSize = s; }
51 size_t getDataSize() { return dataSize; }
52
57 void setDataIntSize(size_t s) { dataIntSize = s; }
58 size_t getDataIntSize() { return dataIntSize; }
59
65 void setDataStrSize(size_t s, int fss = -1) { dataStrSize = s; fixedStrSize = fss; }
66 size_t getDataStrSize() { return dataStrSize; }
67
70 void setScalarData(bool s) { scalarData = s; }
71 bool getScalarData() { return scalarData; }
72
74 void initializeUsingXML(xercesc::DOMElement *element) override;
75
76 xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent) override;
77
79 template<typename T>
80 void append(const T& row) {
81 data->append(row);
82 }
83
84 int getRows() override { return data?data->getRows():0; }
85 std::vector<Float> getRow(int i) override { return data?data->getRow(i):std::vector<Float>(dataSize); }
86
88 template<typename T>
89 void appendInt(const T& row) {
90 dataInt->append(row);
91 }
92
93 std::vector<int> getRowInt(int i) { return dataInt?dataInt->getRow(i):std::vector<int>(dataIntSize); }
94
96 template<typename T>
97 void appendStr(const T& row) {
98 dataStr->append(row);
99 }
100
101 std::vector<std::string> getRowStr(int i) { return dataStr?dataStr->getRow(i):std::vector<std::string>(dataStrSize); }
102
103 template<typename T>
104 void setStateOffSet(const std::vector<T>& stateOff) {
105 stateOffSet.resize(stateOff.size());
106 for(size_t i=0; i<stateOff.size(); ++i)
107 stateOffSet[i] = stateOff[i];
108 }
109 std::vector<Float> getStateOffSet() { return stateOffSet; }
110
111 void setStateIntOffSet(const std::vector<int>& stateOff) { stateIntOffSet = stateOff; }
112 std::vector<int> getStateIntOffSet() { return stateIntOffSet; }
113
114 void setStateStrOffSet(const std::vector<std::string>& stateOff) { stateStrOffSet = stateOff; }
115 std::vector<std::string> getStateStrOffSet() { return stateStrOffSet; }
116
117 protected:
118 DynamicIvBody();
119 ~DynamicIvBody() override = default;
120 std::string ivFileName;
121 std::string ivContent;
122
123 int fixedStrSize { -1 };
124 size_t dataSize { 0 };
125 size_t dataIntSize { 0 };
126 size_t dataStrSize { 0 };
127 H5::VectorSerie<Float>* data{nullptr};
128 H5::VectorSerie<int>* dataInt{nullptr};
129 H5::VectorSerie<std::string>* dataStr{nullptr};
130 bool scalarData { false };
131
133 std::vector<Float> stateOffSet;
134 std::vector<int> stateIntOffSet;
135 std::vector<std::string> stateStrOffSet;
136
137 void createHDF5File() override;
138 void openHDF5File() override;
139 };
140
141}
142
143#endif
void getRow(int row, size_t size, T data[])
void append(const T data[], size_t size)
Definition: body.h:32
Definition: dynamicivbody.h:35
void setDataStrSize(size_t s, int fss=-1)
Definition: dynamicivbody.h:65
std::vector< Float > stateOffSet
Definition: dynamicivbody.h:133
std::vector< Float > getRow(int i) override
Definition: dynamicivbody.h:85
void initializeUsingXML(xercesc::DOMElement *element) override
Definition: dynamicivbody.cc:54
void append(const T &row)
Definition: dynamicivbody.h:80
void appendInt(const T &row)
Definition: dynamicivbody.h:89
void setScalarData(bool s)
Definition: dynamicivbody.h:70
void setDataSize(size_t s)
Definition: dynamicivbody.h:50
void setIvContent(std::string ivContent_)
Definition: dynamicivbody.h:43
int getRows() override
Definition: dynamicivbody.h:84
void setIvFileName(std::string ivFileName_)
Definition: dynamicivbody.h:39
void setDataIntSize(size_t s)
Definition: dynamicivbody.h:57
void appendStr(const T &row)
Definition: dynamicivbody.h:97
Definition: objectfactory.h:38