zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #03920
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
Matthias Brantner has proposed merging lp:~zorba-coders/zorba/fnserialize into lp:zorba.
Requested reviews:
Till Westmann (tillw)
Matthias Brantner (matthias-brantner)
For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/fnserialize/+merge/89504
fn:serialize avoids copying the result but returns a streamable string instead
--
https://code.launchpad.net/~zorba-coders/zorba/fnserialize/+merge/89504
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'src/runtime/parsing_and_serializing/parsing_and_serializing_impl.cpp'
--- src/runtime/parsing_and_serializing/parsing_and_serializing_impl.cpp 2011-08-10 02:50:23 +0000
+++ src/runtime/parsing_and_serializing/parsing_and_serializing_impl.cpp 2012-01-20 22:06:28 +0000
@@ -122,12 +122,16 @@
/*******************************************************************************
14.9.2 fn:serialize
********************************************************************************/
+void
+FnSerializeIterator::streamReleaser(std::istream* s)
+{
+ delete s;
+}
+
bool
FnSerializeIterator::nextImpl(store::Item_t& aResult, PlanState& aPlanState) const
{
store::Item_t lParams;
- std::stringstream lResultStream;
- zstring lResult;
PlanIteratorState* lState;
DEFAULT_STACK_INIT(PlanIteratorState, lState, aPlanState);
@@ -254,12 +258,15 @@
lElemIter->close();
}
- // and now serialize
- lSerializer.serialize(lIterWrapper, lResultStream);
- lResult = lResultStream.str();
+ {
+ // and now serialize
+ std::auto_ptr<std::stringstream> lResultStream(new std::stringstream());
+ lSerializer.serialize(lIterWrapper, *lResultStream.get());
+ GENV_ITEMFACTORY->createStreamableString(aResult, *lResultStream.release(), FnSerializeIterator::streamReleaser, true);
+ }
}
+ STACK_PUSH(true, lState);
- STACK_PUSH(GENV_ITEMFACTORY->createString(aResult, lResult), lState);
STACK_END (lState);
}
=== modified file 'src/runtime/parsing_and_serializing/pregenerated/parsing_and_serializing.h'
--- src/runtime/parsing_and_serializing/pregenerated/parsing_and_serializing.h 2011-10-19 15:28:51 +0000
+++ src/runtime/parsing_and_serializing/pregenerated/parsing_and_serializing.h 2012-01-20 22:06:28 +0000
@@ -95,6 +95,8 @@
virtual ~FnSerializeIterator();
+public:
+ static void streamReleaser(std::istream* stream);
void accept(PlanIterVisitor& v) const;
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
=== modified file 'src/runtime/spec/parsing_and_serializing/parsing_and_serializing.xml'
--- src/runtime/spec/parsing_and_serializing/parsing_and_serializing.xml 2012-01-11 17:30:25 +0000
+++ src/runtime/spec/parsing_and_serializing/parsing_and_serializing.xml 2012-01-20 22:06:28 +0000
@@ -74,6 +74,10 @@
</zorba:function>
+ <zorba:method static="true" name="streamReleaser" return="void">
+ <zorba:param type="std::istream*" name="stream"/>
+ </zorba:method>
+
</zorba:iterator>
</zorba:iterators>
Follow ups
-
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: noreply, 2012-01-21
-
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Zorba Build Bot, 2012-01-21
-
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Zorba Build Bot, 2012-01-20
-
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Matthias Brantner, 2012-01-20
-
Re: [Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Till Westmann, 2012-01-20
-
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Zorba Build Bot, 2012-01-20
-
Re: [Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Zorba Build Bot, 2012-01-20
-
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Zorba Build Bot, 2012-01-20
-
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Zorba Build Bot, 2012-01-20
-
Re: [Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Matthias Brantner, 2012-01-20
-
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Matthias Brantner, 2012-01-20
-
[Merge] lp:~zorba-coders/zorba/fnserialize into lp:zorba
From: Matthias Brantner, 2012-01-20