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