#pragma once #include #include #if PLATFORM_WINDOWS #ifdef core_EXPORTS #define CORE_API __declspec(dllexport) #else #define CORE_API __declspec(dllimport) #endif #elif PLATFORM_MACOS || PLATFORM_LINUX #ifdef core_EXPORTS #define CORE_API __attribute__((visibility("default"))) #else #define CORE_API #endif #else #error Unsupported platform #endif #if USE_DOUBLE_SAMPLE typedef double sample_t; #else typedef float sample_t; #endif static uint64_t gen_uid() { static uint64_t uid = 0; const uint64_t current_uid = ++uid; // append the current time to the uid to make it unique return (current_uid << 32) | std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); }