Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
statusMessageReporting.h
Go to the documentation of this file.
1#ifndef statusMessageReporting_h_included
2#define statusMessageReporting_h_included
3
4#include <stdio.h>
5#include <stdarg.h>
6
7#ifdef WIN32
8#define __func__ __FUNCTION__
9#endif
10
11#if defined __cplusplus
12 extern "C" {
13 namespace GIDI {
14#endif
15
16#define smr_unknownID 0
17#define smr_tooManyIDs 1
18#define smr_invalidID 2
19#define smr_errnoID 3
20#define smr_smrID 4
21
22#define smr_maximumNumberOfRegisteredLibraries 128
23#define smr_maximumFileNameSize 1024
24#define smr_codeNULL 0
25#define smr_codeFileIO -1
26#define smr_codeMemoryAllocating -2
28typedef char *(*smr_userInterface)( void *userData );
29
30typedef struct statusMessageReport {
34 int code;
35 int line;
36 char fileName[smr_maximumFileNameSize+1]; /* Do not free this. */
37 char function[smr_maximumFileNameSize+1]; /* Do not free this. */
38 char *message; /* User must free this when done. Should use smr_release. */
40
41typedef struct statusMessageReporting {
43 int append; /* If 0, only one report allowed, else add to next list. */
46
47int smr_setup( void );
48int smr_cleanup( void );
49
50int smr_registerLibrary( char const *libraryName );
52char const *smr_getRegisteredLibrariesName( int ID );
53
54statusMessageReporting *smr_new( statusMessageReporting *smr, enum smr_status verbosity, int append );
55int smr_initialize( statusMessageReporting *smr, enum smr_status verbosity, int append );
57void *smr_free( statusMessageReporting **smr );
59
60int smr_setReportInfo( statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, ... );
61int smr_vsetReportInfo( statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, va_list *args );
62int smr_setReportWarning( statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, ... );
63int smr_vsetReportWarning( statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, va_list *args );
64int smr_setReportError( statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, ... );
65int smr_vsetReportError( statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, va_list *args );
66
73
79
83
86
88int smr_getCode( statusMessageReport *report );
89int smr_getLine( statusMessageReport *report );
90char const *smr_getFile( statusMessageReport *report );
91char const *smr_getFunction( statusMessageReport *report );
92char const *smr_getMessage( statusMessageReport *report );
95void smr_print( statusMessageReporting *smr, int clear );
96void smr_write( statusMessageReporting *smr, FILE *f, int clear );
98void smr_reportWrite( statusMessageReport *report, FILE *f );
99
100char const *smr_statusToString( enum smr_status status );
101
102char *smr_allocateFormatMessage( char const *fmt, ... );
103char *smr_vallocateFormatMessage( char const *fmt, va_list *args );
104
105void *smr_malloc( statusMessageReporting *smr, size_t size, int zero, char const *forItem, char const *file, int line, char const *function );
106void *smr_realloc( statusMessageReporting *smr, void *pOld, size_t size, char const *forItem, char const *file, int line, char const *function );
107void *smr_freeMemory( void **p );
108char *smr_allocateCopyString( statusMessageReporting *smr, char const *s, char const *forItem, char const *file, int line, char const *function );
109char *smr_allocateCopyStringN( statusMessageReporting *smr, char const *s, size_t n, char const *forItem, char const *file, int line, char const *function );
110
111#define smr_malloc2( smr, size, zero, forItem ) smr_malloc( smr, size, zero, forItem, __FILE__, __LINE__, __func__ )
112#define smr_realloc2( smr, old, size, forItem ) smr_realloc( smr, old, size, forItem, __FILE__, __LINE__, __func__ )
113#define smr_allocateCopyString2( smr, s, forItem ) smr_allocateCopyString( smr, s, forItem, __FILE__, __LINE__, __func__ )
114#define smr_allocateCopyStringN2( smr, s, n, forItem ) smr_allocateCopyStringN( smr, s, n, forItem, __FILE__, __LINE__, __func__ )
115
116#define smr_setReportInfo2( smr, libraryID, code, fmt, ... ) smr_setReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
117#define smr_setReportInfo2p( smr, libraryID, code, fmt ) smr_setReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt )
118#define smr_vsetReportInfo2( smr, libraryID, code, fmt, args ) smr_vsetReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
119#define smr_setReportWarning2( smr, libraryID, code, fmt, ... ) smr_setReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
120#define smr_setReportWarning2p( smr, libraryID, code, fmt ) smr_setReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt )
121#define smr_vsetReportWarning2( smr, libraryID, code, fmt, args ) smr_vsetReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
122#define smr_setReportError2( smr, libraryID, code, fmt, ... ) smr_setReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
123#define smr_setReportError2p( smr, libraryID, code, fmt ) smr_setReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt )
124#define smr_vsetReportError2( smr, libraryID, code, fmt, args ) smr_vsetReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
125
126#define smr_setReportInfo3( smr, userInterface, libraryID, code, fmt, ... ) smr_setReportInfo( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
127#define smr_setReportInfo3p( smr, userInterface, libraryID, code, fmt ) smr_setReportInfo( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt )
128#define smr_vsetReportInfo3( smr, userInterface, libraryID, code, fmt, args ) smr_vsetReportInfo( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
129#define smr_setReportWarning3( smr, userInterface, libraryID, code, fmt, ... ) smr_setReportWarning( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
130#define smr_setReportWarning3p( smr, userInterface, libraryID, code, fmt ) smr_setReportWarning( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt )
131#define smr_vsetReportWarning3( smr, userInterface, libraryID, code, fmt, args ) smr_vsetReportWarning( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
132#define smr_setReportError3( smr, userInterface, libraryID, code, fmt, ... ) smr_setReportError( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
133#define smr_setReportError3p( smr, userInterface, libraryID, code, fmt ) smr_setReportError( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt )
134#define smr_vsetReportError3( smr, userInterface, libraryID, code, fmt, args ) smr_vsetReportError( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
135
136#if defined __cplusplus
137 }
138 }
139#endif
140
141#endif /* End of statusMessageReporting_h_included. */
G4double(*)(G4double) function
int smr_vsetReportError(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, va_list *args)
int smr_registerLibrary(char const *libraryName)
char * smr_copyMessage(statusMessageReport *report)
int smr_isInfo(statusMessageReporting *smr)
int smr_initialize(statusMessageReporting *smr, enum smr_status verbosity, int append)
char * smr_allocateCopyString(statusMessageReporting *smr, char const *s, char const *forItem, char const *file, int line, char const *function)
char * smr_vallocateFormatMessage(char const *fmt, va_list *args)
int smr_isError(statusMessageReporting *smr)
int smr_setup(void)
int smr_isReportOk(statusMessageReport *report)
char * smr_copyFullMessage(statusMessageReport *report)
int smr_isReportWarningOrError(statusMessageReport *report)
int smr_getAppend(statusMessageReporting *smr)
statusMessageReport * smr_nextReport(statusMessageReport *report)
int smr_isReportWarning(statusMessageReport *report)
#define smr_maximumFileNameSize
char const * smr_getFile(statusMessageReport *report)
statusMessageReporting * smr_new(statusMessageReporting *smr, enum smr_status verbosity, int append)
int smr_numberOfReports(statusMessageReporting *smr)
void * smr_realloc(statusMessageReporting *smr, void *pOld, size_t size, char const *forItem, char const *file, int line, char const *function)
int smr_isWarningOrError(statusMessageReporting *smr)
statusMessageReporting * smr_clone(statusMessageReporting *smr)
statusMessageReport * smr_firstReport(statusMessageReporting *smr)
enum smr_status smr_highestStatus(statusMessageReporting *smr)
int smr_getLibraryID(statusMessageReport *report)
int smr_vsetReportInfo(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, va_list *args)
void * smr_free(statusMessageReporting **smr)
int smr_setReportWarning(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
void smr_print(statusMessageReporting *smr, int clear)
int smr_isReportInfo(statusMessageReport *report)
char const * smr_getMessage(statusMessageReport *report)
int smr_vsetReportWarning(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, va_list *args)
char const * smr_statusToString(enum smr_status status)
void * smr_freeMemory(void **p)
char const * smr_getRegisteredLibrariesName(int ID)
int smr_isWarning(statusMessageReporting *smr)
void smr_write(statusMessageReporting *smr, FILE *f, int clear)
int smr_getLine(statusMessageReport *report)
void smr_reportWrite(statusMessageReport *report, FILE *f)
void * smr_malloc(statusMessageReporting *smr, size_t size, int zero, char const *forItem, char const *file, int line, char const *function)
int smr_setReportInfo(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
int smr_setReportError(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
enum smr_status smr_getVerbosity(statusMessageReporting *smr)
int smr_cleanup(void)
void smr_release(statusMessageReporting *smr)
int smr_isOk(statusMessageReporting *smr)
void smr_reportPrint(statusMessageReport *report)
char * smr_allocateFormatMessage(char const *fmt,...)
char * smr_allocateCopyStringN(statusMessageReporting *smr, char const *s, size_t n, char const *forItem, char const *file, int line, char const *function)
int smr_numberOfRegisteredLibraries(void)
int smr_getCode(statusMessageReport *report)
@ smr_status_Warning
@ smr_status_Error
@ smr_status_Info
@ smr_status_Ok
char const * smr_getFunction(statusMessageReport *report)
int smr_isReportError(statusMessageReport *report)
Definition: inftrees.h:24
struct statusMessageReport * next
statusMessageReport report