xref: /AOO42X/main/autodoc/inc/cosv/comfunc.hxx (revision 9bce9b0d387299c68bd81d539e1478357a103de5)
1*8a106958SDamjan Jovanovic /**************************************************************
2*8a106958SDamjan Jovanovic  *
3*8a106958SDamjan Jovanovic  * Licensed to the Apache Software Foundation (ASF) under one
4*8a106958SDamjan Jovanovic  * or more contributor license agreements.  See the NOTICE file
5*8a106958SDamjan Jovanovic  * distributed with this work for additional information
6*8a106958SDamjan Jovanovic  * regarding copyright ownership.  The ASF licenses this file
7*8a106958SDamjan Jovanovic  * to you under the Apache License, Version 2.0 (the
8*8a106958SDamjan Jovanovic  * "License"); you may not use this file except in compliance
9*8a106958SDamjan Jovanovic  * with the License.  You may obtain a copy of the License at
10*8a106958SDamjan Jovanovic  *
11*8a106958SDamjan Jovanovic  *   http://www.apache.org/licenses/LICENSE-2.0
12*8a106958SDamjan Jovanovic  *
13*8a106958SDamjan Jovanovic  * Unless required by applicable law or agreed to in writing,
14*8a106958SDamjan Jovanovic  * software distributed under the License is distributed on an
15*8a106958SDamjan Jovanovic  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*8a106958SDamjan Jovanovic  * KIND, either express or implied.  See the License for the
17*8a106958SDamjan Jovanovic  * specific language governing permissions and limitations
18*8a106958SDamjan Jovanovic  * under the License.
19*8a106958SDamjan Jovanovic  *
20*8a106958SDamjan Jovanovic  *************************************************************/
21*8a106958SDamjan Jovanovic 
22*8a106958SDamjan Jovanovic 
23*8a106958SDamjan Jovanovic 
24*8a106958SDamjan Jovanovic #ifndef CSV_COMFUNC_HXX
25*8a106958SDamjan Jovanovic #define CSV_COMFUNC_HXX
26*8a106958SDamjan Jovanovic 
27*8a106958SDamjan Jovanovic #include <stdlib.h>
28*8a106958SDamjan Jovanovic 
29*8a106958SDamjan Jovanovic 
30*8a106958SDamjan Jovanovic 
31*8a106958SDamjan Jovanovic 
32*8a106958SDamjan Jovanovic namespace csv
33*8a106958SDamjan Jovanovic {
34*8a106958SDamjan Jovanovic     class String;
35*8a106958SDamjan Jovanovic 
36*8a106958SDamjan Jovanovic 
37*8a106958SDamjan Jovanovic // min, max and range functions
38*8a106958SDamjan Jovanovic template <class E>
39*8a106958SDamjan Jovanovic inline E            max(E in1, E in2);
40*8a106958SDamjan Jovanovic template <class E>
41*8a106958SDamjan Jovanovic inline E            min(E in1, E in2);
42*8a106958SDamjan Jovanovic template <class E>
43*8a106958SDamjan Jovanovic inline bool         in_range(E low, E val, E high);    // return low <= val < high;
44*8a106958SDamjan Jovanovic 
45*8a106958SDamjan Jovanovic 
46*8a106958SDamjan Jovanovic // string functions
47*8a106958SDamjan Jovanovic inline const char * valid_str(const char * str);
48*8a106958SDamjan Jovanovic inline bool         no_str(const char * str);       // return !str || !strlen(str)
49*8a106958SDamjan Jovanovic intt                count_chars(const char * str, char c);
50*8a106958SDamjan Jovanovic 
51*8a106958SDamjan Jovanovic 
52*8a106958SDamjan Jovanovic // endian functions
53*8a106958SDamjan Jovanovic template <class NUMTYPE>
54*8a106958SDamjan Jovanovic void                switch_endian(
55*8a106958SDamjan Jovanovic                         NUMTYPE &       o_rNumber,
56*8a106958SDamjan Jovanovic                         const NUMTYPE & i_rNumber );
57*8a106958SDamjan Jovanovic 
58*8a106958SDamjan Jovanovic // Zeit-Typecasts
59*8a106958SDamjan Jovanovic bool  str2date(const char * str, int & out_day, int & out_month, int & out_year);
60*8a106958SDamjan Jovanovic void  date2str(String       & out_Str, int day, int month, int year);
61*8a106958SDamjan Jovanovic bool  str2time(const char * str, int & out_hour, int & out_min, int & out_sec);
62*8a106958SDamjan Jovanovic void  time2str(String       & out_Str, int hour, int min, int sec);
63*8a106958SDamjan Jovanovic 
64*8a106958SDamjan Jovanovic class noncopyable
65*8a106958SDamjan Jovanovic {
66*8a106958SDamjan Jovanovic   protected:
noncopyable()67*8a106958SDamjan Jovanovic                         noncopyable() {}
~noncopyable()68*8a106958SDamjan Jovanovic                         ~noncopyable() {}
69*8a106958SDamjan Jovanovic   private:
70*8a106958SDamjan Jovanovic     // Private to make copying impossible:
71*8a106958SDamjan Jovanovic                         noncopyable(const noncopyable&);
72*8a106958SDamjan Jovanovic     noncopyable &       operator=(const noncopyable&);
73*8a106958SDamjan Jovanovic };
74*8a106958SDamjan Jovanovic 
75*8a106958SDamjan Jovanovic 
76*8a106958SDamjan Jovanovic 
77*8a106958SDamjan Jovanovic 
78*8a106958SDamjan Jovanovic // IMPLEMENTATION
79*8a106958SDamjan Jovanovic template <class E>
80*8a106958SDamjan Jovanovic inline E
max(E in1,E in2)81*8a106958SDamjan Jovanovic max(E in1, E in2)   { return in1 < in2 ? in2 : in1; }
82*8a106958SDamjan Jovanovic template <class E>
83*8a106958SDamjan Jovanovic inline E
min(E in1,E in2)84*8a106958SDamjan Jovanovic min(E in1, E in2)   { return in1 < in2 ? in1 : in2; }
85*8a106958SDamjan Jovanovic template <class E>
86*8a106958SDamjan Jovanovic inline bool
in_range(E low,E val,E high)87*8a106958SDamjan Jovanovic in_range(E low, E val, E high) { return low <= val AND val < high; }
88*8a106958SDamjan Jovanovic 
89*8a106958SDamjan Jovanovic inline const char *
valid_str(const char * str)90*8a106958SDamjan Jovanovic valid_str(const char * str) { return str != 0 ? str : ""; }
91*8a106958SDamjan Jovanovic inline bool
no_str(const char * str)92*8a106958SDamjan Jovanovic no_str(const char * str) { return str != 0 ? *str == '\0' : true; }
93*8a106958SDamjan Jovanovic 
94*8a106958SDamjan Jovanovic 
95*8a106958SDamjan Jovanovic template <class NUMTYPE>
96*8a106958SDamjan Jovanovic void
switch_endian(NUMTYPE & o_rNumber,const NUMTYPE & i_rNumber)97*8a106958SDamjan Jovanovic switch_endian( NUMTYPE &       o_rNumber,
98*8a106958SDamjan Jovanovic                const NUMTYPE & i_rNumber )
99*8a106958SDamjan Jovanovic {
100*8a106958SDamjan Jovanovic     char *          pFront = reinterpret_cast< char* >(&o_rNumber);
101*8a106958SDamjan Jovanovic     const char *    pBack  = reinterpret_cast< const char* >(&i_rNumber) + sizeof(NUMTYPE);
102*8a106958SDamjan Jovanovic 
103*8a106958SDamjan Jovanovic     for ( size_t p = 0; p < sizeof(NUMTYPE); --p )
104*8a106958SDamjan Jovanovic     {
105*8a106958SDamjan Jovanovic         *pFront++ = *(--pBack);
106*8a106958SDamjan Jovanovic     }
107*8a106958SDamjan Jovanovic }
108*8a106958SDamjan Jovanovic 
109*8a106958SDamjan Jovanovic 
110*8a106958SDamjan Jovanovic }   // namespace csv
111*8a106958SDamjan Jovanovic 
112*8a106958SDamjan Jovanovic 
113*8a106958SDamjan Jovanovic 
114*8a106958SDamjan Jovanovic 
115*8a106958SDamjan Jovanovic #define NON_COPYABLE(xy) \
116*8a106958SDamjan Jovanovic     private: xy(const xy &); xy & operator=(const xy &)
117*8a106958SDamjan Jovanovic 
118*8a106958SDamjan Jovanovic 
119*8a106958SDamjan Jovanovic 
120*8a106958SDamjan Jovanovic 
121*8a106958SDamjan Jovanovic #endif
122