.. _program_listing_file_include_flamegpu_runtime_HostAPI_macros.h: Program Listing for File HostAPI_macros.h ========================================= |exhale_lsh| :ref:`Return to documentation for file ` (``include/flamegpu/runtime/HostAPI_macros.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef INCLUDE_FLAMEGPU_RUNTIME_HOSTAPI_MACROS_H_ #define INCLUDE_FLAMEGPU_RUNTIME_HOSTAPI_MACROS_H_ namespace flamegpu { class HostAPI; typedef void (*FLAMEGPU_HOST_FUNCTION_POINTER)(HostAPI *api); typedef FLAMEGPU_HOST_FUNCTION_POINTER FLAMEGPU_INIT_FUNCTION_POINTER; typedef FLAMEGPU_HOST_FUNCTION_POINTER FLAMEGPU_STEP_FUNCTION_POINTER; typedef FLAMEGPU_HOST_FUNCTION_POINTER FLAMEGPU_EXIT_FUNCTION_POINTER; #define FLAMEGPU_INIT_FUNCTION(funcName) FLAMEGPU_HOST_FUNCTION(funcName) #define FLAMEGPU_STEP_FUNCTION(funcName) FLAMEGPU_HOST_FUNCTION(funcName) #define FLAMEGPU_EXIT_FUNCTION(funcName) FLAMEGPU_HOST_FUNCTION(funcName) #define FLAMEGPU_HOST_FUNCTION_DECL(funcName) \ extern flamegpu::FLAMEGPU_HOST_FUNCTION_POINTER funcName; #define FLAMEGPU_HOST_FUNCTION_DEF(funcName) \ void funcName ## _impl(flamegpu::HostAPI* FLAMEGPU); \ flamegpu::FLAMEGPU_HOST_FUNCTION_POINTER funcName = funcName ## _impl; \ void funcName ## _impl(flamegpu::HostAPI* FLAMEGPU) #define FLAMEGPU_HOST_FUNCTION(funcName) FLAMEGPU_HOST_FUNCTION_DEF(funcName) enum CONDITION_RESULT { CONTINUE, EXIT }; typedef CONDITION_RESULT (*FLAMEGPU_HOST_CONDITION_POINTER)(HostAPI *api); typedef FLAMEGPU_HOST_CONDITION_POINTER FLAMEGPU_EXIT_CONDITION_POINTER; #define FLAMEGPU_EXIT_CONDITION(funcName) FLAMEGPU_HOST_CONDITION(funcName) #define FLAMEGPU_HOST_CONDITION(funcName) \ flamegpu::CONDITION_RESULT funcName ## _impl(flamegpu::HostAPI* FLAMEGPU); \ flamegpu::FLAMEGPU_HOST_CONDITION_POINTER funcName = funcName ## _impl;\ flamegpu::CONDITION_RESULT funcName ## _impl(flamegpu::HostAPI* FLAMEGPU) } // namespace flamegpu #endif // INCLUDE_FLAMEGPU_RUNTIME_HOSTAPI_MACROS_H_