inifile_api.h 4.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #ifndef INIFILE_H_
  2. #define INIFILE_H_
  3. #include "ax_global_type.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. typedef AX_VOID * AX_INI_HANDLE;
  8. /* 打开并解析一个名为fname的INI文件 */
  9. AX_S32 AX_INI_Load(const AX_CHAR *fname, AX_INI_HANDLE *handle);
  10. /* 关闭文件 */
  11. AX_S32 AX_INI_Close(AX_INI_HANDLE handle);
  12. /* 将内容保存到当前文件 */
  13. AX_S32 AX_INI_Save(AX_INI_HANDLE handle);
  14. /* 将内容另存到一个名为fname的文件 */
  15. AX_S32 AX_INI_SaveAs(AX_INI_HANDLE handle, const AX_CHAR *fname);
  16. /* 获取section段第一个键为key的string值,成功返回0,否则返回错误码 */
  17. AX_S32 AX_INI_GetStringValue(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, const AX_CHAR **value);
  18. /* 获取section段第一个键为key的数组,成功返回0,否则返回错误码 */
  19. AX_S32 AX_INI_GetArrayValue(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_F64 *value, AX_S32 *valueSize, AX_S32 maxSize);
  20. /* 获取section段第一个键为key的AX_S32值,成功返回0,否则返回错误码 */
  21. AX_S32 AX_INI_GetIntValue(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_S32 *value);
  22. /* 获取section段第一个键为key的double值,成功返回0,否则返回错误码 */
  23. AX_S32 AX_INI_GetDoubleValue(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_F64 *value);
  24. /* 获取section段第一个键为key的AX_BOOL值,成功返回0,否则返回错误码 */
  25. AX_S32 AX_INI_GetBoolValue(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_BOOL *value);
  26. /* 获取注释,如果key=""则获取段注释 */
  27. AX_S32 AX_INI_GetComment(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, const AX_CHAR **comment);
  28. /* 获取行尾注释,如果key=""则获取段的行尾注释 */
  29. AX_S32 AX_INI_GetRightComment(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, const AX_CHAR **rightComment);
  30. /* 获取section段第一个键为key的string值,成功返回获取的值,否则返回默认值 */
  31. AX_S32 AX_INI_GetStringValueOrDefault(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, const AX_CHAR **value, const AX_CHAR *defaultValue);
  32. /* 获取section段第一个键为key的AX_S32值,成功返回获取的值,否则返回默认值 */
  33. AX_S32 AX_INI_GetIntValueOrDefault(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_S32 *value, AX_S32 defaultValue);
  34. /* 获取section段第一个键为key的double值,成功返回获取的值,否则返回默认值 */
  35. AX_S32 AX_INI_GetDoubleValueOrDefault(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_F64 *value, AX_F64 defaultValue);
  36. /* 获取section段第一个键为key的AX_BOOL值,成功返回获取的值,否则返回默认值 */
  37. AX_S32 AX_INI_GetBoolValueOrDefault(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_BOOL *value, AX_BOOL defaultValue);
  38. /* 获取section个数,至少存在一个空section */
  39. AX_S32 AX_INI_GetSectionNum(AX_INI_HANDLE handle);
  40. /* 是否存在某个section */
  41. AX_BOOL AX_INI_HasSection(AX_INI_HANDLE handle, const AX_CHAR *section);
  42. /* 是否存在某个key */
  43. AX_BOOL AX_INI_HasKey(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key);
  44. /* 设置字符串值 */
  45. AX_S32 AX_INI_SetStringValue(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, const AX_CHAR *value);
  46. /* 设置整形值 */
  47. AX_S32 AX_INI_SetIntValue(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_S32 value);
  48. /* 设置浮点数值 */
  49. AX_S32 AX_INI_SetDoubleValue(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_F64 value);
  50. /* 设置布尔值 */
  51. AX_S32 AX_INI_SetBoolValue(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, AX_BOOL value);
  52. /* 设置注释,如果key=""则设置段注释 */
  53. AX_S32 AX_INI_SetComment(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, const AX_CHAR *comment);
  54. /* 设置行尾注释,如果key=""则设置段的行尾注释 */
  55. AX_S32 AX_INI_SetRightComment(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key, const AX_CHAR *rightComment);
  56. /* 删除段 */
  57. AX_S32 AX_INI_DeleteSection(AX_INI_HANDLE handle, const AX_CHAR *section);
  58. /* 删除特定段的特定参数 */
  59. AX_S32 AX_INI_DeleteKey(AX_INI_HANDLE handle, const AX_CHAR *section, const AX_CHAR *key);
  60. /*设置注释分隔符,默认为"#" */
  61. AX_S32 AX_INI_SetCommentDelimiter(AX_INI_HANDLE handle, const AX_CHAR *delimiter);
  62. #ifdef __cplusplus
  63. }
  64. #endif
  65. #endif // INIFILE_H_