Go to the documentation of this file.
28 #include <Ice/LocalException.h>
29 #include <Ice/ValueFactory.h>
30 #include <IceUtil/UUID.h>
71 variantNode->setInt(
"type", type);
74 if (val->ice_id() == TimedVariantBase::ice_staticId())
77 variantNode->setDouble(
"timestamp", tvar->getTimestamp());
80 if (!val->getInitialized())
82 variantNode->setString(
"value",
"(not initialized)");
86 variantNode->setString(
"value",
"(invalid type)");
90 variantNode->setInt(
"value", val->getInt());
94 variantNode->setInt(
"value",
static_cast<int>(val->getLong()));
98 variantNode->setFloat(
"value", val->getFloat());
102 variantNode->setDouble(
"value", val->getDouble());
106 variantNode->setString(
"value", val->getString());
110 variantNode->setBool(
"value", val->getBool());
114 VariantDataClassPtr ptr = val->getClass<VariantDataClass>();
119 ptr->serialize(valueNode);
121 variantNode->setElement(
"value", valueNode);
125 variantNode->setString(
"value",
"(NULLCAST for" + val->getTypeName() +
")");
140 std::string typeName =
getString(
"typeName");
171 var->setBool(
getBool(
"value"));
187 var->setInt(
getInt(
"value"));
191 var->setLong(
getInt(
"value"));
197 VariantDataClassPtr
data;
201 Ice::ValueFactoryPtr valFac =
ic->getValueFactoryManager()->find(typeStr);
205 throw Ice::NoValueFactoryException(__FILE__,
207 "Could not find ValueFactory for string '" +
212 data = VariantDataClassPtr::dynamicCast(valFac->create(typeStr));
217 "IceCommunicator wasn't set in Serializer";
222 static Ice::Current
c;
226 c.adapter =
ic->createObjectAdapterWithEndpoints(
227 "Dummy" + IceUtil::generateUUID(),
261 return variantNode->deserializeVariant();
271 return variantNode->deserializeVariant();
278 return iceObjectNode ? iceObjectNode->deserializeIceObject() : SerializablePtr();
285 return iceObjectNode ? iceObjectNode->deserializeIceObject() : SerializablePtr();
292 iceObjectNode->serializeIceObject(obj);
301 iceObjectNode->serializeIceObject(obj);
311 obj->serialize(
this);
317 const std::string typeStr =
getString(
"type");
321 Ice::ValueFactoryPtr valFac =
ic->getValueFactoryManager()->find(typeStr);
326 "Could not find ObjectFactory for string '" + typeStr +
"'");
329 SerializablePtr obj = SerializablePtr::dynamicCast(valFac->create(typeStr));
330 static Ice::Current
c;
334 c.adapter =
ic->createObjectAdapterWithEndpoints(
335 "Dummy" + IceUtil::generateUUID(),
339 obj->deserialize(
this,
c);
345 return SerializablePtr();
virtual AbstractObjectSerializerPtr createElement() const =0
The Variant class is described here: Variants.
virtual SerializablePtr getIceObject(const ::std::string &key) const
const VariantTypeId Float
void setIceCommunicator(Ice::CommunicatorPtr ic)
virtual void setVariant(const ::std::string &key, const VariantPtr &val)
static const std::map< VariantTypeId, std::string > & getTypes()
Returns the mapping of currently registered types.
virtual VariantPtr getVariant(const ::std::string &key) const
AbstractObjectSerializerPtr serializeVariant(const VariantPtr &val) const
const VariantTypeId Double
IceInternal::Handle< Variant > VariantPtr
virtual AbstractObjectSerializerPtr getElement(unsigned int index) const =0
const VariantTypeId Invalid
VariantPtr deserializeVariant()
SerializablePtr deserializeIceObject()
~AbstractObjectSerializer() override
static std::string typeToString(VariantTypeId typeId)
Return the name of the registered type typeId.
virtual float getFloat(const ::std::string &key) const =0
void serializeIceObject(const SerializablePtr &obj)
AbstractObjectSerializer()
virtual void setIceObject(const ::std::string &key, const SerializablePtr &val)
virtual bool getBool(const ::std::string &key) const =0
virtual int getInt(const ::std::string &key) const =0
virtual bool hasElement(const ::std::string &key) const =0
virtual std::string getString(const ::std::string &key) const =0
virtual void setElement(const ::std::string &key, const AbstractObjectSerializerPtr &val)=0
static int hashTypeName(const std::string &typeName)
Compute and return a hash value for a given type name.
const VariantTypeId String
virtual double getDouble(const ::std::string &key) const =0
This file offers overloads of toIce() and fromIce() functions for STL container types.
virtual void setString(const ::std::string &key, const std::string &val)=0
static VariantTypeId addTypeName(const std::string &typeName)
Register a new type for the use in a Variant.