The-Simpsons-Hit-and-Run/game/code/data/config/configstring.h

85 lines
2.7 KiB
C++

//===========================================================================
// Copyright (C) 2000 Radical Entertainment Ltd. All rights reserved.
//
// Component: ConfigString
//
// Description: Game configuration string which builds the concepts of
// properties and sections around strings. Really simple to
// get the job done.
//
// Authors: Ziemek Trzesicki
//
// Revisions Date Author Revision
// 2003/05/02 ziemek Created for SRR2
//
//===========================================================================
#ifndef CONFIGSTRING_H
#define CONFIGSTRING_H
//===========================================================================
// Interface Definitions
//===========================================================================
class ConfigString
{
public:
// The character used to tag sections.
// Cannot be used in names.
static const char SectionTag = '#';
// The character used to define properties.
// Cannot be used in property keys.
static const char PropertyTag = '=';
// The maximum length of a section/property name or property value.
static const int MaxLength = 80;
// Defines the two modes that config strings can be in.
enum ConfigStringMode
{
Read,
Write
};
public:
// Creates a config string.
// For reading, size is the size of the string buffer.
// For writing, size is the max size of the buffer.
ConfigString( ConfigStringMode mode, int size );
~ConfigString();
// Returns the mode - read / write
ConfigStringMode GetMode() const { return mMode; }
// Returns the string buffer for reading/writing to a file.
char* GetBuffer() { return mBuffer; }
// Returns the size of hte string buffer.
int GetSize() const { return mSize; }
// Reads the next section title, returning true if one is found.
bool ReadSection( char* section );
// Reads the next property. these are bracketed by sections.
bool ReadProperty( char* property, char* value );
// Writes a section. These bracket properties.
void WriteSection( const char* section );
// Writes a property.
void WriteProperty( const char* property, const char* value );
private:
// Reads the next non-empty line starting from the cursor.
// Saves a max number of <MaxLength> characters to buffer, to avoid overflows.
// The cursor is advanced to the end of the line regardless.
// Returns true if a line is read, false if there are no more.
bool GetLine( char* buffer );
private:
ConfigStringMode mMode;
char* mBuffer;
char* mCursor;
int mSize;
};
#endif // CONFIGSTRING_H