Geant4  10.03.p01
 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
28 typedef char *(*smr_userInterface)( void *userData );
29 
30 typedef struct statusMessageReport {
33  int libraryID;
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 
41 typedef struct statusMessageReporting {
42  enum smr_status verbosity;
43  int append; /* If 0, only one report allowed, else add to next list. */
46 
47 int smr_setup( void );
48 int smr_cleanup( void );
49 
50 int smr_registerLibrary( char const *libraryName );
52 char const *smr_getRegisteredLibrariesName( int ID );
53 
54 statusMessageReporting *smr_new( statusMessageReporting *smr, enum smr_status verbosity, int append );
55 int smr_initialize( statusMessageReporting *smr, enum smr_status verbosity, int append );
57 void *smr_free( statusMessageReporting **smr );
59 
60 int smr_setReportInfo( statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, ... );
61 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 );
62 int smr_setReportWarning( statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, ... );
63 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 );
64 int smr_setReportError( statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, ... );
65 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 );
66 
73 
74 int smr_isReportOk( statusMessageReport *report );
79 
83 
86 
88 int smr_getCode( statusMessageReport *report );
89 int smr_getLine( statusMessageReport *report );
90 char const *smr_getFile( statusMessageReport *report );
91 char const *smr_getFunction( statusMessageReport *report );
92 char const *smr_getMessage( statusMessageReport *report );
93 char *smr_copyMessage( statusMessageReport *report );
95 void smr_print( statusMessageReporting *smr, int clear );
96 void smr_write( statusMessageReporting *smr, FILE *f, int clear );
97 void smr_reportPrint( statusMessageReport *report );
98 void smr_reportWrite( statusMessageReport *report, FILE *f );
99 
100 char const *smr_statusToString( enum smr_status status );
101 
102 char *smr_allocateFormatMessage( char const *fmt, ... );
103 char *smr_vallocateFormatMessage( char const *fmt, va_list *args );
104 
105 void *smr_malloc( statusMessageReporting *smr, size_t size, int zero, char const *forItem, char const *file, int line, char const *function );
106 void *smr_realloc( statusMessageReporting *smr, void *pOld, size_t size, char const *forItem, char const *file, int line, char const *function );
107 void *smr_freeMemory( void **p );
108 char *smr_allocateCopyString( statusMessageReporting *smr, char const *s, char const *forItem, char const *file, int line, char const *function );
109 char *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. */
char * smr_allocateCopyStringN(statusMessageReporting *smr, char const *s, size_t n, char const *forItem, char const *file, int line, char const *function)
int smr_isReportError(statusMessageReport *report)
struct statusMessageReporting statusMessageReporting
void smr_release(statusMessageReporting *smr)
int smr_setup(void)
statusMessageReporting * smr_clone(statusMessageReporting *smr)
char const * smr_getRegisteredLibrariesName(int ID)
const char * p
Definition: xmltok.h:285
char const * smr_getFunction(statusMessageReport *report)
int smr_isWarning(statusMessageReporting *smr)
void * smr_free(statusMessageReporting **smr)
int smr_getLibraryID(statusMessageReport *report)
struct statusMessageReport statusMessageReport
#define userData
Definition: xmlparse.cc:572
int smr_numberOfReports(statusMessageReporting *smr)
int smr_isReportOk(statusMessageReport *report)
int smr_isInfo(statusMessageReporting *smr)
void smr_print(statusMessageReporting *smr, int clear)
char * smr_allocateFormatMessage(char const *fmt,...)
int smr_isReportWarning(statusMessageReport *report)
int smr_setReportInfo(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
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)
char const * smr_statusToString(enum smr_status status)
const XML_Char * s
Definition: expat.h:262
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)
statusMessageReport * smr_firstReport(statusMessageReporting *smr)
enum smr_status smr_getVerbosity(statusMessageReporting *smr)
int smr_isReportWarningOrError(statusMessageReport *report)
statusMessageReport report
int smr_getLine(statusMessageReport *report)
void smr_reportPrint(statusMessageReport *report)
int smr_cleanup(void)
int smr_setReportWarning(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
void smr_write(statusMessageReporting *smr, FILE *f, int clear)
enum smr_status smr_highestStatus(statusMessageReporting *smr)
char * smr_allocateCopyString(statusMessageReporting *smr, char const *s, char const *forItem, char const *file, int line, char const *function)
int smr_isOk(statusMessageReporting *smr)
char fileName[smr_maximumFileNameSize+1]
char * smr_copyFullMessage(statusMessageReport *report)
Definition: inftrees.h:24
void * smr_freeMemory(void **p)
char * smr_vallocateFormatMessage(char const *fmt, va_list *args)
void * smr_malloc(statusMessageReporting *smr, size_t size, int zero, char const *forItem, char const *file, int line, char const *function)
int smr_setReportError(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
int smr_isWarningOrError(statusMessageReporting *smr)
char const * smr_getFile(statusMessageReport *report)
statusMessageReporting * smr_new(statusMessageReporting *smr, enum smr_status verbosity, int append)
struct statusMessageReport * next
char * smr_copyMessage(statusMessageReport *report)
char const * smr_getMessage(statusMessageReport *report)
int smr_initialize(statusMessageReporting *smr, enum smr_status verbosity, int append)
int smr_isError(statusMessageReporting *smr)
int smr_registerLibrary(char const *libraryName)
int smr_getAppend(statusMessageReporting *smr)
int smr_isReportInfo(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)
int smr_getCode(statusMessageReport *report)
void * smr_realloc(statusMessageReporting *smr, void *pOld, size_t size, char const *forItem, char const *file, int line, char const *function)
int smr_numberOfRegisteredLibraries(void)
statusMessageReport * smr_nextReport(statusMessageReport *report)
void smr_reportWrite(statusMessageReport *report, FILE *f)
#define smr_maximumFileNameSize