IniFile.h 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef _IniFile_h_
  2. #define _IniFile_h_
  3. #include "..\..\common_h\FileService.h"
  4. #include "IniParser.h"
  5. //Интерфейс на ini-файл
  6. class IniFile : public IEditableIniFile
  7. {
  8. public:
  9. IniFile(const char * _path, bool _isReadOnly, const char * _cppFileName, long _cppFileLine);
  10. virtual ~IniFile();
  11. //Прочитать файл
  12. bool Open(IFileService_DFOpenMode mode);
  13. #ifndef _XBOX
  14. //Открыть файл
  15. bool Open(IFileService_OpenMode mode);
  16. #endif
  17. //Закрыть файл сообщив об ошибке
  18. void ErrorRelease();
  19. //Блокировать возможность удалить файл
  20. void LockRelease(bool isLock);
  21. public:
  22. //Закрыть файл
  23. virtual void Release();
  24. //Поулчить путь до файла
  25. virtual const char * GetPath() const;
  26. //Получить список секций
  27. virtual void GetSections(array<string> & sections);
  28. //Добавить секцию
  29. virtual void AddSection(const char * section);
  30. //Удалить секцию с ключами
  31. virtual void DelSection(const char * section);
  32. //Проверить наличие секции
  33. virtual bool IsSectionCreated(const char * section);
  34. //Получить количество ключей
  35. virtual dword GetKeysCount(const char * section, const char * name);
  36. //Проверить наличие ключа в секции
  37. virtual bool IsKeyCreated(const char * section, const char * name, long index = 0);
  38. //Удалить ключ
  39. virtual void DelKey(const char * section, const char * name, long index = 0);
  40. //Установить значение ключа как строку
  41. virtual void SetString(const char * section, const char * name, const char * value, long index = 0);
  42. //Получить значение ключа как строку
  43. virtual const char * GetString(const char * section, const char * name, const char * defValue = "", long index = 0);
  44. //Получить все значения ключа как строки
  45. virtual void GetStrings(const char * section, const char * name, array<string> & value);
  46. //Установить значение ключа как long
  47. virtual void SetLong(const char * section, const char * name, long value, long index = 0);
  48. //Получить значение ключа как long
  49. virtual long GetLong(const char * section, const char * name, long defValue = 0, long index = 0);
  50. //Получить все значения ключа как long
  51. virtual void GetLongs(const char * section, const char * name, array<long> & value);
  52. //Установить значение ключа как float
  53. virtual void SetFloat(const char * section, const char * name, float value, long index = 0);
  54. //Получить значение ключа как float
  55. virtual float GetFloat(const char * section, const char * name, float defValue = 0.0, long index = 0);
  56. //Получить все значения ключа как float
  57. virtual void GetFloats(const char * section, const char * name, array<float> & value);
  58. //Установить значение ключа как double
  59. virtual void SetDouble(const char * section, const char * name, double value, long index = 0);
  60. //Получить значение ключа как double
  61. virtual double GetDouble(const char * section, const char * name, double defValue = 0.0, long index = 0);
  62. //Получить все значения ключа как double
  63. virtual void GetDoubles(const char * section, const char * name, array<double> & value);
  64. //Сохранить изменения на диск немедленно
  65. virtual void Flush();
  66. protected:
  67. string path;
  68. bool isReadOnly;
  69. bool isChangeData;
  70. bool lockRelease;
  71. IniParser parser;
  72. #ifndef STOP_DEBUG
  73. const char * cppFileName;
  74. long cppFileLine;
  75. #endif
  76. };
  77. #endif