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