mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-10 09:50:17 +02:00
1aa391fdf8
All text processing code is now located in lib/texts. No changes other than code being moved around and adjustment of includes Moved without changes: Languages.h -> texts/Languages.h MetaString.* -> texts/MetaString.* TextOperations.* -> texts/TextOperations.* Split into parts: CGeneralTextHandler.* -> texts/CGeneralTextHandler.* -> texts/CLegacyConfigParser.* -> texts/TextLocalizationContainer.* -> texts/TextIdentifier.h
66 lines
1.4 KiB
C++
66 lines
1.4 KiB
C++
/*
|
|
* CLegacyConfigParser.h, part of VCMI engine
|
|
*
|
|
* Authors: listed in file AUTHORS in main folder
|
|
*
|
|
* License: GNU General Public License v2.0 or later
|
|
* Full text of license available in license.txt file, in main folder
|
|
*
|
|
*/
|
|
#pragma once
|
|
|
|
#include "filesystem/ResourcePath.h"
|
|
|
|
VCMI_LIB_NAMESPACE_BEGIN
|
|
|
|
//class CInputStream;
|
|
//class JsonNode;
|
|
//class JsonSerializeFormat;
|
|
|
|
/// Parser for any text files from H3
|
|
class DLL_LINKAGE CLegacyConfigParser
|
|
{
|
|
std::string fileEncoding;
|
|
|
|
std::unique_ptr<char[]> data;
|
|
char * curr;
|
|
char * end;
|
|
|
|
/// extracts part of quoted string.
|
|
std::string extractQuotedPart();
|
|
|
|
/// extracts quoted string. Any end of lines are ignored, double-quote is considered as "escaping"
|
|
std::string extractQuotedString();
|
|
|
|
/// extracts non-quoted string
|
|
std::string extractNormalString();
|
|
|
|
/// reads "raw" string without encoding conversion
|
|
std::string readRawString();
|
|
|
|
public:
|
|
/// read one entry from current line. Return ""/0 if end of line reached
|
|
std::string readString();
|
|
float readNumber();
|
|
|
|
template <typename numeric>
|
|
std::vector<numeric> readNumArray(size_t size)
|
|
{
|
|
std::vector<numeric> ret;
|
|
ret.reserve(size);
|
|
while (size--)
|
|
ret.push_back((numeric)readNumber());
|
|
return ret;
|
|
}
|
|
|
|
/// returns true if next entry is empty
|
|
bool isNextEntryEmpty() const;
|
|
|
|
/// end current line
|
|
bool endLine();
|
|
|
|
explicit CLegacyConfigParser(const TextPath & URI);
|
|
};
|
|
|
|
VCMI_LIB_NAMESPACE_END
|