global_defs.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #ifndef SOPHIAR2_GLOBAL_DEFS_H
  2. #define SOPHIAR2_GLOBAL_DEFS_H
  3. #include <boost/asio/io_context.hpp>
  4. #include <boost/endian.hpp>
  5. #include <nlohmann/json.hpp>
  6. #include <memory>
  7. namespace sophiar {
  8. class dynamic_pool;
  9. class sophiar_manager;
  10. class sophiar_pool;
  11. extern dynamic_pool *global_dynamic_pool;
  12. extern boost::asio::io_context *global_context;
  13. extern sophiar_manager *global_sophiar_manager;
  14. extern sophiar_pool *global_sophiar_pool;
  15. #ifdef SOPHIAR_TEST
  16. class external_controller;
  17. extern external_controller *global_external_controller;
  18. #endif // SOPHIAR_TEST
  19. static constexpr auto sophiar_endian = boost::endian::order::big;
  20. bool initialize(const nlohmann::json &config);
  21. #define REQUIRE_VARIABLE(var_type, var_name) \
  22. global_sophiar_pool->require_variable<var_type>(var_name)
  23. #define QUERY_VARIABLE(var_type, var_index) \
  24. global_sophiar_pool->query_variable<var_type>(var_index)
  25. #define QUERY_VARIABLE_WITH_TS(var_type, var_index, ts_ptr) \
  26. global_sophiar_pool->query_variable<var_type>(var_index, ts_ptr)
  27. #define REQUIRE_VARIABLE_WATCHER(var_index) \
  28. global_sophiar_pool->require_variable_watcher(var_index)
  29. #define UPDATE_VARIABLE(var_type, var_index, val_ptr) \
  30. global_sophiar_pool->update_variable<var_type>(var_index, val_ptr)
  31. #define UPDATE_VARIABLE_WITH_TS(var_type, var_index, val_ptr, ts) \
  32. global_sophiar_pool->update_variable<var_type>(var_index, val_ptr, ts)
  33. #define UPDATE_VARIABLE_VAL(var_type, var_index, val) \
  34. global_sophiar_pool->update_variable<var_type>(var_index, var_type::new_instance(val))
  35. #define UPDATE_VARIABLE_VAL_WITH_TS(var_type, var_index, val, ts) \
  36. global_sophiar_pool->update_variable<var_type>(var_index, var_type::new_instance(val), ts)
  37. #ifdef SOPHIAR_TEST
  38. #define REGISTER_VARIABLE(var_name, var_type) \
  39. global_sophiar_pool->register_variable(var_name, var_type)
  40. #endif // SOPHIAR_TEST
  41. #define QUERY_OBJECT_NAME(obj_ptr) \
  42. global_sophiar_manager->get_object_name(obj_ptr)
  43. #define ALLOCATE_DYNAMIC_MEMORY(s) \
  44. global_dynamic_pool->allocate(s)
  45. #define ALLOCATE_DYNAMIC_MEMORY_N(s, n) \
  46. global_dynamic_pool->allocate(s, n)
  47. #define DEALLOCATE_DYNAMIC_MEMORY(ptr, s) \
  48. global_dynamic_pool->deallocate(ptr, s)
  49. #define DEALLOCATE_DYNAMIC_MEMORY_N(ptr, s, n) \
  50. global_dynamic_pool->deallocate(ptr, s, n)
  51. #define ACTUAL_DYNAMIC_MEMORY_SIZE(s) \
  52. global_dynamic_pool->actual_allocate_size(s)
  53. }
  54. #endif //SOPHIAR2_GLOBAL_DEFS_H