X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Flib%2Faccumulate.qh;h=c265325f8f6c75d20de492fcf1c81211195e5849;hb=b465997efce43e701dc89d56d82b5ae510505056;hp=7e1a1edc0f7906ebd6dd9afa925196da47fdf894;hpb=1fcf2f54c851dde50c1cc7ab0308b2112e300cf7;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/lib/accumulate.qh b/qcsrc/lib/accumulate.qh index 7e1a1edc0..c265325f8 100644 --- a/qcsrc/lib/accumulate.qh +++ b/qcsrc/lib/accumulate.qh @@ -1,52 +1,56 @@ -#ifndef ACCUMULATE_H -#define ACCUMULATE_H +#pragma once #ifdef QCC_SUPPORT_ACCUMULATE -# define ACCUMULATE_FUNCTION(func, otherfunc) \ - [[accumulate]] void func() { otherfunc(); } -# define CALL_ACCUMULATED_FUNCTION(func) \ - func() + #define ACCUMULATE_FUNCTION(func, otherfunc) \ + [[accumulate]] void func() \ + { \ + otherfunc(); \ + } + #define CALL_ACCUMULATED_FUNCTION(func) \ + func() #else -#ifdef HAVE_YO_DAWG_CPP -// TODO make ascii art pic of xzibit + #ifdef HAVE_YO_DAWG_CPP // YO DAWG! // I HERD YO LIEK MACROS // SO I PUT A MACRO DEFINITION IN YO MACRO DEFINITION // SO YO CAN EXPAND MACROS WHILE YO EXPAND MACROS -# define ACCUMULATE_FUNCTION(func,otherfunc) \ - #ifdef func \ - void __merge__##otherfunc() { func(); otherfunc(); } \ - #undef func \ - #define func __merge__##otherfunc \ - #else \ - #define func otherfunc \ - #endif -# define CALL_ACCUMULATED_FUNCTION(func) \ - func() -#else -# define ACCUMULATE_FUNCTION(func,otherfunc) \ - .float _ACCUMULATE_##func##__##otherfunc; -void ACCUMULATE_call(string func) -{ - float i; - float n = numentityfields(); - string funcprefix = strcat("_ACCUMULATE_", func, "__"); - float funcprefixlen = strlen(funcprefix); - for(i = 0; i < n; ++i) - { - string name = entityfieldname(i); - if(substring(name, 0, funcprefixlen) == funcprefix) - callfunction(substring(name, funcprefixlen, -1)); - } -} -# define CALL_ACCUMULATED_FUNCTION(func) \ - ACCUMULATE_call(#func) -#endif + #define ACCUMULATE_FUNCTION(func, otherfunc) \ + #ifdef func \ + void __merge__##otherfunc() \ + { \ + func(); otherfunc(); \ + } \ + #undef func \ + #define func __merge__##otherfunc \ + #else \ + #define func otherfunc \ + #endif + #define CALL_ACCUMULATED_FUNCTION(func) \ + func() + #else + #define ACCUMULATE_FUNCTION(func, otherfunc) \ + .float _ACCUMULATE_##func##__##otherfunc; + void ACCUMULATE_call(string func) + { + float i; + float n = numentityfields(); + string funcprefix = strcat("_ACCUMULATE_", func, "__"); + float funcprefixlen = strlen(funcprefix); + for (i = 0; i < n; ++i) + { + string name = entityfieldname(i); + if (substring(name, 0, funcprefixlen) == funcprefix) callfunction(substring(name, funcprefixlen, -1)); + } + } + #define CALL_ACCUMULATED_FUNCTION(func) \ + ACCUMULATE_call( #func) + #endif #endif // used for simplifying ACCUMULATE_FUNCTIONs -#define SET_FIRST_OR_LAST(input,first,count) if(!input) { input = (first + count); } -#define SET_FIELD_COUNT(field,first,count) if(!field) { field = (first + count); ++count; } -#define CHECK_MAX_COUNT(name,max,count,type) if(count > max) { error(strcat("Maximum ", type, " hit: ", #name, ": ", ftos(count), ".\n")); } - -#endif +#define SET_FIRST_OR_LAST(input, first, count) \ + if (!input) { input = (first + count); } +#define SET_FIELD_COUNT(field, first, count) \ + if (!field) { field = (first + count); ++count; } +#define CHECK_MAX_COUNT(name, max, count, type) \ + if (count > max) { error(strcat("Maximum ", type, " hit: ", #name, ": ", ftos(count), ".\n")); }