windows-nt/Source/XPSP1/NT/net/mmc/common/intlnum.h
2020-09-26 16:20:57 +08:00

143 lines
3.4 KiB
C++

/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corporation, 1995 - 1997 **/
/**********************************************************************/
/*
FILE HISTORY:
*/
#ifndef _INTLNUM_H_
#define _INTLNUM_H_
class CIntlNumber : public CObjectPlus
{
public:
CIntlNumber()
{
m_lValue = 0L;
m_fInitOk = TRUE;
}
CIntlNumber(LONG lValue)
{
m_lValue = lValue;
m_fInitOk = TRUE;
}
CIntlNumber(const CString & str);
CIntlNumber(CIntlNumber const &x)
{
m_lValue = x.m_lValue;
m_fInitOk = x.m_fInitOk;
}
CIntlNumber& operator =(CIntlNumber const &x)
{
m_lValue = x.m_lValue;
m_fInitOk = x.m_fInitOk;
return(*this);
}
public:
// Assignment Operators
CIntlNumber& operator =(LONG l);
CIntlNumber& operator =(const CString &str);
// Shorthand operators.
CIntlNumber& operator +=(const CIntlNumber& num);
CIntlNumber& operator +=(const LONG l);
CIntlNumber& operator -=(const CIntlNumber& num);
CIntlNumber& operator -=(const LONG l);
CIntlNumber& operator /=(const CIntlNumber& num);
CIntlNumber& operator /=(const LONG l);
CIntlNumber& operator *=(const CIntlNumber& num);
CIntlNumber& operator *=(const LONG l);
// Conversion operators
operator const LONG() const
{
return(m_lValue);
}
operator const CString() const;
public:
virtual BOOL IsValid() const
{
return(m_fInitOk);
}
public:
static void Reset();
static void SetBadNumber(CString strBadNumber = "--")
{
m_strBadNumber = strBadNumber;
}
static CString ConvertNumberToString(const LONG l);
static LONG ConvertStringToNumber(const CString & str, BOOL * pfOk);
static CString& GetBadNumber()
{
return(m_strBadNumber);
}
private:
static CString GetThousandSeperator();
private:
static CString m_strThousandSeperator;
static CString m_strBadNumber;
private:
LONG m_lValue;
BOOL m_fInitOk;
public:
#ifdef _DEBUG
friend CDumpContext& AFXAPI operator<<(CDumpContext& dc, const CIntlNumber& num);
#endif // _DEBUG
friend CArchive& AFXAPI operator<<(CArchive& ar, const CIntlNumber& num);
friend CArchive& AFXAPI operator>>(CArchive& ar, CIntlNumber& num);
};
class CIntlLargeNumber : public CObjectPlus
{
public:
CIntlLargeNumber()
{
m_lLowValue = 0L;
m_lHighValue = 0L;
m_fInitOk = TRUE;
}
CIntlLargeNumber(LONG lHighWord, LONG lLowWord)
{
m_lLowValue = lLowWord;
m_lHighValue = lHighWord;
m_fInitOk = TRUE;
}
CIntlLargeNumber(const CString & str);
public:
// Assignment Operators
CIntlLargeNumber& operator =(const CString &str);
operator const CString() { return ConvertNumberToString(); }
operator CString() { return ConvertNumberToString(); }
public:
virtual LONG GetLowWord() const { return m_lLowValue; }
virtual LONG GetHighWord() const { return m_lHighValue; }
virtual BOOL IsValid() const { return(m_fInitOk); }
private:
static CString m_strBadNumber;
CString ConvertNumberToString();
void ConvertStringToNumber(const CString & str, BOOL * pfOk);
private:
LONG m_lLowValue;
LONG m_lHighValue;
BOOL m_fInitOk;
};
#endif _INTLNUM_H