kvpconfig.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef __KVPCONFIG_H__
  2. #define __KVPCONFIG_H__
  3. #pragma once
  4. #include "config.h"
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. #define KVP_INTEGER 0
  9. #define KVP_STRING 1
  10. #define KVP_BOOLEAN 2
  11. struct kvpconfig_entry_t
  12. {
  13. char *key;
  14. char *default_value;
  15. int type;
  16. int member_offset;
  17. };
  18. TOOLKIT_API int kvpconfig_init(struct kvpconfig_entry_t* pe, void *container);
  19. TOOLKIT_API int kvpconfig_term(struct kvpconfig_entry_t* pe, void *container);
  20. TOOLKIT_API int kvpconfig_set(struct kvpconfig_entry_t* pe,
  21. void *container,
  22. const char *key,
  23. const char *value);
  24. TOOLKIT_API int kvpconfig_get(struct kvpconfig_entry_t* pe,
  25. void *container,
  26. const char *key,
  27. char *value);
  28. #ifdef __cplusplus
  29. } // extern "C" {
  30. #endif
  31. #endif //__KVPCONFIG_H__
  32. /*
  33. typedef struct app_t app_t;
  34. struct app_t {
  35. char *aaa;
  36. apr_pool_t *pool;
  37. }app = {"vv", NULL};
  38. int main()
  39. {
  40. struct kvpconfig_entry_t vv[] = {
  41. {"ip", "0.0.0.0", KVP_STRING, FIELD_OFFSET(app_t, aaa) },
  42. {NULL, NULL, 0, 0},
  43. };
  44. apr_status_t status;
  45. char tmp[32];
  46. apr_initialize();
  47. apr_pool_create(&app.pool, NULL);
  48. status = kvpconfig_init(&vv[0], &app, app.pool);
  49. assert(status == APR_SUCCESS);
  50. status = kvpconfig_set(&vv[0], &app, "ip", "99.1.100.22", app.pool);
  51. assert(status == APR_SUCCESS);
  52. status = kvpconfig_get(&vv[0], &app, "ip", tmp);
  53. assert(status == APR_SUCCESS);
  54. getchar();
  55. apr_terminate();
  56. return 0;
  57. }
  58. */