From: <ag...@us...> - 2011-12-22 00:59:34
|
Revision: 2651 http://zoolib.svn.sourceforge.net/zoolib/?rev=2651&view=rev Author: agreen Date: 2011-12-22 00:59:28 +0000 (Thu, 22 Dec 2011) Log Message: ----------- Support reading binary values. Modified Paths: -------------- trunk/zoolib/source/cxx/zoolib/ZYad_JSON.cpp trunk/zoolib/source/cxx/zoolib/ZYad_JSON.h Modified: trunk/zoolib/source/cxx/zoolib/ZYad_JSON.cpp =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZYad_JSON.cpp 2011-12-18 04:28:30 UTC (rev 2650) +++ trunk/zoolib/source/cxx/zoolib/ZYad_JSON.cpp 2011-12-22 00:59:28 UTC (rev 2651) @@ -255,6 +255,10 @@ { return new YadStrimR(iStrimmerU); } + else if (iReadOptions.fAllowBinary.DGet(false) && sTryRead_CP(theStrimU, '(')) + { + return new YadStreamR(iStrimmerU); + } else { ZAny theVal; @@ -315,6 +319,26 @@ // ================================================================================================= #pragma mark - +#pragma mark * YadStreamR + +YadStreamR::YadStreamR(ZRef<ZStrimmerU> iStrimmerU) +: fStrimmerU(iStrimmerU) +, fStreamR(iStrimmerU->GetStrimU()) + {} + +void YadStreamR::Finish() + { + using namespace ZUtil_Strim; + fStreamR.SkipAll(); + if (not sTryRead_CP(fStrimmerU->GetStrimU(), ')')) + spThrowParseException("Expected ')' to close a binary data"); + } + +const ZStreamR& YadStreamR::GetStreamR() + { return fStreamR; } + +// ================================================================================================= +#pragma mark - #pragma mark * YadStrimR YadStrimR::YadStrimR(ZRef<ZStrimmerU> iStrimmerU) Modified: trunk/zoolib/source/cxx/zoolib/ZYad_JSON.h =================================================================== --- trunk/zoolib/source/cxx/zoolib/ZYad_JSON.h 2011-12-18 04:28:30 UTC (rev 2650) +++ trunk/zoolib/source/cxx/zoolib/ZYad_JSON.h 2011-12-22 00:59:28 UTC (rev 2651) @@ -22,6 +22,7 @@ #define __ZYad_JSON__ 1 #include "zconfig.h" +#include "zoolib/ZStreamR_HexStrim.h" #include "zoolib/ZStrim.h" #include "zoolib/ZStrim_Escaped.h" #include "zoolib/ZYad_Std.h" @@ -71,6 +72,27 @@ // ================================================================================================= #pragma mark - +#pragma mark * YadStreamR + +class YadStreamR +: public ZYadStreamR + { +public: + YadStreamR(ZRef<ZStrimmerU> iStrimmerU); + +// From ZYadR + virtual void Finish(); + +// From ZStreamerR via ZYadStreamR + const ZStreamR& GetStreamR(); + +private: + ZRef<ZStrimmerU> fStrimmerU; + ZStreamR_HexStrim fStreamR; + }; + +// ================================================================================================= +#pragma mark - #pragma mark * YadStrimR class YadStrimR This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |