configfile.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. ** Command & Conquer Renegade(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /****************************************************************************\
  19. * 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 *
  20. ******************************************************************************
  21. Project Name: Carpenter (The RedAlert ladder creator)
  22. File Name : configfile.h
  23. Author : Neal Kettler
  24. Start Date : June 9, 1997
  25. Last Update : May 13, 1999
  26. \***************************************************************************/
  27. #ifndef CONFIGFILE_HEADER
  28. #define CONFIGFILE_HEADER
  29. #include "wstypes.h"
  30. #include "dictionary.h"
  31. #include "wstring.h"
  32. #include "critsec.h"
  33. #include "arraylist.h"
  34. class ConfigFile
  35. {
  36. public:
  37. ConfigFile();
  38. ~ConfigFile();
  39. bit8 readFile(FILE *config);
  40. bit8 getString(IN Wstring &key,OUT Wstring &value, IN char *section=NULL) const;
  41. bit8 getString(IN char *key,OUT Wstring &value, IN char *section=NULL) const;
  42. bit8 getInt(IN Wstring &key,OUT sint32 &value, IN char *section=NULL) const;
  43. bit8 getInt(IN char *key,OUT sint32 &value, IN char *section=NULL) const;
  44. bit8 getInt(IN Wstring &key,OUT sint16 &value, IN char *section=NULL) const;
  45. bit8 getInt(IN char *key,OUT sint16 &value, IN char *section=NULL) const;
  46. // Enumerate through the config lines
  47. bit8 enumerate(int &index, int &offset, Wstring &key, Wstring &value, IN char *section=NULL) const;
  48. // Manual update of config file
  49. bit8 setString(IN Wstring &key,IN Wstring &value, IN char *section=NULL);
  50. bit8 setString(IN char *key,IN Wstring &value, IN char *section=NULL);
  51. bit8 setInt(IN Wstring &key,IN sint32 &value, IN char *section=NULL);
  52. bit8 setInt(IN char *key,IN sint32 &value, IN char *section=NULL);
  53. bit8 removeEntry(IN Wstring &key, IN char *section=NULL);
  54. bit8 removeEntry(IN char *key, IN char *section=NULL);
  55. bit8 writeFile(FILE *config); // Does not preserve comments, etc
  56. ArrayList<Wstring> sectionList; // stores the names of all sections
  57. private:
  58. Dictionary<Wstring,Wstring> Dictionary_; // stores the mappings from keys
  59. // to value strings
  60. // The lock is only needed around the immediate access to the dictionary, no writes
  61. // are allowed so you don't need to worry about an outer lock around the enumerate
  62. CritSec Critsec_; // lock around dictionary
  63. };
  64. #endif