From 7e1d63dd9fd149e4934bf77095c8610fac786b04 Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Thu, 20 Oct 2005 13:40:58 +0000 Subject: First checkin git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@2 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkbasecxx/serializers/SingleLineSerializer.cpp | 203 ++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 orkbasecxx/serializers/SingleLineSerializer.cpp (limited to 'orkbasecxx/serializers/SingleLineSerializer.cpp') diff --git a/orkbasecxx/serializers/SingleLineSerializer.cpp b/orkbasecxx/serializers/SingleLineSerializer.cpp new file mode 100644 index 0000000..11b60d9 --- /dev/null +++ b/orkbasecxx/serializers/SingleLineSerializer.cpp @@ -0,0 +1,203 @@ +/* + * Oreka -- A media capture and retrieval platform + * + * Copyright (C) 2005, orecx LLC + * + * http://www.orecx.com + * + * This program is free software, distributed under the terms of + * the GNU General Public License. + * Please refer to http://www.gnu.org/copyleft/gpl.html + * + */ + +#include "ace/OS_NS_ctype.h" +#include "Utils.h" +#include "SingleLineSerializer.h" + + +void SingleLineSerializer::AddString(const char* key, CStdString& value) +{ + CStdString pair; + CStdString escapedValue; + EscapeSingleLine(value, escapedValue); + pair.Format("%s=%s ", key, (PCSTR)escapedValue); + m_output += pair; +} + +CStdString SingleLineSerializer::Serialize() +{ + m_deSerialize = false; // Set Serialize mode + m_object->Define(this); + return m_output; +} + +typedef enum {SingleLineStartState, SingleLineKeyState, SingleLineValueState, SingleLineErrorState} SingleLineState; + +void SingleLineSerializer::DeSerialize(CStdString& input) +{ + // read string and extract values into map + SingleLineState state = SingleLineStartState; + CStdString key; + CStdString value; + // #### Additionally, errorDescription should be converted to Exceptions + CStdString errorDescription; + + input.Trim(); + + for(int i=0; iDefine(this); + m_object->Validate(); +} + +// Escape the space, colon and percent characters for serializing to Key-Value-Pair text +void SingleLineSerializer::EscapeSingleLine(CStdString& in, CStdString& out) +{ + for(int i=0; i equalsPostion) + { + result = input.Mid(equalsPostion+1, spacePostion-equalsPostion-1); + } + else + { + result = input.Mid(equalsPostion+1, input.GetLength() - equalsPostion - 1); + } + } + result.ToLower(); + return result; +} + -- cgit v1.2.3