33#ifndef G4FFGDEBUGGINGMACROS_HH
34#define G4FFGDEBUGGINGMACROS_HH
43 #define G4FFG_FUNCTION_SIGNATURE__ G4String(__func__) + "()"
44#elif defined(_MSC_VER)
46 #define G4FFG_FUNCTION_SIGNATURE__ G4String(__FUNCTION__) + "()"
48 #define G4FFG_FUNCTION_SIGNATURE__ "a function"
52#if defined(G4DEBUG_VERBOSE)
56 extern G4long G4FFGDEBUG_RECURSIVE_REPRESSION;
60 extern G4long G4FFGDEBUG_RECURSIVE_REPRESSION_COUNTER;
64 extern G4long G4FFGDEBUG_DATA_STRUCTURE_REPRESSION;
68 extern G4long G4FFGDEBUG_DATA_STRUCTURE_REPRESSION_COUNTER;
75 #define G4FFG_FUNCTIONENTER__ \
76 if((Verbosity_ & G4FFGEnumerations::DEBUG) && !(Verbosity_ & G4FFGEnumerations::REPRESS_FUNCTION_ENTER_LEAVE_MESSAGES)) \
79 G4cout << "Entering ";\
90 #define G4FFG_SAMPLING_FUNCTIONENTER__ \
91 if(!(Verbosity_ & G4FFGEnumerations::REPRESS_RANDOM_SAMPLING_MESSAGES)) \
93 G4FFG_FUNCTIONENTER__ \
101 #define G4FFG_RECURSIVE_FUNCTIONENTER__ \
102 if(Verbosity_ & G4FFGEnumerations::REPRESS_RECURSIVE_DEBUG_MESSAGES)\
104 if(G4FFGDEBUG_RECURSIVE_REPRESSION == 0) \
106 G4FFG_FUNCTIONENTER__ \
109 G4FFGDEBUG_RECURSIVE_REPRESSION_COUNTER++; \
111 G4FFGDEBUG_RECURSIVE_REPRESSION++; \
114 G4FFG_FUNCTIONENTER__ \
122 #define G4FFG_DATA_FUNCTIONENTER__ \
123 if(Verbosity_ & G4FFGEnumerations::REPRESS_DATA_STRUCTURE_DEBUG_MESSAGES)\
125 if(G4FFGDEBUG_RECURSIVE_REPRESSION == 0) \
127 G4FFG_FUNCTIONENTER__ \
130 G4FFGDEBUG_DATA_STRUCTURE_REPRESSION_COUNTER++; \
132 G4FFGDEBUG_RECURSIVE_REPRESSION++; \
135 G4FFG_FUNCTIONENTER__ \
144 #define G4FFG_FUNCTIONLEAVE__ \
146 if((Verbosity_ & G4FFGEnumerations::DEBUG) && !(Verbosity_ & G4FFGEnumerations::REPRESS_FUNCTION_ENTER_LEAVE_MESSAGES)) \
149 G4cout << "Leaving ";\
159 #define G4FFG_SAMPLING_FUNCTIONLEAVE__ \
160 if(!(Verbosity_ & G4FFGEnumerations::REPRESS_RANDOM_SAMPLING_MESSAGES)) \
162 G4FFG_FUNCTIONLEAVE__ \
170 #define G4FFG_RECURSIVE_FUNCTIONLEAVE__ \
171 if(Verbosity_ & G4FFGEnumerations::REPRESS_RECURSIVE_DEBUG_MESSAGES)\
173 G4FFGDEBUG_RECURSIVE_REPRESSION--; \
174 if(G4FFGDEBUG_RECURSIVE_REPRESSION == 0) \
176 if(G4FFGDEBUG_RECURSIVE_REPRESSION_COUNTER > 0) \
179 G4cout << "==== " << G4FFGDEBUG_RECURSIVE_REPRESSION_COUNTER * 2 << " recursive function messages suppressed ====" << G4endl; \
180 G4FFGDEBUG_RECURSIVE_REPRESSION_COUNTER = 0; \
182 G4FFG_FUNCTIONLEAVE__ \
186 G4FFG_FUNCTIONLEAVE__ \
194 #define G4FFG_DATA_FUNCTIONLEAVE__ \
195 if(Verbosity_ & G4FFGEnumerations::REPRESS_DATA_STRUCTURE_DEBUG_MESSAGES)\
197 G4FFGDEBUG_RECURSIVE_REPRESSION--; \
198 if(G4FFGDEBUG_RECURSIVE_REPRESSION == 0) \
200 if(G4FFGDEBUG_DATA_STRUCTURE_REPRESSION_COUNTER > 0) \
203 G4cout << "==== " << G4FFGDEBUG_DATA_STRUCTURE_REPRESSION_COUNTER * 2 << " data structure function messages suppressed ====" << G4endl; \
204 G4FFGDEBUG_DATA_STRUCTURE_REPRESSION_COUNTER = 0; \
206 G4FFG_FUNCTIONLEAVE__ \
210 G4FFG_FUNCTIONLEAVE__ \
215 #define G4FFG_FUNCTIONENTER__ G4FFG_DEPTH++;
216 #define G4FFG_SAMPLING_FUNCTIONENTER__
217 #define G4FFG_RECURSIVE_FUNCTIONENTER__
218 #define G4FFG_DATA_FUNCTIONENTER__
219 #define G4FFG_FUNCTIONLEAVE__ G4FFG_DEPTH--;
220 #define G4FFG_SAMPLING_FUNCTIONLEAVE__
221 #define G4FFG_RECURSIVE_FUNCTIONLEAVE__
222 #define G4FFG_DATA_FUNCTIONLEAVE__