xref: /AOO42X/main/autodoc/inc/cosv/csv_env.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_CSV_ENV_HXX
25*8a106958SDamjan Jovanovic #define CSV_CSV_ENV_HXX
26*8a106958SDamjan Jovanovic 
27*8a106958SDamjan Jovanovic 
28*8a106958SDamjan Jovanovic 
29*8a106958SDamjan Jovanovic //*******       Include c-language-types        ************//
30*8a106958SDamjan Jovanovic // size_t, wchar_t
31*8a106958SDamjan Jovanovic #include <stdlib.h>
32*8a106958SDamjan Jovanovic 
33*8a106958SDamjan Jovanovic 
34*8a106958SDamjan Jovanovic 
35*8a106958SDamjan Jovanovic //*******       Builtin types of exact length        ************//
36*8a106958SDamjan Jovanovic 
37*8a106958SDamjan Jovanovic // Exact length builtin types
38*8a106958SDamjan Jovanovic typedef signed char     INT8;
39*8a106958SDamjan Jovanovic typedef unsigned char   UINT8;
40*8a106958SDamjan Jovanovic typedef short           INT16;
41*8a106958SDamjan Jovanovic typedef unsigned short  UINT16;
42*8a106958SDamjan Jovanovic typedef long            INT32;
43*8a106958SDamjan Jovanovic typedef unsigned long   UINT32;
44*8a106958SDamjan Jovanovic typedef float           REAL32;
45*8a106958SDamjan Jovanovic typedef double          REAL64;
46*8a106958SDamjan Jovanovic 
47*8a106958SDamjan Jovanovic 
48*8a106958SDamjan Jovanovic // Additional builtin types
49*8a106958SDamjan Jovanovic typedef INT32        intt;      // standard sized integer.
50*8a106958SDamjan Jovanovic typedef UINT32       uintt;     // standard sized unsigned integer.
51*8a106958SDamjan Jovanovic typedef REAL64       real;      // standard sized real.
52*8a106958SDamjan Jovanovic 
53*8a106958SDamjan Jovanovic //  Constants
54*8a106958SDamjan Jovanovic //  ---------
55*8a106958SDamjan Jovanovic // Zero-pointer for use in ellipsed (...) parameter lists which expect a
56*8a106958SDamjan Jovanovic //   pointer which may have another size than an int.
57*8a106958SDamjan Jovanovic //   Must be a define to be used in precompiled headers:
58*8a106958SDamjan Jovanovic #define NIL   ((void*)0)
59*8a106958SDamjan Jovanovic // char '\0'
60*8a106958SDamjan Jovanovic #define NULCH '\0'
61*8a106958SDamjan Jovanovic 
62*8a106958SDamjan Jovanovic 
63*8a106958SDamjan Jovanovic 
64*8a106958SDamjan Jovanovic // Boolesche Operatoren
65*8a106958SDamjan Jovanovic #define AND &&
66*8a106958SDamjan Jovanovic #define OR  ||
67*8a106958SDamjan Jovanovic #define NOT !
68*8a106958SDamjan Jovanovic 
69*8a106958SDamjan Jovanovic // Macro for distinguishing dynamic allocated pointers from
70*8a106958SDamjan Jovanovic //   referencing pointers
71*8a106958SDamjan Jovanovic #define DYN     // Exact specification: DYN has to be used if and only if:
72*8a106958SDamjan Jovanovic                 //  1. DYN specifies a class member pointer or reference variable and
73*8a106958SDamjan Jovanovic                 //     the class must free the referenced memory.
74*8a106958SDamjan Jovanovic                 //  2. DYN specifies a pointer or reference (return-) parameter of a function
75*8a106958SDamjan Jovanovic                 //     and for in-parameters the function or its class
76*8a106958SDamjan Jovanovic                 //     must free the referenced memory, the parameter is then called
77*8a106958SDamjan Jovanovic                 //     a let-parameter.
78*8a106958SDamjan Jovanovic                 //     For out- and inout-parameters
79*8a106958SDamjan Jovanovic                 //     or return values the caller of the function hast to
80*8a106958SDamjan Jovanovic                 //     free the referenced memory.
81*8a106958SDamjan Jovanovic                 //
82*8a106958SDamjan Jovanovic                 //     It is irrelevant who allocated the memory!
83*8a106958SDamjan Jovanovic                 //
84*8a106958SDamjan Jovanovic                 //     DYN - variables use the prefixes "dp" or "dr" instead of "p" or "r".
85*8a106958SDamjan Jovanovic 
86*8a106958SDamjan Jovanovic 
87*8a106958SDamjan Jovanovic //******        Assertions          ******//
88*8a106958SDamjan Jovanovic 
89*8a106958SDamjan Jovanovic namespace csv
90*8a106958SDamjan Jovanovic {
91*8a106958SDamjan Jovanovic void                PerformAssertion(
92*8a106958SDamjan Jovanovic                         const char *        condition,
93*8a106958SDamjan Jovanovic                         const char *        file,
94*8a106958SDamjan Jovanovic                         unsigned            line );
95*8a106958SDamjan Jovanovic }
96*8a106958SDamjan Jovanovic 
97*8a106958SDamjan Jovanovic // Programming by contract
98*8a106958SDamjan Jovanovic #ifndef CSV_NO_ASSERTIONS
99*8a106958SDamjan Jovanovic 
100*8a106958SDamjan Jovanovic #ifdef CSV_USE_CSV_ASSERTIONS
101*8a106958SDamjan Jovanovic #define csv_assert(x)       ( (x) ? (void)(0) : ::csv::PerformAssertion( #x, __FILE__, __LINE__) )
102*8a106958SDamjan Jovanovic #else
103*8a106958SDamjan Jovanovic 
104*8a106958SDamjan Jovanovic // Save NDEBUG state
105*8a106958SDamjan Jovanovic #ifdef NDEBUG
106*8a106958SDamjan Jovanovic #define CSV_CSV_ENV_HXX_HAD_NDEBUG
107*8a106958SDamjan Jovanovic #undef NDEBUG
108*8a106958SDamjan Jovanovic #endif
109*8a106958SDamjan Jovanovic 
110*8a106958SDamjan Jovanovic #if OSL_DEBUG_LEVEL == 0
111*8a106958SDamjan Jovanovic #define NDEBUG
112*8a106958SDamjan Jovanovic #endif
113*8a106958SDamjan Jovanovic #include <assert.h>
114*8a106958SDamjan Jovanovic 
115*8a106958SDamjan Jovanovic #define csv_assert(x)       assert(x);
116*8a106958SDamjan Jovanovic 
117*8a106958SDamjan Jovanovic // Restore NDEBUG state
118*8a106958SDamjan Jovanovic #ifdef CSV_CSV_ENV_HXX_HAD_NDEBUG
119*8a106958SDamjan Jovanovic #define NDEBUG
120*8a106958SDamjan Jovanovic #else
121*8a106958SDamjan Jovanovic #undef NDEBUG
122*8a106958SDamjan Jovanovic #endif
123*8a106958SDamjan Jovanovic 
124*8a106958SDamjan Jovanovic #endif
125*8a106958SDamjan Jovanovic 
126*8a106958SDamjan Jovanovic #else // #ifndef CSV_NO_ASSERTIONS else
127*8a106958SDamjan Jovanovic 
128*8a106958SDamjan Jovanovic #define csv_assert(x)
129*8a106958SDamjan Jovanovic 
130*8a106958SDamjan Jovanovic #endif  // end ifndef CSV_NO_ASSERTIONS else
131*8a106958SDamjan Jovanovic 
132*8a106958SDamjan Jovanovic 
133*8a106958SDamjan Jovanovic 
134*8a106958SDamjan Jovanovic /* Additional Programming Conventions
135*8a106958SDamjan Jovanovic 
136*8a106958SDamjan Jovanovic 1. see above at "#define DYN"
137*8a106958SDamjan Jovanovic 2. function parameters get one of these prefixes:
138*8a106958SDamjan Jovanovic     - i_     := Function uses only the value, but must not change a referenced variable.
139*8a106958SDamjan Jovanovic     - o_     := Parameter is undefined until function has set it.
140*8a106958SDamjan Jovanovic                 Parametere must be set by the function.
141*8a106958SDamjan Jovanovic     - io_    := Function may use and change the referenced variable.
142*8a106958SDamjan Jovanovic     - pass_  := Funktion may use and change the referenced variable and HAS TO free the
143*8a106958SDamjan Jovanovic                 associated memory.
144*8a106958SDamjan Jovanovic 3. Global constants get the prefix 'C_', global variables the prefix 'G_'.
145*8a106958SDamjan Jovanovic 4. Static members end with an underscore '_'.
146*8a106958SDamjan Jovanovic 
147*8a106958SDamjan Jovanovic */
148*8a106958SDamjan Jovanovic 
149*8a106958SDamjan Jovanovic 
150*8a106958SDamjan Jovanovic #endif
151