diff options
-rw-r--r-- | slicer/slicer/modelParts.cpp | 9 | ||||
-rw-r--r-- | slicer/slicer/modelParts.h | 4 | ||||
-rw-r--r-- | slicer/slicer/slicer.cpp | 2 |
3 files changed, 15 insertions, 0 deletions
diff --git a/slicer/slicer/modelParts.cpp b/slicer/slicer/modelParts.cpp index d8662e4..722417d 100644 --- a/slicer/slicer/modelParts.cpp +++ b/slicer/slicer/modelParts.cpp @@ -119,5 +119,14 @@ namespace Slicer { template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<Ice::Short>::rootName = "Short"; template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<Ice::Int>::rootName = "Int"; template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<Ice::Long>::rootName = "Long"; + + template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<IceUtil::Optional<std::string>>::rootName = "OptionalString"; + template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<IceUtil::Optional<bool>>::rootName = "OptionalBoolean"; + template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Float>>::rootName = "OptionalFloat"; + template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Double>>::rootName = "OptionalDouble"; + template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Byte>>::rootName = "OptionalByte"; + template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Short>>::rootName = "OptionalShort"; + template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Int>>::rootName = "OptionalInt"; + template<> DLL_PUBLIC std::string Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Long>>::rootName = "OptionalLong"; } diff --git a/slicer/slicer/modelParts.h b/slicer/slicer/modelParts.h index f914678..fa365ce 100644 --- a/slicer/slicer/modelParts.h +++ b/slicer/slicer/modelParts.h @@ -122,9 +122,13 @@ namespace Slicer { }; #define templateMODELPARTFOR(Type) \ + template <class T> ModelPartPtr DLL_PUBLIC ModelPartFor(IceUtil::Optional<Type> & t); \ + template <class T> ModelPartPtr DLL_PUBLIC ModelPartFor(IceUtil::Optional<Type> * t); \ template <class T> ModelPartPtr DLL_PUBLIC ModelPartFor(Type & t); \ template <class T> ModelPartPtr DLL_PUBLIC ModelPartFor(Type * t); #define MODELPARTFOR(Type) \ + ModelPartPtr DLL_PUBLIC ModelPartFor(IceUtil::Optional<Type> & t); \ + ModelPartPtr DLL_PUBLIC ModelPartFor(IceUtil::Optional<Type> * t); \ ModelPartPtr DLL_PUBLIC ModelPartFor(Type & t); \ ModelPartPtr DLL_PUBLIC ModelPartFor(Type * t); templateMODELPARTFOR(IceInternal::Handle<T>); diff --git a/slicer/slicer/slicer.cpp b/slicer/slicer/slicer.cpp index a060956..b2a531e 100644 --- a/slicer/slicer/slicer.cpp +++ b/slicer/slicer/slicer.cpp @@ -3,6 +3,8 @@ namespace Slicer { const Metadata emptyMetadata; #define MODELPARTFOR(Type, ModelPart) \ + ModelPartPtr ModelPartFor(IceUtil::Optional<Type> & t) { return new ModelPartForOptional< ModelPart<Type> >(t); } \ + ModelPartPtr ModelPartFor(IceUtil::Optional<Type> * t) { return new ModelPartForOptional< ModelPart<Type> >(t); } \ ModelPartPtr ModelPartFor(Type & t) { return new ModelPart< Type >(t); } \ ModelPartPtr ModelPartFor(Type * t) { return new ModelPart< Type >(t); } MODELPARTFOR(std::string, ModelPartForSimple); |