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