#pragma once

// Should be included in all files to define basic includes and macros

// clang-format off
#if defined(_WIN32)
#define JULIET_WIN32 1
#endif

#ifndef JULIET_API
# if defined(JULIET_WIN32)
#   ifdef JULIET_EXPORT
#       define JULIET_API __declspec(dllexport)
#   else
        #define JULIET_API
#   endif
# else
#   define JULIET_API (void) // Only Win32 is supported for now
# endif
#endif

#ifdef DEBUG
#define JULIET_DEBUG 1
#define JULIET_DEBUG_ONLY(...) __VA_ARGS__
#define JULIET_DEBUG_PARAM_FIRST(...) __VA_ARGS__
#define JULIET_DEBUG_PARAM(...) , __VA_ARGS__
#else
#define JULIET_DEBUG 0
#define JULIET_DEBUG_ONLY(...)
#define JULIET_DEBUG_PARAM_FIRST(...)
#define JULIET_DEBUG_PARAM(...)
#endif

// Manual override to disable ImGui
// #define JULIET_DISABLE_IMGUI

#if defined(JULIET_DISABLE_IMGUI) && defined(JULIET_ENABLE_IMGUI)
#undef JULIET_ENABLE_IMGUI
#endif

// clang-format on
