1 #ifndef _H_OVreturns 2 #define _H_OVreturns 3 4 typedef struct { 5 ov_word status; 6 } OVstatus; 7 8 9 /* a few very common result codes */ 10 11 #define OVstatus_NO_EFFECT 2 12 #define OVstatus_YES 1 13 #define OVstatus_NO 0 14 15 #define OVstatus_SUCCESS 0 16 #define OVstatus_FAILURE -1 17 #define OVstatus_NULL_PTR -2 18 #define OVstatus_OUT_OF_MEMORY -3 19 #define OVstatus_NOT_FOUND -4 20 #define OVstatus_DUPLICATE -5 21 #define OVstatus_MISMATCH -6 22 #define OVstatus_INVALID_REF_CNT -7 23 24 #define return_OVstatus_NO_EFFECT { OVstatus _result = { OVstatus_FAILURE }; return _result; } 25 #define return_OVstatus_YES { OVstatus _result = { OVstatus_YES }; return _result; } 26 #define return_OVstatus_NO { OVstatus _result = { OVstatus_NO }; return _result; } 27 #define return_OVstatus_SUCCESS { OVstatus _result = { OVstatus_SUCCESS }; return _result; } 28 29 #define return_OVstatus_FAILURE { OVstatus _result = { OVstatus_FAILURE }; return _result; } 30 #define return_OVstatus_NULL_PTR { OVstatus _result = { OVstatus_NULL_PTR }; return _result; } 31 #define return_OVstatus_OUT_OF_MEMORY { OVstatus _result = { OVstatus_OUT_OF_MEMORY }; return _result; } 32 #define return_OVstatus_NOT_FOUND { OVstatus _result = { OVstatus_NOT_FOUND }; return _result; } 33 #define return_OVstatus_DUPLICATE { OVstatus _result = { OVstatus_DUPLICATE }; return _result; } 34 #define return_OVstatus_MISMATCH { OVstatus _result = { OVstatus_MISMATCH }; return _result; } 35 #define return_OVstatus_INVALID_REF_CNT { OVstatus _result = { OVstatus_MISMATCH }; return _result; } 36 37 #define OVreturn_IS_ERROR(r) ((r).status<0) 38 #define OVreturn_IS_OK(r) ((r).status>=0) 39 40 typedef struct { 41 ov_word status; 42 ov_word word; 43 } OVreturn_word; 44 45 typedef struct { 46 ov_word status; 47 ov_size size; 48 } OVreturn_size; 49 50 #endif 51