avdl_variable_type.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include "avdl_variable_type.h"
  4. #include "avdl_struct_table.h"
  5. enum dd_variable_type dd_variable_type_convert(const char *type) {
  6. /*
  7. * primitive types
  8. */
  9. if (strcmp(type, "int") == 0) {
  10. return DD_VARIABLE_TYPE_INT;
  11. }
  12. else
  13. if (strcmp(type, "float") == 0) {
  14. return DD_VARIABLE_TYPE_FLOAT;
  15. }
  16. else
  17. if (strcmp(type, "char") == 0) {
  18. return DD_VARIABLE_TYPE_CHAR;
  19. }
  20. else
  21. if (strcmp(type, "void") == 0) {
  22. return DD_VARIABLE_TYPE_VOID;
  23. }
  24. /*
  25. * structs
  26. for (int i = 0; i <= struct_table_current; i++) {
  27. if (strcmp(type, struct_table_get_name(i)) == 0) {
  28. return DD_VARIABLE_TYPE_STRUCT;
  29. }
  30. }
  31. */
  32. // temporarily return struct for anything unknown
  33. return DD_VARIABLE_TYPE_STRUCT;
  34. /*
  35. * unrecognized type
  36. return DD_VARIABLE_TYPE_UNKNOWN;
  37. */
  38. }
  39. int dd_variable_type_isPrimitiveType(const char *type) {
  40. if (strcmp(type, "int" ) == 0
  41. || strcmp(type, "float") == 0
  42. || strcmp(type, "char" ) == 0) {
  43. return 1;
  44. }
  45. return 0;
  46. }
  47. const char *dd_variable_type_getString(enum dd_variable_type type) {
  48. switch (type) {
  49. case DD_VARIABLE_TYPE_INT: return "int";
  50. case DD_VARIABLE_TYPE_FLOAT: return "float";
  51. case DD_VARIABLE_TYPE_CHAR: return "char";
  52. case DD_VARIABLE_TYPE_STRUCT: return "struct";
  53. case DD_VARIABLE_TYPE_STRING: return "string";
  54. case DD_VARIABLE_TYPE_VOID: return "void";
  55. case DD_VARIABLE_TYPE_UNKNOWN: return "unknown";
  56. default: return "unrecognized";
  57. }
  58. }