From 82a21f6d8512ea38ddb99989b087b8cadbe0e7d4 Mon Sep 17 00:00:00 2001 From: Tomasz Sowa Date: Fri, 21 May 2021 01:33:01 +0200 Subject: [PATCH] removed: SpaceParser::SetSpace(...) methods, now ParseJSON/Space(...) methods take a space as an argument --- src/space/spaceparser.cpp | 129 +++++++++++++------------------------- src/space/spaceparser.h | 42 ++++++------- 2 files changed, 63 insertions(+), 108 deletions(-) diff --git a/src/space/spaceparser.cpp b/src/space/spaceparser.cpp index 45c8ba6..e6ded1f 100644 --- a/src/space/spaceparser.cpp +++ b/src/space/spaceparser.cpp @@ -55,18 +55,6 @@ SpaceParser::SpaceParser() } -void SpaceParser::SetSpace(Space * pspace) -{ - root_space = pspace; -} - - -void SpaceParser::SetSpace(Space & pspace) -{ - root_space = &pspace; -} - - void SpaceParser::SetDefault() { // you can change this separators to what you want @@ -110,17 +98,18 @@ int SpaceParser::get_last_parsed_line() -SpaceParser::Status SpaceParser::ParseJSONFile(const char * file_name) +SpaceParser::Status SpaceParser::ParseJSONFile(const char * file_name, Space & out_space, bool clear_space) { reading_from_file = true; parsing_space = false; + root_space = &out_space; file.clear(); file.open(file_name, std::ios_base::binary | std::ios_base::in); if( file ) { - ParseRootSpace(); + ParseRootSpace(clear_space); file.close(); } else @@ -133,44 +122,45 @@ return status; -SpaceParser::Status SpaceParser::ParseJSONFile(const std::string & file_name) +SpaceParser::Status SpaceParser::ParseJSONFile(const std::string & file_name, Space & out_space, bool clear_space) { - return ParseJSONFile(file_name.c_str()); + return ParseJSONFile(file_name.c_str(), out_space, clear_space); } -SpaceParser::Status SpaceParser::ParseJSONFile(const wchar_t * file_name) +SpaceParser::Status SpaceParser::ParseJSONFile(const wchar_t * file_name, Space & out_space, bool clear_space) { std::string file_name_utf8; wide_to_utf8(file_name, file_name_utf8); - return ParseJSONFile(file_name_utf8.c_str()); + return ParseJSONFile(file_name_utf8.c_str(), out_space, clear_space); } -SpaceParser::Status SpaceParser::ParseJSONFile(const std::wstring & file_name) +SpaceParser::Status SpaceParser::ParseJSONFile(const std::wstring & file_name, Space & out_space, bool clear_space) { - return ParseJSONFile(file_name.c_str()); + return ParseJSONFile(file_name.c_str(), out_space, clear_space); } -SpaceParser::Status SpaceParser::ParseSpaceFile(const char * file_name) +SpaceParser::Status SpaceParser::ParseSpaceFile(const char * file_name, Space & out_space, bool clear_space) { reading_from_file = true; parsing_space = true; + root_space = &out_space; file.clear(); file.open(file_name, std::ios_base::binary | std::ios_base::in); if( file ) { - ParseRootSpace(); + ParseRootSpace(clear_space); file.close(); } else @@ -183,126 +173,129 @@ return status; -SpaceParser::Status SpaceParser::ParseSpaceFile(const std::string & file_name) +SpaceParser::Status SpaceParser::ParseSpaceFile(const std::string & file_name, Space & out_space, bool clear_space) { - return ParseSpaceFile(file_name.c_str()); + return ParseSpaceFile(file_name.c_str(), out_space, clear_space); } -SpaceParser::Status SpaceParser::ParseSpaceFile(const wchar_t * file_name) +SpaceParser::Status SpaceParser::ParseSpaceFile(const wchar_t * file_name, Space & out_space, bool clear_space) { std::string file_name_utf8; wide_to_utf8(file_name, file_name_utf8); - return ParseSpaceFile(file_name_utf8.c_str()); + return ParseSpaceFile(file_name_utf8.c_str(), out_space, clear_space); } -SpaceParser::Status SpaceParser::ParseSpaceFile(const std::wstring & file_name) +SpaceParser::Status SpaceParser::ParseSpaceFile(const std::wstring & file_name, Space & out_space, bool clear_space) { - return ParseSpaceFile(file_name.c_str()); + return ParseSpaceFile(file_name.c_str(), out_space, clear_space); } -SpaceParser::Status SpaceParser::ParseJSON(const char * str) +SpaceParser::Status SpaceParser::ParseJSON(const char * str, Space & out_space, bool clear_space) { reading_from_file = false; reading_from_wchar_string = false; pchar_ascii = str; pchar_unicode = 0; parsing_space = false; + root_space = &out_space; - ParseRootSpace(); + ParseRootSpace(clear_space); -return status; + return status; } -SpaceParser::Status SpaceParser::ParseJSON(const std::string & str) +SpaceParser::Status SpaceParser::ParseJSON(const std::string & str, Space & out_space, bool clear_space) { - return ParseJSON(str.c_str()); + return ParseJSON(str.c_str(), out_space, clear_space); } -SpaceParser::Status SpaceParser::ParseJSON(const wchar_t * str) +SpaceParser::Status SpaceParser::ParseJSON(const wchar_t * str, Space & out_space, bool clear_space) { reading_from_file = false; reading_from_wchar_string = true; pchar_unicode = str; pchar_ascii = 0; parsing_space = false; + root_space = &out_space; - ParseRootSpace(); + ParseRootSpace(clear_space); -return status; + return status; } -SpaceParser::Status SpaceParser::ParseJSON(const std::wstring & str) +SpaceParser::Status SpaceParser::ParseJSON(const std::wstring & str, Space & out_space, bool clear_space) { - return ParseJSON(str.c_str()); + return ParseJSON(str.c_str(), out_space, clear_space); } -SpaceParser::Status SpaceParser::ParseSpace(const char * str) +SpaceParser::Status SpaceParser::ParseSpace(const char * str, Space & out_space, bool clear_space) { reading_from_file = false; reading_from_wchar_string = false; pchar_ascii = str; pchar_unicode = 0; parsing_space = true; + root_space = &out_space; - ParseRootSpace(); + ParseRootSpace(clear_space); -return status; + return status; } -SpaceParser::Status SpaceParser::ParseSpace(const std::string & str) +SpaceParser::Status SpaceParser::ParseSpace(const std::string & str, Space & out_space, bool clear_space) { - return ParseSpace(str.c_str()); + return ParseSpace(str.c_str(), out_space, clear_space); } -SpaceParser::Status SpaceParser::ParseSpace(const wchar_t * str) +SpaceParser::Status SpaceParser::ParseSpace(const wchar_t * str, Space & out_space, bool clear_space) { reading_from_file = false; reading_from_wchar_string = true; pchar_unicode = str; pchar_ascii = 0; parsing_space = true; + root_space = &out_space; - ParseRootSpace(); + ParseRootSpace(clear_space); -return status; + return status; } -SpaceParser::Status SpaceParser::ParseSpace(const std::wstring & str) +SpaceParser::Status SpaceParser::ParseSpace(const std::wstring & str, Space & out_space, bool clear_space) { - return ParseSpace(str.c_str()); + return ParseSpace(str.c_str(), out_space, clear_space); } -void SpaceParser::ParseRootSpace() +void SpaceParser::ParseRootSpace(bool clear_root_space) { line = 1; status = ok; - if( !root_space ) + if( clear_root_space ) { - status = no_space; - return; + root_space->set_empty_object(); } ReadChar(); // put first character to lastc @@ -784,37 +777,6 @@ void SpaceParser::TrimLastWhite(std::wstring & s) } -/* -void SpaceParser::Trim(std::wstring & s) -{ -std::wstring::size_type i; - - if( s.empty() ) - return; - - // looking for white characters at the end - for(i=s.size()-1 ; i>0 && IsWhite(s[i]) ; --i); - - if( i==0 && IsWhite(s[i]) ) - { - // the whole string consists of white characters - s.clear(); - return; - } - - // deleting white characters at the end - if( i != s.size() - 1 ) - s.erase(i+1, std::wstring::npos); - - // looking for white characters at the beginning - for(i=0 ; i