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
GetInfo(ostream & o_rOutputMedium) const39*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
count_chars(const char * str,char c)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
str2date(const char * str,int & out_day,int & out_month,int & out_year)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
date2str(String & out_Str,int day,int month,int year)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
str2time(const char * str,int & out_hour,int & out_min,int & out_sec)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
time2str(String & out_Str,int hour,int min,int sec)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