// =================================================================================================

// NOTE(doyle): Work-around for clangd to correctly resolve symbols in unity
// builds by providing symbol definition and prototypes by including this
// mega-header in all files and using the "#pragma once" directive to
// avoid multiple defined symbols when compiling the unity build itself.
//
// See: https://www.frogtoss.com/labs/clangd-with-unity-builds.html

#pragma once

// NOTE: DQN =======================================================================================

// NOTE: C-strings declared in a ternary cause global-buffer-overflow in
// MSVC2022.
// stb_sprintf assumes c-string literals are 4 byte aligned which is always
// true, however, reading past the end of a string whose size is not a multiple
// of 4 is UB causing ASAN to complain.
#if defined(_MSC_VER) && !defined(__clang__)
    #define STBSP__ASAN __declspec(no_sanitize_address)
#endif

#define DQN_ASAN_POISON 0
#define DQN_ASAN_VET_POISON 1
#define DQN_ONLY_RECT
#define DQN_ONLY_V2
#define DQN_ONLY_V3
#define DQN_ONLY_V4
#define DQN_ONLY_WIN
#define DQN_ONLY_FARRAY
#define DQN_ONLY_PROFILER
#define DQN_ONLY_SLICE
#define DQN_ONLY_LIST
#define DQN_ONLY_VARRAY
#define DQN_ONLY_FS
#define _CRT_SECURE_NO_WARNINGS
#define DQN_IMPLEMENTATION
#include "external/dqn/dqn.h"

// NOTE: TELY ======================================================================================

DQN_MSVC_WARNING_DISABLE(4505) // warning C4505: unreferenced function with internal linkage has been removed
#include "tely_profile.h"
#include "tely_platform_input.h"
#include "tely_asset.h"
#include "tely_colour.h"
#include "tely_render.h"
#include "tely_tools.h"
#include "tely_audio.h"
#include "tely_platform.h"
#include "tely_ui.h"
#include "tely_rfui.h"
#include "tely_game.h"

#include "tely_tools.cpp"
#include "tely_game.cpp"
#include "tely_asset.cpp"
#include "tely_audio.cpp"
#include "tely_render.cpp"
#include "tely_platform_input.cpp"
#include "tely_ui.cpp"
#include "tely_rfui.cpp"
#include "tely_dll.cpp"
