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