diff options
38 files changed, 279 insertions, 263 deletions
diff --git a/ArchiveEx/CMakeLists.txt b/ArchiveEx/CMakeLists.txt index a40fcdc..ce17999 100644 --- a/ArchiveEx/CMakeLists.txt +++ b/ArchiveEx/CMakeLists.txt @@ -1,12 +1,10 @@ project(ArchiveEx) - add_library(${PROJECT_NAME} SHARED Archive.cpp) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(${PROJECT_NAME} PRIVATE Zlib::zlibstatic) install(TARGETS ${PROJECT_NAME} RUNTIME COMPONENT Runtime DESTINATION ${CMAKE_INSTALL_PREFIX}) - add_executable(dat dat.cpp) target_link_libraries(dat PRIVATE ${PROJECT_NAME}) if(WIN32) diff --git a/DefinitionEx/CMakeLists.txt b/DefinitionEx/CMakeLists.txt index fe4e819..f098670 100644 --- a/DefinitionEx/CMakeLists.txt +++ b/DefinitionEx/CMakeLists.txt @@ -1,15 +1,15 @@ project(DefinitionEx) + add_library( - DefinitionEx STATIC - Parser_ss.cpp - Term.cpp - Token.cpp - ) -target_include_directories( - DefinitionEx - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} - ) -target_link_libraries( - DefinitionEx - PUBLIC FoundationEx + ${PROJECT_NAME} STATIC + src/Parser_ss.cpp + src/Term.cpp + src/Token.cpp ) +target_include_directories(${PROJECT_NAME} PUBLIC include) +target_link_libraries(${PROJECT_NAME} PUBLIC FoundationEx) + +add_executable(${PROJECT_NAME}_test test/parse_utils_like.cpp) +target_link_libraries(${PROJECT_NAME}_test PRIVATE ${PROJECT_NAME} GTest::gtest_main) +generate_emulator(${PROJECT_NAME}_test) +gtest_discover_tests(${PROJECT_NAME}_test DISCOVERY_TIMEOUT 60) diff --git a/DefinitionEx/Parser_ss.h b/DefinitionEx/include/Parser_ss.h index 5019f61..50659b9 100644 --- a/DefinitionEx/Parser_ss.h +++ b/DefinitionEx/include/Parser_ss.h @@ -3,23 +3,23 @@ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. - AUTHOR: John DiCamillo + AUTHOR: John DiCamillo - OVERVIEW - ======== - Declaration of the generic Parser class + OVERVIEW + ======== + Declaration of the generic Parser class */ -#ifndef Parser_h -#define Parser_h +#pragma once + +#include <starshatter/foundation/reader.h> +#include <Text.h> -#include "Text.h" #include "Term.h" // +-------------------------------------------------------------------+ -class Reader; class Scanner; // +-------------------------------------------------------------------+ @@ -27,7 +27,8 @@ class Scanner; class Parser { public: - Parser(Reader* r = 0); + Parser(); + Parser(starshatter::foundation::Reader r); ~Parser(); Term* ParseTerm(); @@ -38,9 +39,5 @@ public: TermStruct* ParseStruct(); private: - Reader* reader; - Scanner* lexer; + Scanner* lexer; }; - - -#endif // Parser_h diff --git a/DefinitionEx/Term.h b/DefinitionEx/include/Term.h index f7e2b86..1bc30b6 100644 --- a/DefinitionEx/Term.h +++ b/DefinitionEx/include/Term.h @@ -3,19 +3,18 @@ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. - AUTHOR: John DiCamillo + AUTHOR: John DiCamillo - OVERVIEW - ======== - Declaration of the Abstract Syntax Tree classes + OVERVIEW + ======== + Declaration of the Abstract Syntax Tree classes */ -#ifndef Term_h -#define Term_h +#pragma once -#include "Text.h" -#include "List.h" +#include <Text.h> +#include <List.h> // +-------------------------------------------------------------------+ @@ -32,7 +31,7 @@ class TermStruct; class Term { public: - static const char* TYPENAME() { return "Term"; } + static const char* TYPENAME() { return "Term"; } Term() { } virtual ~Term() { } @@ -51,7 +50,7 @@ public: virtual TermStruct* isStruct() { return 0; } }; -Term* error(char*, char* = 0); +Term* error(const char*, const char* = 0); // +-------------------------------------------------------------------+ @@ -166,6 +165,3 @@ private: TermText* mname; Term* mval; }; - - -#endif // Term_h diff --git a/DefinitionEx/Token.h b/DefinitionEx/include/Token.h index 59a3414..3dd8eb9 100644 --- a/DefinitionEx/Token.h +++ b/DefinitionEx/include/Token.h @@ -3,25 +3,24 @@ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. - AUTHOR: John DiCamillo + AUTHOR: John DiCamillo - OVERVIEW - ======== - Scanner class definition + OVERVIEW + ======== + Scanner class definition */ -#ifndef Token_h -#define Token_h +#pragma once -#include "Text.h" -#include "Dictionary.h" +#include <Dictionary.h> +#include <starshatter/foundation/reader.h> +#include <Text.h> #pragma warning( disable : 4237) // +-------------------------------------------------------------------+ -class Reader; class Token; class Scanner; @@ -104,7 +103,8 @@ protected: class Scanner { public: - Scanner(Reader* r = 0); + Scanner(); + Scanner(starshatter::foundation::Reader r); Scanner(const Text& s); Scanner(const Scanner& rhs); virtual ~Scanner(); @@ -127,8 +127,8 @@ protected: virtual bool IsSymbolic(char c); virtual bool IsAlpha(char c); - Reader* reader; - char* str; + starshatter::foundation::Reader reader; + char* str; const char* p; const char* eos; @@ -141,6 +141,3 @@ protected: size_t old_line; size_t lineStart; }; - - -#endif // Token_h diff --git a/DefinitionEx/Parser_ss.cpp b/DefinitionEx/src/Parser_ss.cpp index d02b7ee..1b80d48 100644 --- a/DefinitionEx/Parser_ss.cpp +++ b/DefinitionEx/src/Parser_ss.cpp @@ -3,29 +3,34 @@ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. - AUTHOR: John DiCamillo + AUTHOR: John DiCamillo - OVERVIEW - ======== - Implementation of the generic Parser class + OVERVIEW + ======== + Implementation of the generic Parser class */ -#include "Reader.h" -#include "Token.h" -#include "Parser_ss.h" -#include "Term.h" -#include "Utils.h" +#include <Parser_ss.h> + #include <stdio.h> #include <stdlib.h> +#include <utility> + +#include <starshatter/foundation/reader.h> +#include <Utils.h> + +#include <Term.h> +#include <Token.h> + enum KEYS { KEY_TRUE, KEY_FALSE, KEY_DEF, KEY_MINUS }; static int dump_tokens = 0; // +-------------------------------------------------------------------+ -Term* error(char* msg, const Token& token) +Term* error(const char* msg, const Token& token) { static char buf[1024]; snprintf(buf, 1024, " near '%s' in line %d", (const char*) token.symbol(), token.line()); @@ -34,11 +39,19 @@ Term* error(char* msg, const Token& token) // +-------------------------------------------------------------------+ -Parser::Parser(Reader* r) +Parser::Parser() : + lexer {nullptr} { - reader = r; - lexer = new Scanner(reader); + Token::addKey("true", KEY_TRUE); + Token::addKey("false", KEY_FALSE); + Token::addKey(":", KEY_DEF); + Token::addKey("-", KEY_MINUS); +} + +Parser::Parser(starshatter::foundation::Reader r) : + lexer {new Scanner(std::move(r))} +{ Token::addKey("true", KEY_TRUE); Token::addKey("false", KEY_FALSE); Token::addKey(":", KEY_DEF); @@ -47,8 +60,8 @@ Parser::Parser(Reader* r) Parser::~Parser() { - delete lexer; - delete reader; + if (lexer) + delete lexer; //Token::close(); } diff --git a/DefinitionEx/Term.cpp b/DefinitionEx/src/Term.cpp index c27eb4e..acfdcb8 100644 --- a/DefinitionEx/Term.cpp +++ b/DefinitionEx/src/Term.cpp @@ -3,22 +3,22 @@ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. - AUTHOR: John DiCamillo + AUTHOR: John DiCamillo - OVERVIEW - ======== - Implementation of the Term class + OVERVIEW + ======== + Implementation of the Term class */ +#include <Term.h> -#include "Term.h" -#include "Utils.h" +#include <Utils.h> // +-------------------------------------------------------------------+ Term* -error(char* s1, char* s2) +error(const char* s1, const char* s2) { Print("ERROR: "); if (s1) Print(s1); diff --git a/DefinitionEx/Token.cpp b/DefinitionEx/src/Token.cpp index 2d060b9..3f516de 100644 --- a/DefinitionEx/Token.cpp +++ b/DefinitionEx/src/Token.cpp @@ -3,20 +3,24 @@ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors Copyright (c) 1997-2006, Destroyer Studios LLC. - AUTHOR: John DiCamillo + AUTHOR: John DiCamillo - OVERVIEW - ======== - Scanner class implementation + OVERVIEW + ======== + Scanner class implementation */ -#include "Token.h" -#include "Reader.h" -#include "Text.h" +#include <Token.h> #include <ctype.h> +#include <cstddef> +#include <utility> + +#include <starshatter/foundation/reader.h> +#include <Text.h> + // +-------------------------------------------------------------------+ bool Token::hidecom = true; @@ -285,50 +289,51 @@ Token::describe(const Text& tok) // +-------------------------------------------------------------------+ -Scanner::Scanner(Reader* r) - : reader(r), str(0), index(0), old_index(0), - length(0), line(0), old_line(0), lineStart(0) -{ } - -Scanner::Scanner(const Scanner& rhs) - : index(rhs.index), old_index(rhs.old_index), length(rhs.length), - reader(rhs.reader), - line(rhs.line), old_line(0), lineStart(rhs.lineStart) +Scanner::Scanner() : + reader {}, + str {nullptr}, + index {0}, + old_index {0}, + length {0}, + line {0}, + old_line {0}, + lineStart {0} { - str = new char [strlen(rhs.str) + 1]; - strcpy(str, rhs.str); } -Scanner::Scanner(const Text& s) - : reader(0), index(0), old_index(0), length(s.length()), line(0), - old_line(0), lineStart(0) -{ - str = new char [s.length() + 1]; - strcpy(str, s.data()); -} -Scanner::~Scanner() +Scanner::Scanner(starshatter::foundation::Reader r) : + reader {std::move(r)}, + str {nullptr}, + index {0}, + old_index {0}, + length {0}, + line {0}, + old_line {0}, + lineStart {0} { - delete [] str; } -// +-------------------------------------------------------------------+ -Scanner& -Scanner::operator = (const Scanner& rhs) +Scanner::Scanner(const Text& s) : + reader {}, + str {nullptr}, + index {0}, + old_index {0}, + length {static_cast<std::size_t>(s.length())}, + line {0}, + old_line {0}, + lineStart {0} { - delete [] str; - str = new char [strlen(rhs.str) + 1]; - strcpy(str, rhs.str); + str = new char [s.length() + 1]; + strcpy(str, s.data()); +} - index = rhs.index; - old_index = rhs.old_index; - length = rhs.length; - line = rhs.line; - old_line = rhs.old_line; - lineStart = rhs.lineStart; - return *this; +Scanner::~Scanner() +{ + if (str) + delete [] str; } // +-------------------------------------------------------------------+ @@ -362,8 +367,8 @@ Scanner::Get(Need need) p = str + index; if (p >= eos) { - if (need == Demand && reader) { - Load(reader->more()); + if (need == Demand && reader.valid()) { + Load(reader.more()); if (length > 0) return Get(need); } @@ -379,8 +384,8 @@ Scanner::Get(Need need) } if (p >= eos) { - if (need == Demand && reader) { - Load(reader->more()); + if (need == Demand && reader.valid()) { + Load(reader.more()); if (length > 0) return Get(need); } diff --git a/DefinitionEx/test/parse_utils_like.cpp b/DefinitionEx/test/parse_utils_like.cpp new file mode 100644 index 0000000..fc943f7 --- /dev/null +++ b/DefinitionEx/test/parse_utils_like.cpp @@ -0,0 +1,106 @@ +#include <gtest/gtest.h> + +#include <Parser_ss.h> +#include <Term.h> +#include <Token.h> + + +TEST(DefinitionEx, ParseUtilsLike) +{ + std::string content { + "TEST\n\n" + "number: 3\n" + "bool: true\n" + "short: hello\n" + "longer: \"hello there\"\n" + "array: (0.98, -1.0, 0.35)\n" + "struct: {\n" + " name: \"trailing comma\",\n" + "}\n" + }; + Parser parser({content.data(), content.size()}); + Term* term = parser.ParseTerm(); + ASSERT_NE(nullptr, term); + { + TermText* text = term->isText(); + ASSERT_NE(nullptr, text); + EXPECT_STREQ("TEST", text->value()); + } + { + delete term; + term = parser.ParseTerm(); + ASSERT_NE(nullptr, term); + TermDef* def = term->isDef(); + ASSERT_NE(nullptr, def); + EXPECT_STREQ("number", def->name()->value()); + TermNumber* num = def->term()->isNumber(); + ASSERT_NE(nullptr, num); + EXPECT_EQ(3, static_cast<int>(num->value())); + } + { + delete term; + term = parser.ParseTerm(); + ASSERT_NE(nullptr, term); + TermDef* def = term->isDef(); + ASSERT_NE(nullptr, def); + EXPECT_STREQ("bool", def->name()->value()); + TermBool* boolean = def->term()->isBool(); + ASSERT_NE(nullptr, boolean); + EXPECT_TRUE(boolean->value()); + } + { + delete term; + term = parser.ParseTerm(); + ASSERT_NE(nullptr, term); + TermDef* def = term->isDef(); + ASSERT_NE(nullptr, def); + EXPECT_STREQ("short", def->name()->value()); + TermText* text = def->term()->isText(); + ASSERT_NE(nullptr, text); + EXPECT_STREQ("hello", text->value()); + } + { + delete term; + term = parser.ParseTerm(); + ASSERT_NE(nullptr, term); + TermDef* def = term->isDef(); + ASSERT_NE(nullptr, def); + EXPECT_STREQ("longer", def->name()->value()); + TermText* text = def->term()->isText(); + ASSERT_NE(nullptr, text); + EXPECT_STREQ("hello there", text->value()); + } + { + delete term; + term = parser.ParseTerm(); + ASSERT_NE(nullptr, term); + TermDef* def = term->isDef(); + ASSERT_NE(nullptr, def); + EXPECT_STREQ("array", def->name()->value()); + TermArray* array = def->term()->isArray(); + ASSERT_NE(nullptr, array); + ASSERT_EQ(3, array->elements()->size()); + EXPECT_FLOAT_EQ(0.98, array->elements()->at(0)->isNumber()->value()); // what if not a number? + EXPECT_FLOAT_EQ(-1.0, array->elements()->at(1)->isNumber()->value()); + EXPECT_FLOAT_EQ(0.35, array->elements()->at(2)->isNumber()->value()); + } + { + delete term; + term = parser.ParseTerm(); + ASSERT_NE(nullptr, term); + TermDef* def = term->isDef(); + ASSERT_NE(nullptr, def); + EXPECT_STREQ("struct", def->name()->value()); + ASSERT_NE(nullptr, def->term()); + TermStruct* strukt = def->term()->isStruct(); + ASSERT_NE(nullptr, strukt); + ASSERT_EQ(1, strukt->elements()->size()); + def = strukt->elements()->at(0)->isDef(); + ASSERT_NE(nullptr, def); + EXPECT_STREQ("name", def->name()->value()); + TermText* text = def->term()->isText(); + ASSERT_NE(nullptr, text); + EXPECT_STREQ("trailing comma", text->value()); + } + Token::close(); +} diff --git a/FoundationEx/CMakeLists.txt b/FoundationEx/CMakeLists.txt index 972a242..d7d6ffa 100644 --- a/FoundationEx/CMakeLists.txt +++ b/FoundationEx/CMakeLists.txt @@ -1,7 +1,7 @@ project(FoundationEx) + add_library( ${PROJECT_NAME} STATIC - src/Reader_.cpp src/Text.cpp src/Utils.cpp src/reader.cpp @@ -9,6 +9,7 @@ add_library( src/reader/file.cpp ) target_include_directories(${PROJECT_NAME} PUBLIC include) + add_executable(${PROJECT_NAME}_test test/Text.cpp test/reader.cpp test/data.cpp) target_link_libraries(${PROJECT_NAME}_test PRIVATE ${PROJECT_NAME} GTest::gtest_main) generate_emulator(${PROJECT_NAME}_test) diff --git a/FoundationEx/include/Reader.h b/FoundationEx/include/Reader.h deleted file mode 100644 index 2226366..0000000 --- a/FoundationEx/include/Reader.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Starshatter: The Open Source Project - Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors - Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors - Copyright (c) 1997-2006, Destroyer Studios LLC. - - AUTHOR: John DiCamillo - - - OVERVIEW - ======== - Declaration of the Reader class -*/ - -#ifndef Reader_h -#define Reader_h - -#include "Text.h" - - -class Reader -{ -public: - Reader() { } - virtual ~Reader() { } - - virtual Text more() = 0; -}; - - -class BlockReader : public Reader -{ -public: - BlockReader(const char* block); - BlockReader(const char* block, int len); - virtual Text more(); - -private: - char* data; - int done; - int length; -}; - - -#endif // Reader_h diff --git a/FoundationEx/src/Reader_.cpp b/FoundationEx/src/Reader_.cpp deleted file mode 100644 index 7efdc6a..0000000 --- a/FoundationEx/src/Reader_.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* Starshatter: The Open Source Project - Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors - Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors - Copyright (c) 1997-2006, Destroyer Studios LLC. - - AUTHOR: John DiCamillo - - - OVERVIEW - ======== - Implementation of the Reader class -*/ - -#include <Reader.h> - -#include <cstdio> - -#include <Utils.h> - - -BlockReader::BlockReader(const char* block) : - data((char*) block), - done(0), - length(0) -{ -} - - -BlockReader::BlockReader(const char* block, int len) : - data((char*) block), - done(0), - length(len) -{ -} - - -Text -BlockReader::more() -{ - if (done) return Text(); - - if (length) { - Text result(data, length); - done = 1; - return result; - } - else if (data) { - Text result(data); - done = 1; - return result; - } - - done = 1; - return Text(); -} diff --git a/InfoEx/CMakeLists.txt b/InfoEx/CMakeLists.txt index dab78ff..dcba526 100644 --- a/InfoEx/CMakeLists.txt +++ b/InfoEx/CMakeLists.txt @@ -1,4 +1,5 @@ project(InfoEx) + add_library(${PROJECT_NAME} STATIC src/description.cpp) target_include_directories(${PROJECT_NAME} PUBLIC include/) if(WIN32) @@ -7,6 +8,7 @@ else() target_sources(${PROJECT_NAME} PRIVATE src/directx_other.cpp) endif() target_link_libraries(${PROJECT_NAME} PUBLIC FoundationEx PRIVATE iware::infoware) + add_executable(${PROJECT_NAME}_test test/description.cpp test/directx.cpp) generate_emulator(${PROJECT_NAME}_test) target_link_libraries(${PROJECT_NAME}_test PRIVATE ${PROJECT_NAME} GTest::gtest_main) diff --git a/StarsEx/AudioConfig.cpp b/StarsEx/AudioConfig.cpp index c8939a1..6f8ceb8 100644 --- a/StarsEx/AudioConfig.cpp +++ b/StarsEx/AudioConfig.cpp @@ -14,6 +14,7 @@ #include "AudioConfig.h" #include <algorithm> +#include <cstddef> #include "DataLoader.h" #include "ParseUtil.h" @@ -243,7 +244,7 @@ AudioConfig::Load() // read the config file: BYTE* block = 0; - int blocklen = 0; + std::size_t blocklen = 0; const char* filename = "audio.cfg"; FILE* f; @@ -264,7 +265,7 @@ AudioConfig::Load() if (blocklen == 0) return; - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/Campaign.cpp b/StarsEx/Campaign.cpp index 63c9e3b..70846f0 100644 --- a/StarsEx/Campaign.cpp +++ b/StarsEx/Campaign.cpp @@ -432,7 +432,7 @@ Campaign::LoadCampaign(DataLoader* loader, bool full) loader->UseFileSystem(true); loader->LoadBuffer(filename, block, true); loader->UseFileSystem(Starshatter::UseFileSystem()); - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); @@ -970,7 +970,7 @@ Campaign::LoadMissionList(DataLoader* loader) loader->UseFileSystem(true); loader->LoadBuffer(filename, block, true); loader->UseFileSystem(Starshatter::UseFileSystem()); - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); @@ -1112,7 +1112,7 @@ Campaign::LoadCustomMissions(DataLoader* loader) int type = 0; int msn_id = 0; - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); if (!term) { @@ -1225,7 +1225,7 @@ Campaign::LoadTemplateList(DataLoader* loader) loader->UseFileSystem(true); loader->LoadBuffer(filename, block, true); loader->UseFileSystem(Starshatter::UseFileSystem()); - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); diff --git a/StarsEx/CampaignSaveGame.cpp b/StarsEx/CampaignSaveGame.cpp index cc64dbf..b959f01 100644 --- a/StarsEx/CampaignSaveGame.cpp +++ b/StarsEx/CampaignSaveGame.cpp @@ -167,7 +167,7 @@ CampaignSaveGame::Load(const char* filename) Sleep(10); - Parser parser(new BlockReader((const char*) block)); + Parser parser(reinterpret_cast<const char*>(block)); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/CombatGroup.cpp b/StarsEx/CombatGroup.cpp index 57afd7b..6963a36 100644 --- a/StarsEx/CombatGroup.cpp +++ b/StarsEx/CombatGroup.cpp @@ -969,7 +969,7 @@ CombatGroup::LoadOrderOfBattle(const char* filename, int team, Combatant* combat BYTE* block; loader->LoadBuffer(filename, block, true); - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); if (!term) { @@ -1213,7 +1213,7 @@ CombatGroup::MergeOrderOfBattle(BYTE* block, const char* filename, int team, Com { CombatGroup* force = 0; - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/CombatZone.cpp b/StarsEx/CombatZone.cpp index cd2ad1b..4b0655c 100644 --- a/StarsEx/CombatZone.cpp +++ b/StarsEx/CombatZone.cpp @@ -145,7 +145,7 @@ CombatZone::Load(const char* filename) BYTE* block = 0; loader->LoadBuffer(filename, block, true); - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); diff --git a/StarsEx/Explosion.cpp b/StarsEx/Explosion.cpp index 1f613e7..925343d 100644 --- a/StarsEx/Explosion.cpp +++ b/StarsEx/Explosion.cpp @@ -203,7 +203,7 @@ Explosion::Initialize() loader->SetDataPath("Explosions/"); int blocklen = loader->LoadBuffer(filename, block, true); - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/Font.cpp b/StarsEx/Font.cpp index 9dca717..92e4723 100644 --- a/StarsEx/Font.cpp +++ b/StarsEx/Font.cpp @@ -159,7 +159,7 @@ Font::LoadDef(char* defname, char* imgname) if (!block || blocklen < 4) return; - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/FormDef.cpp b/StarsEx/FormDef.cpp index 7a521ff..53f8218 100644 --- a/StarsEx/FormDef.cpp +++ b/StarsEx/FormDef.cpp @@ -580,7 +580,7 @@ FormDef::Load(const char* fname) if (!block || blocklen < 4) return; - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/Galaxy.cpp b/StarsEx/Galaxy.cpp index 3d4e02d..5759738 100644 --- a/StarsEx/Galaxy.cpp +++ b/StarsEx/Galaxy.cpp @@ -98,7 +98,7 @@ Galaxy::Load(const char* filename) DataLoader* loader = DataLoader::GetLoader(); loader->LoadBuffer(filename, block, true); - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); diff --git a/StarsEx/Mission.cpp b/StarsEx/Mission.cpp index cb3ef86..2350a8d 100644 --- a/StarsEx/Mission.cpp +++ b/StarsEx/Mission.cpp @@ -267,7 +267,7 @@ Mission::Load(const char* fname, const char* pname) bool Mission::ParseMission(const char* block) { - Parser parser(new BlockReader(block)); + Parser parser(starshatter::foundation::Reader{block}); Term* term = parser.ParseTerm(); char err[256]; diff --git a/StarsEx/MissionTemplate.cpp b/StarsEx/MissionTemplate.cpp index 55bec50..3e527a4 100644 --- a/StarsEx/MissionTemplate.cpp +++ b/StarsEx/MissionTemplate.cpp @@ -303,7 +303,7 @@ MissionTemplate::Load(const char* fname, const char* pname) loader->SetDataPath(0); loader->UseFileSystem(old_fs); - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); diff --git a/StarsEx/ModConfig.cpp b/StarsEx/ModConfig.cpp index ad7e852..674e0b1 100644 --- a/StarsEx/ModConfig.cpp +++ b/StarsEx/ModConfig.cpp @@ -102,7 +102,7 @@ ModConfig::Load() if (blocklen == 0) return; - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/ModInfo.cpp b/StarsEx/ModInfo.cpp index 7f025b7..f48b46d 100644 --- a/StarsEx/ModInfo.cpp +++ b/StarsEx/ModInfo.cpp @@ -106,7 +106,7 @@ bool ModInfo::ParseModInfo(const char* block) { bool ok = false; - Parser parser(new BlockReader(block)); + Parser parser(starshatter::foundation::Reader{block}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/MsnEventDlg.cpp b/StarsEx/MsnEventDlg.cpp index 268c70c..5940d2c 100644 --- a/StarsEx/MsnEventDlg.cpp +++ b/StarsEx/MsnEventDlg.cpp @@ -309,7 +309,7 @@ MsnEventDlg::OnAccept(AWEvent* e) event->event_nparams = 1; } else if (*buf == '(') { - Parser parser(new BlockReader(buf)); + Parser parser(starshatter::foundation::Reader{buf}); Term* term = parser.ParseTerm(); if (term && term->isArray()) { @@ -360,7 +360,7 @@ MsnEventDlg::OnAccept(AWEvent* e) } else if (*buf == '(') { - Parser parser(new BlockReader(buf)); + Parser parser(starshatter::foundation::Reader{buf}); Term* term = parser.ParseTerm(); if (term && term->isArray()) { diff --git a/StarsEx/NetClientConfig.cpp b/StarsEx/NetClientConfig.cpp index 97cd11c..c90eff9 100644 --- a/StarsEx/NetClientConfig.cpp +++ b/StarsEx/NetClientConfig.cpp @@ -164,7 +164,7 @@ NetClientConfig::Load() servers.destroy(); - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/NetLobby.cpp b/StarsEx/NetLobby.cpp index 8222c75..10047d1 100644 --- a/StarsEx/NetLobby.cpp +++ b/StarsEx/NetLobby.cpp @@ -360,8 +360,7 @@ NetLobby::ParseMsg(Text msg, List<NetLobbyParam>& params) { params.destroy(); - BlockReader reader(msg.data(), msg.length()); - Scanner lexer(&reader); + Scanner lexer(starshatter::foundation::Reader{msg.data(), msg.length()}); Token name = lexer.Get(); diff --git a/StarsEx/NetServerConfig.cpp b/StarsEx/NetServerConfig.cpp index 831c4da..47197f6 100644 --- a/StarsEx/NetServerConfig.cpp +++ b/StarsEx/NetServerConfig.cpp @@ -109,7 +109,7 @@ NetServerConfig::Load() return; } - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { @@ -359,7 +359,7 @@ NetServerConfig::LoadBanList() return; } - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/ParseUtil.h b/StarsEx/ParseUtil.h index 947b4c7..554393c 100644 --- a/StarsEx/ParseUtil.h +++ b/StarsEx/ParseUtil.h @@ -15,15 +15,16 @@ #define ParseUtil_h #include <vector> + +#include <Parser_ss.h> +#include <starshatter/foundation/reader.h> +#include <Text.h> +#include <Token.h> + #include "Types.h" #include "Geometry.h" #include "Color.h" -#include "Text.h" -#include "Parser_ss.h" -#include "Reader.h" -#include "Token.h" - // +--------------------------------------------------------------------+ bool GetDefBool(bool& dst, TermDef* def, const char* file); diff --git a/StarsEx/Player.cpp b/StarsEx/Player.cpp index a5e31b0..4be2cff 100644 --- a/StarsEx/Player.cpp +++ b/StarsEx/Player.cpp @@ -962,7 +962,7 @@ Player::Load() if (blocklen == 0) return; - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { @@ -1340,7 +1340,7 @@ Player::LoadAwardTables() loader->SetDataPath("Awards/"); loader->LoadBuffer(filename, block, true); - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); diff --git a/StarsEx/Ship.cpp b/StarsEx/Ship.cpp index aebb1f0..251f92a 100644 --- a/StarsEx/Ship.cpp +++ b/StarsEx/Ship.cpp @@ -85,7 +85,6 @@ #include "Panic.h" #include "Parser_ss.h" -#include "Reader.h" // +----------------------------------------------------------------------+ diff --git a/StarsEx/ShipDesign.cpp b/StarsEx/ShipDesign.cpp index 9b4be4c..3fb11f3 100644 --- a/StarsEx/ShipDesign.cpp +++ b/StarsEx/ShipDesign.cpp @@ -264,7 +264,7 @@ bolt_hit_sound_resource(0), beam_hit_sound_resource(0), lod_levels(0) return; } - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { @@ -527,7 +527,7 @@ void AddModCatalogEntry(const char* design_name, const char* design_path) return; } - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { @@ -665,7 +665,7 @@ ShipDesign::LoadCatalog(const char* path, const char* fname, bool mod) BYTE* block; int blocklen = loader->LoadBuffer(filename, block, true); - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { @@ -771,7 +771,7 @@ ShipDesign::LoadSkins(const char* path, int source) continue; } - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); ShipDesign* design = 0; diff --git a/StarsEx/StarSystem.cpp b/StarsEx/StarSystem.cpp index b6037b5..b8340f6 100644 --- a/StarsEx/StarSystem.cpp +++ b/StarsEx/StarSystem.cpp @@ -137,7 +137,7 @@ StarSystem::Load() return; } - Parser parser(new BlockReader((const char*) block)); + Parser parser(starshatter::foundation::Reader{reinterpret_cast<const char*>(block)}); Term* term = parser.ParseTerm(); diff --git a/StarsEx/Starshatter.cpp b/StarsEx/Starshatter.cpp index 3decdae..adb519a 100644 --- a/StarsEx/Starshatter.cpp +++ b/StarsEx/Starshatter.cpp @@ -2292,7 +2292,7 @@ Starshatter::LoadVideoConfig(const char* filename) if (blocklen == 0) return; - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/SystemDesign.cpp b/StarsEx/SystemDesign.cpp index 4c64f57..a0f877d 100644 --- a/StarsEx/SystemDesign.cpp +++ b/StarsEx/SystemDesign.cpp @@ -48,7 +48,7 @@ SystemDesign::Initialize(const char* filename) BYTE* block; int blocklen = loader->LoadBuffer(filename, block, true); - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { diff --git a/StarsEx/WeaponDesign.cpp b/StarsEx/WeaponDesign.cpp index 3dd826d..ff26ec1 100644 --- a/StarsEx/WeaponDesign.cpp +++ b/StarsEx/WeaponDesign.cpp @@ -186,7 +186,7 @@ WeaponDesign::LoadDesign(const char* path, const char* filename, bool mod) BYTE* block; int blocklen = loader->LoadBuffer(filename, block, true); - Parser parser(new BlockReader((const char*) block, blocklen)); + Parser parser({reinterpret_cast<const char*>(block), blocklen}); Term* term = parser.ParseTerm(); if (!term) { |