Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
statusMessageReporting.h File Reference
#include <stdio.h>
#include <stdarg.h>

Go to the source code of this file.

Classes

struct  statusMessageReport
struct  statusMessageReporting

Macros

#define smr_unknownID   0
#define smr_tooManyIDs   1
#define smr_invalidID   2
#define smr_errnoID   3
#define smr_smrID   4
#define smr_maximumNumberOfRegisteredLibraries   128
#define smr_maximumFileNameSize   1024
#define smr_codeNULL   0
#define smr_codeMemoryAllocating   1
#define smr_malloc2(smr, size, zero, forItem)
#define smr_realloc2(smr, old, size, forItem)
#define smr_freeMemory2(p)
#define smr_allocateCopyString2(smr, s, forItem)
#define smr_allocateCopyStringN2(smr, s, n, forItem)
#define smr_setReportInfo2(smr, libraryID, code, fmt, ...)
#define smr_setReportInfo2p(smr, libraryID, code, fmt)
#define smr_vsetReportInfo2(smr, libraryID, code, fmt, args)
#define smr_setReportWarning2(smr, libraryID, code, fmt, ...)
#define smr_setReportWarning2p(smr, libraryID, code, fmt)
#define smr_vsetReportWarning2(smr, libraryID, code, fmt, args)
#define smr_setReportError2(smr, libraryID, code, fmt, ...)
#define smr_setReportError2p(smr, libraryID, code, fmt)
#define smr_vsetReportError2(smr, libraryID, code, fmt, args)
#define smr_setReportInfo3(smr, userInterface, libraryID, code, fmt, ...)
#define smr_setReportInfo3p(smr, userInterface, libraryID, code, fmt)
#define smr_vsetReportInfo3(smr, userInterface, libraryID, code, fmt, args)
#define smr_setReportWarning3(smr, userInterface, libraryID, code, fmt, ...)
#define smr_setReportWarning3p(smr, userInterface, libraryID, code, fmt)
#define smr_vsetReportWarning3(smr, userInterface, libraryID, code, fmt, args)
#define smr_setReportError3(smr, userInterface, libraryID, code, fmt, ...)
#define smr_setReportError3p(smr, userInterface, libraryID, code, fmt)
#define smr_vsetReportError3(smr, userInterface, 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

int smr_setup (void)
int smr_cleanup (void)
int smr_registerLibrary (char const *libraryName)
int smr_numberOfRegisteredLibraries (void)
char const * smr_getRegisteredLibrarysName (int ID)
statusMessageReportingsmr_new (statusMessageReporting *smr, enum smr_status verbosity)
int smr_initialize (statusMessageReporting *smr, enum smr_status verbosity)
statusMessageReportingsmr_clone (statusMessageReporting const *smr)
void smr_release (statusMessageReporting *smr)
void * smr_free (statusMessageReporting **smr)
int smr_setReportInfo (statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
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_setReportWarning (statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
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_setReportError (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)
enum smr_status smr_highestStatus (statusMessageReporting const *smr)
int smr_isOk (statusMessageReporting const *smr)
int smr_isInfo (statusMessageReporting const *smr)
int smr_isWarning (statusMessageReporting const *smr)
int smr_isError (statusMessageReporting const *smr)
int smr_isWarningOrError (statusMessageReporting const *smr)
int smr_isReportOk (statusMessageReport const *report)
int smr_isReportInfo (statusMessageReport const *report)
int smr_isReportWarning (statusMessageReport const *report)
int smr_isReportError (statusMessageReport const *report)
int smr_isReportWarningOrError (statusMessageReport const *report)
int smr_numberOfReports (statusMessageReporting const *smr)
statusMessageReport const * smr_firstReport (statusMessageReporting const *smr)
statusMessageReport const * smr_nextReport (statusMessageReport const *report)
enum smr_status smr_getVerbosity (statusMessageReporting const *smr)
int smr_getLibraryID (statusMessageReport const *report)
int smr_getCode (statusMessageReport const *report)
int smr_getLine (statusMessageReport const *report)
char const * smr_getFile (statusMessageReport const *report)
char const * smr_getFunction (statusMessageReport const *report)
char const * smr_getMessage (statusMessageReport const *report)
char * smr_copyMessage (statusMessageReport const *report)
char * smr_copyFullMessage (statusMessageReport const *report)
void smr_print (statusMessageReporting *smr, int clear)
void smr_write (statusMessageReporting *smr, FILE *f, int clear)
void smr_reportPrint (statusMessageReport const *report)
void smr_reportWrite (statusMessageReport const *report, FILE *f)
char const * smr_statusToString (enum smr_status status)
char * smr_allocateFormatMessage (char const *fmt,...)
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)
void * smr_realloc (statusMessageReporting *smr, void *pOld, size_t size, char const *forItem, char const *file, int line, char const *function)
void * smr_freeMemory (void **p)
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)

Macro Definition Documentation

◆ smr_allocateCopyString2

#define smr_allocateCopyString2 ( smr,
s,
forItem )
Value:
smr_allocateCopyString( smr, s, forItem, __FILE__, __LINE__, __func__ )
char * smr_allocateCopyString(statusMessageReporting *smr, char const *s, char const *forItem, char const *file, int line, char const *function)

Definition at line 119 of file statusMessageReporting.h.

Referenced by ptwXY_copy(), and ptwXY_initialize().

◆ smr_allocateCopyStringN2

#define smr_allocateCopyStringN2 ( smr,
s,
n,
forItem )
Value:
smr_allocateCopyStringN( smr, s, n, forItem, __FILE__, __LINE__, __func__ )
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 120 of file statusMessageReporting.h.

◆ smr_codeMemoryAllocating

#define smr_codeMemoryAllocating   1

Definition at line 33 of file statusMessageReporting.h.

Referenced by smr_allocateCopyString(), and smr_realloc().

◆ smr_codeNULL

#define smr_codeNULL   0

Definition at line 32 of file statusMessageReporting.h.

◆ smr_errnoID

#define smr_errnoID   3

Definition at line 27 of file statusMessageReporting.h.

Referenced by smr_setup().

◆ smr_freeMemory2

◆ smr_invalidID

#define smr_invalidID   2

Definition at line 26 of file statusMessageReporting.h.

Referenced by smr_setup().

◆ smr_malloc2

#define smr_malloc2 ( smr,
size,
zero,
forItem )
Value:
smr_malloc( smr, size, zero, forItem, __FILE__, __LINE__, __func__ )
void * smr_malloc(statusMessageReporting *smr, size_t size, int zero, char const *forItem, char const *file, int line, char const *function)

Definition at line 116 of file statusMessageReporting.h.

Referenced by nf_Legendre_new(), ptwX_new(), ptwXY_mergeFromXYs(), ptwXY_new(), ptwXY_thin(), ptwXY_valuesToC_XsAndYs(), and smr_new().

◆ smr_maximumFileNameSize

#define smr_maximumFileNameSize   1024

Definition at line 31 of file statusMessageReporting.h.

◆ smr_maximumNumberOfRegisteredLibraries

#define smr_maximumNumberOfRegisteredLibraries   128

◆ smr_realloc2

#define smr_realloc2 ( smr,
old,
size,
forItem )
Value:
smr_realloc( smr, old, size, forItem, __FILE__, __LINE__, __func__ )
void * smr_realloc(statusMessageReporting *smr, void *pOld, size_t size, char const *forItem, char const *file, int line, char const *function)

Definition at line 117 of file statusMessageReporting.h.

Referenced by nf_Legendre_reallocateCls(), ptwX_reallocatePoints(), ptwXY_reallocateOverflowPoints(), and ptwXY_reallocatePoints().

◆ smr_setReportError2

#define smr_setReportError2 ( smr,
libraryID,
code,
fmt,
... )
Value:
smr_setReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
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 128 of file statusMessageReporting.h.

Referenced by nf_Legendre_from_ptwXY(), nf_Legendre_setCl(), nfu_stringToInt32(), nfu_stringToListOfDoubles(), nfu_stringToListOfInt32s(), ptwX_add_ptwX(), ptwX_close(), ptwX_deletePoints(), ptwX_getPointAtIndex(), ptwX_insertPointsAtIndex(), ptwX_setPointAtIndex(), ptwX_slice(), ptwX_sub_ptwX(), ptwXY_appendXY(), ptwXY_binary_ptwXY(), ptwXY_convolution(), ptwXY_createFromFunction(), ptwXY_deletePoints(), ptwXY_div_ptwXY(), ptwXY_equalProbableBins(), ptwXY_f_integrate(), ptwXY_flatInterpolationToLinear(), ptwXY_fromString(), ptwXY_fromUnitbase(), ptwXY_getSlopeAtX(), ptwXY_groupOneFunction(), ptwXY_groupThreeFunctions(), ptwXY_groupTwoFunctions(), ptwXY_integrateWithWeight_sqrt_x(), ptwXY_integrateWithWeight_x(), ptwXY_interpolatePoint(), ptwXY_inverse(), ptwXY_mergeFromXYs(), ptwXY_mutualifyDomains(), ptwXY_neg(), ptwXY_setXYData(), ptwXY_setXYPairAtIndex(), ptwXY_slice(), ptwXY_startIndex(), ptwXY_thicken(), ptwXY_thinDomain(), ptwXY_toOtherInterpolation(), ptwXY_toUnitbase(), ptwXY_union(), ptwXY_unitbaseInterpolate(), ptwXY_valueTo_ptwXY(), and ptwXY_ysMappedToXs().

◆ smr_setReportError2p

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

Definition at line 129 of file statusMessageReporting.h.

Referenced by GIDI::Transporting::MG::form(), nf_Legendre_allocated(), nf_Legendre_clone(), nf_Legendre_evauluateAtMu(), nf_Legendre_from_ptwXY(), nf_Legendre_getCl(), nf_Legendre_initialize(), nf_Legendre_maxOrder(), nf_Legendre_normalize(), nf_Legendre_reallocateCls(), nf_Legendre_setCl(), nf_Legendre_to_ptwXY(), ptwX_abs(), ptwX_add_double(), ptwX_add_ptwX(), ptwX_ascendingOrder(), ptwX_clone(), ptwX_close(), ptwX_closesDifferenceInRange(), ptwX_compare(), ptwX_copy(), ptwX_countOccurrences(), ptwX_create(), ptwX_createLine(), ptwX_deletePoints(), ptwX_fromString(), ptwX_getPointAtIndex(), ptwX_initialize(), ptwX_insertPointsAtIndex(), ptwX_length(), ptwX_mul_double(), ptwX_neg(), ptwX_new(), ptwX_range(), ptwX_reallocatePoints(), ptwX_reverse(), ptwX_setData(), ptwX_setPointAtIndex(), ptwX_slice(), ptwX_slopeOffset(), ptwX_sort(), ptwX_sub_ptwX(), ptwX_unique(), ptwXY_abs(), ptwXY_add_double(), ptwXY_add_ptwXY(), ptwXY_appendXY(), ptwXY_applyFunction(), ptwXY_areDomainsMutual(), ptwXY_binary_ptwXY(), ptwXY_clear(), ptwXY_clip(), ptwXY_clone(), ptwXY_clone2(), ptwXY_cloneToInterpolation(), ptwXY_coalescePoints(), ptwXY_convolution(), ptwXY_copy(), ptwXY_copyPointsOnly(), ptwXY_copyToC_XY(), ptwXY_create(), ptwXY_createFrom_Xs_Ys(), ptwXY_createFromFunction(), ptwXY_createFromFunction2(), ptwXY_createGaussian(), ptwXY_createGaussianCenteredSigma1(), ptwXY_deletePoints(), ptwXY_div_doubleFrom(), ptwXY_div_fromDouble(), ptwXY_div_ptwXY(), ptwXY_domainMax(), ptwXY_domainMaxAndFrom(), ptwXY_domainMaxSlice(), ptwXY_domainMin(), ptwXY_domainMinAndFrom(), ptwXY_domainMinSlice(), ptwXY_domainSlice(), ptwXY_dullEdges(), ptwXY_equalProbableBins(), ptwXY_exp(), ptwXY_f_integrate(), ptwXY_flatInterpolationToLinear(), ptwXY_fromString(), ptwXY_fromUnitbase(), ptwXY_getLowerIndexBoundingX(), ptwXY_getNonOverflowLength(), ptwXY_getPointAtIndex(), ptwXY_getPointsAroundX(), ptwXY_getPointsAroundX_closeIsEqual(), ptwXY_getSlopeAtX(), ptwXY_getValueAtX(), ptwXY_getXArray(), ptwXY_getXYPairAtIndex(), ptwXY_groupOneFunction(), ptwXY_groupThreeFunctions(), ptwXY_groupTwoFunctions(), ptwXY_initialize(), ptwXY_integrate(), ptwXY_integrateDomain(), ptwXY_integrateDomainWithWeight_sqrt_x(), ptwXY_integrateDomainWithWeight_x(), ptwXY_integrateWithFunction(), ptwXY_integrateWithWeight_sqrt_x(), ptwXY_integrateWithWeight_x(), ptwXY_interpolatePoint(), ptwXY_intersectionWith_ptwX(), ptwXY_inverse(), ptwXY_length(), ptwXY_mapToXsAndAdd(), ptwXY_mergeClosePoints(), ptwXY_mergeFromXsAndYs(), ptwXY_mergeFromXYs(), ptwXY_mod(), ptwXY_mul2_ptwXY(), ptwXY_mul_double(), ptwXY_mul_ptwXY(), ptwXY_mutualifyDomains(), ptwXY_neg(), ptwXY_new(), ptwXY_normalize(), ptwXY_pow(), ptwXY_range(), ptwXY_rangeMax(), ptwXY_rangeMin(), ptwXY_reallocateOverflowPoints(), ptwXY_reallocatePoints(), ptwXY_runningIntegral(), ptwXY_scaleAndOffsetDomainWith_ptwXYs(), ptwXY_scaleOffsetXAndY(), ptwXY_setValueAtX(), ptwXY_setValueAtX_overrideIfClose(), ptwXY_setXYData(), ptwXY_setXYDataFromXsAndYs(), ptwXY_setXYPairAtIndex(), ptwXY_simpleCoalescePoints(), ptwXY_slice(), ptwXY_slopeOffset(), ptwXY_startIndex(), ptwXY_sub_doubleFrom(), ptwXY_sub_fromDouble(), ptwXY_sub_ptwXY(), ptwXY_thicken(), ptwXY_thin(), ptwXY_thinDomain(), ptwXY_toOtherInterpolation(), ptwXY_toUnitbase(), ptwXY_trim(), ptwXY_tweakDomainsToMutualify(), ptwXY_union(), ptwXY_unitbaseInterpolate(), ptwXY_valuesToC_XsAndYs(), ptwXY_valueTo_ptwXY(), and ptwXY_ysMappedToXs().

◆ smr_setReportError3

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

Definition at line 138 of file statusMessageReporting.h.

◆ smr_setReportError3p

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

Definition at line 139 of file statusMessageReporting.h.

◆ smr_setReportInfo2

#define smr_setReportInfo2 ( smr,
libraryID,
code,
fmt,
... )
Value:
smr_setReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
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 122 of file statusMessageReporting.h.

◆ smr_setReportInfo2p

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

Definition at line 123 of file statusMessageReporting.h.

◆ smr_setReportInfo3

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

Definition at line 132 of file statusMessageReporting.h.

◆ smr_setReportInfo3p

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

Definition at line 133 of file statusMessageReporting.h.

◆ smr_setReportWarning2

#define smr_setReportWarning2 ( smr,
libraryID,
code,
fmt,
... )
Value:
smr_setReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, __VA_ARGS__ )
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 125 of file statusMessageReporting.h.

◆ smr_setReportWarning2p

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

Definition at line 126 of file statusMessageReporting.h.

◆ smr_setReportWarning3

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

Definition at line 135 of file statusMessageReporting.h.

◆ smr_setReportWarning3p

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

Definition at line 136 of file statusMessageReporting.h.

◆ smr_smrID

#define smr_smrID   4

◆ smr_tooManyIDs

#define smr_tooManyIDs   1

Definition at line 25 of file statusMessageReporting.h.

Referenced by smr_registerLibrary(), and smr_setup().

◆ smr_unknownID

#define smr_unknownID   0

Definition at line 24 of file statusMessageReporting.h.

Referenced by smr_setup().

◆ smr_vsetReportError2

#define smr_vsetReportError2 ( smr,
libraryID,
code,
fmt,
args )
Value:
smr_vsetReportError( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, 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)

Definition at line 130 of file statusMessageReporting.h.

◆ smr_vsetReportError3

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

Definition at line 140 of file statusMessageReporting.h.

◆ smr_vsetReportInfo2

#define smr_vsetReportInfo2 ( smr,
libraryID,
code,
fmt,
args )
Value:
smr_vsetReportInfo( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, 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)

Definition at line 124 of file statusMessageReporting.h.

◆ smr_vsetReportInfo3

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

Definition at line 134 of file statusMessageReporting.h.

◆ smr_vsetReportWarning2

#define smr_vsetReportWarning2 ( smr,
libraryID,
code,
fmt,
args )
Value:
smr_vsetReportWarning( smr, NULL, __FILE__, __LINE__, __func__, libraryID, code, fmt, 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)

Definition at line 127 of file statusMessageReporting.h.

◆ smr_vsetReportWarning3

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

Definition at line 137 of file statusMessageReporting.h.

Typedef Documentation

◆ smr_userInterface

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

Definition at line 35 of file statusMessageReporting.h.

◆ statusMessageReport

typedef struct statusMessageReport statusMessageReport

◆ statusMessageReporting

typedef struct statusMessageReporting 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 34 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 670 of file statusMessageReporting.c.

670 {
671/*
672* User must free returned string.
673*/
674 char *c = strdup( s );
675
676 if( c == NULL ) smr_setReportError( smr, NULL, file, line, function, smr_smrID, smr_codeMemoryAllocating, " smr_allocateCopyString: strdup failed for strlen( s ) = %z for variable %s",
677 strlen( s ), forItem );
678 return( c );
679}
G4double(*)(G4double) function
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
#define smr_codeMemoryAllocating

◆ 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 683 of file statusMessageReporting.c.

683 {
684/*
685* User must free returned string.
686*/
687 size_t l = strlen( s );
688 char *c;
689
690 if( l > n ) l = n;
691 if( ( c = (char *) smr_malloc( smr, l + 1, 0, forItem, file, line, function ) ) != NULL ) {
692 strncpy( c, s, n );
693 c[l] = 0;
694 }
695/*
696 c = strndup( s, l ); # Not standard on enough systems.
697 if( c != NULL ) {
698 c[l] = 0; }
699 else {
700 smr_setReportError( smr, NULL, file, line, function, smr_smrID, smr_codeMemoryAllocating, " smr_allocateCopyStringN: strndup failed for strlen( s ) = %z for variable %s",
701 strlen( s ), forItem );
702 }
703*/
704 return( c );
705}
void * smr_malloc(statusMessageReporting *smr, size_t size, int zero, char const *forItem, char const *file, int line, char const *function)

◆ smr_allocateFormatMessage()

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

Definition at line 583 of file statusMessageReporting.c.

583 {
584
585 char *s;
586 va_list args;
587
588 va_start( args, fmt );
589 s = smr_vallocateFormatMessage( fmt, &args );
590 va_end( args );
591 return( s );
592}
char * smr_vallocateFormatMessage(char const *fmt, va_list *args)

Referenced by smr_copyFullMessage(), and smr_copyMessage().

◆ smr_cleanup()

int smr_cleanup ( void )

Definition at line 67 of file statusMessageReporting.c.

67 {
68
69 int i;
70
71 if( smrIsSetup == 0 ) return( 0 );
72 for( i = smr_smrID + 1; i < numberOfRegisteredLibraries; ++i ) smr_freeMemory( (void **) &(registeredLibraries[i]) );
73 numberOfRegisteredLibraries = 0;
74 smrIsSetup = 0;
75
76 return( 0 );
77}
void * smr_freeMemory(void **p)

◆ smr_clone()

statusMessageReporting * smr_clone ( statusMessageReporting const * smr)

Definition at line 133 of file statusMessageReporting.c.

133 {
134
135 if( smr == NULL ) return( NULL );
136 return( smr_new( NULL, smr->verbosity ) );
137}
statusMessageReporting * smr_new(statusMessageReporting *smr, enum smr_status verbosity)

◆ smr_copyFullMessage()

char * smr_copyFullMessage ( statusMessageReport const * report)

Definition at line 520 of file statusMessageReporting.c.

520 {
521
522 if( report == NULL ) return( NULL );
523 if( report->status == smr_status_Ok ) return( NULL );
524 return( smr_allocateFormatMessage( "%s\n At line %d of %s in function %s", report->message, report->line, report->fileName, report->function ) );
525}
char * smr_allocateFormatMessage(char const *fmt,...)

Referenced by LUPI::StatusMessageReporting::constructFullMessage().

◆ smr_copyMessage()

char * smr_copyMessage ( statusMessageReport const * report)

Definition at line 511 of file statusMessageReporting.c.

511 {
512
513 if( report == NULL ) return( NULL );
514 if( report->status == smr_status_Ok ) return( NULL );
515 return( smr_allocateFormatMessage( report->message ) );
516}

Referenced by LUPI::StatusMessageReporting::constructMessage().

◆ smr_firstReport()

◆ smr_free()

void * smr_free ( statusMessageReporting ** smr)

Definition at line 156 of file statusMessageReporting.c.

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

◆ smr_freeMemory()

void * smr_freeMemory ( void ** p)

Definition at line 658 of file statusMessageReporting.c.

658 {
659
660 if( p == NULL ) return( NULL );
661 if( *p != NULL ) {
662 free( *p );
663 *p = NULL;
664 }
665 return( *p );
666}
void free(voidpf ptr)

Referenced by smr_cleanup(), smr_free(), and smr_release().

◆ smr_getCode()

int smr_getCode ( statusMessageReport const * report)

Definition at line 471 of file statusMessageReporting.c.

471 {
472
473 if( report == NULL ) return( -1 );
474 return( report->code );
475}

◆ smr_getFile()

char const * smr_getFile ( statusMessageReport const * report)

Definition at line 487 of file statusMessageReporting.c.

487 {
488
489 if( report == NULL ) return( NULL );
490 return( report->fileName );
491}

◆ smr_getFunction()

char const * smr_getFunction ( statusMessageReport const * report)

Definition at line 495 of file statusMessageReporting.c.

495 {
496
497 if( report == NULL ) return( NULL );
498 return( report->function );
499}

◆ smr_getLibraryID()

int smr_getLibraryID ( statusMessageReport const * report)

Definition at line 463 of file statusMessageReporting.c.

463 {
464
465 if( report == NULL ) return( 0 );
466 return( report->libraryID );
467}

◆ smr_getLine()

int smr_getLine ( statusMessageReport const * report)

Definition at line 479 of file statusMessageReporting.c.

479 {
480
481 if( report == NULL ) return( -1 );
482 return( report->line );
483}

◆ smr_getMessage()

char const * smr_getMessage ( statusMessageReport const * report)

Definition at line 503 of file statusMessageReporting.c.

503 {
504
505 if( report == NULL ) return( NULL );
506 return( report->message );
507}

◆ smr_getRegisteredLibrarysName()

char const * smr_getRegisteredLibrarysName ( int ID)

Definition at line 104 of file statusMessageReporting.c.

104 {
105
106 if( ( ID < 0 ) || ( ID >= smr_maximumNumberOfRegisteredLibraries ) ) return( NULL );
107 return( registeredLibraries[ID] );
108}
#define smr_maximumNumberOfRegisteredLibraries

◆ smr_getVerbosity()

enum smr_status smr_getVerbosity ( statusMessageReporting const * smr)

Definition at line 455 of file statusMessageReporting.c.

455 {
456
457 if( smr == NULL ) return( smr_status_Ok );
458 return( smr->verbosity );
459}

◆ smr_highestStatus()

enum smr_status smr_highestStatus ( statusMessageReporting const * smr)

Definition at line 322 of file statusMessageReporting.c.

322 {
323
324 enum smr_status status = smr_status_Ok;
325 statusMessageReport const *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 const * smr_firstReport(statusMessageReporting const *smr)
statusMessageReport const * smr_nextReport(statusMessageReport const *report)

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

◆ smr_initialize()

int smr_initialize ( statusMessageReporting * smr,
enum smr_status verbosity )

Definition at line 123 of file statusMessageReporting.c.

123 {
124
125 if( smr == NULL ) return( 0 );
126 smr->verbosity = verbosity;
127 smr_reportInitialize( &(smr->report) );
128 return( 0 );
129}

Referenced by smr_new(), smr_release(), and LUPI::StatusMessageReporting::StatusMessageReporting().

◆ smr_isError()

int smr_isError ( statusMessageReporting const * smr)

Definition at line 355 of file statusMessageReporting.c.

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

Referenced by LUPI::StatusMessageReporting::isError().

◆ smr_isInfo()

int smr_isInfo ( statusMessageReporting const * smr)

Definition at line 341 of file statusMessageReporting.c.

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

Referenced by LUPI::StatusMessageReporting::isInfo().

◆ smr_isOk()

int smr_isOk ( statusMessageReporting const * smr)

Definition at line 334 of file statusMessageReporting.c.

334 {
335
336 return( smr_highestStatus( smr ) == smr_status_Ok );
337}

Referenced by LUPI::StatusMessageReporting::isOk().

◆ smr_isReportError()

int smr_isReportError ( statusMessageReport const * report)

Definition at line 395 of file statusMessageReporting.c.

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

◆ smr_isReportInfo()

int smr_isReportInfo ( statusMessageReport const * report)

Definition at line 379 of file statusMessageReporting.c.

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

◆ smr_isReportOk()

int smr_isReportOk ( statusMessageReport const * report)

Definition at line 371 of file statusMessageReporting.c.

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

◆ smr_isReportWarning()

int smr_isReportWarning ( statusMessageReport const * report)

Definition at line 387 of file statusMessageReporting.c.

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

◆ smr_isReportWarningOrError()

int smr_isReportWarningOrError ( statusMessageReport const * report)

Definition at line 403 of file statusMessageReporting.c.

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

◆ smr_isWarning()

int smr_isWarning ( statusMessageReporting const * smr)

Definition at line 348 of file statusMessageReporting.c.

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

Referenced by LUPI::StatusMessageReporting::isWarning().

◆ smr_isWarningOrError()

int smr_isWarningOrError ( statusMessageReporting const * smr)

Definition at line 362 of file statusMessageReporting.c.

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

◆ 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 629 of file statusMessageReporting.c.

629 {
630
631 void *p = smr_realloc( smr, NULL, size, forItem, file, line, function );
632 size_t i;
633 char *c;
634 long long *l;
635
636 if( ( p != NULL ) && zero ) {
637 for( i = 0, l = (long long *) p; i < size / sizeof( long long ); i++, l++ ) *l = 0;
638 for( i *= sizeof( long long ), c = (char *) l; i < size; i++, c++ ) *c = 0;
639 }
640
641 return( p );
642}
void * smr_realloc(statusMessageReporting *smr, void *pOld, size_t size, char const *forItem, char const *file, int line, char const *function)

Referenced by smr_allocateCopyStringN().

◆ smr_new()

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

Definition at line 112 of file statusMessageReporting.c.

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

Referenced by smr_clone().

◆ smr_nextReport()

statusMessageReport const * smr_nextReport ( statusMessageReport const * report)

Definition at line 440 of file statusMessageReporting.c.

440 {
441
442 return( smr_nextReport2( report ) );
443}
statusMessageReport * smr_nextReport2(statusMessageReport const *report)

Referenced by LUPI::StatusMessageReporting::constructFullMessage(), LUPI::StatusMessageReporting::constructMessage(), smr_highestStatus(), and smr_numberOfReports().

◆ smr_numberOfRegisteredLibraries()

int smr_numberOfRegisteredLibraries ( void )

Definition at line 97 of file statusMessageReporting.c.

97 {
98
99 return( numberOfRegisteredLibraries );
100}

◆ smr_numberOfReports()

int smr_numberOfReports ( statusMessageReporting const * smr)

Definition at line 411 of file statusMessageReporting.c.

411 {
412
413 int n = 0;
414 statusMessageReport const *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}

◆ smr_print()

void smr_print ( statusMessageReporting * smr,
int clear )

Definition at line 529 of file statusMessageReporting.c.

529 {
530
531 smr_write( smr, stdout, clear );
532}
void smr_write(statusMessageReporting *smr, FILE *f, int clear)

◆ 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 646 of file statusMessageReporting.c.

646 {
647
648 void *p = realloc( pOld, size );
649
650 if( ( p == NULL ) && ( smr != NULL ) ) {
651 smr_setReportError( smr, NULL, file, line, function, smr_smrID, smr_codeMemoryAllocating, " smr_realloc: failed to realloc size = %z for variable %s\n", size, forItem );
652 }
653 return( p );
654}

Referenced by smr_malloc().

◆ smr_registerLibrary()

int smr_registerLibrary ( char const * libraryName)

Definition at line 81 of file statusMessageReporting.c.

81 {
82
83 int i;
84
85 if( smrIsSetup == 0 ) smr_setup( );
86 for( i = 0; i < numberOfRegisteredLibraries; ++i ) { /* Check if name is already registered. */
87 if( strcmp( libraryName, registeredLibraries[i] ) == 0 ) return( i );
88 }
89 if( numberOfRegisteredLibraries == smr_maximumNumberOfRegisteredLibraries ) return( smr_tooManyIDs );
90 if( ( registeredLibraries[numberOfRegisteredLibraries] = strdup( libraryName ) ) == NULL ) return( -1 );
91 ++numberOfRegisteredLibraries;
92 return( numberOfRegisteredLibraries - 1 );
93}
int smr_setup(void)
#define smr_tooManyIDs

Referenced by nfu_setup().

◆ smr_release()

void smr_release ( statusMessageReporting * smr)

Definition at line 141 of file statusMessageReporting.c.

141 {
142
143 statusMessageReport *current, *next, *first = smr_firstReport2( smr );
144
145 if( smr == NULL ) return;
146 for( current = first; current != NULL; current = next ) {
147 next = smr_nextReport2( current );
148 smr_reportRelease( current );
149 if( current != first ) smr_freeMemory( (void **) &current );
150 }
151 smr_initialize( smr, smr->verbosity );
152}

Referenced by LUPI::StatusMessageReporting::clear(), smr_free(), smr_write(), and LUPI::StatusMessageReporting::~StatusMessageReporting().

◆ smr_reportPrint()

void smr_reportPrint ( statusMessageReport const * report)

Definition at line 556 of file statusMessageReporting.c.

556 {
557
558 smr_reportWrite( report, stdout );
559}
void smr_reportWrite(statusMessageReport const *report, FILE *f)

◆ smr_reportWrite()

void smr_reportWrite ( statusMessageReport const * report,
FILE * f )

Definition at line 563 of file statusMessageReporting.c.

563 {
564
565 if( report->message != NULL ) fprintf( f, "%s\n At line %d of %s in function %s\n", report->message, report->line, report->fileName, report->function );
566}

Referenced by smr_reportPrint().

◆ 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.c.

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}

Referenced by smr_allocateCopyString(), and smr_realloc().

◆ 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.c.

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}

◆ 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.c.

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}

◆ smr_setup()

int smr_setup ( void )

Definition at line 45 of file statusMessageReporting.c.

45 {
46
47 int i;
48
49 if( smrIsSetup ) return( 0 );
50 smrIsSetup = 1;
51 for( i = 0; i < smr_maximumNumberOfRegisteredLibraries; ++i ) registeredLibraries[i] = NULL;
52 registeredLibraries[smr_unknownID] = unknownLibrary;
53 ++numberOfRegisteredLibraries;
54 registeredLibraries[smr_tooManyIDs] = tooManyLibrary;
55 ++numberOfRegisteredLibraries;
56 registeredLibraries[smr_invalidID] = invalidLibrary;
57 ++numberOfRegisteredLibraries;
58 registeredLibraries[smr_errnoID] = errnoLibrary;
59 ++numberOfRegisteredLibraries;
60 registeredLibraries[smr_smrID] = smrLibrary;
61 ++numberOfRegisteredLibraries;
62 return( 1 );
63}
#define smr_errnoID
#define smr_unknownID
#define smr_invalidID

Referenced by smr_registerLibrary().

◆ smr_statusToString()

char const * smr_statusToString ( enum smr_status status)

Definition at line 570 of file statusMessageReporting.c.

570 {
571
572 switch( status ) {
573 case smr_status_Ok : return( statusStringOk );
574 case smr_status_Info : return( statusStringInfo );
575 case smr_status_Warning : return( statusStringWarning );
576 case smr_status_Error : return( statusStringError );
577 }
578 return( statusStringInvalid );
579}

◆ smr_vallocateFormatMessage()

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

Definition at line 596 of file statusMessageReporting.c.

596 {
597
598 int n, size = SMR_InitialMessageSize;
599 char buffer[SMR_InitialMessageSize], *message = buffer;
600 va_list args_;
601
602 while( 1 ) {
603 va_copy( args_, *args );
604 n = vsnprintf( message, size, fmt, args_ );
605 va_end( args_ );
606 if( ( n > -1 ) && ( n < size ) ) break;
607 if( n > -1 ) { /* glibc 2.1 */
608 size = n + 3; }
609 else { /* glibc 2.0 */
610 size *= 2;
611 }
612 if( message == buffer ) message = NULL;
613 if( ( message = (char *) realloc( message, size ) ) == NULL ) return( NULL );
614 }
615 if( message == buffer ) {
616 if( ( message = (char *) malloc( n + 1 ) ) == NULL ) return( NULL );
617 strcpy( message, buffer ); }
618 else {
619 char *old = message;
620 if( ( message = (char *) realloc( message, n + 1 ) ) == NULL ) {
621 if( old != NULL ) free( old );
622 }
623 }
624 return( message );
625}
voidp malloc(uInt size)
#define SMR_InitialMessageSize

Referenced by LUPI::Misc::argumentsToString(), and smr_allocateFormatMessage().

◆ 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.c.

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

◆ 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.c.

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

◆ 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.c.

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

◆ smr_write()

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

Definition at line 536 of file statusMessageReporting.c.

536 {
537
538 if( smr == NULL ) return;
539 fprintf( f, "======= Status message reports =======\n" );
540 smr_write2( smr_firstReport( smr ), f );
541 if( clear ) smr_release( smr );
542}

Referenced by smr_print().