AbstractObjectSerializer.h
Go to the documentation of this file.
1/*
2* This file is part of ArmarX.
3*
4* Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5*
6* ArmarX is free software; you can redistribute it and/or modify
7* it under the terms of the GNU General Public License version 2 as
8* published by the Free Software Foundation.
9*
10* ArmarX is distributed in the hope that it will be useful, but
11* WITHOUT ANY WARRANTY; without even the implied warranty of
12* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13* GNU General Public License for more details.
14*
15* You should have received a copy of the GNU General Public License
16* along with this program. If not, see <http://www.gnu.org/licenses/>.
17*
18* @package ArmarX::Core
19* @author ALexey Kozlov ( kozlov at kit dot edu)
20* @date 11.09.2012
21* @copyright http://www.gnu.org/licenses/gpl-2.0.txt
22* GNU General Public License
23*/
24
25#pragma once
26
27#include <ArmarXCore/interface/observers/Serialization.h>
29
31{
38} // namespace armarx::ElementTypes
39
40namespace armarx
41{
43
46
47 /**
48 * @class AbstractObjectSerializer
49 * @brief
50 * @ingroup ObserversSub
51 */
52 class AbstractObjectSerializer : public ObjectSerializerBase
53 {
54 public:
58
59 public:
60 virtual ElementType getElementType(const ::Ice::Current& = Ice::emptyCurrent) const = 0;
61 virtual void setElementType(ElementType elemType,
62 const ::Ice::Current& = Ice::emptyCurrent) = 0;
63
64 virtual unsigned int size() const = 0;
65 virtual bool hasElement(const ::std::string& key) const = 0;
66
67 virtual float getFloat(const ::std::string& key) const = 0;
68 virtual double getDouble(const ::std::string& key) const = 0;
69 virtual int getInt(const ::std::string& key) const = 0;
70 virtual bool getBool(const ::std::string& key) const = 0;
71 virtual std::string getString(const ::std::string& key) const = 0;
72 virtual VariantPtr getVariant(const ::std::string& key) const;
73 virtual VariantPtr getVariant(int index) const;
74 virtual SerializablePtr getIceObject(const ::std::string& key) const;
75 virtual SerializablePtr getIceObject(int index) const;
76
77 virtual AbstractObjectSerializerPtr getElement(unsigned int index) const = 0;
78 virtual AbstractObjectSerializerPtr getElement(const ::std::string& key) const = 0;
79 virtual std::vector<std::string> getElementNames() const = 0;
80
81 virtual void getIntArray(const ::std::string& key, std::vector<int>& result) = 0;
82 virtual void getFloatArray(const ::std::string& key, std::vector<float>& result) = 0;
83 virtual void getDoubleArray(const ::std::string& key, std::vector<double>& result) = 0;
84 virtual void getStringArray(const ::std::string& key, std::vector<std::string>& result) = 0;
85 virtual void getVariantArray(const ::std::string& key, std::vector<VariantPtr>& result) = 0;
86
87 virtual void getVariantMap(const ::std::string& key, StringVariantBaseMap& result) = 0;
88
89 virtual void setBool(const ::std::string& key, bool val) = 0;
90 virtual void setInt(const ::std::string& key, int val) = 0;
91 virtual void setFloat(const ::std::string& key, float val) = 0;
92 virtual void setDouble(const ::std::string& key, double val) = 0;
93 virtual void setString(const ::std::string& key, const std::string& val) = 0;
94 virtual void setElement(const ::std::string& key,
95 const AbstractObjectSerializerPtr& val) = 0;
96 virtual void setVariant(const ::std::string& key, const VariantPtr& val);
97 virtual void setIceObject(const ::std::string& key, const SerializablePtr& val);
98
99 virtual void setIntArray(const ::std::string& key, const std::vector<int>& val) = 0;
100 virtual void setFloatArray(const ::std::string& key, const std::vector<float>& val) = 0;
101 virtual void setDoubleArray(const ::std::string& key, const std::vector<double>& val) = 0;
102 virtual void setStringArray(const ::std::string& key,
103 const std::vector<std::string>& val) = 0;
104 virtual void setVariantArray(const ::std::string& key,
105 const std::vector<VariantPtr>& val) = 0;
106 virtual void setVariantArray(const ::std::string& key,
107 const std::vector<VariantBasePtr>& val) = 0;
108
109 virtual void setVariantMap(const ::std::string& key, const StringVariantBaseMap& val) = 0;
110
111 virtual void setBool(unsigned int index, bool val) = 0;
112 virtual void setInt(unsigned int index, int val) = 0;
113 virtual void setFloat(unsigned int index, float val) = 0;
114 virtual void setDouble(unsigned int index, double val) = 0;
115 virtual void setString(unsigned int index, const std::string& val) = 0;
116 virtual void setElement(unsigned int index, const AbstractObjectSerializerPtr& val) = 0;
117 virtual void setVariant(unsigned int index, const VariantPtr& val);
118 virtual void setIceObject(unsigned int index, const SerializablePtr& val);
119
120 // add all elements of val as siblings
121 virtual void merge(const AbstractObjectSerializerPtr& val) = 0;
122
123 virtual void append(const AbstractObjectSerializerPtr& val) = 0;
124
125 // clear state and init with empty underlying object
126 virtual void reset() = 0;
127
128 public: // convenience functions to define and use ID field (useful for CommonStorage)
129 std::string
131 {
132 return idField;
133 }
134
135 void
136 setIdField(const std::string& fieldName)
137 {
138 idField = fieldName;
139 }
140
141 int
142 getIntId() const
143 {
144 return getInt(idField);
145 }
146
147 std::string
149 {
150 return getString(idField);
151 }
152
153 void
154 setId(int val)
155 {
156 setInt(idField, val);
157 }
158
159 void
160 setId(const std::string& val)
161 {
162 setString(idField, val);
163 }
164
165 public: // functions to serialize/deserialize Ice object along with its ice_id
166 void serializeIceObject(const SerializablePtr& obj);
167 SerializablePtr deserializeIceObject();
168
169 public:
171
173
174 protected:
177
179 std::string idField;
180
181 private:
182 };
183
184} // namespace armarx
uint8_t index
virtual void merge(const AbstractObjectSerializerPtr &val)=0
virtual void setBool(unsigned int index, bool val)=0
virtual void setBool(const ::std::string &key, bool val)=0
virtual unsigned int size() const =0
virtual void getDoubleArray(const ::std::string &key, std::vector< double > &result)=0
virtual void setString(unsigned int index, const std::string &val)=0
virtual void setFloatArray(const ::std::string &key, const std::vector< float > &val)=0
virtual float getFloat(const ::std::string &key) const =0
virtual int getInt(const ::std::string &key) const =0
virtual void setVariantArray(const ::std::string &key, const std::vector< VariantBasePtr > &val)=0
virtual void setInt(const ::std::string &key, int val)=0
virtual bool getBool(const ::std::string &key) const =0
virtual void setDouble(const ::std::string &key, double val)=0
virtual void setStringArray(const ::std::string &key, const std::vector< std::string > &val)=0
virtual void append(const AbstractObjectSerializerPtr &val)=0
virtual void setIceObject(const ::std::string &key, const SerializablePtr &val)
virtual AbstractObjectSerializerPtr createElement() const =0
virtual void setElement(unsigned int index, const AbstractObjectSerializerPtr &val)=0
virtual SerializablePtr getIceObject(const ::std::string &key) const
virtual void getVariantMap(const ::std::string &key, StringVariantBaseMap &result)=0
virtual void setInt(unsigned int index, int val)=0
void setIdField(const std::string &fieldName)
virtual void setElementType(ElementType elemType, const ::Ice::Current &=Ice::emptyCurrent)=0
void setIceCommunicator(Ice::CommunicatorPtr ic)
virtual void setFloat(const ::std::string &key, float val)=0
virtual void setFloat(unsigned int index, float val)=0
void serializeIceObject(const SerializablePtr &obj)
virtual void setElement(const ::std::string &key, const AbstractObjectSerializerPtr &val)=0
virtual VariantPtr getVariant(const ::std::string &key) const
virtual void setDouble(unsigned int index, double val)=0
virtual void setDoubleArray(const ::std::string &key, const std::vector< double > &val)=0
virtual void getIntArray(const ::std::string &key, std::vector< int > &result)=0
virtual AbstractObjectSerializerPtr getElement(unsigned int index) const =0
virtual ElementType getElementType(const ::Ice::Current &=Ice::emptyCurrent) const =0
virtual void setIntArray(const ::std::string &key, const std::vector< int > &val)=0
virtual void getFloatArray(const ::std::string &key, std::vector< float > &result)=0
virtual void setString(const ::std::string &key, const std::string &val)=0
virtual void getStringArray(const ::std::string &key, std::vector< std::string > &result)=0
virtual void setVariantArray(const ::std::string &key, const std::vector< VariantPtr > &val)=0
virtual void getVariantArray(const ::std::string &key, std::vector< VariantPtr > &result)=0
virtual void setVariantMap(const ::std::string &key, const StringVariantBaseMap &val)=0
AbstractObjectSerializerPtr serializeVariant(const VariantPtr &val) const
virtual std::vector< std::string > getElementNames() const =0
virtual bool hasElement(const ::std::string &key) const =0
virtual void setVariant(const ::std::string &key, const VariantPtr &val)
virtual std::string getString(const ::std::string &key) const =0
virtual double getDouble(const ::std::string &key) const =0
virtual AbstractObjectSerializerPtr getElement(const ::std::string &key) const =0
::IceInternal::Handle<::Ice::Communicator > CommunicatorPtr
Definition IceManager.h:49
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::map< std::string, VariantBasePtr > StringVariantBaseMap
IceInternal::Handle< Variant > VariantPtr
Definition Variant.h:41
IceInternal::Handle< AbstractObjectSerializer > AbstractObjectSerializerPtr
ElementTypes::ElementType ElementType