summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2016-09-30 19:30:35 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2016-09-30 19:30:35 +0100
commitce7756945dc0d5abb0d2effc81771c2774e2bd28 (patch)
treed9006d45ea923e58e2808fe7345ce6de0a0164a8
parentSlicer 1.4 compatibility fix (diff)
downloadproject2-ce7756945dc0d5abb0d2effc81771c2774e2bd28.tar.bz2
project2-ce7756945dc0d5abb0d2effc81771c2774e2bd28.tar.xz
project2-ce7756945dc0d5abb0d2effc81771c2774e2bd28.zip
Unpack models correctlyproject2-1.2.7.1
-rw-r--r--project2/ice/iceRows.cpp46
-rw-r--r--project2/ice/iceRows.h2
-rw-r--r--project2/ice/slice2Rows.cpp2
3 files changed, 26 insertions, 24 deletions
diff --git a/project2/ice/iceRows.cpp b/project2/ice/iceRows.cpp
index 6e2015d..3748512 100644
--- a/project2/ice/iceRows.cpp
+++ b/project2/ice/iceRows.cpp
@@ -67,31 +67,33 @@ RowProcSerializer::RowProcSerializer(ExecContext * e, const RowProcessorCallback
}
void
-RowProcSerializer::Serialize(ModelPartPtr mp)
+RowProcSerializer::Serialize(ModelPartForRootPtr mp)
{
if (mp) {
- switch (mp->GetType()) {
- case mpt_Null:
- return;
- case mpt_Simple:
- case mpt_Dictionary:
- throw std::runtime_error("Not a sequence of things");
- case mpt_Complex:
- {
- IceRowState irs(ec, mp);
- irs.IterateOver(mp, rpc);
- break;
- }
- case mpt_Sequence:
- {
- IceRowState * irs = NULL;
- mp->OnEachChild(boost::bind(&RowProcSerializer::SerializeRow, this, boost::ref(irs), _2));
- if (irs) {
- delete irs;
+ mp->OnEachChild([this](const std::string &, ModelPartPtr mp, HookCommonPtr) {
+ switch (mp->GetType()) {
+ case mpt_Null:
+ return;
+ case mpt_Simple:
+ case mpt_Dictionary:
+ throw std::runtime_error("Not a sequence of things");
+ case mpt_Complex:
+ {
+ IceRowState irs(ec, mp);
+ irs.IterateOver(mp, rpc);
+ break;
}
- break;
- }
- }
+ case mpt_Sequence:
+ {
+ IceRowState * irs = NULL;
+ mp->OnEachChild(boost::bind(&RowProcSerializer::SerializeRow, this, boost::ref(irs), _2));
+ if (irs) {
+ delete irs;
+ }
+ break;
+ }
+ }
+ });
}
}
diff --git a/project2/ice/iceRows.h b/project2/ice/iceRows.h
index b333eb2..77507f2 100644
--- a/project2/ice/iceRows.h
+++ b/project2/ice/iceRows.h
@@ -14,7 +14,7 @@ class DLL_PUBLIC RowProcSerializer : public Slicer::Serializer {
public:
RowProcSerializer(ExecContext *, const RowProcessorCallback &);
- void Serialize(Slicer::ModelPartPtr) override;
+ void Serialize(Slicer::ModelPartForRootPtr) override;
private:
void SerializeRow(IceRowState * &, Slicer::ModelPartPtr);
diff --git a/project2/ice/slice2Rows.cpp b/project2/ice/slice2Rows.cpp
index 8fa17b8..a702dcf 100644
--- a/project2/ice/slice2Rows.cpp
+++ b/project2/ice/slice2Rows.cpp
@@ -59,7 +59,7 @@ Slice2Rows::visitOperation(const Slice::OperationPtr & o)
fprintf(code, "\t\t\t\t\t\tauto result = ");
CallOperation(o);
fprintf(code, ";\n");
- fprintf(code, "\t\t\t\t\t\tSlicer::ModelPartPtr mp = Slicer::ModelPart::CreateFor(result);\n");
+ fprintf(code, "\t\t\t\t\t\tSlicer::ModelPartForRootPtr mp = Slicer::ModelPart::CreateRootFor(result);\n");
fprintf(code, "\t\t\t\t\t\ttoRpc->Serialize(mp);\n");
fprintf(code, "\t\t\t\t\t}\n\n");
ParameterVariables(o);