summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <daniel.goodliffe@pressassociation.com>2016-10-05 16:15:56 +0100
committerDan Goodliffe <daniel.goodliffe@pressassociation.com>2016-10-05 16:15:56 +0100
commit15e866702806b941dedb8dff94342528c9cd0b69 (patch)
tree4a9c2df0f866c3f3f2678d863231dfef00f64f12
parentDon't assume absolute class name (diff)
downloadslicer-15e866702806b941dedb8dff94342528c9cd0b69.tar.bz2
slicer-15e866702806b941dedb8dff94342528c9cd0b69.tar.xz
slicer-15e866702806b941dedb8dff94342528c9cd0b69.zip
Use single instantiation point for model part roots
-rw-r--r--slicer/slicer/modelPartsTypes.cpp18
-rw-r--r--slicer/slicer/modelPartsTypes.impl.h2
-rw-r--r--slicer/tool/parser.cpp3
3 files changed, 2 insertions, 21 deletions
diff --git a/slicer/slicer/modelPartsTypes.cpp b/slicer/slicer/modelPartsTypes.cpp
index bc3810c..7cf508e 100644
--- a/slicer/slicer/modelPartsTypes.cpp
+++ b/slicer/slicer/modelPartsTypes.cpp
@@ -28,24 +28,6 @@ namespace Slicer {
template<> const std::string Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Int>>::rootName = "OptionalInt";
template<> const std::string Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Long>>::rootName = "OptionalLong";
- template class Slicer::ModelPartForRoot<std::string>;
- template class Slicer::ModelPartForRoot<bool>;
- template class Slicer::ModelPartForRoot<Ice::Float>;
- template class Slicer::ModelPartForRoot<Ice::Double>;
- template class Slicer::ModelPartForRoot<Ice::Byte>;
- template class Slicer::ModelPartForRoot<Ice::Short>;
- template class Slicer::ModelPartForRoot<Ice::Int>;
- template class Slicer::ModelPartForRoot<Ice::Long>;
-
- template class Slicer::ModelPartForRoot<IceUtil::Optional<std::string>>;
- template class Slicer::ModelPartForRoot<IceUtil::Optional<bool>>;
- template class Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Float>>;
- template class Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Double>>;
- template class Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Byte>>;
- template class Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Short>>;
- template class Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Int>>;
- template class Slicer::ModelPartForRoot<IceUtil::Optional<Ice::Long>>;
-
// ModelPartForRootBase
ModelPartForRootBase::ModelPartForRootBase(ModelPartPtr m) :
mp(m)
diff --git a/slicer/slicer/modelPartsTypes.impl.h b/slicer/slicer/modelPartsTypes.impl.h
index 5788c3f..c34b482 100644
--- a/slicer/slicer/modelPartsTypes.impl.h
+++ b/slicer/slicer/modelPartsTypes.impl.h
@@ -10,6 +10,8 @@
#define CUSTOMMODELPARTFOR(Type, BaseModelPart, ModelPartType) \
template class BaseModelPart; \
+ template class ModelPartForRoot<Type>; \
+ template class ModelPartForRoot< IceUtil::Optional<Type> >; \
template<> ModelPartPtr ModelPart::CreateFor(Type & s) { return new ModelPartType(s); } \
template<> ModelPartPtr ModelPart::CreateFor(IceUtil::Optional<Type> & s) { return new ModelPartForOptional<ModelPartType>(s); } \
template<> ModelPartForRootPtr ModelPart::CreateRootFor(Type & s) { return new ModelPartForRoot<Type>(s); } \
diff --git a/slicer/tool/parser.cpp b/slicer/tool/parser.cpp
index d61c8a6..7613ab6 100644
--- a/slicer/tool/parser.cpp
+++ b/slicer/tool/parser.cpp
@@ -169,9 +169,6 @@ namespace Slicer {
fprintbf(cpp, "template<> DLL_PUBLIC\n");
fprintbf(cpp, "const std::string ModelPartForRoot< IceUtil::Optional< %s > >::rootName(\"Optional%s\");\n\n",
type, name);
-
- fprintbf(cpp, "template class ModelPartForRoot< %s >;\n\n", type);
- fprintbf(cpp, "template class ModelPartForRoot< IceUtil::Optional< %s > >;\n\n", type);
}
bool