// File: RLI.h // // Version: 0.1 (semi-lamo) // // #ifndef RLI_H #define RLI_H const unsigned int RLI_SIZE = 8 ; const unsigned short CHARMAX = 256 ; class RLI { // acronym for ReallyLongInt public: // Default constructor // RLI() ; // Alternate constructor for 16 bytes // RLI(bool isNeg, unsigned char A[]) ; // Accessor // unsigned int size() const ; void Print() const ; // Arithmetic C = A op B // static void Add (RLI& C, const RLI& A, const RLI& B) ; static void Sub (RLI& C, const RLI& A, const RLI& B) ; static void MulByChar (RLI& C, const RLI& A, const unsigned char b) ; // Not yet implemented // // static void Mul (RLI& C, const RLI& A, const RLI& B) ; // static void Div (RLI& C, const RLI& A, const RLI& B) ; // static void Mod (RLI& C, const RLI& A, const RLI& B) ; // Comparisons // static bool LT (const RLI& A, const RLI& B) ; // < static bool LE (const RLI& A, const RLI& B) ; // <= static bool EQ (const RLI& A, const RLI& B) ; // == static bool GE (const RLI& A, const RLI& B) ; // >= static bool GT (const RLI& A, const RLI& B) ; // > static bool NE (const RLI& A, const RLI& B) ; // != private: unsigned char d[RLI_SIZE] ; bool neg ; // true = negative, false = positive bool valid ; // overflow? static void AbsAdd (RLI& C, const RLI& A, const RLI& B) ; static void AbsSub (RLI& C, const RLI& A, const RLI& B) ; static bool AbsLT (const RLI& A, const RLI& B) ; } ; #endif