namespace EE
namespace EE {
// namespaces
namespace EE::Audio;
namespace EE::Graphics;
namespace EE::Math;
namespace EE::Math::easing;
namespace EE::Network;
namespace EE::Network::SSL;
namespace EE::Scene;
namespace EE::Scene::Actions;
namespace EE::System;
namespace EE::UI;
namespace EE::UI::Abstract;
namespace EE::UI::CSS;
namespace EE::UI::Doc;
namespace EE::UI::Models;
namespace EE::UI::Tools;
namespace EE::Window;
// typedefs
typedef float Float;
typedef signed char Int8;
typedef unsigned char Uint8;
typedef signed short Int16;
typedef unsigned short Uint16;
typedef signed int Int32;
typedef unsigned int Uint32;
typedef signed long long Int64;
typedef unsigned long long Uint64;
typedef Int32 IntPtr;
typedef Uint32 UintPtr;
typedef robin_hood::unordered_flat_map<Key, Value> UnorderedMap;
typedef robin_hood::unordered_flat_set<Key> UnorderedSet;
typedef std::unordered_map<void*, AllocatedPointer> AllocatedPointerMap;
typedef AllocatedPointerMap::iterator AllocatedPointerMapIt;
typedef Utf<8> Utf8;
typedef Utf<16> Utf16;
typedef Utf<32> Utf32;
typedef long long ios_size;
// structs
template <typename T>
struct FormatArg;
template <>
struct FormatArg<std::string>;
template <>
struct FormatArg<std::string_view>;
// classes
class AllocatedPointer;
class MemoryManager;
class NonCopyable;
class String;
template <>
class Utf<32>;
template <>
class Utf<16>;
template <unsigned int N>
class Utf;
template <>
class Utf<8>;
class Version;
// global variables
EE_API bool PrintDebugInLog;
// global functions
template <typename T>
T eemax(T a, T b);
template <typename T>
T eemin(T a, T b);
template <typename T>
T eeabs(T n);
template <typename T>
T eeclamp(T val, T min, T max);
template <typename T>
void eeclamp(T* val, T min, T max);
void EE_API eePRINT(const char* format, ...);
void EE_API eePRINTL(const char* format, ...);
void EE_API eePRINTC(unsigned int cond, const char* format, ...);
} // namespace EE