X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Fmisc.qh;h=474484c64e5f85aa279835a1826983c1eb0b080f;hb=1b2a25e06fbc49de153addb922bae4c95f44ac1e;hp=589783ae959f4b87ff63c96922c93568ecd6a8b6;hpb=6794689f122acf95658dd7378155b9dee5293921;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/misc.qh b/qcsrc/lib/misc.qh index 589783ae9..474484c64 100644 --- a/qcsrc/lib/misc.qh +++ b/qcsrc/lib/misc.qh @@ -1,15 +1,6 @@ -#ifndef MISC_H -#define MISC_H - -#ifdef GMQCC - #define EVAL(...) __VA_ARGS__ - - #define OVERLOAD_(F, ...) F##_##__VA_COUNT__(__VA_ARGS__) - #define OVERLOAD(F, ...) F##_##__VA_COUNT__(__VA_ARGS__) -#else - #define EMPTY() - #define DEFER(id) id EMPTY() +#pragma once +#ifdef __STDC__ #define EVAL(...) EVAL1(EVAL1(EVAL1(__VA_ARGS__))) #define EVAL1(...) EVAL2(EVAL2(EVAL2(__VA_ARGS__))) #define EVAL2(...) EVAL3(EVAL3(EVAL3(__VA_ARGS__))) @@ -17,10 +8,17 @@ #define EVAL4(...) EVAL5(EVAL5(EVAL5(__VA_ARGS__))) #define EVAL5(...) __VA_ARGS__ - #define OVERLOAD___(F, _16, _15, _14, _13, _12, _11, _10, _9, _8, _7, _6, _5, _4, _3, _2, _1, n, ...) F##_##n - #define OVERLOAD__(F, ...) OVERLOAD___(F,##__VA_ARGS__, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) - #define OVERLOAD_(...) DEFER(OVERLOAD__(__VA_ARGS__)) - #define OVERLOAD(F, ...) OVERLOAD_(F,##__VA_ARGS__)(__VA_ARGS__) + #include "p99.qh" + #define OVERLOAD(F, ...) P99_IF_EMPTY(__VA_ARGS__)(P99_PASTE2(F, _00)())(P99_PASTE3(F, _, P00_NARG(__VA_ARGS__))(__VA_ARGS__)) + /** for use within macros */ + #define OVERLOAD_(F, ...) P99_IF_EMPTY(__VA_ARGS__)(P99_PASTE2(F, _00)())(P99_PASTE3(F, _, P00_NARG(__VA_ARGS__))(__VA_ARGS__)) + #define OVERLOAD__(F, ...) P99_IF_EMPTY(__VA_ARGS__)(P99_PASTE2(F, _00)())(P99_PASTE3(F, _, P00_NARG(__VA_ARGS__))(__VA_ARGS__)) +#else + #define EVAL(...) __VA_ARGS__ + + #define OVERLOAD(F, ...) F##_##__VA_COUNT__(__VA_ARGS__) + #define OVERLOAD_(F, ...) F##_##__VA_COUNT__(__VA_ARGS__) + #define OVERLOAD__(F, ...) F##_##__VA_COUNT__(__VA_ARGS__) #endif #if defined(CSQC) @@ -33,14 +31,6 @@ // already defined #endif -// avoid bounds checks -#undef etof -#if 1 - #define etof(e) ITOF(reinterpret_cast(int, e)) -#else - #define etof(e) stof(sprintf("%i", e)) -#endif - #define GET(name) name##get #define GETTER(type, name) type GET(name)() { return name; } #define PROPERTY(type, name) type name; GETTER(type, name) @@ -49,11 +39,8 @@ // With block may not contain continue or break #define WITH(type, name, value, block) \ MACRO_BEGIN \ - { \ type __with_save = (name); \ name = (value); \ LAMBDA(block) \ name = __with_save; \ - } MACRO_END - -#endif + MACRO_END