AG_Error
—
agar error handling
#define _USE_AGAR_STD /* If macros without AG_ prefix are desired */
#include <agar/core.h>
This manual page describes the error handling system which is used by all Agar
libraries, and available to applications as well.
void
AG_SetError
(const
char *fmt, ...);
const char *
AG_GetError
(void);
void
AG_FatalError
(const
char *fmt,
...);
void
AG_SetFatalCallback
(void
(*callback)(const char *msg));
const char *
AG_Strerror
(int
errno);
The AG_SetError
() function sets the error
message string using a
printf(3)
like format string. AG_GetError
() returns the error
message string last set by AG_SetError
(). If Agar
was compiled with thread support, the error message string is kept in
thread-local storage, so these functions are thread-safe.
The AG_FatalError
() function outputs the
given error message to the user and causes abnormal termination of the
program.
AG_SetFatalCallback
() function sets a user
provided callback to be called by AG_FatalError
()
instead of simply terminating the process. The callback is expected to do
program-specific cleanup and then terminate the program itself. An error
message is passed to the callback via the msg
argument.
The AG_Strerror
() function returns an
error message for the given platform-specific error code (e.g., on POSIX
platforms, the argument should be a valid
errno(2)
value).
void
AG_Verbose
(const
char *fmt, ...);
void
AG_Debug
(AG_Object
*obj, const char
*fmt, ...);
void
AG_SetVerboseCallback
(int
(*fn)(const char *msg));
void
AG_SetDebugCallback
(int
(*fn)(const char *msg));
These functions output a string to the debugging console used by
the application (usually
stdio(3)).
AG_Verbose
() outputs a string if the
global agVerbose variable is set.
The AG_Debug
() function outputs a string
on the debugging console of obj, assuming the object
either has the AG_OBJECT_DEBUG
flag set, or the
global agDebugLvl is >= 1. The name of the object
is included in the message string. The obj parameter
can be NULL in which case the message is output on the debug console when
agDebugLvl is >= 1.
AG_SetVerboseCallback
() and
AG_SetDebugCallback
() arrange for the specified
function to be invoked by AG_Verbose
() and
AG_Debug
(). If the callback routine returns 1, the
message will not be printed.
void *
AG_Malloc
(size_t
len);
void *
AG_TryMalloc
(size_t
len);
void *
AG_Realloc
(void
*p, size_t
len);
void *
AG_TryRealloc
(void
*p, size_t
len);
void
AG_Free
(void
*p);
The AG_Malloc
() function calls
malloc(3)
and raises a fatal error if the memory cannot be allocated. The
AG_TryMalloc
() variant also calls
malloc(3),
but sets the standard error message and returns NULL if the memory cannot be
allocated.
AG_Realloc
() calls
realloc(3)
and raises a fatal error if the memory cannot be allocated. The
AG_TryRealloc
() variant sets the standard error
message and returns NULL if the memory cannot be reallocated. If
p is NULL, AG_Realloc
() and
AG_TryRealloc
() simply invoke
malloc(3).
AG_Free
() calls
free(3).
If p is NULL, it is a no-op.
The AG_Error
interface first appeared in Agar 1.0