AtxResults.h

Go to the documentation of this file.
00001 /*****************************************************************
00002 |
00003 |   Atomix - Result Codes
00004 |
00005 |   (c) 2002-2006 Gilles Boccon-Gibod
00006 |   Author: Gilles Boccon-Gibod (bok@bok.net)
00007 |
00008  ****************************************************************/
00013 #ifndef _ATX_RESULTS_H_
00014 #define _ATX_RESULTS_H_
00015 
00016 /*----------------------------------------------------------------------
00017 |    macros      
00018 +---------------------------------------------------------------------*/
00019 #if defined(ATX_DEBUG)
00020 #include "AtxDebug.h"
00021 #define ATX_CHECK(_result) do {\
00022     ATX_Result _x = (_result); \
00023     if (_x != ATX_SUCCESS) {   \
00024         ATX_Debug("%s(%d): @@@ ATX_CHECK failed, result=%d [%s]\n", __FILE__, __LINE__, _x, #_result); \
00025         return _x;             \
00026     }                          \
00027 } while(0)
00028 #define ATX_CHECK_LABEL(_result, _label) do {\
00029     ATX_Result _x = (_result);               \
00030     if (_x != ATX_SUCCESS) {                 \
00031         ATX_Debug("%s(%d): @@@ ATX_CHECK failed, result=%d [%s]\n", __FILE__, __LINE__, _x, #_result); \
00032         goto _label;                         \
00033     }                                        \
00034 } while(0)
00035 #else
00036 #define ATX_CHECK(_result) do {\
00037     ATX_Result _x = (_result); \
00038     if (_x != ATX_SUCCESS) {   \
00039         return _x;             \
00040     }                          \
00041 } while(0)
00042 #define ATX_CHECK_LABEL(_result, _label) do {\
00043     ATX_Result _x = (_result);               \
00044     if (_x != ATX_SUCCESS) {                 \
00045         goto _label;                         \
00046     }                                        \
00047 } while(0)
00048 #endif
00049 
00050 #define ATX_FAILED(result)              ((result) != ATX_SUCCESS)
00051 #define ATX_SUCCEEDED(result)           ((result) == ATX_SUCCESS)
00052 
00053 /*----------------------------------------------------------------------
00054 |    result codes      
00055 +---------------------------------------------------------------------*/
00057 #define ATX_SUCCESS                     0
00058 
00060 #define ATX_FAILURE                     (-1)
00061 
00062 /* general error codes */
00063 #ifndef ATX_ERROR_BASE               
00064 #define ATX_ERROR_BASE                  (-10000)
00065 #endif
00066 
00067 #define ATX_ERROR_BASE_GENERAL          (ATX_ERROR_BASE-0)
00068 #define ATX_ERROR_OUT_OF_MEMORY         (ATX_ERROR_BASE_GENERAL - 0)
00069 #define ATX_ERROR_OUT_OF_RESOURCES      (ATX_ERROR_BASE_GENERAL - 1)
00070 #define ATX_ERROR_INTERNAL              (ATX_ERROR_BASE_GENERAL - 2)
00071 #define ATX_ERROR_INVALID_PARAMETERS    (ATX_ERROR_BASE_GENERAL - 3)
00072 #define ATX_ERROR_INVALID_STATE         (ATX_ERROR_BASE_GENERAL - 4)
00073 #define ATX_ERROR_NOT_IMPLEMENTED       (ATX_ERROR_BASE_GENERAL - 5)
00074 #define ATX_ERROR_OUT_OF_RANGE          (ATX_ERROR_BASE_GENERAL - 6)
00075 #define ATX_ERROR_ACCESS_DENIED         (ATX_ERROR_BASE_GENERAL - 7)
00076 #define ATX_ERROR_INVALID_SYNTAX        (ATX_ERROR_BASE_GENERAL - 8)
00077 #define ATX_ERROR_NOT_SUPPORTED         (ATX_ERROR_BASE_GENERAL -  9)
00078 #define ATX_ERROR_INVALID_FORMAT        (ATX_ERROR_BASE_GENERAL - 10)
00079 #define ATX_ERROR_NOT_ENOUGH_SPACE      (ATX_ERROR_BASE_GENERAL - 11)
00080 #define ATX_ERROR_NO_SUCH_ITEM          (ATX_ERROR_BASE_GENERAL - 12)
00081 #define ATX_ERROR_OVERFLOW              (ATX_ERROR_BASE_GENERAL - 13)
00082 
00083 /* device and i/o errors */
00084 #define ATX_ERROR_BASE_DEVICE           (ATX_ERROR_BASE-100)
00085 #define ATX_ERROR_DEVICE_BUSY           (ATX_ERROR_BASE_DEVICE - 0)
00086 #define ATX_ERROR_NO_SUCH_DEVICE        (ATX_ERROR_BASE_DEVICE - 1)
00087 #define ATX_ERROR_OPEN_FAILED           (ATX_ERROR_BASE_DEVICE - 2)
00088 #define ATX_ERROR_NO_MEDIUM             (ATX_ERROR_BASE_DEVICE - 3)
00089 
00090 /* object model error codes */
00091 #define ATX_ERROR_BASE_INTERFACES       (ATX_ERROR_BASE-200)
00092 
00093 /* properties error codes */
00094 #define ATX_ERROR_BASE_PROPERTIES       (ATX_ERROR_BASE-300)
00095 
00096 /* iterator error codes */
00097 #define ATX_ERROR_BASE_ITERATOR         (ATX_ERROR_BASE-400)
00098 
00099 /* byte stream error codes */
00100 #define ATX_ERROR_BASE_BYTE_STREAM      (ATX_ERROR_BASE-500)
00101 
00102 /* socket error codes */
00103 #define ATX_ERROR_BASE_SOCKETS          (ATX_ERROR_BASE-600)
00104 
00105 /* file error codes */
00106 #define ATX_ERROR_BASE_FILE             (ATX_ERROR_BASE-700)
00107 
00108 /* standard error codes                                  */
00109 /* these are special codes to convey an errno            */
00110 /* the error code is (ATX_ERROR_BASE_ERRNO - errno)      */
00111 /* where errno is the positive integer from errno.h      */
00112 #define ATX_ERROR_BASE_ERRNO            (ATX_ERROR_BASE-2000)
00113 #define ATX_ERROR_ERRNO(e)              (ATX_ERROR_BASE_ERRNO - (e))
00114 
00115 #endif /* _ATX_RESULTS_H_ */
00116