openblt

a hobby OS from the late 90s
git clone http://frotz.net/git/openblt.git
Log | Files | Refs | LICENSE

err.h (3765B)


      1 /* $Id: //depot/blt/srv/ne2000/err.h#2 $
      2 **
      3 ** Copyright 1998 Brian J. Swetland
      4 ** All rights reserved.
      5 **
      6 ** Redistribution and use in source and binary forms, with or without
      7 ** modification, are permitted provided that the following conditions
      8 ** are met:
      9 ** 1. Redistributions of source code must retain the above copyright
     10 **    notice, this list of conditions, and the following disclaimer.
     11 ** 2. Redistributions in binary form must reproduce the above copyright
     12 **    notice, this list of conditions, and the following disclaimer in the
     13 **    documentation and/or other materials provided with the distribution.
     14 ** 3. The name of the author may not be used to endorse or promote products
     15 **    derived from this software without specific prior written permission.
     16 **
     17 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     26 ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 */
     28 #ifndef __ERR
     29 #define __ERR
     30 
     31 /* NOTE If ret is negative then it is an error otherwise it returns a 
     32 //	success code. */
     33 
     34 /////
     35 // Error codes
     36 /////
     37 
     38 #define NUM_ERR		22
     39 #define NOERR		0
     40 #define ERR		-1
     41 #define ERRNOMEM	-2
     42 #define ERRRESOURCE	-3
     43 #define ERRMEMCORRUPT	-4
     44 #define ERRFORMAT	-5
     45 #define ERRNOTFOUND	-6
     46 #define ERRTYPE		-7
     47 #define ERRTIMEOUT	-8
     48 #define ERRNOTSUPPORTED	-9
     49 #define ERROUTOFRANGE	-10
     50 #define ERRPRIV		-11
     51 #define ERRNOTREADY	-12
     52 #define ERRNONEFREE	-13
     53 #define ERRARG		-14
     54 #define ERRINVALID	-15
     55 #define ERRNOTOPEN	-16
     56 #define ERRALREADYDONE	-17
     57 #define ERRVER		-18
     58 #define ERROVERFLOW	-19
     59 #define ERRINUSE	-20
     60 #define ERRTOOBIG	-21
     61 
     62 /////
     63 // Success codes
     64 /////
     65 
     66 #define SFOUND		1
     67 #define SNOTFOUND	2
     68 #define SALT		3
     69 
     70 /////
     71 // Facility codes
     72 /////
     73 
     74 /* Bits 16-31 are reserved for the facility code. */
     75 #define OWNOS		0x70
     76 #define OWNNOMAD	0x70
     77 
     78 /////
     79 // Error Messages
     80 /////
     81 
     82 #define MAX_ERR_MSG	32
     83 static const char err_msg[NUM_ERR][MAX_ERR_MSG] = {  "success",
     84 					"error",
     85 					"out of memory",
     86 					"resource allocation",
     87 					"memory corrupt!!!",
     88 					"format",
     89 					"not found",
     90 					"type",
     91 					"timeout",
     92 					"not supported",
     93 					"out of range",
     94 					"access denied",
     95 					"not ready",	
     96 					"none free",
     97 					"bad argument",
     98 					"invalid",
     99 					"not open",
    100 					"already done",
    101 					"incorrect version",
    102 					"overflow",
    103 					"in use",
    104 					"too big" };
    105 
    106 /////
    107 // Return code object
    108 /////
    109 
    110 #ifdef __CPP_BINDING
    111 class ret {
    112 	private:
    113 		int val;
    114 	public:
    115 		ret() { val=ERR; }
    116 		ret(int src) { val=src; }
    117 //		ret(const ret& src) { val=src; }
    118 		ret operator=(const ret& src) { return val=src.val; }
    119 		ret operator=(int src) { return val=src; }
    120 		int operator==(const ret& cmp) { return val==cmp.val; }
    121 		int operator!() { return val<0; } 
    122 			// returns 1 if error, 0 if success
    123 		int operator<(int cmp) {
    124 			// TODO implement some severity check
    125 			return (val<cmp); }
    126 		int operator<(ret& cmp) { return (val<cmp.val); }
    127 		operator int() const { return val; }	// cast
    128 //		operator bool() { return (val<0); }
    129 		const char *disp() {
    130 			if(((val & 0x70) != 0x70) && ((val & 0x70) != 0x00))
    131 				return "Unknown facility";
    132 			return err_msg[-val]; }
    133 };
    134 #else
    135 typedef int ret;
    136 #endif /* __CPP_BINDING */
    137 
    138 #endif /* __ERR */