// RadixConverter.h: interface for the CRadixConverter class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_RADIXCONVERTER_H__E2901CAA_F542_457C_99A4_88D4581CBA69__INCLUDED_) #define AFX_RADIXCONVERTER_H__E2901CAA_F542_457C_99A4_88D4581CBA69__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "HugeCalc.h" class CHugeInt; class CHugeIntX; #define RC_API HUGECALC_API class RC_API CRadixConverter { public: explicit CRadixConverter( CONST UINT32 u32Radix, CONST SIGN enumSign = SIGN_POS, CONST LPCVECTOR_UINT32 pVector = NULL ); explicit CRadixConverter( CONST UINT32 u32Radix, CONST CHugeInt& right ); explicit CRadixConverter( CONST UINT32 u32Radix, CONST CHugeIntX& right ); // For bases up to 36, case is ignored; upper-case and lower-case letters have the same value. // For bases 37 to 62, upper-case letter represent the usual 10..35 while lower-case letter // represent 36..61. explicit CRadixConverter( CONST UINT32 u32Radix, CONST LPCTSTR lpszNum ); explicit CRadixConverter( CONST CRadixConverter& right ); /*virtual */~CRadixConverter(); static CONST UINT32 GetCount( VOID ); // reload operator -> CRadixConverter * CONST operator ->( VOID ); CRadixConverter& Convert2Radix( CONST UINT32 u32NewRadix ); CRadixConverter& operator =( CONST CRadixConverter& right ); CRadixConverter& operator =( CONST CHugeInt& right ); CRadixConverter& operator =( CONST CHugeIntX& right ); CRadixConverter& operator =( CONST SINT32& s32Num ); CRadixConverter& operator =( CONST SINT64& s64Num ); CRadixConverter& operator =( CONST UINT32& u32Num ); CRadixConverter& operator =( CONST UINT64& u64Num ); // Return non-zero if the value of (*this) fits in SINT32, UINT32, SINT64 or UINT64, respectively. Otherwise, return zero. operator CONST SINT32( VOID ) CONST; operator CONST SINT64( VOID ) CONST; operator CONST UINT32( VOID ) CONST; operator CONST UINT64( VOID ) CONST; VOID ResetRadix( CONST UINT32 u32Radix ); VOID ResetSign( CONST SIGN enumSign ); VOID ResetVector( CONST CVECTOR_UINT32& vU32Num ); VOID ClearVector( VOID ); CONST UINT32 GetRadix( VOID ) CONST; CONST SIGN GetSign( VOID ) CONST; CONST CVECTOR_UINT32& GetVector( CVECTOR_UINT32& vU32Num ) CONST; CONST UINT64 SumOfDigits( VOID ) CONST; private: UINT32 m_u32Radix; SIGN m_enumSign; CVECTOR_UINT32 * CONST m_pVector; }; #endif // !defined(AFX_RADIXCONVERTER_H__E2901CAA_F542_457C_99A4_88D4581CBA69__INCLUDED_)