/* ** 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 . */ /****************************************************************************\ * 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 sectionList; // stores the names of all sections private: Dictionary 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