global_defs.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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 QUERY_VARIABLE_TS(var_index) \
  28. global_sophiar_pool->query_variable_update_ts(var_index)
  29. #define REQUIRE_VARIABLE_WATCHER(var_index) \
  30. global_sophiar_pool->require_variable_watcher(var_index)
  31. #define UPDATE_VARIABLE(var_type, var_index, val_ptr) \
  32. global_sophiar_pool->update_variable<var_type>(var_index, std::move(val_ptr))
  33. #define UPDATE_VARIABLE_WITH_TS(var_type, var_index, val_ptr, ts) \
  34. global_sophiar_pool->update_variable<var_type>(var_index, std::move(val_ptr), ts)
  35. #define UPDATE_VARIABLE_VAL(var_type, var_index, val) \
  36. global_sophiar_pool->update_variable<var_type>(var_index, var_type::new_instance(val))
  37. #define UPDATE_VARIABLE_VAL_WITH_TS(var_type, var_index, val, ts) \
  38. global_sophiar_pool->update_variable<var_type>(var_index, var_type::new_instance(val), ts)
  39. #ifdef SOPHIAR_TEST
  40. #define REGISTER_VARIABLE(var_name, var_type) \
  41. global_sophiar_pool->register_variable(var_name, var_type)
  42. #endif // SOPHIAR_TEST
  43. #define QUERY_OBJECT_NAME(obj_ptr) \
  44. global_sophiar_manager->get_object_name(obj_ptr)
  45. #define ALLOCATE_DYNAMIC_MEMORY(s) \
  46. global_dynamic_pool->allocate(s)
  47. #define ALLOCATE_DYNAMIC_MEMORY_N(s, n) \
  48. global_dynamic_pool->allocate(s, n)
  49. #define DEALLOCATE_DYNAMIC_MEMORY(ptr, s) \
  50. global_dynamic_pool->deallocate(ptr, s)
  51. #define DEALLOCATE_DYNAMIC_MEMORY_N(ptr, s, n) \
  52. global_dynamic_pool->deallocate(ptr, s, n)
  53. #define ACTUAL_DYNAMIC_MEMORY_SIZE(s) \
  54. global_dynamic_pool->actual_allocate_size(s)
  55. }
  56. #endif //SOPHIAR2_GLOBAL_DEFS_H