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