1 /* 2 ** == Bool == 3 ** 4 ** Boolean type which provide singleton data objects. 5 ** These objects evaluate to true or false in "if" statments. 6 ** They have no data object but are hardcoded into type_of 7 ** 8 ** Normal boolean operators should work on Bool as expected. 9 ** And also "bool" can be cast to "var" and back again. 10 ** 11 */ 12 13 #ifndef CelloBool_h 14 #define CelloBool_h 15 16 #include "Prelude.h" 17 #include "Format.h" 18 19 global var Bool; 20 21 local var True = (var)1; 22 local var False = (var)0; 23 24 var bool_var(bool x); 25 26 var Bool_Eq(var self, var obj); 27 var Bool_Gt(var self, var obj); 28 var Bool_Lt(var self, var obj); 29 30 long Bool_Hash(var self); 31 char Bool_AsChar(var self); 32 const char* Bool_AsStr(var self); 33 long Bool_AsLong(var self); 34 double Bool_AsDouble(var self); 35 36 int Bool_Show(var self, var output, int pos); 37 38 instance(Bool, Eq) = { Bool_Eq }; 39 instance(Bool, Ord) = { Bool_Gt, Bool_Lt }; 40 instance(Bool, Hash) = { Bool_Hash }; 41 instance(Bool, AsChar) = { Bool_AsChar }; 42 instance(Bool, AsLong) = { Bool_AsLong }; 43 instance(Bool, AsDouble) = { Bool_AsDouble }; 44 instance(Bool, AsStr) = { Bool_AsStr }; 45 instance(Bool, Show) = { Bool_Show, NULL }; 46 47 #endif 48