Go to the documentation of this file.
   32 #include <Ice/ObjectAdapter.h> 
   33 #include <Ice/ValueFactory.h> 
   34 #include <IceUtil/UUID.h> 
   64         this->typeContainer = ContainerTypePtr::dynamicCast(
source.typeContainer->clone());
 
   66         auto it = 
source.elements.begin();
 
   68         for (; it != 
source.elements.end(); it++)
 
   70             elements[it->first] = it->second->cloneContainer();
 
   76     VariantContainerBasePtr
 
   92                                const VariantContainerBasePtr& variantContainer,
 
   93                                const Ice::Current& 
c)
 
   95         if (elements.find(key) != elements.end())
 
   97             throw KeyAlreadyExistsException();
 
  100         setElement(key, variantContainer->cloneContainer());
 
  111                                const VariantContainerBasePtr& variantContainer,
 
  112                                const Ice::Current& 
c)
 
  120                 getContainerType()->subType->typeId, variantContainer->getContainerType()->typeId);
 
  125             getContainerType()->subType = variantContainer->getContainerType()->clone();
 
  128         elements[key] = (variantContainer->cloneContainer());
 
  146         return int(elements.size());
 
  152         auto it = elements.begin();
 
  155         for (; it != elements.end(); it++)
 
  157             result = result && it->second->validateElements();
 
  163     VariantContainerBasePtr
 
  166         auto it = elements.find(key);
 
  168         if (it == elements.end())
 
  170             throw IndexOutOfBoundsException();
 
  179         VariantPtr ptr = getElement<SingleVariant>(key)->get();
 
  183             throw InvalidTypeException();
 
  192         return "::armarx::StringValueMapBase";
 
  198         std::stringstream ss;
 
  200         for (
const auto& element : elements)
 
  202             ss << element.first << 
": " << element.second->toString() << 
"\n";
 
  214         StringVariantContainerBaseMap::const_iterator it = elements.begin();
 
  216         for (; it != elements.end(); it++)
 
  218             newObj->setIceObject(it->first, it->second);
 
  222         obj->setElement(
"map", newObj);
 
  230         Ice::StringSeq keys = map->getElementNames();
 
  232         for (Ice::StringSeq::iterator it = keys.begin(); it != keys.end(); it++)
 
  234             VariantContainerBasePtr 
c =
 
  235                 VariantContainerBasePtr::dynamicCast(map->getIceObject(*it));
 
  243                 throw LocalException(
"Could not cast to VariantContainerBasePtr");
 
  
 
The Variant class is described here: Variants.
void setElement(const std::string &key, const VariantContainerBasePtr &variantContainer, const Ice::Current &c=Ice::emptyCurrent) override
VariantPtr getVariant(const std::string &key) const
getVariant returns a pointer to a Variant object associated with key
const VariantContainerType Map
static VariantTypeId getStaticType(const Ice::Current &c=Ice::emptyCurrent)
VariantContainerBasePtr cloneContainer(const Ice::Current &c=Ice::emptyCurrent) const override
int getSize(const Ice::Current &c=Ice::emptyCurrent) const override
StringValueMap & operator=(const StringValueMap &source)
Ice::Int getType(const Ice::Current &c=Ice::emptyCurrent) const override
The SingleVariant class is required to store single Variant instances in VariantContainer subclasses.
static bool compare(const ContainerTypePtr &type1, const ContainerTypePtr &secondType)
const VariantTypeId Invalid
std::string toString(const Ice::Current &=Ice::emptyCurrent) const override
void addElement(const std::string &key, const VariantContainerBasePtr &variantContainer, const Ice::Current &c=Ice::emptyCurrent) override
static std::string typeToString(VariantTypeId typeId)
Return the name of the registered type typeId.
void addVariant(const std::string &key, const Variant &variant)
Vertex source(const detail::edge_base< Directed, Vertex > &e, const PCG &)
StringValueMap(bool forceSingleTypeMap=true)
bool validateElements(const Ice::Current &c=Ice::emptyCurrent) override
void deserialize(const ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) override
VariantDataClassPtr clone(const Ice::Current &c=Ice::emptyCurrent) const override
std::shared_ptr< Object > ObjectPtr
void clear(const Ice::Current &c=Ice::emptyCurrent) override
clear calls ::clear() on the internal StringValueMap::elements container
VariantContainerBasePtr getElementBase(const std::string &key, const Ice::Current &c=Ice::emptyCurrent) const override
getElementBase is the slice-interface implementation for getting an Element and only returns a basepo...
The StringValueMap class is a subclass of VariantContainer and is comparable to a std::map<std::strin...
This file offers overloads of toIce() and fromIce() functions for STL container types.
static VariantTypeId addTypeName(const std::string &typeName)
Register a new type for the use in a Variant.
ContainerTypePtr getContainerType(const Ice::Current &c=Ice::emptyCurrent) const override
void serialize(const ObjectSerializerBasePtr &serializer, const ::Ice::Current &=Ice::emptyCurrent) const override
static std::string getTypePrefix()
Ice::ObjectPtr ice_clone() const override