//| Copyright: (C) 2020-2024 Kevin Larke //| License: GNU GPL version 3.0 or above. See the accompanying LICENSE file. #ifndef cwCOMMON_H #define cwCOMMON_H #include // declares 'NULL' #include #define kInvalidIdx ((unsigned)-1) #define kInvalidId ((unsigned)-1) #define kInvalidCnt ((unsigned)-1) namespace cw { typedef enum { kOkRC = 0, // 0 kObjAllocFailRC, // 1 - an object allocation failed kObjFreeFailRC, // 2 - an object free failed kInvalidOpRC, // 3 - the current state does not support the operation kInvalidArgRC, // 4 - kInvalidIdRC, // 5 - an identifer was found to be invalid kOpenFailRC, // 6 kCloseFailRC, // 7 kWriteFailRC, // 8 kReadFailRC, // 9 kFlushFailRC, // 10 kSeekFailRC, // 11 kEofRC, // 12 kResourceNotAvailableRC, // 13 kMemAllocFailRC, // 14 kGetAttrFailRC, // 15 kSetAttrFailRC, // 16 kTimeOutRC, // 17 kProtocolErrorRC, // 18 kOpFailRC, // 19 kSyntaxErrorRC, // 20 kBufTooSmallRC, // 21 kEleNotFoundRC, // 22 - use by cwObject to indicate that an optional value does not exist. kDuplicateRC, // 23 - an invalid duplicate was detected kAssertFailRC, // 24 - used with cwLogFatal kInvalidDataTypeRC, // 25 kFileNotFoundRC, // 26 kTestFailRC, // 27 kInvalidStateRC, // 28 kTypeMismatchRC, // 29 kNotImplementedRC, // 30 kDataCorruptRC, // 31 kBaseAppRC // 32 } cwRC_t; typedef unsigned rc_t; template< typename T > struct handle { typedef T p_type; T* p = nullptr; void set(T* ptr) { this->p=ptr; } void clear() { this->p=nullptr; } bool isValid() const { return this->p != nullptr; } }; } #endif