ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
statusMessageReporting.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file statusMessageReporting.h
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 {
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. */