Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/hadronic/models/lend/include/statusMessageReporting.h

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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
 27 enum smr_status { smr_status_Ok = 0, smr_status_Info, smr_status_Warning, smr_status_Error };
 28 typedef char *(*smr_userInterface)( void *userData );
 29 
 30 typedef struct statusMessageReport {
 31     struct statusMessageReport *next;
 32     enum smr_status status;
 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. */
 39 } statusMessageReport;
 40 
 41 typedef struct statusMessageReporting {
 42     enum smr_status verbosity;
 43     int append;                                         /* If 0, only one report allowed, else add to next list. */
 44     statusMessageReport report;
 45 } statusMessageReporting;
 46 
 47 int smr_setup( void );
 48 int smr_cleanup( void );
 49 
 50 int smr_registerLibrary( char const *libraryName );
 51 int smr_numberOfRegisteredLibraries( void );
 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 );
 56 void smr_release( statusMessageReporting *smr );
 57 void *smr_free( statusMessageReporting **smr );
 58 statusMessageReporting *smr_clone( 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 
 67 enum smr_status smr_highestStatus( statusMessageReporting *smr );
 68 int smr_isOk( statusMessageReporting *smr );
 69 int smr_isInfo( statusMessageReporting *smr );
 70 int smr_isWarning( statusMessageReporting *smr );
 71 int smr_isError( statusMessageReporting *smr );
 72 int smr_isWarningOrError( statusMessageReporting *smr );
 73 
 74 int smr_isReportOk( statusMessageReport *report );
 75 int smr_isReportInfo( statusMessageReport *report );
 76 int smr_isReportWarning( statusMessageReport *report );
 77 int smr_isReportError( statusMessageReport *report );
 78 int smr_isReportWarningOrError( statusMessageReport *report );
 79 
 80 int smr_numberOfReports( statusMessageReporting *smr );
 81 statusMessageReport *smr_firstReport( statusMessageReporting *smr );
 82 statusMessageReport *smr_nextReport( statusMessageReport *report );
 83 
 84 enum smr_status smr_getVerbosity( statusMessageReporting *smr );
 85 int smr_getAppend( statusMessageReporting *smr );
 86 
 87 int smr_getLibraryID( statusMessageReport *report );
 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 );
 94 char *smr_copyFullMessage( 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. */
142