00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00046 #ifndef CCXX_NUMBERS_H_
00047 #define CCXX_NUMBERS_H_
00048
00049 #ifndef CCXX_THREAD_H_
00050 #include <cc++/thread.h>
00051 #endif
00052
00053 #ifndef CCXX_MISSING_H_
00054 #include <cc++/missing.h>
00055 #endif
00056
00057 #ifndef CCXX_STRCHAR_H_
00058 #include <cc++/strchar.h>
00059 #endif
00060
00061 #ifndef CCXX_STRING_H_
00062 #include <cc++/string.h>
00063 #endif
00064
00065 #ifndef CCXX_THREAD_H_
00066 #include <cc++/thread.h>
00067 #endif
00068
00069 #include <ctime>
00070
00071 #ifdef CCXX_NAMESPACES
00072 namespace ost {
00073 #ifdef __BORLANDC__
00074 using std::tm;
00075 using std::time_t;
00076 #endif
00077 #endif
00078
00087 class __EXPORT Number
00088 {
00089 protected:
00090 char *buffer;
00091 unsigned size;
00092
00093 public:
00099 Number(char *buffer, unsigned size);
00100
00101 void setValue(long value);
00102 const char *getBuffer() const
00103 {return buffer;};
00104
00105 long getValue() const;
00106
00107 long operator()()
00108 {return getValue();};
00109
00110 operator long()
00111 {return getValue();};
00112
00113 operator char*()
00114 {return buffer;};
00115
00116 long operator=(const long value);
00117 long operator+=(const long value);
00118 long operator-=(const long value);
00119 long operator--();
00120 long operator++();
00121 int operator==(const Number &num);
00122 int operator!=(const Number &num);
00123 int operator<(const Number &num);
00124 int operator<=(const Number &num);
00125 int operator>(const Number &num);
00126 int operator>=(const Number &num);
00127
00128 friend long operator+(const Number &num, const long val);
00129 friend long operator+(const long val, const Number &num);
00130 friend long operator-(const Number &num, long val);
00131 friend long operator-(const long val, const Number &num);
00132 };
00133
00134 class __EXPORT ZNumber : public Number
00135 {
00136 public:
00137 ZNumber(char *buf, unsigned size);
00138 void setValue(long value);
00139 long operator=(long value);
00140 };
00141
00150 class __EXPORT Date
00151 {
00152 protected:
00153 long julian;
00154
00155 protected:
00156 void toJulian(long year, long month, long day);
00157 void fromJulian(char *buf) const;
00158
00163 virtual void update(void)
00164 {return;};
00165
00166 public:
00167
00168 Date(time_t tm);
00169 Date(tm *dt);
00170 Date(char *str, size_t size = 0);
00171 Date(int year, unsigned month, unsigned day);
00172 Date();
00173
00174 int getYear(void) const;
00175 unsigned getMonth(void) const;
00176 unsigned getDay(void) const;
00177 unsigned getDayOfWeek(void) const;
00178 char *getDate(char *buffer) const;
00179 time_t getDate(void) const;
00180 time_t getDate(tm *buf) const;
00181 long getValue(void) const;
00182 void setDate(const char *str, size_t size = 0);
00183 bool isValid(void) const;
00184
00185 friend Date operator+(const Date &date, const long val);
00186 friend Date operator-(const Date &date, const long val);
00187 friend Date operator+(const long val, const Date &date);
00188 friend Date operator-(const long val, const Date &date);
00189
00190 operator long() const
00191 {return getValue();};
00192
00193 String operator()() const;
00194 Date& operator++();
00195 Date& operator--();
00196 Date& operator+=(const long val);
00197 Date& operator-=(const long val);
00198 int operator==(const Date &date);
00199 int operator!=(const Date &date);
00200 int operator<(const Date &date);
00201 int operator<=(const Date &date);
00202 int operator>(const Date &date);
00203 int operator>=(const Date &date);
00204 bool operator!() const
00205 {return !isValid();};
00206 };
00207
00217 class __EXPORT Time
00218 {
00219 protected:
00220 long seconds;
00221
00222 protected:
00223 void toSeconds(int hour, int minute, int second);
00224 void fromSeconds(char *buf) const;
00225 virtual void Update(void)
00226 {return;};
00227
00228 public:
00229 Time(time_t tm);
00230 Time(tm *dt);
00231 Time(char *str, size_t size = 0);
00232 Time(int hour, int minute, int second);
00233 Time();
00234
00235 long getValue(void) const;
00236 int getHour(void) const;
00237 int getMinute(void) const;
00238 int getSecond(void) const;
00239 char *getTime(char *buffer) const;
00240 time_t getTime(void) const;
00241 tm *getTime(tm *buf) const;
00242 void setTime(char *str, size_t size = 0);
00243 bool isValid(void) const;
00244
00245 friend Time operator+(const Time &time1, const Time &time2);
00246 friend Time operator-(const Time &time1, const Time &time2);
00247 friend Time operator+(const Time &time, const int val);
00248 friend Time operator-(const Time &time, const int val);
00249 friend Time operator+(const int val, const Time &time);
00250 friend Time operator-(const int val, const Time &time);
00251
00252 operator long()
00253 {return getValue();};
00254
00255 String operator()() const;
00256 Time& operator++();
00257 Time& operator--();
00258 Time& operator+=(const int val);
00259 Time& operator-=(const int val);
00260 int operator==(const Time &time);
00261 int operator!=(const Time &time);
00262 int operator<(const Time &time);
00263 int operator<=(const Time &time);
00264 int operator>(const Time &time);
00265 int operator>=(const Time &time);
00266 bool operator!() const
00267 {return !isValid();};
00268 };
00269
00280 class __EXPORT Datetime : public Date, public Time
00281 {
00282 public:
00283 Datetime(time_t tm);
00284 Datetime(tm *dt);
00285 Datetime(const char *str, size_t size = 0);
00286 Datetime(int year, unsigned month, unsigned day,
00287 int hour, int minute, int second);
00288 Datetime();
00289
00290 char *getDatetime(char *buffer) const;
00291 time_t getDatetime(void) const;
00292 bool isValid(void) const;
00293
00294 Datetime& operator=(const Datetime datetime);
00295 Datetime& operator+=(const Datetime &datetime);
00296 Datetime& operator-=(const Datetime &datetime);
00297 Datetime& operator+=(const Time &time);
00298 Datetime& operator-=(const Time &time);
00299
00300 int operator==(const Datetime&);
00301 int operator!=(const Datetime&);
00302 int operator<(const Datetime&);
00303 int operator<=(const Datetime&);
00304 int operator>(const Datetime&);
00305 int operator>=(const Datetime&);
00306 bool operator!() const;
00307
00308 String strftime(const char *format) const;
00309 };
00310
00317 class __EXPORT DateNumber : public Number, public Date
00318 {
00319 protected:
00320 void update(void)
00321 {fromJulian(buffer);};
00322
00323 public:
00324 DateNumber(char *buffer);
00325 };
00326
00327 #ifdef CCXX_NAMESPACES
00328 }
00329 #endif
00330
00331 #endif
00332