13 #ifndef mitkVectorPropertySerializer_h
14 #define mitkVectorPropertySerializer_h
42 template <
typename DATATYPE>
55 std::vector<std::string>
GetClassHierarchy()
const override {
return mitk::GetClassHierarchy<Self>(); }
62 static std::string nameOfClass =
64 return nameOfClass.c_str();
67 const char *
GetNameOfClass()
const override {
return this->GetStaticNameOfClass(); }
68 itkFactorylessNewMacro(
Self);
72 tinyxml2::XMLElement*
Serialize(tinyxml2::XMLDocument& doc)
override
74 auto *listElement = doc.NewElement(
"Values");
79 unsigned int index(0);
80 for (
auto listEntry : elements)
82 std::stringstream indexS;
85 auto *entryElement = doc.NewElement(
"Value");
86 entryElement->SetAttribute(
"idx", indexS.str().c_str());
87 entryElement->SetAttribute(
"value", boost::lexical_cast<std::string>(listEntry).c_str());
88 listElement->InsertEndChild(entryElement);
100 BaseProperty::Pointer
Deserialize(
const tinyxml2::XMLElement *listElement)
override
106 std::string valueString;
108 for (
auto *valueElement = listElement->FirstChildElement(
"Value"); valueElement;
109 valueElement = valueElement->NextSiblingElement(
"Value"))
111 valueString = valueElement->Attribute(
"value");
112 if (valueString.empty())
114 MITK_ERROR <<
"Missing value attribute in <Values> list";
120 value = boost::lexical_cast<DATATYPE>(valueString);
122 catch (boost::bad_lexical_cast &e)
124 MITK_ERROR <<
"Could not parse '" << valueString <<
"' as number: " << e.what();
128 datalist.push_back(value);
132 property->SetValue(datalist);
133 return property.GetPointer();
#define MITKSCENESERIALIZATIONBASE_EXPORT
Base class for objects that serialize BaseProperty types.
Serializes a VectorProperty.
std::vector< std::string > GetClassHierarchy() const override
static const char * GetStaticNameOfClass()
itk::SmartPointer< const Self > ConstPointer
BaseProperty::Pointer Deserialize(const tinyxml2::XMLElement *listElement) override
Construct a property from an XML serialization.
BasePropertySerializer SuperClass
itk::SmartPointer< Self > Pointer
VectorPropertySerializer< DATATYPE > Self
const char * GetNameOfClass() const override
tinyxml2::XMLElement * Serialize(tinyxml2::XMLDocument &doc) override
Build an XML version of this property.
VectorProperty< DATATYPE > PropertyType
Providing a std::vector as property.
std::vector< DATATYPE > VectorType
Find image slices visible on a given plane.
VectorPropertySerializer< int > IntVectorPropertySerializer
VectorPropertySerializer< double > DoubleVectorPropertySerializer
Helper for VectorProperty to determine a good ITK ClassName.