You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 rivejä
8.1 KiB

  1. #pragma once
  2. // TODO debug!!!
  3. #include <cxxabi.h>
  4. template<typename T>
  5. struct type_helper
  6. {
  7. static inline std::string name()
  8. {
  9. int status;
  10. auto name = abi::__cxa_demangle(typeid(T).name(), 0, 0, & status);
  11. return std::string(name ? name : typeid(T).name());
  12. }
  13. };
  14. // TODO debug end
  15. #include <boost/hana.hpp>
  16. #include <boost/hana/ext/std/tuple.hpp>
  17. #define ecs_define_namespace_beg(parent, name) \
  18. parent { \
  19. namespace name
  20. #define ecs_define_namespace_end(parent) \
  21. } \
  22. parent
  23. #define beg_namespace_ecs namespace ecs
  24. #define end_namespace_ecs
  25. #define beg_namespace_ecs_context ecs_define_namespace_beg(beg_namespace_ecs, context)
  26. #define end_namespace_ecs_context ecs_define_namespace_end(end_namespace_ecs)
  27. #define beg_namespace_ecs_core ecs_define_namespace_beg(beg_namespace_ecs, core)
  28. #define end_namespace_ecs_core ecs_define_namespace_end(end_namespace_ecs)
  29. #define beg_namespace_ecs_core_component ecs_define_namespace_beg(beg_namespace_ecs_core, component)
  30. #define end_namespace_ecs_core_component ecs_define_namespace_end(end_namespace_ecs_core)
  31. #define beg_namespace_ecs_core_component_storage ecs_define_namespace_beg(beg_namespace_ecs_core_component, storage)
  32. #define end_namespace_ecs_core_component_storage ecs_define_namespace_end(end_namespace_ecs_core_component)
  33. #define beg_namespace_ecs_core_entity ecs_define_namespace_beg(beg_namespace_ecs_core, entity)
  34. #define end_namespace_ecs_core_entity ecs_define_namespace_end(end_namespace_ecs_core)
  35. #define beg_namespace_ecs_core_entity_storage ecs_define_namespace_beg(beg_namespace_ecs_core_entity, storage)
  36. #define end_namespace_ecs_core_entity_storage ecs_define_namespace_end(end_namespace_ecs_core_entity)
  37. #define beg_namespace_ecs_core_mp ecs_define_namespace_beg(beg_namespace_ecs_core, mp)
  38. #define end_namespace_ecs_core_mp ecs_define_namespace_end(end_namespace_ecs_core)
  39. #define beg_namespace_ecs_core_mp_list ecs_define_namespace_beg(beg_namespace_ecs_core_mp, list)
  40. #define end_namespace_ecs_core_mp_list ecs_define_namespace_end(end_namespace_ecs_core_mp)
  41. #define beg_namespace_ecs_core_mp_option_map ecs_define_namespace_beg(beg_namespace_ecs_core_mp, option_map)
  42. #define end_namespace_ecs_core_mp_option_map ecs_define_namespace_end(end_namespace_ecs_core_mp)
  43. #define beg_namespace_ecs_core_mp_tag ecs_define_namespace_beg(beg_namespace_ecs_core_mp, tag)
  44. #define end_namespace_ecs_core_mp_tag ecs_define_namespace_end(end_namespace_ecs_core_mp)
  45. #define beg_namespace_ecs_core_system ecs_define_namespace_beg(beg_namespace_ecs_core, system)
  46. #define end_namespace_ecs_core_system ecs_define_namespace_end(end_namespace_ecs_core)
  47. #define beg_namespace_ecs_core_parallelism ecs_define_namespace_beg(beg_namespace_ecs_core_system, parallelism)
  48. #define end_namespace_ecs_core_parallelism ecs_define_namespace_end(end_namespace_ecs_core_system)
  49. #define beg_namespace_ecs_core_system_scheduler ecs_define_namespace_beg(beg_namespace_ecs_core_system, scheduler)
  50. #define end_namespace_ecs_core_system_scheduler ecs_define_namespace_end(end_namespace_ecs_core_system)
  51. #define beg_namespace_ecs_core_system_storage ecs_define_namespace_beg(beg_namespace_ecs_core_system, storage)
  52. #define end_namespace_ecs_core_system_storage ecs_define_namespace_end(end_namespace_ecs_core_system)
  53. #define beg_namespace_ecs_core_utils ecs_define_namespace_beg(beg_namespace_ecs_core, utils)
  54. #define end_namespace_ecs_core_utils ecs_define_namespace_end(end_namespace_ecs_core)
  55. #define beg_namespace_ecs_settings ecs_define_namespace_beg(beg_namespace_ecs, settings)
  56. #define end_namespace_ecs_settings ecs_define_namespace_end(end_namespace_ecs)
  57. #define beg_namespace_ecs_settings_entity_storage ecs_define_namespace_beg(beg_namespace_ecs_settings, entity_storage)
  58. #define end_namespace_ecs_settings_entity_storage ecs_define_namespace_end(end_namespace_ecs_settings)
  59. #define beg_namespace_ecs_settings_refresh_parallelism ecs_define_namespace_beg(beg_namespace_ecs_settings, refresh_parallelism)
  60. #define end_namespace_ecs_settings_refresh_parallelism ecs_define_namespace_end(end_namespace_ecs_settings)
  61. #define beg_namespace_ecs_settings_scheduler ecs_define_namespace_beg(beg_namespace_ecs_settings, scheduler)
  62. #define end_namespace_ecs_settings_scheduler ecs_define_namespace_end(end_namespace_ecs_settings)
  63. #define beg_namespace_ecs_settings_system_storage ecs_define_namespace_beg(beg_namespace_ecs_settings, system_storage)
  64. #define end_namespace_ecs_settings_system_storage ecs_define_namespace_end(end_namespace_ecs_settings)
  65. #define beg_namespace_ecs_signature ecs_define_namespace_beg(beg_namespace_ecs, signature)
  66. #define end_namespace_ecs_signature ecs_define_namespace_end(end_namespace_ecs)
  67. #define beg_namespace_ecs_signature_component ecs_define_namespace_beg(beg_namespace_ecs_signature, component)
  68. #define end_namespace_ecs_signature_component ecs_define_namespace_end(end_namespace_ecs_signature)
  69. #define beg_namespace_ecs_signature_component_storage ecs_define_namespace_beg(beg_namespace_ecs_signature_component, storage)
  70. #define end_namespace_ecs_signature_component_storage ecs_define_namespace_end(end_namespace_ecs_signature_component)
  71. #define beg_namespace_ecs_signature_system ecs_define_namespace_beg(beg_namespace_ecs_signature, system)
  72. #define end_namespace_ecs_signature_system ecs_define_namespace_end(end_namespace_ecs_signature)
  73. #define beg_namespace_ecs_signature_system_output ecs_define_namespace_beg(beg_namespace_ecs_signature_system, output)
  74. #define end_namespace_ecs_signature_system_output ecs_define_namespace_end(end_namespace_ecs_signature_system)
  75. #define beg_namespace_ecs_signature_system_parallelism ecs_define_namespace_beg(beg_namespace_ecs_signature_system, parallelism)
  76. #define end_namespace_ecs_signature_system_parallelism ecs_define_namespace_end(end_namespace_ecs_signature_system)
  77. #define beg_namespace_ecs_signature_list ecs_define_namespace_beg(beg_namespace_ecs, signature_list)
  78. #define end_namespace_ecs_signature_list ecs_define_namespace_end(end_namespace_ecs)
  79. #define beg_namespace_ecs_signature_list_component ecs_define_namespace_beg(beg_namespace_ecs_signature_list, component)
  80. #define end_namespace_ecs_signature_list_component ecs_define_namespace_end(end_namespace_ecs_signature_list)
  81. #define beg_namespace_ecs_signature_list_system ecs_define_namespace_beg(beg_namespace_ecs_signature_list, system)
  82. #define end_namespace_ecs_signature_list_system ecs_define_namespace_end(end_namespace_ecs_signature_list)
  83. #define beg_namespace_ecs_system_execution_adapter ecs_define_namespace_beg(beg_namespace_ecs, system_execution_adapter)
  84. #define end_namespace_ecs_system_execution_adapter ecs_define_namespace_end(end_namespace_ecs)
  85. #define beg_namespace_ecs_tag ecs_define_namespace_beg(beg_namespace_ecs, tag)
  86. #define end_namespace_ecs_tag ecs_define_namespace_end(end_namespace_ecs)
  87. #define beg_namespace_ecs_tag_component ecs_define_namespace_beg(beg_namespace_ecs_tag, component)
  88. #define end_namespace_ecs_tag_component ecs_define_namespace_end(end_namespace_ecs_tag)
  89. #define beg_namespace_ecs_tag_system ecs_define_namespace_beg(beg_namespace_ecs_tag, system)
  90. #define end_namespace_ecs_tag_system ecs_define_namespace_end(end_namespace_ecs_tag)
  91. namespace ecs
  92. {
  93. namespace hana = ::boost::hana;
  94. }