cloudy
trunk
|
Go to the source code of this file.
Data Structures | |
class | DelayedAssigner_T_Base |
class | DelayedAssigner_T< Type > |
class | UnivesalStorage_T< Base, SIZE > |
Macros | |
#define | UTILITYMACROS_H |
#define | REPEAT_2(x) x x |
#define | REPEAT_4(x) REPEAT_2 (x) REPEAT_2 (x) |
#define | REPEAT_8(x) REPEAT_4 (x) REPEAT_4 (x) |
#define | REPEAT_16(x) REPEAT_8 (x) REPEAT_8 (x) |
#define | REPEAT_32(x) REPEAT_16 (x) REPEAT_16 (x) |
#define | REPEAT_64(x) REPEAT_32 (x) REPEAT_32 (x) |
#define | REPEAT_128(x) REPEAT_64 (x) REPEAT_64 (x) |
#define | REPEAT_256(x) REPEAT_128 (x) REPEAT_128 (x) |
#define | REPEAT_512(x) REPEAT_256 (x) REPEAT_256 (x) |
#define | REPEAT_1024(x) REPEAT_512 (x) REPEAT_512 (x) |
#define | REPEAT(count, what) REPEAT_##count (what) |
#define | REPEAT_WC_2(x) x, x |
#define | REPEAT_WC_4(x) REPEAT_WC_2 (x), REPEAT_WC_2 (x) |
#define | REPEAT_WC_8(x) REPEAT_WC_4 (x), REPEAT_WC_4 (x) |
#define | REPEAT_WC_16(x) REPEAT_WC_8 (x), REPEAT_WC_8 (x) |
#define | REPEAT_WC_32(x) REPEAT_WC_16 (x), REPEAT_WC_16 (x) |
#define | REPEAT_WC_64(x) REPEAT_WC_32 (x), REPEAT_WC_32 (x) |
#define | REPEAT_WC_128(x) REPEAT_WC_64 (x), REPEAT_WC_64 (x) |
#define | REPEAT_WC_256(x) REPEAT_WC_128 (x), REPEAT_WC_128 (x) |
#define | REPEAT_WC_512(x) REPEAT_WC_256 (x), REPEAT_WC_256 (x) |
#define | REPEAT_WC_1024(x) REPEAT_WC_512 (x), REPEAT_WC_512 (x) |
#define | REPEAT_WC(count, text) REPEAT_WC_##count (text) |
#define | UNIQUE_NAME_1(prefix, x) prefix##x |
#define | UNIQUE_NAME_2(prefix, x) UNIQUE_NAME_1 (prefix, x) |
#define | UNIQUE_NAME_WP(prefix) UNIQUE_NAME_2 (prefix, __LINE__) |
#define | UNIQUE_NAME UNIQUE_NAME_WP (uniqueNameOnLine_) |
#define | LINE_STRING_1(x) #x |
#define | LINE_STRING_2(x) LINE_STRING_1 (x) |
#define | LINE_STRING LINE_STRING_2 (__LINE__) |
#define | HERE __FILE__ "(" LINE_STRING "):" |
#define | ONCE(execution_code) |
#define | SKIP(skip_count, execution_code) |
#define | REV_SKIP(skip_count, execution_code) |
#define | LOOP_C(count, loop_code) |
#define | LOOP(count) |
#define | AT_START(execution_code) |
#define | AT_END(execution_code) |
#define | DELAYED_ASSIGN_T(Type, var_ref, value) |
#define | SAVE_T(Type, var_ref) |
#define | SAVE(var_ref) |
#define | DELAYED_ASSIGN(var_ref, value) |
Functions | |
template<class Type > | |
DelayedAssigner_T< Type > | makeDelayedAssigner_T (Type &var) |
template<class Type > | |
DelayedAssigner_T< Type > | makeDelayedAssigner_T (Type &var, const Type &value) |
template<class Type > | |
DelayedAssigner_T_Base * | newDelayedAssigner_T (Type &var) |
@verbatim
///////////////// UtilityMacros.h ///////////////// rado //// // // // Copyright (c) 1999 Radoslav Getov // // // // Permission to use, copy, modify and distribute this // // software is granted without fee, provided that the above // // copyright notice and this permission notice appear in the // // modified source and the source files that #include it. // // // ////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////// // // // Collection of C and C++ preprocessor utility macros: // // // // ------ C and C++ ----- // // REPEAT_xxx (text) // // REPEAT_WC_xxx (text) // // REPEAT (count, text) // // REPEAT_WC (count, text) // // // // UNIQUE_NAME_WP (prefix) // // UNIQUE_NAME // // // // LINE_STRING // // HERE // // // // ONCE (execution_code) // // SKIP (skip_count, execution_code) // // REV_SKIP (skip_count, execution_code) // // LOOP_C (count, execution_code) // // // // ------ C++ only ----- // // LOOP (count) // // // // AT_START (execution_code) // // AT_END (execution_code) // // // // DELAYED_ASSIGN_T (Type, var_reference, value) // // SAVE_T (Type, var_reference) // // DELAYED_ASSIGN (var_reference, value) // // SAVE (var_reference) // // // ////////////////////////////////////////////////////////////////
Definition in file utilitymacros.h.
#define AT_END | ( | execution_code | ) |
AT_END Execute 'execution_code' upon globals cleanup.
Example: AT_END (cout << "executed AFTER main() return!\n") ________________________________________________________rado__
Definition at line 257 of file utilitymacros.h.
#define AT_START | ( | execution_code | ) |
AT_START Execute 'execution_code' upon globals initialization.
Example: AT_START (cout << "executed before main()!\n") ________________________________________________________rado__
Definition at line 239 of file utilitymacros.h.
#define DELAYED_ASSIGN | ( | var_ref, | |
value | |||
) |
DELAYED_ASSIGN Assign 'value' to 'var_ref' upon destruction.
Example: DELAYED_ASSIGN (n, n->next) ________________________________________________________rado__
Definition at line 422 of file utilitymacros.h.
#define DELAYED_ASSIGN_T | ( | Type, | |
var_ref, | |||
value | |||
) |
DELAYED_ASSIGN_T Assign 'value' to 'var_ref' upon destruction.
Example: DELAYED_ASSIGN_T (Node*, n, n->next) ________________________________________________________rado__
Definition at line 316 of file utilitymacros.h.
#define HERE __FILE__ "(" LINE_STRING "):" |
#HERE
File name and line number in string form like "File (1234):"
Example (MSVC): #pragma message (HERE "Click here!") ________________________________________________________rado__
Definition at line 151 of file utilitymacros.h.
#define LINE_STRING LINE_STRING_2 (__LINE__) |
Definition at line 141 of file utilitymacros.h.
#define LINE_STRING_1 | ( | x | ) | #x |
LINE_STRING LINE as a string
Example: printf (LINE_STRING); ________________________________________________________rado__
Definition at line 138 of file utilitymacros.h.
#define LINE_STRING_2 | ( | x | ) | LINE_STRING_1 (x) |
Definition at line 139 of file utilitymacros.h.
#define LOOP | ( | count | ) |
C++ compatible only templates and macros LOOP 'for' loop header for loop to be executed 'count' times. The statement, following it, is the loop body.
Example: LOOP (rand() % 100) cout << '*'; ________________________________________________________rado__
Definition at line 227 of file utilitymacros.h.
#define LOOP_C | ( | count, | |
loop_code | |||
) |
LOOP_C Execute 'loop_code' 'count' times
Example: LOOP_C (100, cout << '*' << endl; ) ________________________________________________________rado__
Definition at line 209 of file utilitymacros.h.
#define ONCE | ( | execution_code | ) |
#ONCE(execution_code)
Executes 'execution_code' only the first time.
Example: ONCE (cout << "Here we start"; ) ________________________________________________________rado__
Definition at line 160 of file utilitymacros.h.
#define REPEAT | ( | count, | |
what | |||
) | REPEAT_##count (what) |
REPEAT (count, what) Textually repeat 'what' 'cnt' times.
Example: char* spaces = REPEAT (32, " "); ________________________________________________________rado__
Definition at line 91 of file utilitymacros.h.
#define REPEAT_1024 | ( | x | ) | REPEAT_512 (x) REPEAT_512 (x) |
Definition at line 83 of file utilitymacros.h.
Definition at line 80 of file utilitymacros.h.
Definition at line 77 of file utilitymacros.h.
#define REPEAT_2 | ( | x | ) | x x |
\#REPEAT_xxx (text)
Textually repeat argument xxx times.
Example: char* spaces = REPEAT_32 (" "); ________________________________________________________rado__
Definition at line 74 of file utilitymacros.h.
#define REPEAT_256 | ( | x | ) | REPEAT_128 (x) REPEAT_128 (x) |
Definition at line 81 of file utilitymacros.h.
Definition at line 78 of file utilitymacros.h.
Definition at line 75 of file utilitymacros.h.
#define REPEAT_512 | ( | x | ) | REPEAT_256 (x) REPEAT_256 (x) |
Definition at line 82 of file utilitymacros.h.
Definition at line 79 of file utilitymacros.h.
Definition at line 76 of file utilitymacros.h.
#define REPEAT_WC | ( | count, | |
text | |||
) | REPEAT_WC_##count (text) |
=================| REPEAT_WC (count, text) |================= Textually repeat 'what' 'cnt' times, delimited by comas.
Example: int ones[16] = { REPEAT_WC (16, 1) }; ________________________________________________________rado__
Definition at line 116 of file utilitymacros.h.
#define REPEAT_WC_1024 | ( | x | ) | REPEAT_WC_512 (x), REPEAT_WC_512 (x) |
Definition at line 108 of file utilitymacros.h.
#define REPEAT_WC_128 | ( | x | ) | REPEAT_WC_64 (x), REPEAT_WC_64 (x) |
Definition at line 105 of file utilitymacros.h.
#define REPEAT_WC_16 | ( | x | ) | REPEAT_WC_8 (x), REPEAT_WC_8 (x) |
Definition at line 102 of file utilitymacros.h.
#define REPEAT_WC_2 | ( | x | ) | x, x |
#REPEAT_WC_xxx (text) Textually repeat argument xxx times, delimited by comas.
Example: int ones[] = { REPEAT_WC_16 (1) }; ________________________________________________________rado__
Definition at line 99 of file utilitymacros.h.
#define REPEAT_WC_256 | ( | x | ) | REPEAT_WC_128 (x), REPEAT_WC_128 (x) |
Definition at line 106 of file utilitymacros.h.
#define REPEAT_WC_32 | ( | x | ) | REPEAT_WC_16 (x), REPEAT_WC_16 (x) |
Definition at line 103 of file utilitymacros.h.
#define REPEAT_WC_4 | ( | x | ) | REPEAT_WC_2 (x), REPEAT_WC_2 (x) |
Definition at line 100 of file utilitymacros.h.
#define REPEAT_WC_512 | ( | x | ) | REPEAT_WC_256 (x), REPEAT_WC_256 (x) |
Definition at line 107 of file utilitymacros.h.
#define REPEAT_WC_64 | ( | x | ) | REPEAT_WC_32 (x), REPEAT_WC_32 (x) |
Definition at line 104 of file utilitymacros.h.
#define REPEAT_WC_8 | ( | x | ) | REPEAT_WC_4 (x), REPEAT_WC_4 (x) |
Definition at line 101 of file utilitymacros.h.
#define REV_SKIP | ( | skip_count, | |
execution_code | |||
) |
REV_SKIP(cnt,code) Executes 'execution_code' once in 'skip_count' times.
Example: REF_SKIP (100, cout << '*' << endl; } ________________________________________________________rado__
Definition at line 192 of file utilitymacros.h.
#define SAVE | ( | var_ref | ) |
SAVE(var_ref) Restore initial value of 'var_ref' upon destruction.
Example: SAVE (k) ________________________________________________________rado__
Definition at line 409 of file utilitymacros.h.
#define SAVE_T | ( | Type, | |
var_ref | |||
) |
SAVE_T Restore initial value of 'var_ref' upon destruction.
Example: SAVE_T (double, d) ________________________________________________________rado__
Definition at line 326 of file utilitymacros.h.
#define SKIP | ( | skip_count, | |
execution_code | |||
) |
SKIP(cnt,code) Executes 'execution_code' once in 'skip_count' times.
Example: SKIP (100, cout << '*' << endl; } ________________________________________________________rado__
Definition at line 176 of file utilitymacros.h.
#define UNIQUE_NAME UNIQUE_NAME_WP (uniqueNameOnLine_) |
Definition at line 130 of file utilitymacros.h.
#define UNIQUE_NAME_1 | ( | prefix, | |
x | |||
) | prefix##x |
====================| UNIQUE_NAME |========================== Expands to unique identifier on each line.
Example: int UNIQUA_NAME = 0, UNIQUE_NAME = 1; ________________________________________________________rado__
Definition at line 125 of file utilitymacros.h.
#define UNIQUE_NAME_2 | ( | prefix, | |
x | |||
) | UNIQUE_NAME_1 (prefix, x) |
Definition at line 126 of file utilitymacros.h.
#define UNIQUE_NAME_WP | ( | prefix | ) | UNIQUE_NAME_2 (prefix, __LINE__) |
Definition at line 128 of file utilitymacros.h.
#define UTILITYMACROS_H |
Definition at line 63 of file utilitymacros.h.
|
inline |
makeDelayedAssigner_T Return DelayedAssigner_T <Type> (deducing 'Type' from arguments)
Example: see #define SAVE ________________________________________________________rado__
Definition at line 338 of file utilitymacros.h.
|
inline |
makeDelayedAssigner_T(2) Returns DelayedAssigner_T <Type> (deducing 'Type' from arguments)
Example: see #define DELAYED_ASSIGN ________________________________________________________rado__
Definition at line 351 of file utilitymacros.h.
|
inline |
newDelayedAssigner_T Allocate, initialize, and return pointer to a DelayedAssigner_T <Type> (deducing 'Type' from argument)
Example: std::auto_ptr <DeleyedAssigner_T_Base> save_var (allocateDelayedAssigner_T (j); ________________________________________________________rado__
Definition at line 365 of file utilitymacros.h.