xref: /aoo4110/main/cosv/source/service/comfunc.cxx (revision b1cdbd2c)
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