40 lines
929 B
C++
40 lines
929 B
C++
#pragma once
|
|
#if defined(_MSC_VER)
|
|
#ifdef _DEBUG
|
|
#define NO_DEFAULT default: throw 0;
|
|
#define UNREACHABLE throw 0;
|
|
#else
|
|
#define NO_DEFAULT default: __assume(0);
|
|
#define UNREACHABLE __assume(0);
|
|
#endif
|
|
#else
|
|
#ifdef _DEBUG
|
|
#define NO_DEFAULT default: throw 0;
|
|
#define UNREACHABLE throw 0;
|
|
#else
|
|
#define NO_DEFAULT default: __builtin_unreachable();
|
|
#define UNREACHABLE __builtin_unreachable();
|
|
#endif
|
|
#endif
|
|
|
|
#define foreach(var, cont) for(auto var = cont.begin(), end = cont.end(); var != end; ++var)
|
|
|
|
#ifdef WIN_MODE
|
|
#define unsigned_enum(name) enum name : unsigned
|
|
#else
|
|
#ifdef LIN_MODE
|
|
#define unsigned_enum(name) enum name
|
|
#endif
|
|
#endif
|
|
|
|
#define umap std::unordered_map
|
|
#define uset std::unordered_set
|
|
|
|
#define INIT_FUNC(name) namespace __init__##name { struct init { init()
|
|
|
|
#define INIT_FUNC_END } v; };
|
|
|
|
#define INIT_VAR(var) var; namespace __init__##var { struct init { init()
|
|
|
|
#define INIT_VAR_END } v; };
|