1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #ifndef B3_LOGGING_H
- #define B3_LOGGING_H
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- ///We add the do/while so that the statement "if (condition) b3Printf("test"); else {...}" would fail
- ///You can also customize the message by uncommenting out a different line below
- #define b3Printf(...) b3OutputPrintfVarArgsInternal(__VA_ARGS__)
- //#define b3Printf(...) do {b3OutputPrintfVarArgsInternal("b3Printf[%s,%d]:",__FILE__,__LINE__);b3OutputPrintfVarArgsInternal(__VA_ARGS__); } while(0)
- //#define b3Printf b3OutputPrintfVarArgsInternal
- //#define b3Printf(...) printf(__VA_ARGS__)
- //#define b3Printf(...)
- #define b3Warning(...) do{ b3OutputWarningMessageVarArgsInternal("b3Warning[%s,%d]:\n", __FILE__, __LINE__);b3OutputWarningMessageVarArgsInternal(__VA_ARGS__);} while (0)
- #define b3Error(...)do {b3OutputErrorMessageVarArgsInternal("b3Error[%s,%d]:\n", __FILE__, __LINE__);b3OutputErrorMessageVarArgsInternal(__VA_ARGS__);} while (0)
- #ifndef B3_NO_PROFILE
- void b3EnterProfileZone(const char* name);
- void b3LeaveProfileZone();
- #ifdef __cplusplus
- class b3ProfileZone
- {
- public:
- b3ProfileZone(const char* name)
- {
- b3EnterProfileZone(name);
- }
- ~b3ProfileZone()
- {
- b3LeaveProfileZone();
- }
- };
- #define B3_PROFILE(name) b3ProfileZone __profile(name)
- #endif
- #else //B3_NO_PROFILE
- #define B3_PROFILE(name)
- #define b3StartProfile(a)
- #define b3StopProfile
- #endif //#ifndef B3_NO_PROFILE
- typedef void(b3PrintfFunc)(const char* msg);
- typedef void(b3WarningMessageFunc)(const char* msg);
- typedef void(b3ErrorMessageFunc)(const char* msg);
- typedef void(b3EnterProfileZoneFunc)(const char* msg);
- typedef void(b3LeaveProfileZoneFunc)();
- ///The developer can route b3Printf output using their own implementation
- void b3SetCustomPrintfFunc(b3PrintfFunc* printfFunc);
- void b3SetCustomWarningMessageFunc(b3WarningMessageFunc* warningMsgFunc);
- void b3SetCustomErrorMessageFunc(b3ErrorMessageFunc* errorMsgFunc);
- ///Set custom profile zone functions (zones can be nested)
- void b3SetCustomEnterProfileZoneFunc(b3EnterProfileZoneFunc* enterFunc);
- void b3SetCustomLeaveProfileZoneFunc(b3LeaveProfileZoneFunc* leaveFunc);
- ///Don't use those internal functions directly, use the b3Printf or b3SetCustomPrintfFunc instead (or warning/error version)
- void b3OutputPrintfVarArgsInternal(const char* str, ...);
- void b3OutputWarningMessageVarArgsInternal(const char* str, ...);
- void b3OutputErrorMessageVarArgsInternal(const char* str, ...);
- #ifdef __cplusplus
- }
- #endif
- #endif //B3_LOGGING_H
|