ischeme.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <assert.h>
  5. #include <faux/str.h>
  6. #include <faux/list.h>
  7. #include <faux/error.h>
  8. #include <klish/kview.h>
  9. #include <klish/kscheme.h>
  10. bool_t kscheme_nested_from_ischeme(kscheme_t *kscheme, ischeme_t *ischeme,
  11. faux_error_t *error_stack)
  12. {
  13. if (!kscheme || !ischeme) {
  14. if (error_stack)
  15. faux_error_add(error_stack,
  16. kscheme_strerror(KSCHEME_ERROR_INTERNAL));
  17. return BOOL_FALSE;
  18. }
  19. // View list
  20. if (ischeme->views) {
  21. iview_t **p_iview = NULL;
  22. for (p_iview = *ischeme->views; *p_iview; p_iview++) {
  23. kview_t *kview = NULL;
  24. iview_t *iview = *p_iview;
  25. kview_error_e kview_error = KVIEW_ERROR_OK;
  26. kview = kview_new(iview, &kview_error);
  27. if (!kview) {
  28. if (error_stack)
  29. faux_error_add(error_stack,
  30. kview_strerror(kview_error));
  31. continue;
  32. }
  33. // kview_from_iview
  34. printf("view %p %s\n", iview, iview->name);
  35. }
  36. }
  37. return BOOL_TRUE;
  38. }
  39. kscheme_t *kscheme_from_ischeme(ischeme_t *ischeme, faux_error_t *error_stack)
  40. {
  41. kscheme_t *kscheme = NULL;
  42. kscheme_error_e kscheme_error = KSCHEME_ERROR_OK;
  43. kscheme = kscheme_new(&kscheme_error);
  44. if (!kscheme) {
  45. if (error_stack)
  46. faux_error_add(error_stack,
  47. kscheme_strerror(kscheme_error));
  48. return NULL;
  49. }
  50. kscheme_nested_from_ischeme(kscheme, ischeme, error_stack);
  51. return kscheme;
  52. }