1*11c03c6dSDamjan Jovanovic /************************************************************** 2*11c03c6dSDamjan Jovanovic * 3*11c03c6dSDamjan Jovanovic * Licensed to the Apache Software Foundation (ASF) under one 4*11c03c6dSDamjan Jovanovic * or more contributor license agreements. See the NOTICE file 5*11c03c6dSDamjan Jovanovic * distributed with this work for additional information 6*11c03c6dSDamjan Jovanovic * regarding copyright ownership. The ASF licenses this file 7*11c03c6dSDamjan Jovanovic * to you under the Apache License, Version 2.0 (the 8*11c03c6dSDamjan Jovanovic * "License"); you may not use this file except in compliance 9*11c03c6dSDamjan Jovanovic * with the License. You may obtain a copy of the License at 10*11c03c6dSDamjan Jovanovic * 11*11c03c6dSDamjan Jovanovic * http://www.apache.org/licenses/LICENSE-2.0 12*11c03c6dSDamjan Jovanovic * 13*11c03c6dSDamjan Jovanovic * Unless required by applicable law or agreed to in writing, 14*11c03c6dSDamjan Jovanovic * software distributed under the License is distributed on an 15*11c03c6dSDamjan Jovanovic * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*11c03c6dSDamjan Jovanovic * KIND, either express or implied. See the License for the 17*11c03c6dSDamjan Jovanovic * specific language governing permissions and limitations 18*11c03c6dSDamjan Jovanovic * under the License. 19*11c03c6dSDamjan Jovanovic * 20*11c03c6dSDamjan Jovanovic *************************************************************/ 21*11c03c6dSDamjan Jovanovic 22*11c03c6dSDamjan Jovanovic 23*11c03c6dSDamjan Jovanovic 24*11c03c6dSDamjan Jovanovic #include <precomp.h> 25*11c03c6dSDamjan Jovanovic 26*11c03c6dSDamjan Jovanovic #include <ctype.h> 27*11c03c6dSDamjan Jovanovic #include <cosv/comfunc.hxx> 28*11c03c6dSDamjan Jovanovic #include <cosv/string.hxx> 29*11c03c6dSDamjan Jovanovic #include <cosv/x.hxx> 30*11c03c6dSDamjan Jovanovic #include <cosv/std_outp.hxx> 31*11c03c6dSDamjan Jovanovic 32*11c03c6dSDamjan Jovanovic 33*11c03c6dSDamjan Jovanovic 34*11c03c6dSDamjan Jovanovic namespace csv 35*11c03c6dSDamjan Jovanovic { 36*11c03c6dSDamjan Jovanovic 37*11c03c6dSDamjan Jovanovic 38*11c03c6dSDamjan Jovanovic void 39*11c03c6dSDamjan Jovanovic X_Default::GetInfo( ostream & o_rOutputMedium ) const 40*11c03c6dSDamjan Jovanovic { 41*11c03c6dSDamjan Jovanovic o_rOutputMedium << "Error (general exception): "; 42*11c03c6dSDamjan Jovanovic o_rOutputMedium << sMessage 43*11c03c6dSDamjan Jovanovic << Endl; 44*11c03c6dSDamjan Jovanovic } 45*11c03c6dSDamjan Jovanovic 46*11c03c6dSDamjan Jovanovic intt 47*11c03c6dSDamjan Jovanovic count_chars(const char * str, char c) 48*11c03c6dSDamjan Jovanovic { 49*11c03c6dSDamjan Jovanovic intt nCount = 0; 50*11c03c6dSDamjan Jovanovic for ( const char * pSpc = strchr(str, c); 51*11c03c6dSDamjan Jovanovic pSpc != 0; 52*11c03c6dSDamjan Jovanovic pSpc = strchr(pSpc+1, c) ) 53*11c03c6dSDamjan Jovanovic { 54*11c03c6dSDamjan Jovanovic nCount++; 55*11c03c6dSDamjan Jovanovic } 56*11c03c6dSDamjan Jovanovic return nCount; 57*11c03c6dSDamjan Jovanovic } 58*11c03c6dSDamjan Jovanovic 59*11c03c6dSDamjan Jovanovic 60*11c03c6dSDamjan Jovanovic 61*11c03c6dSDamjan Jovanovic // Zeit-Typecasts 62*11c03c6dSDamjan Jovanovic bool 63*11c03c6dSDamjan Jovanovic str2date(const char * str, int & out_day, int & out_month, int & out_year) 64*11c03c6dSDamjan Jovanovic { 65*11c03c6dSDamjan Jovanovic const char * z = str; 66*11c03c6dSDamjan Jovanovic out_day = 0; 67*11c03c6dSDamjan Jovanovic out_month = 0; 68*11c03c6dSDamjan Jovanovic out_year = 0; 69*11c03c6dSDamjan Jovanovic 70*11c03c6dSDamjan Jovanovic while (isdigit(*z)) 71*11c03c6dSDamjan Jovanovic out_day = 10*out_day + *(z++) - '0'; 72*11c03c6dSDamjan Jovanovic if (*z == 0) 73*11c03c6dSDamjan Jovanovic return false; 74*11c03c6dSDamjan Jovanovic z++; 75*11c03c6dSDamjan Jovanovic while (isdigit(*z)) 76*11c03c6dSDamjan Jovanovic out_month = 10*out_month + *(z++) - '0'; 77*11c03c6dSDamjan Jovanovic if (*z == 0) 78*11c03c6dSDamjan Jovanovic return false; 79*11c03c6dSDamjan Jovanovic z++; 80*11c03c6dSDamjan Jovanovic while (isdigit(*z)) 81*11c03c6dSDamjan Jovanovic out_year = 10*out_year + *(z++) - '0'; 82*11c03c6dSDamjan Jovanovic return true; 83*11c03c6dSDamjan Jovanovic } 84*11c03c6dSDamjan Jovanovic 85*11c03c6dSDamjan Jovanovic void 86*11c03c6dSDamjan Jovanovic date2str(String & out_Str, int day, int month, int year) 87*11c03c6dSDamjan Jovanovic { 88*11c03c6dSDamjan Jovanovic char buf[11] = "00.00.0000"; 89*11c03c6dSDamjan Jovanovic buf[0] = static_cast<char>(day/10 + '0'); 90*11c03c6dSDamjan Jovanovic buf[1] = static_cast<char>(day%10 + '0'); 91*11c03c6dSDamjan Jovanovic buf[3] = static_cast<char>(month/10 + '0'); 92*11c03c6dSDamjan Jovanovic buf[4] = static_cast<char>(month%10 + '0'); 93*11c03c6dSDamjan Jovanovic 94*11c03c6dSDamjan Jovanovic if (year < 100) 95*11c03c6dSDamjan Jovanovic { 96*11c03c6dSDamjan Jovanovic buf[6] = static_cast<char>(year/10 + '0'); 97*11c03c6dSDamjan Jovanovic buf[7] = static_cast<char>(year%10 + '0'); 98*11c03c6dSDamjan Jovanovic buf[8] = 0; 99*11c03c6dSDamjan Jovanovic } 100*11c03c6dSDamjan Jovanovic else 101*11c03c6dSDamjan Jovanovic { 102*11c03c6dSDamjan Jovanovic buf[6] = static_cast<char>(year/1000 + '0'); 103*11c03c6dSDamjan Jovanovic buf[7] = static_cast<char>(year%1000/100 + '0'); 104*11c03c6dSDamjan Jovanovic buf[8] = static_cast<char>(year%100/10 + '0'); 105*11c03c6dSDamjan Jovanovic buf[9] = static_cast<char>(year%10 + '0'); 106*11c03c6dSDamjan Jovanovic } 107*11c03c6dSDamjan Jovanovic out_Str = buf; 108*11c03c6dSDamjan Jovanovic } 109*11c03c6dSDamjan Jovanovic 110*11c03c6dSDamjan Jovanovic bool 111*11c03c6dSDamjan Jovanovic str2time(const char * str, int & out_hour, int & out_min, int & out_sec) 112*11c03c6dSDamjan Jovanovic { 113*11c03c6dSDamjan Jovanovic const char * z = str; 114*11c03c6dSDamjan Jovanovic out_hour = 0; 115*11c03c6dSDamjan Jovanovic out_min = 0; 116*11c03c6dSDamjan Jovanovic out_sec = 0; 117*11c03c6dSDamjan Jovanovic 118*11c03c6dSDamjan Jovanovic while (isdigit(*z)) 119*11c03c6dSDamjan Jovanovic out_hour = 10*out_hour + *(z++) - '0'; 120*11c03c6dSDamjan Jovanovic if (*z == 0) 121*11c03c6dSDamjan Jovanovic return false; 122*11c03c6dSDamjan Jovanovic z++; 123*11c03c6dSDamjan Jovanovic while (isdigit(*z)) 124*11c03c6dSDamjan Jovanovic out_min = 10*out_min + *(z++) - '0'; 125*11c03c6dSDamjan Jovanovic if (*z == 0) 126*11c03c6dSDamjan Jovanovic return false; 127*11c03c6dSDamjan Jovanovic z++; 128*11c03c6dSDamjan Jovanovic while (isdigit(*z)) 129*11c03c6dSDamjan Jovanovic out_sec = 10*out_sec + *(z++) - '0'; 130*11c03c6dSDamjan Jovanovic return true; 131*11c03c6dSDamjan Jovanovic } 132*11c03c6dSDamjan Jovanovic 133*11c03c6dSDamjan Jovanovic void 134*11c03c6dSDamjan Jovanovic time2str(String & out_Str, int hour, int min, int sec) 135*11c03c6dSDamjan Jovanovic { 136*11c03c6dSDamjan Jovanovic char buf[9] = "00:00:00"; 137*11c03c6dSDamjan Jovanovic buf[0] = static_cast<char>(hour/10 + '0'); 138*11c03c6dSDamjan Jovanovic buf[1] = static_cast<char>(hour%10 + '0'); 139*11c03c6dSDamjan Jovanovic buf[3] = static_cast<char>(min/10 + '0'); 140*11c03c6dSDamjan Jovanovic buf[4] = static_cast<char>(min%10 + '0'); 141*11c03c6dSDamjan Jovanovic buf[6] = static_cast<char>(sec/10 + '0'); 142*11c03c6dSDamjan Jovanovic buf[7] = static_cast<char>(sec%10 + '0'); 143*11c03c6dSDamjan Jovanovic out_Str = buf; 144*11c03c6dSDamjan Jovanovic } 145*11c03c6dSDamjan Jovanovic 146*11c03c6dSDamjan Jovanovic 147*11c03c6dSDamjan Jovanovic 148*11c03c6dSDamjan Jovanovic } // namespace csv 149*11c03c6dSDamjan Jovanovic 150*11c03c6dSDamjan Jovanovic 151*11c03c6dSDamjan Jovanovic 152