kparam.c 877 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <assert.h>
  5. #include <faux/str.h>
  6. #include <klish/kparam.h>
  7. struct kparam_s {
  8. bool_t is_static;
  9. kparam_info_t info;
  10. };
  11. static kparam_t *kparam_new_internal(kparam_info_t info, bool_t is_static)
  12. {
  13. kparam_t *param = NULL;
  14. param = faux_zmalloc(sizeof(*param));
  15. assert(param);
  16. if (!param)
  17. return NULL;
  18. // Initialize
  19. param->is_static = is_static;
  20. param->info = info;
  21. return param;
  22. }
  23. kparam_t *kparam_new(kparam_info_t info)
  24. {
  25. return kparam_new_internal(info, BOOL_FALSE);
  26. }
  27. kparam_t *kparam_new_static(kparam_info_t info)
  28. {
  29. return kparam_new_internal(info, BOOL_TRUE);
  30. }
  31. void kparam_free(kparam_t *param)
  32. {
  33. if (!param)
  34. return;
  35. if (!param->is_static) {
  36. faux_str_free(param->info.name);
  37. faux_str_free(param->info.help);
  38. faux_str_free(param->info.ptype);
  39. }
  40. faux_free(param);
  41. }