|
|
| version 1.50, 2003/11/03 11:10:28 | version 1.55, 2003/11/20 17:07:43 |
|---|---|
| Line 5 | Line 5 |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) |
| */ | */ |
| static const char* IDENT_DATE_C="$Date$"; | static const char * const IDENT_DATE_C="$Date$"; |
| #include "classes.h" | #include "classes.h" |
| #include "pa_vmethod_frame.h" | #include "pa_vmethod_frame.h" |
| Line 19 static const char* IDENT_DATE_C="$Date$" | Line 19 static const char* IDENT_DATE_C="$Date$" |
| class MDate: public Methoded { | class MDate: public Methoded { |
| public: // VStateless_class | public: // VStateless_class |
| Value* create_new_value() { return new VDate(0); } | Value* create_new_value(Pool&) { return new VDate(0); } |
| public: | public: |
| MDate(); | MDate(); |
| Line 91 static int NN_year_to_NNNN(int year) { | Line 91 static int NN_year_to_NNNN(int year) { |
| const char* min=lsplit(&cur, ':'); | const char* min=lsplit(&cur, ':'); |
| const char* sec=cur; | const char* sec=cur; |
| tm tmIn={0}; | tm tmIn; memset(tmIn, 0, sizeof(tmIn)); |
| tmIn.tm_isdst=-1; | tmIn.tm_isdst=-1; |
| if(!month) | if(!month) |
| if(min) { | if(min) { |
| Line 138 static void _create(Request& r, MethodPa | Line 138 static void _create(Request& r, MethodPa |
| "invalid datetime"); | "invalid datetime"); |
| } | } |
| } else if(params.count()>=2) { // ^create(y;m;d[;h[;m[;s]]]) | } else if(params.count()>=2) { // ^create(y;m;d[;h[;m[;s]]]) |
| tm tmIn={0}; | tm tmIn; memset(tmIn, 0, sizeof(tmIn)); |
| tmIn.tm_isdst=-1; | tmIn.tm_isdst=-1; |
| tmIn.tm_year=NN_year_to_NNNN(params.as_int(0, "year must be int", r)); | tmIn.tm_year=NN_year_to_NNNN(params.as_int(0, "year must be int", r)); |
| tmIn.tm_mon=params.as_int(1, "month must be int", r)-1; | tmIn.tm_mon=params.as_int(1, "month must be int", r)-1; |
| Line 257 static Table& fill_month_days(Request& r | Line 257 static Table& fill_month_days(Request& r |
| int year=params.as_int(1, "year must be int", r); | int year=params.as_int(1, "year must be int", r); |
| int month=max(1, min(params.as_int(2, "month must be int", r), 12)) -1; | int month=max(1, min(params.as_int(2, "month must be int", r), 12)) -1; |
| tm tmIn={0, 0, 0, 1, month, year-1900}; | tm tmIn; |
| memset(tmIn, 0, sizeof(tmIn)); | |
| tmIn.tm_mday=1; | |
| tmIn.tm_mon=month; | |
| tmIn.tm_yday=year-1900; | |
| time_t t=mktime(&tmIn); | time_t t=mktime(&tmIn); |
| if(t<0) | if(t<0) |
| throw Exception(0, | throw Exception(0, |
| Line 273 static Table& fill_month_days(Request& r | Line 278 static Table& fill_month_days(Request& r |
| for(int _day=1-weekDay1; _day<=monthDays;) { | for(int _day=1-weekDay1; _day<=monthDays;) { |
| Table::element_type row(new ArrayString(7)); | Table::element_type row(new ArrayString(7)); |
| // calculating year week no [1..54] | // calculating year week no [1..54] |
| char *weekno_buf; | char *weekno_buf=0; // surely would be assigned to, but to calm down compiler |
| size_t weekno_size; | size_t weekno_size=0; // same |
| int weekyear; | int weekyear=0; // same |
| // 0..6 week days-cells fill with month days | // 0..6 week days-cells fill with month days |
| for(int wday=0; wday<7; wday++, _day++) { | for(int wday=0; wday<7; wday++, _day++) { |
| String* cell=new String; | String* cell=new String; |
| Line 326 static Table& fill_week_days(Request& r, | Line 331 static Table& fill_week_days(Request& r, |
| int month=max(1, min(params.as_int(2, "month must be int", r), 12)) -1; | int month=max(1, min(params.as_int(2, "month must be int", r), 12)) -1; |
| int day=params.as_int(3, "day must be int", r); | int day=params.as_int(3, "day must be int", r); |
| tm tmIn={0, 0, 18, day, month, year-1900}; | tm tmIn; |
| memset(tmIn, 0, sizeof(tmIn)); | |
| tmIn.tm_hour=18; | |
| tmIn.tm_mday=day; | |
| tmIn.tm_mon=month; | |
| tmIn.tm_yday=year-1900; | |
| time_t t=mktime(&tmIn); | time_t t=mktime(&tmIn); |
| if(t<0) | if(t<0) |
| throw Exception(0, | throw Exception(0, |
| Line 389 static void _unix_timestamp(Request& r, | Line 400 static void _unix_timestamp(Request& r, |
| throw Exception(0, | throw Exception(0, |
| 0, | 0, |
| "date object already constructed"); | "date object already constructed"); |
| // ^unix-timestamp(time_t) | // ^unix-timestamp(time_t) |
| time_t t=(time_t)params.as_int(0, "Unix timestamp must be integer", r); | time_t t=(time_t)params.as_int(0, "Unix timestamp must be integer", r); |