00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _numeric_h
00018 #define _numeric_h
00019
00020 #include <spl/types.h>
00021 #include <spl/Debug.h>
00022 #include <spl/Memory.h>
00023 #include <spl/String.h>
00024
00034 class Numeric : public IComparable, public IMemoryValidate
00035 {
00036 protected:
00037 Numeric();
00038
00039 public:
00040 virtual ~Numeric();
00041
00042 virtual int32 HashCode() const = 0;
00043
00044 virtual bool Equals(const IComparable *a) const = 0;
00045 virtual int Compare(const IComparable *a) const = 0;
00046 virtual bool Equals( const IComparable& a ) const = 0;
00047 virtual int Compare( const IComparable& a ) const = 0;
00048 virtual int32 MajicNumber() const = 0;
00049
00050 virtual int ToInt() const = 0;
00051 virtual double ToDouble() const = 0;
00052 virtual StringPtr ToString() const = 0;
00053
00054 #ifdef DEBUG
00055 virtual void ValidateMem() const = 0;
00056 virtual void CheckMem() const = 0;
00057 #endif
00058
00059 static bool IsNumeric(const char *cp, const int cplen);
00060 inline static bool IsNumeric(const String& str) { return IsNumeric(str.GetChars(), str.Length()); }
00061 inline static bool IsNumeric(const String *str) { return IsNumeric(str->GetChars(), str->Length()); }
00062 };
00063
00066 #endif