Geant4-11
Data Structures | Macros | Typedefs | Enumerations | Functions
statusMessageReporting.h File Reference
#include <stdio.h>
#include <stdarg.h>

Go to the source code of this file.

Data Structures

struct  statusMessageReport
 
struct  statusMessageReporting
 

Macros

#define smr_allocateCopyString2(smr, s, forItem)   smr_allocateCopyString( smr, s, forItem, __FILE__, __LINE__, __func__ )
 
#define smr_allocateCopyStringN2(smr, s, n, forItem)   smr_allocateCopyStringN( smr, s, n, forItem, __FILE__, __LINE__, __func__ )
 
#define smr_codeFileIO   -1
 
#define smr_codeMemoryAllocating   -2
 
#define smr_codeNULL   0
 
#define smr_errnoID   3
 
#define smr_invalidID   2
 
#define smr_malloc2(smr, size, zero, forItem)   smr_malloc( smr, size, zero, forItem, __FILE__, __LINE__, __func__ )
 
#define smr_maximumFileNameSize   1024
 
#define smr_maximumNumberOfRegisteredLibraries   128
 
#define smr_realloc2(smr, old, size, forItem)   smr_realloc( smr, old, size, forItem, __FILE__, __LINE__, __func__ )
 
#define smr_setReportError2(smr, libraryID, code, fmt, ...)   smr_setReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
 
#define smr_setReportError2p(smr, libraryID, code, fmt)   smr_setReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt )
 
#define smr_setReportError3(smr, userInterface, libraryID, code, fmt, ...)   smr_setReportError( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
 
#define smr_setReportError3p(smr, userInterface, libraryID, code, fmt)   smr_setReportError( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt )
 
#define smr_setReportInfo2(smr, libraryID, code, fmt, ...)   smr_setReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
 
#define smr_setReportInfo2p(smr, libraryID, code, fmt)   smr_setReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt )
 
#define smr_setReportInfo3(smr, userInterface, libraryID, code, fmt, ...)   smr_setReportInfo( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
 
#define smr_setReportInfo3p(smr, userInterface, libraryID, code, fmt)   smr_setReportInfo( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt )
 
#define smr_setReportWarning2(smr, libraryID, code, fmt, ...)   smr_setReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
 
#define smr_setReportWarning2p(smr, libraryID, code, fmt)   smr_setReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt )
 
#define smr_setReportWarning3(smr, userInterface, libraryID, code, fmt, ...)   smr_setReportWarning( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
 
#define smr_setReportWarning3p(smr, userInterface, libraryID, code, fmt)   smr_setReportWarning( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt )
 
#define smr_smrID   4
 
#define smr_tooManyIDs   1
 
#define smr_unknownID   0
 
#define smr_vsetReportError2(smr, libraryID, code, fmt, args)   smr_vsetReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
 
#define smr_vsetReportError3(smr, userInterface, libraryID, code, fmt, args)   smr_vsetReportError( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
 
#define smr_vsetReportInfo2(smr, libraryID, code, fmt, args)   smr_vsetReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
 
#define smr_vsetReportInfo3(smr, userInterface, libraryID, code, fmt, args)   smr_vsetReportInfo( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
 
#define smr_vsetReportWarning2(smr, libraryID, code, fmt, args)   smr_vsetReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
 
#define smr_vsetReportWarning3(smr, userInterface, libraryID, code, fmt, args)   smr_vsetReportWarning( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )
 

Typedefs

typedef char *(* smr_userInterface) (void *userData)
 
typedef struct statusMessageReport statusMessageReport
 
typedef struct statusMessageReporting statusMessageReporting
 

Enumerations

enum  smr_status { smr_status_Ok = 0 , smr_status_Info , smr_status_Warning , smr_status_Error }
 

Functions

char * smr_allocateCopyString (statusMessageReporting *smr, char const *s, char const *forItem, char const *file, int line, char const *function)
 
char * smr_allocateCopyStringN (statusMessageReporting *smr, char const *s, size_t n, char const *forItem, char const *file, int line, char const *function)
 
char * smr_allocateFormatMessage (char const *fmt,...)
 
int smr_cleanup (void)
 
statusMessageReportingsmr_clone (statusMessageReporting *smr)
 
char * smr_copyFullMessage (statusMessageReport *report)
 
char * smr_copyMessage (statusMessageReport *report)
 
statusMessageReportsmr_firstReport (statusMessageReporting *smr)
 
void * smr_free (statusMessageReporting **smr)
 
void * smr_freeMemory (void **p)
 
int smr_getAppend (statusMessageReporting *smr)
 
int smr_getCode (statusMessageReport *report)
 
char const * smr_getFile (statusMessageReport *report)
 
char const * smr_getFunction (statusMessageReport *report)
 
int smr_getLibraryID (statusMessageReport *report)
 
int smr_getLine (statusMessageReport *report)
 
char const * smr_getMessage (statusMessageReport *report)
 
char const * smr_getRegisteredLibrariesName (int ID)
 
enum smr_status smr_getVerbosity (statusMessageReporting *smr)
 
enum smr_status smr_highestStatus (statusMessageReporting *smr)
 
int smr_initialize (statusMessageReporting *smr, enum smr_status verbosity, int append)
 
int smr_isError (statusMessageReporting *smr)
 
int smr_isInfo (statusMessageReporting *smr)
 
int smr_isOk (statusMessageReporting *smr)
 
int smr_isReportError (statusMessageReport *report)
 
int smr_isReportInfo (statusMessageReport *report)
 
int smr_isReportOk (statusMessageReport *report)
 
int smr_isReportWarning (statusMessageReport *report)
 
int smr_isReportWarningOrError (statusMessageReport *report)
 
int smr_isWarning (statusMessageReporting *smr)
 
int smr_isWarningOrError (statusMessageReporting *smr)
 
void * smr_malloc (statusMessageReporting *smr, size_t size, int zero, char const *forItem, char const *file, int line, char const *function)
 
statusMessageReportingsmr_new (statusMessageReporting *smr, enum smr_status verbosity, int append)
 
statusMessageReportsmr_nextReport (statusMessageReport *report)
 
int smr_numberOfRegisteredLibraries (void)
 
int smr_numberOfReports (statusMessageReporting *smr)
 
void smr_print (statusMessageReporting *smr, int clear)
 
void * smr_realloc (statusMessageReporting *smr, void *pOld, size_t size, char const *forItem, char const *file, int line, char const *function)
 
int smr_registerLibrary (char const *libraryName)
 
void smr_release (statusMessageReporting *smr)
 
void smr_reportPrint (statusMessageReport *report)
 
void smr_reportWrite (statusMessageReport *report, FILE *f)
 
int smr_setReportError (statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
 
int smr_setReportInfo (statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
 
int smr_setReportWarning (statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
 
int smr_setup (void)
 
char const * smr_statusToString (enum smr_status status)
 
char * smr_vallocateFormatMessage (char const *fmt, va_list *args)
 
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_vsetReportInfo (statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt, va_list *args)
 
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)
 
void smr_write (statusMessageReporting *smr, FILE *f, int clear)
 

Macro Definition Documentation

◆ smr_allocateCopyString2

#define smr_allocateCopyString2 (   smr,
  s,
  forItem 
)    smr_allocateCopyString( smr, s, forItem, __FILE__, __LINE__, __func__ )

Definition at line 113 of file statusMessageReporting.h.

◆ smr_allocateCopyStringN2

#define smr_allocateCopyStringN2 (   smr,
  s,
  n,
  forItem 
)    smr_allocateCopyStringN( smr, s, n, forItem, __FILE__, __LINE__, __func__ )

Definition at line 114 of file statusMessageReporting.h.

◆ smr_codeFileIO

#define smr_codeFileIO   -1

Definition at line 25 of file statusMessageReporting.h.

◆ smr_codeMemoryAllocating

#define smr_codeMemoryAllocating   -2

Definition at line 26 of file statusMessageReporting.h.

◆ smr_codeNULL

#define smr_codeNULL   0

Definition at line 24 of file statusMessageReporting.h.

◆ smr_errnoID

#define smr_errnoID   3

Definition at line 19 of file statusMessageReporting.h.

◆ smr_invalidID

#define smr_invalidID   2

Definition at line 18 of file statusMessageReporting.h.

◆ smr_malloc2

#define smr_malloc2 (   smr,
  size,
  zero,
  forItem 
)    smr_malloc( smr, size, zero, forItem, __FILE__, __LINE__, __func__ )

Definition at line 111 of file statusMessageReporting.h.

◆ smr_maximumFileNameSize

#define smr_maximumFileNameSize   1024

Definition at line 23 of file statusMessageReporting.h.

◆ smr_maximumNumberOfRegisteredLibraries

#define smr_maximumNumberOfRegisteredLibraries   128

Definition at line 22 of file statusMessageReporting.h.

◆ smr_realloc2

#define smr_realloc2 (   smr,
  old,
  size,
  forItem 
)    smr_realloc( smr, old, size, forItem, __FILE__, __LINE__, __func__ )

Definition at line 112 of file statusMessageReporting.h.

◆ smr_setReportError2

#define smr_setReportError2 (   smr,
  libraryID,
  code,
  fmt,
  ... 
)    smr_setReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )

Definition at line 122 of file statusMessageReporting.h.

◆ smr_setReportError2p

#define smr_setReportError2p (   smr,
  libraryID,
  code,
  fmt 
)    smr_setReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt )

Definition at line 123 of file statusMessageReporting.h.

◆ smr_setReportError3

#define smr_setReportError3 (   smr,
  userInterface,
  libraryID,
  code,
  fmt,
  ... 
)    smr_setReportError( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )

Definition at line 132 of file statusMessageReporting.h.

◆ smr_setReportError3p

#define smr_setReportError3p (   smr,
  userInterface,
  libraryID,
  code,
  fmt 
)    smr_setReportError( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt )

Definition at line 133 of file statusMessageReporting.h.

◆ smr_setReportInfo2

#define smr_setReportInfo2 (   smr,
  libraryID,
  code,
  fmt,
  ... 
)    smr_setReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )

Definition at line 116 of file statusMessageReporting.h.

◆ smr_setReportInfo2p

#define smr_setReportInfo2p (   smr,
  libraryID,
  code,
  fmt 
)    smr_setReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt )

Definition at line 117 of file statusMessageReporting.h.

◆ smr_setReportInfo3

#define smr_setReportInfo3 (   smr,
  userInterface,
  libraryID,
  code,
  fmt,
  ... 
)    smr_setReportInfo( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )

Definition at line 126 of file statusMessageReporting.h.

◆ smr_setReportInfo3p

#define smr_setReportInfo3p (   smr,
  userInterface,
  libraryID,
  code,
  fmt 
)    smr_setReportInfo( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt )

Definition at line 127 of file statusMessageReporting.h.

◆ smr_setReportWarning2

#define smr_setReportWarning2 (   smr,
  libraryID,
  code,
  fmt,
  ... 
)    smr_setReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )

Definition at line 119 of file statusMessageReporting.h.

◆ smr_setReportWarning2p

#define smr_setReportWarning2p (   smr,
  libraryID,
  code,
  fmt 
)    smr_setReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt )

Definition at line 120 of file statusMessageReporting.h.

◆ smr_setReportWarning3

#define smr_setReportWarning3 (   smr,
  userInterface,
  libraryID,
  code,
  fmt,
  ... 
)    smr_setReportWarning( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )

Definition at line 129 of file statusMessageReporting.h.

◆ smr_setReportWarning3p

#define smr_setReportWarning3p (   smr,
  userInterface,
  libraryID,
  code,
  fmt 
)    smr_setReportWarning( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt )

Definition at line 130 of file statusMessageReporting.h.

◆ smr_smrID

#define smr_smrID   4

Definition at line 20 of file statusMessageReporting.h.

◆ smr_tooManyIDs

#define smr_tooManyIDs   1

Definition at line 17 of file statusMessageReporting.h.

◆ smr_unknownID

#define smr_unknownID   0

Definition at line 16 of file statusMessageReporting.h.

◆ smr_vsetReportError2

#define smr_vsetReportError2 (   smr,
  libraryID,
  code,
  fmt,
  args 
)    smr_vsetReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )

Definition at line 124 of file statusMessageReporting.h.

◆ smr_vsetReportError3

#define smr_vsetReportError3 (   smr,
  userInterface,
  libraryID,
  code,
  fmt,
  args 
)    smr_vsetReportError( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )

Definition at line 134 of file statusMessageReporting.h.

◆ smr_vsetReportInfo2

#define smr_vsetReportInfo2 (   smr,
  libraryID,
  code,
  fmt,
  args 
)    smr_vsetReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )

Definition at line 118 of file statusMessageReporting.h.

◆ smr_vsetReportInfo3

#define smr_vsetReportInfo3 (   smr,
  userInterface,
  libraryID,
  code,
  fmt,
  args 
)    smr_vsetReportInfo( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )

Definition at line 128 of file statusMessageReporting.h.

◆ smr_vsetReportWarning2

#define smr_vsetReportWarning2 (   smr,
  libraryID,
  code,
  fmt,
  args 
)    smr_vsetReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )

Definition at line 121 of file statusMessageReporting.h.

◆ smr_vsetReportWarning3

#define smr_vsetReportWarning3 (   smr,
  userInterface,
  libraryID,
  code,
  fmt,
  args 
)    smr_vsetReportWarning( smr, userInterface, __FILE__, __LINE__, __func__, libraryID, code, fmt, args )

Definition at line 131 of file statusMessageReporting.h.

Typedef Documentation

◆ smr_userInterface

typedef char *(* smr_userInterface) (void *userData)

Definition at line 28 of file statusMessageReporting.h.

◆ statusMessageReport

◆ statusMessageReporting

Enumeration Type Documentation

◆ smr_status

enum smr_status
Enumerator
smr_status_Ok 
smr_status_Info 
smr_status_Warning 
smr_status_Error 

Definition at line 27 of file statusMessageReporting.h.

Function Documentation

◆ smr_allocateCopyString()

char * smr_allocateCopyString ( statusMessageReporting smr,
char const *  s,
char const *  forItem,
char const *  file,
int  line,
char const *  function 
)

Definition at line 652 of file statusMessageReporting.cc.

652 {
653/*
654* User must free returned string.
655*/
656 char *c = strdup( s );
657
658 if( c == NULL ) smr_setReportError( smr, NULL, file, line, function, smr_smrID, -1, " smr_allocateCopyString: strdup failed for strlen( s ) = %z for variable %s",
659 strlen( s ), forItem );
660 return( c );
661}
G4double(* function)(G4double)
static constexpr double s
Definition: G4SIunits.hh:154
int smr_setReportError(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
#define smr_smrID

References geant4_check_module_cycles::file, s, smr_setReportError(), and smr_smrID.

Referenced by MCGIDI_particle_getInternalID().

◆ smr_allocateCopyStringN()

char * smr_allocateCopyStringN ( statusMessageReporting smr,
char const *  s,
size_t  n,
char const *  forItem,
char const *  file,
int  line,
char const *  function 
)

Definition at line 665 of file statusMessageReporting.cc.

665 {
666/*
667* User must free returned string.
668*/
669 size_t l = strlen( s );
670 char *c;
671
672 if( l > n ) l = n;
673 if( ( c = (char *) smr_malloc( smr, l + 1, 0, forItem, file, line, function ) ) != NULL ) {
674 strncpy( c, s, n );
675 c[l] = 0;
676 }
677/*
678 c = strndup( s, l ); # Not standard on enough systems.
679 if( c != NULL ) {
680 c[l] = 0; }
681 else {
682 smr_setReportError( smr, NULL, file, line, function, smr_smrID, -1, " smr_allocateCopyStringN: strndup failed for strlen( s ) = %z for variable %s",
683 strlen( s ), forItem );
684 }
685*/
686 return( c );
687}
void * smr_malloc(statusMessageReporting *smr, size_t size, int zero, char const *forItem, char const *file, int line, char const *function)

References geant4_check_module_cycles::file, CLHEP::detail::n, s, and smr_malloc().

◆ smr_allocateFormatMessage()

char * smr_allocateFormatMessage ( char const *  fmt,
  ... 
)

Definition at line 568 of file statusMessageReporting.cc.

568 {
569
570 char *s;
571 va_list args;
572
573 va_start( args, fmt );
575 va_end( args );
576 return( s );
577}
static char ** args
Definition: G4Xt.cc:51
char * smr_vallocateFormatMessage(char const *fmt, va_list *args)

References args, s, and smr_vallocateFormatMessage().

Referenced by _MCGIDI_map_smrUserInterface(), smr_copyFullMessage(), smr_copyMessage(), and xDataXML_smrUserInterface().

◆ smr_cleanup()

int smr_cleanup ( void  )

Definition at line 64 of file statusMessageReporting.cc.

64 {
65
66 int i;
67
68 if( smrIsSetup == 0 ) return( 0 );
69 for( i = smr_smrID + 1; i < numberOfRegisteredLibraries; ++i ) smr_freeMemory( (void **) &(registeredLibraries[i]) );
71 smrIsSetup = 0;
72
73 return( 0 );
74}
static int numberOfRegisteredLibraries
static int smrIsSetup
void * smr_freeMemory(void **p)
static char * registeredLibraries[smr_maximumNumberOfRegisteredLibraries]

References numberOfRegisteredLibraries, registeredLibraries, smr_freeMemory(), smr_smrID, and smrIsSetup.

◆ smr_clone()

Definition at line 131 of file statusMessageReporting.cc.

131 {
132
133 if( smr == NULL ) return( NULL );
134 return( smr_new( NULL, smr->verbosity, smr->append ) );
135}
statusMessageReporting * smr_new(statusMessageReporting *smr, enum smr_status verbosity, int append)

References statusMessageReporting::append, smr_new(), and statusMessageReporting::verbosity.

◆ smr_copyFullMessage()

char * smr_copyFullMessage ( statusMessageReport report)

Definition at line 514 of file statusMessageReporting.cc.

514 {
515
516 if( report == NULL ) return( NULL );
517 if( report->status == smr_status_Ok ) return( NULL );
518 return( smr_allocateFormatMessage( "%s\nAt line %d of %s in function %s", report->message, report->line, report->fileName, report->function ) );
519}
char * smr_allocateFormatMessage(char const *fmt,...)
char function[smr_maximumFileNameSize+1]
char fileName[smr_maximumFileNameSize+1]

References statusMessageReport::fileName, statusMessageReport::function, statusMessageReport::line, statusMessageReport::message, smr_allocateFormatMessage(), smr_status_Ok, and statusMessageReport::status.

◆ smr_copyMessage()

char * smr_copyMessage ( statusMessageReport report)

Definition at line 505 of file statusMessageReporting.cc.

505 {
506
507 if( report == NULL ) return( NULL );
508 if( report->status == smr_status_Ok ) return( NULL );
509 return( smr_allocateFormatMessage( report->message ) );
510}

References statusMessageReport::message, smr_allocateFormatMessage(), smr_status_Ok, and statusMessageReport::status.

◆ smr_firstReport()

statusMessageReport * smr_firstReport ( statusMessageReporting smr)

Definition at line 424 of file statusMessageReporting.cc.

424 {
425
426 if( smr == NULL ) return( NULL );
427 if( smr->report.status == smr_status_Ok ) return( NULL );
428 return( &(smr->report) );
429}
statusMessageReport report

References statusMessageReporting::report, smr_status_Ok, and statusMessageReport::status.

Referenced by smr_highestStatus(), smr_numberOfReports(), smr_release(), smr_setReport(), and smr_write().

◆ smr_free()

void * smr_free ( statusMessageReporting **  smr)

Definition at line 154 of file statusMessageReporting.cc.

154 {
155
156 if( smr == NULL ) return( NULL );
157 if( *smr != NULL ) {
158 smr_release( *smr );
159 smr_freeMemory( (void **) smr );
160 }
161 return( *smr );
162}
void smr_release(statusMessageReporting *smr)

References smr_freeMemory(), and smr_release().

◆ smr_freeMemory()

void * smr_freeMemory ( void **  p)

Definition at line 640 of file statusMessageReporting.cc.

640 {
641
642 if( p == NULL ) return( NULL );
643 if( *p != NULL ) {
644 free( *p );
645 *p = NULL;
646 }
647 return( *p );
648}

References free.

Referenced by _MCGIDI_map_addEntry(), G4GIDI::dataFilename(), G4GIDI::freeTarget(), G4GIDI_Z_AMass(), G4GIDI::getAlreadyReadTarget(), G4GIDI::getNamesOfAvailableLibraries(), G4GIDI::isThisDataAvailable(), MCGIDI_angular_free(), MCGIDI_angularEnergy_free(), MCGIDI_angularEnergy_release(), MCGIDI_distribution_free(), MCGIDI_energy_free(), MCGIDI_energyAngular_free(), MCGIDI_energyAngular_release(), MCGIDI_fromTOM_pdfOfX(), MCGIDI_KalbachMann_free(), MCGIDI_KalbachMann_parseFromTOM2(), MCGIDI_KalbachMann_release(), MCGIDI_LLNL_angularEnergy_parsePointwiseFromTOM(), MCGIDI_map_free(), MCGIDI_map_release(), MCGIDI_misc_setMessageError_Element(), MCGIDI_outputChannel_free(), MCGIDI_outputChannel_release(), MCGIDI_particle_free(), MCGIDI_particle_freeInternalList(), MCGIDI_particle_release(), MCGIDI_POP_free(), MCGIDI_POP_new(), MCGIDI_POP_release(), MCGIDI_POPs_addParticleIfNeeded(), MCGIDI_POPs_free(), MCGIDI_POPs_new(), MCGIDI_POPs_release(), MCGIDI_product_free(), MCGIDI_product_release(), MCGIDI_reaction_free(), MCGIDI_reaction_release(), MCGIDI_sampledProducts_release(), MCGIDI_sampling_pdfsOfX_release(), MCGIDI_sampling_pdfsOfXGivenW_release(), MCGIDI_target_free(), MCGIDI_target_heated_free(), MCGIDI_target_heated_new(), MCGIDI_target_heated_newRead(), MCGIDI_target_heated_parseParticleGammas(), MCGIDI_target_heated_release(), MCGIDI_target_newRead(), MCGIDI_target_newReadFromMap(), MCGIDI_target_newReadFromMapViaPoPIDs(), MCGIDI_target_release(), PoP_free(), PoP_release(), PoPs_addParticleIfNeeded(), PoPs_copyAddParticleIfNeeded(), PoPs_particleLoadInfo(), PoPs_releasePrivate(), G4GIDI::readTarget(), smr_cleanup(), smr_free(), smr_release(), smr_reportRelease(), unitsDB_addUnitIfNeeded(), unitsDB_release(), xDataTOM_axes_release(), xDataTOM_axis_initialize(), xDataTOM_axis_new(), xDataTOM_axis_release(), xDataTOM_freeElement(), xDataTOM_freeTOM(), xDataTOM_KalbachMann_free(), xDataTOM_KalbachMann_initialize(), xDataTOM_KalbachMann_release(), xDataTOM_LegendreSeries_release(), xDataTOM_mallocElement(), xDataTOM_mallocTOM(), xDataTOM_polynomial_free(), xDataTOM_polynomial_initialize(), xDataTOM_polynomial_release(), xDataTOM_regionsW_XYs_LegendreSeries_free(), xDataTOM_regionsW_XYs_LegendreSeries_release(), xDataTOM_regionsXYs_free(), xDataTOM_releaseElement(), xDataTOM_setFileNameTOM(), xDataTOM_V_W_XYs_free(), xDataTOM_V_W_XYs_initialize(), xDataTOM_V_W_XYs_LegendreSeries_free(), xDataTOM_W_XYs_free(), xDataTOM_W_XYs_initialize(), xDataTOM_W_XYs_LegendreSeries_free(), xDataTOM_W_XYs_LegendreSeries_release(), xDataTOM_W_XYs_new(), xDataTOM_W_XYs_release(), xDataTOM_XYs_free(), xDataTOM_XYs_release(), xDataTOMAL_addAttribute(), xDataTOMAL_release(), xDataXML_addElementToRoot(), xDataXML_axesToTOM(), xDataXML_freeDoc(), xDataXML_freeElement(), xDataXML_freeElementItems(), xDataXML_freeElementList(), xDataXML_initializeData(), xDataXML_KalbachMannCoefficientsToTOM(), xDataXML_KalbachMannToTOM(), xDataXML_polynomialToTOM(), xDataXML_setFileName(), xDataXML_V_W_XYsToTOM(), xDataXML_W_XYsToTOM(), xDataXML_XYsDataToTOM(), xDataXML_XYsDataToTOM2(), and G4GIDI_target::~G4GIDI_target().

◆ smr_getAppend()

int smr_getAppend ( statusMessageReporting smr)

Definition at line 449 of file statusMessageReporting.cc.

449 {
450
451 if( smr == NULL ) return( 0 );
452 return( smr->append );
453}

References statusMessageReporting::append.

◆ smr_getCode()

int smr_getCode ( statusMessageReport report)

Definition at line 465 of file statusMessageReporting.cc.

465 {
466
467 if( report == NULL ) return( -1 );
468 return( report->code );
469}

References statusMessageReport::code.

◆ smr_getFile()

char const * smr_getFile ( statusMessageReport report)

Definition at line 481 of file statusMessageReporting.cc.

481 {
482
483 if( report == NULL ) return( NULL );
484 return( report->fileName );
485}

References statusMessageReport::fileName.

◆ smr_getFunction()

char const * smr_getFunction ( statusMessageReport report)

Definition at line 489 of file statusMessageReporting.cc.

489 {
490
491 if( report == NULL ) return( NULL );
492 return( report->function );
493}

References statusMessageReport::function.

◆ smr_getLibraryID()

int smr_getLibraryID ( statusMessageReport report)

Definition at line 457 of file statusMessageReporting.cc.

457 {
458
459 if( report == NULL ) return( 0 );
460 return( report->libraryID );
461}

References statusMessageReport::libraryID.

◆ smr_getLine()

int smr_getLine ( statusMessageReport report)

Definition at line 473 of file statusMessageReporting.cc.

473 {
474
475 if( report == NULL ) return( -1 );
476 return( report->line );
477}

References statusMessageReport::line.

◆ smr_getMessage()

char const * smr_getMessage ( statusMessageReport report)

Definition at line 497 of file statusMessageReporting.cc.

497 {
498
499 if( report == NULL ) return( NULL );
500 return( report->message );
501}

References statusMessageReport::message.

◆ smr_getRegisteredLibrariesName()

char const * smr_getRegisteredLibrariesName ( int  ID)

Definition at line 101 of file statusMessageReporting.cc.

101 {
102
103 if( ( ID < 0 ) || ( ID >= smr_maximumNumberOfRegisteredLibraries ) ) return( NULL );
104 return( registeredLibraries[ID] );
105}
#define smr_maximumNumberOfRegisteredLibraries

References registeredLibraries, and smr_maximumNumberOfRegisteredLibraries.

◆ smr_getVerbosity()

enum smr_status smr_getVerbosity ( statusMessageReporting smr)

Definition at line 441 of file statusMessageReporting.cc.

441 {
442
443 if( smr == NULL ) return( smr_status_Ok );
444 return( smr->verbosity );
445}

References smr_status_Ok, and statusMessageReporting::verbosity.

◆ smr_highestStatus()

enum smr_status smr_highestStatus ( statusMessageReporting smr)

Definition at line 322 of file statusMessageReporting.cc.

322 {
323
324 enum smr_status status = smr_status_Ok;
325 statusMessageReport *report;
326
327 if( smr == NULL ) return( smr_status_Ok );
328 for( report = smr_firstReport( smr ); report != NULL; report = smr_nextReport( report ) ) if( report->status > status ) status = report->status;
329 return( status );
330}
statusMessageReport * smr_nextReport(statusMessageReport *report)
statusMessageReport * smr_firstReport(statusMessageReporting *smr)

References smr_firstReport(), smr_nextReport(), smr_status_Ok, and statusMessageReport::status.

Referenced by smr_isError(), smr_isInfo(), smr_isOk(), smr_isWarning(), and smr_isWarningOrError().

◆ smr_initialize()

int smr_initialize ( statusMessageReporting smr,
enum smr_status  verbosity,
int  append 
)

Definition at line 120 of file statusMessageReporting.cc.

120 {
121
122 if( smr == NULL ) return( 0 );
123 smr->verbosity = verbosity;
124 smr->append = append;
125 smr_reportInitialize( &(smr->report) );
126 return( 0 );
127}
static int smr_reportInitialize(statusMessageReport *report)

References statusMessageReporting::append, statusMessageReporting::report, smr_reportInitialize(), and statusMessageReporting::verbosity.

Referenced by G4GIDI_map::G4GIDI_map(), G4GIDI_target::init(), smr_new(), and smr_release().

◆ smr_isError()

int smr_isError ( statusMessageReporting smr)

Definition at line 355 of file statusMessageReporting.cc.

355 {
356
357 return( smr_highestStatus( smr ) == smr_status_Error );
358}
enum smr_status smr_highestStatus(statusMessageReporting *smr)

References smr_highestStatus(), and smr_status_Error.

◆ smr_isInfo()

int smr_isInfo ( statusMessageReporting smr)

Definition at line 341 of file statusMessageReporting.cc.

341 {
342
343 return( smr_highestStatus( smr ) == smr_status_Info );
344}

References smr_highestStatus(), and smr_status_Info.

◆ smr_isOk()

int smr_isOk ( statusMessageReporting smr)

◆ smr_isReportError()

int smr_isReportError ( statusMessageReport report)

Definition at line 395 of file statusMessageReporting.cc.

395 {
396
397 if( report == NULL ) return( 0 );
398 return( report->status == smr_status_Error );
399}

References smr_status_Error, and statusMessageReport::status.

◆ smr_isReportInfo()

int smr_isReportInfo ( statusMessageReport report)

Definition at line 379 of file statusMessageReporting.cc.

379 {
380
381 if( report == NULL ) return( 0 );
382 return( report->status == smr_status_Info );
383}

References smr_status_Info, and statusMessageReport::status.

◆ smr_isReportOk()

int smr_isReportOk ( statusMessageReport report)

Definition at line 371 of file statusMessageReporting.cc.

371 {
372
373 if( report == NULL ) return( 0 );
374 return( report->status == smr_status_Ok );
375}

References smr_status_Ok, and statusMessageReport::status.

◆ smr_isReportWarning()

int smr_isReportWarning ( statusMessageReport report)

Definition at line 387 of file statusMessageReporting.cc.

387 {
388
389 if( report == NULL ) return( 0 );
390 return( report->status == smr_status_Warning );
391}

References smr_status_Warning, and statusMessageReport::status.

◆ smr_isReportWarningOrError()

int smr_isReportWarningOrError ( statusMessageReport report)

Definition at line 403 of file statusMessageReporting.cc.

403 {
404
405 if( report == NULL ) return( 0 );
406 return( ( report->status == smr_status_Warning ) || ( report->status == smr_status_Error ) );
407}

References smr_status_Error, smr_status_Warning, and statusMessageReport::status.

◆ smr_isWarning()

int smr_isWarning ( statusMessageReporting smr)

Definition at line 348 of file statusMessageReporting.cc.

348 {
349
350 return( smr_highestStatus( smr ) == smr_status_Warning );
351}

References smr_highestStatus(), and smr_status_Warning.

◆ smr_isWarningOrError()

int smr_isWarningOrError ( statusMessageReporting smr)

Definition at line 362 of file statusMessageReporting.cc.

362 {
363
364 enum smr_status status = smr_highestStatus( smr );
365
366 return( ( status == smr_status_Warning ) || ( status == smr_status_Error ) );
367}

References smr_highestStatus(), smr_status_Error, and smr_status_Warning.

◆ smr_malloc()

void * smr_malloc ( statusMessageReporting smr,
size_t  size,
int  zero,
char const *  forItem,
char const *  file,
int  line,
char const *  function 
)

Definition at line 611 of file statusMessageReporting.cc.

611 {
612
613 void *p = smr_realloc( smr, NULL, size, forItem, file, line, function );
614 size_t i;
615 char *c;
616 long long *l;
617
618 if( ( p != NULL ) && zero ) {
619 for( i = 0, l = (long long *) p; i < size / sizeof( long long ); i++, l++ ) *l = 0;
620 for( i *= sizeof( long long ), c = (char *) l; i < size; i++, c++ ) *c = 0;
621 }
622
623 return( p );
624}
static const G4LorentzVector zero(0., 0., 0., 0.)
void * smr_realloc(statusMessageReporting *smr, void *pOld, size_t size, char const *forItem, char const *file, int line, char const *function)

References geant4_check_module_cycles::file, smr_realloc(), and anonymous_namespace{G4CascadeDeexciteBase.cc}::zero.

Referenced by smr_allocateCopyStringN().

◆ smr_new()

statusMessageReporting * smr_new ( statusMessageReporting smr,
enum smr_status  verbosity,
int  append 
)

Definition at line 109 of file statusMessageReporting.cc.

109 {
110
111 statusMessageReporting *new_SMR;
112
113 if( ( new_SMR = (statusMessageReporting *) smr_malloc2( smr, sizeof( statusMessageReporting ), 0, "new_SMR" ) ) == NULL ) return( NULL );
114 smr_initialize( new_SMR, verbosity, append );
115 return( new_SMR );
116}
int smr_initialize(statusMessageReporting *smr, enum smr_status verbosity, int append)
#define smr_malloc2(smr, size, zero, forItem)

References smr_initialize(), and smr_malloc2.

Referenced by smr_clone().

◆ smr_nextReport()

statusMessageReport * smr_nextReport ( statusMessageReport report)

Definition at line 433 of file statusMessageReporting.cc.

433 {
434
435 if( report == NULL ) return( NULL );
436 return( report->next );
437}
struct statusMessageReport * next

References statusMessageReport::next.

Referenced by smr_highestStatus(), smr_numberOfReports(), smr_release(), and smr_write().

◆ smr_numberOfRegisteredLibraries()

int smr_numberOfRegisteredLibraries ( void  )

Definition at line 94 of file statusMessageReporting.cc.

94 {
95
97}

References numberOfRegisteredLibraries.

◆ smr_numberOfReports()

int smr_numberOfReports ( statusMessageReporting smr)

Definition at line 411 of file statusMessageReporting.cc.

411 {
412
413 int n = 0;
414 statusMessageReport *report;
415
416 if( smr == NULL ) return( 0 );
417 if( smr->report.status == smr_status_Ok ) return( 0 );
418 for( report = smr_firstReport( smr ); report != NULL; report = smr_nextReport( report ) ) ++n;
419 return( n );
420}

References CLHEP::detail::n, statusMessageReporting::report, smr_firstReport(), smr_nextReport(), smr_status_Ok, and statusMessageReport::status.

◆ smr_print()

void smr_print ( statusMessageReporting smr,
int  clear 
)

Definition at line 523 of file statusMessageReporting.cc.

523 {
524
525 smr_write( smr, stdout, clear );
526}
void smr_write(statusMessageReporting *smr, FILE *f, int clear)

References smr_write().

Referenced by G4GIDI_map::G4GIDI_map(), G4GIDI_target::getChannelsID(), G4GIDI_target::getElasticFinalState(), G4GIDI_target::getFinalState(), and G4GIDI_target::init().

◆ smr_realloc()

void * smr_realloc ( statusMessageReporting smr,
void *  pOld,
size_t  size,
char const *  forItem,
char const *  file,
int  line,
char const *  function 
)

Definition at line 628 of file statusMessageReporting.cc.

628 {
629
630 void *p = realloc( pOld, size );
631
632 if( ( p == NULL ) && ( smr != NULL ) ) {
633 smr_setReportError( smr, NULL, file, line, function, smr_smrID, -1, " smr_realloc: failed to realloc size = %z for variable %s\n", size, forItem );
634 }
635 return( p );
636}

References geant4_check_module_cycles::file, smr_setReportError(), and smr_smrID.

Referenced by smr_malloc().

◆ smr_registerLibrary()

int smr_registerLibrary ( char const *  libraryName)

Definition at line 78 of file statusMessageReporting.cc.

78 {
79
80 int i;
81
82 if( smrIsSetup == 0 ) return( -1 );
84 for( i = 0; i < numberOfRegisteredLibraries; ++i ) { /* Check if name is already registered. */
85 if( strcmp( libraryName, registeredLibraries[i] ) == 0 ) return( i );
86 }
87 if( ( registeredLibraries[numberOfRegisteredLibraries] = strdup( libraryName ) ) == NULL ) return( -2 );
89 return( numberOfRegisteredLibraries - 1 );
90}
#define smr_tooManyIDs

References numberOfRegisteredLibraries, registeredLibraries, smr_maximumNumberOfRegisteredLibraries, smr_tooManyIDs, and smrIsSetup.

◆ smr_release()

void smr_release ( statusMessageReporting smr)

Definition at line 139 of file statusMessageReporting.cc.

139 {
140
141 statusMessageReport *current, *next, *first = smr_firstReport( smr );
142
143 if( smr == NULL ) return;
144 for( current = first; current != NULL; current = next ) {
145 next = smr_nextReport( current );
146 smr_reportRelease( current );
147 if( current != first ) smr_freeMemory( (void **) &current );
148 }
149 smr_initialize( smr, smr->verbosity, smr->append );
150}
static void smr_reportRelease(statusMessageReport *report)

References statusMessageReporting::append, smr_firstReport(), smr_freeMemory(), smr_initialize(), smr_nextReport(), smr_reportRelease(), and statusMessageReporting::verbosity.

Referenced by smr_free(), smr_setReport(), smr_write(), G4GIDI_map::~G4GIDI_map(), and G4GIDI_target::~G4GIDI_target().

◆ smr_reportPrint()

void smr_reportPrint ( statusMessageReport report)

Definition at line 541 of file statusMessageReporting.cc.

541 {
542
543 smr_reportWrite( report, stderr );
544}
void smr_reportWrite(statusMessageReport *report, FILE *f)

References smr_reportWrite().

◆ smr_reportWrite()

void smr_reportWrite ( statusMessageReport report,
FILE *  f 
)

Definition at line 548 of file statusMessageReporting.cc.

548 {
549
550 if( report->message != NULL ) fprintf( f, "%s\nAt line %d of %s in function %s\n", report->message, report->line, report->fileName, report->function );
551}

References statusMessageReport::fileName, statusMessageReport::function, statusMessageReport::line, and statusMessageReport::message.

Referenced by smr_reportPrint(), and smr_write().

◆ smr_setReportError()

int smr_setReportError ( statusMessageReporting smr,
void *  userInterface,
char const *  file,
int  line,
char const *  function,
int  libraryID,
int  code,
char const *  fmt,
  ... 
)

Definition at line 302 of file statusMessageReporting.cc.

302 {
303
304 int status;
305 va_list args;
306
307 va_start( args, fmt );
308 status = smr_setReport( smr, userInterface, file, line, function, libraryID, code, smr_status_Error, fmt, &args );
309 va_end( args );
310 return( status );
311}
static int smr_setReport(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, enum smr_status status, char const *fmt, va_list *args)
Definition: inftrees.h:24

References args, geant4_check_module_cycles::file, smr_setReport(), and smr_status_Error.

Referenced by MCGIDI_misc_pointerToAttributeIfAllOk(), MCGIDI_misc_pointerToTOMAttributeIfAllOk(), MCGIDI_misc_setMessageError_Element(), PoPs_particleIndex_smr(), smr_allocateCopyString(), smr_realloc(), and xDataTOM_setMessageError_ReturnInt().

◆ smr_setReportInfo()

int smr_setReportInfo ( statusMessageReporting smr,
void *  userInterface,
char const *  file,
int  line,
char const *  function,
int  libraryID,
int  code,
char const *  fmt,
  ... 
)

Definition at line 262 of file statusMessageReporting.cc.

262 {
263
264 int status;
265 va_list args;
266
267 va_start( args, fmt );
268 status = smr_setReport( smr, userInterface, file, line, function, libraryID, code, smr_status_Info, fmt, &args );
269 va_end( args );
270 return( status );
271}

References args, geant4_check_module_cycles::file, smr_setReport(), and smr_status_Info.

◆ smr_setReportWarning()

int smr_setReportWarning ( statusMessageReporting smr,
void *  userInterface,
char const *  file,
int  line,
char const *  function,
int  libraryID,
int  code,
char const *  fmt,
  ... 
)

Definition at line 282 of file statusMessageReporting.cc.

282 {
283
284 int status;
285 va_list args;
286
287 va_start( args, fmt );
288 status = smr_setReport( smr, userInterface, file, line, function, libraryID, code, smr_status_Warning, fmt, &args );
289 va_end( args );
290 return( status );
291}

References args, geant4_check_module_cycles::file, smr_setReport(), and smr_status_Warning.

◆ smr_setup()

int smr_setup ( void  )

Definition at line 42 of file statusMessageReporting.cc.

References errnoLibrary, invalidLibrary, numberOfRegisteredLibraries, registeredLibraries, smr_errnoID, smr_invalidID, smr_maximumNumberOfRegisteredLibraries, smr_smrID, smr_tooManyIDs, smr_unknownID, smrIsSetup, smrLibrary, tooManyLibrary, and unknownLibrary.

◆ smr_statusToString()

char const * smr_statusToString ( enum smr_status  status)

Definition at line 555 of file statusMessageReporting.cc.

555 {
556
557 switch( status ) {
558 case smr_status_Ok : return( statusStringOk );
559 case smr_status_Info : return( statusStringInfo );
561 case smr_status_Error : return( statusStringError );
562 }
563 return( statusStringInvalid );
564}
static char statusStringOk[]
static char statusStringInfo[]
static char statusStringInvalid[]
static char statusStringWarning[]
static char statusStringError[]

References smr_status_Error, smr_status_Info, smr_status_Ok, smr_status_Warning, statusStringError, statusStringInfo, statusStringInvalid, statusStringOk, and statusStringWarning.

◆ smr_vallocateFormatMessage()

char * smr_vallocateFormatMessage ( char const *  fmt,
va_list *  args 
)

Definition at line 581 of file statusMessageReporting.cc.

581 {
582
583 int n, size = SMR_InitialMessageSize;
584 char buffer[SMR_InitialMessageSize], *message = buffer;
585 va_list args_;
586
587 while( 1 ) {
588 va_copy( args_, *args );
589 n = vsnprintf( message, size, fmt, args_ );
590 va_end( args_ );
591 if( ( n > -1 ) && ( n < size ) ) break;
592 if( n > -1 ) { /* glibc 2.1 */
593 size = n + 3; }
594 else { /* glibc 2.0 */
596 }
597 if( message == buffer ) message = NULL;
598 if( ( message = (char *) realloc( message, size ) ) == NULL ) return( NULL );
599 } // Loop checking, 11.06.2015, T. Koi
600 if( message == buffer ) {
601 if( ( message = (char *) malloc( n + 1 ) ) == NULL ) return( NULL );
602 strcpy( message, buffer ); }
603 else {
604 if( ( message = (char *) realloc( message, n + 1 ) ) == NULL ) return( NULL );
605 }
606 return( message );
607}
#define SMR_InitialMessageSize
#define SMR_IncrementMessageSize
#define buffer
Definition: xmlparse.cc:628

References args, buffer, CLHEP::detail::n, SMR_IncrementMessageSize, and SMR_InitialMessageSize.

Referenced by MCGIDI_misc_setMessageError_Element(), smr_allocateFormatMessage(), and smr_setReport().

◆ smr_vsetReportError()

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 
)

Definition at line 315 of file statusMessageReporting.cc.

315 {
316
317 return( smr_setReport( smr, userInterface, file, line, function, libraryID, code, smr_status_Error, fmt, args ) );
318}

References args, geant4_check_module_cycles::file, smr_setReport(), and smr_status_Error.

Referenced by MCGIDI_misc_setMessageError_Element().

◆ smr_vsetReportInfo()

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 
)

Definition at line 275 of file statusMessageReporting.cc.

275 {
276
277 return( smr_setReport( smr, userInterface, file, line, function, libraryID, code, smr_status_Info, fmt, args ) );
278}

References args, geant4_check_module_cycles::file, smr_setReport(), and smr_status_Info.

◆ smr_vsetReportWarning()

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 
)

Definition at line 295 of file statusMessageReporting.cc.

295 {
296
297 return( smr_setReport( smr, userInterface, file, line, function, libraryID, code, smr_status_Warning, fmt, args ) );
298}

References args, geant4_check_module_cycles::file, smr_setReport(), and smr_status_Warning.

◆ smr_write()

void smr_write ( statusMessageReporting smr,
FILE *  f,
int  clear 
)

Definition at line 530 of file statusMessageReporting.cc.

530 {
531
532 statusMessageReport *report;
533
534 if( smr == NULL ) return;
535 for( report = smr_firstReport( smr ); report != NULL; report = smr_nextReport( report ) ) smr_reportWrite( report, f );
536 if( clear ) smr_release( smr );
537}

References smr_firstReport(), smr_nextReport(), smr_release(), and smr_reportWrite().

Referenced by smr_print().