#ifndef SOPHIAR2_GLOBAL_DEFS_H #define SOPHIAR2_GLOBAL_DEFS_H #include #include #include #include namespace sophiar { class dynamic_pool; class sophiar_manager; class sophiar_pool; extern dynamic_pool *global_dynamic_pool; extern boost::asio::io_context *global_context; extern sophiar_manager *global_sophiar_manager; extern sophiar_pool *global_sophiar_pool; #ifdef SOPHIAR_TEST class external_controller; extern external_controller *global_external_controller; #endif // SOPHIAR_TEST static constexpr auto sophiar_endian = boost::endian::order::big; bool initialize(const nlohmann::json &config); #define REQUIRE_VARIABLE(var_type, var_name) \ global_sophiar_pool->require_variable(var_name) #define QUERY_VARIABLE(var_type, var_index) \ global_sophiar_pool->query_variable(var_index) #define QUERY_VARIABLE_WITH_TS(var_type, var_index, ts_ptr) \ global_sophiar_pool->query_variable(var_index, ts_ptr) #define REQUIRE_VARIABLE_WATCHER(var_index) \ global_sophiar_pool->require_variable_watcher(var_index) #define UPDATE_VARIABLE(var_type, var_index, val_ptr) \ global_sophiar_pool->update_variable(var_index, val_ptr) #define UPDATE_VARIABLE_WITH_TS(var_type, var_index, val_ptr, ts) \ global_sophiar_pool->update_variable(var_index, val_ptr, ts) #define UPDATE_VARIABLE_VAL(var_type, var_index, val) \ global_sophiar_pool->update_variable(var_index, var_type::new_instance(val)) #define UPDATE_VARIABLE_VAL_WITH_TS(var_type, var_index, val, ts) \ global_sophiar_pool->update_variable(var_index, var_type::new_instance(val), ts) #ifdef SOPHIAR_TEST #define REGISTER_VARIABLE(var_name, var_type) \ global_sophiar_pool->register_variable(var_name, var_type) #endif // SOPHIAR_TEST #define QUERY_OBJECT_NAME(obj_ptr) \ global_sophiar_manager->get_object_name(obj_ptr) #define ALLOCATE_DYNAMIC_MEMORY(s) \ global_dynamic_pool->allocate(s) #define ALLOCATE_DYNAMIC_MEMORY_N(s, n) \ global_dynamic_pool->allocate(s, n) #define DEALLOCATE_DYNAMIC_MEMORY(ptr, s) \ global_dynamic_pool->deallocate(ptr, s) #define DEALLOCATE_DYNAMIC_MEMORY_N(ptr, s, n) \ global_dynamic_pool->deallocate(ptr, s, n) #define ACTUAL_DYNAMIC_MEMORY_SIZE(s) \ global_dynamic_pool->actual_allocate_size(s) } #endif //SOPHIAR2_GLOBAL_DEFS_H