77 lines
3.1 KiB
C++

/*
** Command & Conquer Generals Zero Hour(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/****************************************************************************\
* C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *
******************************************************************************
Project Name: Carpenter (The RedAlert ladder creator)
File Name : configfile.h
Author : Neal Kettler
Start Date : June 9, 1997
Last Update : May 13, 1999
\***************************************************************************/
#ifndef CONFIGFILE_HEADER
#define CONFIGFILE_HEADER
#include "wstypes.h"
#include "dictionary.h"
#include "wstring.h"
#include "critsec.h"
#include "arraylist.h"
class ConfigFile
{
public:
ConfigFile();
~ConfigFile();
bit8 readFile(FILE *config);
bit8 getString(IN Wstring &key,OUT Wstring &value, IN char *section=NULL) const;
bit8 getString(IN char *key,OUT Wstring &value, IN char *section=NULL) const;
bit8 getInt(IN Wstring &key,OUT sint32 &value, IN char *section=NULL) const;
bit8 getInt(IN char *key,OUT sint32 &value, IN char *section=NULL) const;
bit8 getInt(IN Wstring &key,OUT sint16 &value, IN char *section=NULL) const;
bit8 getInt(IN char *key,OUT sint16 &value, IN char *section=NULL) const;
// Enumerate through the config lines
bit8 enumerate(int &index, int &offset, Wstring &key, Wstring &value, IN char *section=NULL) const;
// Manual update of config file
bit8 setString(IN Wstring &key,IN Wstring &value, IN char *section=NULL);
bit8 setString(IN char *key,IN Wstring &value, IN char *section=NULL);
bit8 setInt(IN Wstring &key,IN sint32 &value, IN char *section=NULL);
bit8 setInt(IN char *key,IN sint32 &value, IN char *section=NULL);
bit8 removeEntry(IN Wstring &key, IN char *section=NULL);
bit8 removeEntry(IN char *key, IN char *section=NULL);
bit8 writeFile(FILE *config); // Does not preserve comments, etc
ArrayList<Wstring> sectionList; // stores the names of all sections
private:
Dictionary<Wstring,Wstring> Dictionary_; // stores the mappings from keys
// to value strings
// The lock is only needed around the immediate access to the dictionary, no writes
// are allowed so you don't need to worry about an outer lock around the enumerate
CritSec Critsec_; // lock around dictionary
};
#endif