mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-30 03:38:55 -05:00
86 lines
2.2 KiB
C
86 lines
2.2 KiB
C
|
/**
|
||
|
@file ErrorReporting.h
|
||
|
@author Lime Microsystems
|
||
|
@brief API for reporting error codes and error messages.
|
||
|
All calls are thread-safe using thread-local storage.
|
||
|
Code returning with an error should use:
|
||
|
return lime::ReportError(code, message, ...);
|
||
|
*/
|
||
|
|
||
|
#ifndef LIMESUITE_ERROR_REPORTING_H
|
||
|
#define LIMESUITE_ERROR_REPORTING_H
|
||
|
|
||
|
#include <LimeSuiteConfig.h>
|
||
|
#include <cerrno>
|
||
|
#include <string>
|
||
|
#include <stdexcept>
|
||
|
#include <cstdarg>
|
||
|
|
||
|
namespace lime
|
||
|
{
|
||
|
|
||
|
/*!
|
||
|
* Get the error code reported.
|
||
|
*/
|
||
|
LIME_API int GetLastError(void);
|
||
|
|
||
|
/*!
|
||
|
* Get the error code to string + any optional message reported.
|
||
|
*/
|
||
|
LIME_API const char *GetLastErrorMessage(void);
|
||
|
|
||
|
/*!
|
||
|
* Report a typical errno style error.
|
||
|
* The resulting error message comes from strerror().
|
||
|
* \param errnum a recognized error code
|
||
|
* \return a non-zero status code to return
|
||
|
*/
|
||
|
LIME_API int ReportError(const int errnum);
|
||
|
|
||
|
/*!
|
||
|
* Report an error as an integer code and a formatted message string.
|
||
|
* \param errnum a recognized error code
|
||
|
* \param format a format string followed by args
|
||
|
* \return a non-zero status code to return
|
||
|
*/
|
||
|
inline int ReportError(const int errnum, const char *format, ...);
|
||
|
|
||
|
/*!
|
||
|
* Report an error as a formatted message string.
|
||
|
* The reported errnum is 0 - no relevant error code.
|
||
|
* \param format a format string followed by args
|
||
|
* \return a non-zero status code to return
|
||
|
*/
|
||
|
inline int ReportError(const char *format, ...);
|
||
|
|
||
|
/*!
|
||
|
* Report an error as an integer code and message format arguments
|
||
|
* \param errnum a recognized error code
|
||
|
* \param format a printf-style format string
|
||
|
* \param argList the format string args as a va_list
|
||
|
* \return a non-zero status code to return
|
||
|
*/
|
||
|
LIME_API int ReportError(const int errnum, const char *format, va_list argList);
|
||
|
|
||
|
}
|
||
|
|
||
|
inline int lime::ReportError(const int errnum, const char *format, ...)
|
||
|
{
|
||
|
va_list argList;
|
||
|
va_start(argList, format);
|
||
|
int status = lime::ReportError(errnum, format, argList);
|
||
|
va_end(argList);
|
||
|
return status;
|
||
|
}
|
||
|
|
||
|
inline int lime::ReportError(const char *format, ...)
|
||
|
{
|
||
|
va_list argList;
|
||
|
va_start(argList, format);
|
||
|
int status = lime::ReportError(-1, format, argList);
|
||
|
va_end(argList);
|
||
|
return status;
|
||
|
}
|
||
|
|
||
|
#endif //LIMESUITE_ERROR_REPORTING_H
|