namespace EE::System
namespace System {
// typedefs
typedef tColor<Float> ColorAf;
typedef tColor<Float> Colorf;
typedef Color ColorA;
typedef std::map<std::string, FileInfo> FileInfoMap;
typedef std::vector<FileInfo> FileInfoList;
typedef TScopedBuffer<Uint8> ScopedBuffer;
// enums
enum LogLevel;
// classes
class AtomicBoolScopedOp;
class Base64;
class BitOp;
class BoolScopedOp;
class BoolScopedOpOptional;
class Clock;
class Color;
class Compression;
class Condition;
class ConditionalLock;
template <class T>
class Container;
class DirectoryPack;
class FileInfo;
class FileSystem;
class FunctionString;
class IOStream;
class IOStreamDeflate;
class IOStreamFile;
class IOStreamInflate;
class IOStreamMemory;
class IOStreamPak;
class IOStreamString;
class IOStreamZip;
class IniFile;
class Lock;
class Log;
class LogReaderInterface;
class LuaPattern;
class LuaPatternStorage;
class MD5;
class Mutex;
class Pack;
class PackManager;
class Pak;
class PatternMatcher;
class Process;
class RC4;
class RGB;
class RectColors;
class RegEx;
class RegExCache;
class ResourceLoader;
template <class T>
class ResourceManager;
template <class T>
class ResourceManagerMulti;
class ScopedOp;
class ScopedOpOptional;
template <typename T>
class Singleton;
class Sys;
template <typename T>
class TScopedBuffer;
class Thread;
class ThreadLocal;
template <typename T>
class ThreadLocalPtr;
class ThreadPool;
class Time;
class Translator;
class VFS;
class VirtualFileSystem;
class Zip;
template <typename T>
class tColor;
template <typename T>
class tRGB;
// global functions
constexpr Time Minutes(double amount);
constexpr Time Seconds(double amount);
constexpr Time Milliseconds(double amount);
constexpr Time Microseconds(Int64 amount);
constexpr bool operator==(Time left, Time right);
constexpr bool operator!=(Time left, Time right);
constexpr bool operator<(Time left, Time right);
constexpr bool operator>(Time left, Time right);
constexpr bool operator<=(Time left, Time right);
constexpr bool operator>=(Time left, Time right);
constexpr Time operator-(Time right);
constexpr Time operator+(Time left, Time right);
constexpr Time& operator+=(Time& left, Time right);
constexpr Time operator-(Time left, Time right);
constexpr Time& operator-=(Time& left, Time right);
constexpr Time operator*(Time left, Time right);
constexpr Time operator*(Time left, double right);
constexpr Time operator*(double left, Time right);
constexpr Time operator*(Time left, Int64 right);
constexpr Time operator*(Int64 left, Time right);
constexpr Time& operator*=(Time& left, Time right);
constexpr Time& operator*=(Time& left, double right);
constexpr Time& operator*=(Time& left, Int64 right);
constexpr Time operator/(Time left, Time right);
constexpr Time operator/(Time left, double right);
constexpr Time operator/(Time left, Int64 right);
constexpr Time& operator/=(Time& left, Time right);
constexpr Time& operator/=(Time& left, Int64 right);
constexpr Time operator%(Time left, Time right);
constexpr Time& operator%=(Time& left, Time right);
} // namespace System