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