MeshLink
Computational geometry access
Types.h
Go to the documentation of this file.
1 /****************************************************************************
2  *
3  * Copyright (c) 2019-2020 Pointwise, Inc.
4  * All rights reserved.
5  *
6  * This sample Pointwise source code is not supported by Pointwise, Inc.
7  * It is provided freely for demonstration purposes only.
8  * SEE THE WARRANTY DISCLAIMER AT THE BOTTOM OF THIS FILE.
9  *
10  ***************************************************************************/
11 
12 /****************************************************************************
13 *
14 * Variable Type Definitions
15 *
16 ***************************************************************************/
17 
18 #ifndef _MESHLINK_PUBLICDEFS_H_
19 #define _MESHLINK_PUBLICDEFS_H_
20 
21 #if defined(DEBUG)
22  #include <assert.h>
23 #endif
24 
25 #undef EXPORT_FUNCTION
26 #if defined(DLL_LIBRARY_BUILD)
27 #if defined(WINDOWS)
28 # define EXPORT_FUNCTION(F) F
29 # if defined(STATIC_LIBRARY)
30 # define ML_DLLIMPORT
31 # define ML_DLLEXPORT
32 # else
33 # define ML_DLLIMPORT __declspec(dllimport)
34 # define ML_DLLEXPORT __declspec(dllexport)
35 # endif
36 # define ML_EXTERN extern "C"
37 #else
38 # define EXPORT_FUNCTION(F) F __attribute__ ((visibility ("default") ))
39 # define ML_DLLIMPORT
40 # define ML_DLLEXPORT
41 # define ML_EXTERN extern "C"
42 #
43 #endif /* WINDOWS */
44 
45 #else
46  /* static library */
47 # define ML_DLLIMPORT
48 # define ML_DLLEXPORT
49 
50 #ifdef __cplusplus
51 # define ML_EXTERN extern "C"
52 # else
53 # define ML_EXTERN
54 # endif
55 
56 # if defined(WINDOWS)
57 # define EXPORT_FUNCTION(F) F
58 # else
59 # define EXPORT_FUNCTION(F) F __attribute__ ((visibility ("default") ))
60 # endif
61 #endif
62 
63 #undef ML_STORAGE_CLASS
64 #ifdef BUILD_MESHLINK
65 # define ML_STORAGE_CLASS ML_DLLEXPORT
66 #else
67 # define ML_STORAGE_CLASS ML_DLLIMPORT
68 #endif
69 
70 /* Bit length noted ints */
72 typedef signed char MLINT8;
74 typedef unsigned char MLUINT8;
75 
77 typedef short MLINT16;
79 typedef unsigned short MLUINT16;
80 #ifndef MLINT16_FORMAT
81 # define MLINT16_FORMAT "hd"
82 # define MLUINT16_FORMAT "hu"
83 #endif /* !MLINT16_FORMAT */
84 
86 typedef int MLINT32;
88 typedef unsigned int MLUINT32;
89 #ifndef MLINT32_FORMAT
90 # define MLINT32_FORMAT "d"
91 # define MLUINT32_FORMAT "u"
92 #endif /* !MLINT32_FORMAT */
93 
94 #if defined(darwin) && defined(IS64BIT)
95  typedef long MLINT64;
96  typedef unsigned long MLUINT64;
97 # ifndef MLINT64_FORMAT
98 # define MLINT64_FORMAT "ld"
99 # define MLUINT64_FORMAT "lu"
100 # endif /* !MLINT64_FORMAT */
101 #else
102 
103  typedef long long MLINT64;
105  typedef unsigned long long MLUINT64;
106 # ifndef MLINT64_FORMAT
107 # define MLINT64_FORMAT "lld"
108 # define MLUINT64_FORMAT "llu"
109 # endif /* !MLINT64_FORMAT */
110 #endif /* darwin && IS64BIT */
111 
113 typedef float MLFLOAT;
115 typedef double MLREAL;
116 
117 /* MLINT & MLUINT are guaranteed to be sizeof(void*) for the target machine */
118 #ifdef IS64BIT
119 
120  typedef MLINT64 MLINT;
122  typedef MLUINT64 MLUINT;
123 # ifndef MLINT_FORMAT
124 # define MLINT_FORMAT MLINT64_FORMAT
125 # define MLUINT_FORMAT MLUINT64_FORMAT
126 # endif
127 #else
128  typedef MLINT32 MLINT;
129  typedef MLUINT32 MLUINT;
130 # ifndef MLINT_FORMAT
131 # define MLINT_FORMAT MLINT32_FORMAT
132 # define MLUINT_FORMAT MLUINT32_FORMAT
133 # endif
134 #endif /* IS64BIT */
135 
136 #ifndef MLSIZE_T_FORMAT
137 # if defined(_MSC_VER)
138 # define MLSIZE_T_FORMAT "Iu"
139 # define MLSSIZE_T_FORMAT "Id"
140 # define MLPTRDIFF_T_FORMAT "Id"
141 # elif defined(__GNUC__)
142 # define MLSIZE_T_FORMAT "zu"
143 # define MLSSIZE_T_FORMAT "zd"
144 # define MLPTRDIFF_T_FORMAT "zd"
145 # else
146  /* TODO figure out which format use. */
147 # define MLSIZE_T_FORMAT "zu"
148 # define MLSSIZE_T_FORMAT "zd"
149 # define MLPTRDIFF_T_FORMAT "zd"
150 # endif
151 #endif
152 
154 typedef MLREAL MLVector3D[3];
156 typedef MLREAL MLVector2D[2];
157 
160 typedef void * MeshLinkObject;
161 
163 typedef void const * MeshLinkConstObject;
167 typedef MeshLinkObject GeometryKernelObj;
169 typedef MeshLinkObject MeshLinkParserObj;
171 typedef MeshLinkObject MeshLinkWriterObj;
172 
174 typedef MeshLinkObject MeshAssociativityObj;
176 typedef MeshLinkObject MeshLinkFileObj;
178 typedef MeshLinkConstObject MeshLinkFileConstObj;
179 
181 typedef MeshLinkObject MeshTopoObj;
183 typedef MeshLinkConstObject MeshTopoConstObj;
184 
186 typedef MeshLinkObject MeshModelObj;
188 typedef MeshModelObj MeshModelObject;
191 typedef MeshLinkObject MeshSheetObj;
193 typedef MeshLinkObject MeshStringObj;
195 typedef MeshLinkObject MeshPointObj;
197 typedef MeshLinkObject MeshEdgeObj;
199 typedef MeshLinkObject MeshFaceObj;
201 typedef MeshLinkObject MeshLinkTransformObj;
202 typedef MeshLinkConstObject MeshLinkTransformConstObj;
204 typedef MeshLinkObject MeshElementLinkageObj;
206 typedef MeshLinkObject ParamVertexObj;
208 typedef MeshLinkConstObject ParamVertexConstObj;
209 
211 typedef MeshLinkObject GeometryGroupObj;
213 typedef MeshLinkConstObject GeometryGroupConstObj;
214 
216 typedef MeshLinkObject KernelDataObj;
219 typedef MeshLinkObject ProjectionDataObj;
220 
225 
230 
235 
240 typedef int MLORIENT;
241 
246 typedef int MLSTATUS;
247 
252 typedef int MLTYPE;
253  ML_EXTERN ML_STORAGE_CLASS
258 void ML_assert(int val);
259 
260 /* Python wrapper test functions */
262 void printVec3(MLVector3D vec);
263 void printVec2(MLVector2D vec);
264 void addVec3(MLVector3D vec1, MLVector3D vec2);
267 #endif /* !_MESHLINK_PUBLICDEFS_H_ */
268 
269 /****************************************************************************
270  *
271  * DISCLAIMER:
272  * TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, POINTWISE DISCLAIMS
273  * ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED
274  * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
275  * PURPOSE, WITH REGARD TO THIS SCRIPT. TO THE MAXIMUM EXTENT PERMITTED
276  * BY APPLICABLE LAW, IN NO EVENT SHALL POINTWISE BE LIABLE TO ANY PARTY
277  * FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
278  * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF
279  * BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE
280  * USE OF OR INABILITY TO USE THIS SCRIPT EVEN IF POINTWISE HAS BEEN
281  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES AND REGARDLESS OF THE
282  * FAULT OR NEGLIGENCE OF POINTWISE.
283  *
284  ***************************************************************************/
MeshLinkObject MeshPointObj
Opaque pointer to a MeshPoint object.
Definition: Types.h:195
MeshLinkConstObject MeshLinkTransformConstObj
Definition: Types.h:202
MeshLinkConstObject MeshLinkFileConstObj
Opaque pointer to a constant generic MeshLinkFile object.
Definition: Types.h:178
MeshLinkObject ProjectionDataObj
Opaque pointer to a ProjectionData object.
Definition: Types.h:219
MeshLinkObject MeshLinkFileObj
Opaque pointer to a generic MeshLinkFile object.
Definition: Types.h:176
MeshLinkObject MeshModelObj
Opaque pointer to a MeshModel object.
Definition: Types.h:186
MeshLinkObject MeshTopoObj
Opaque pointer to a generic MeshTopo object.
Definition: Types.h:181
MeshLinkObject MeshStringObj
Opaque pointer to a MeshString object.
Definition: Types.h:193
short MLINT16
16-bit integer
Definition: Types.h:77
MeshLinkObject ParamVertexObj
Opaque pointer to a ParamVertex object.
Definition: Types.h:206
MeshLinkStatus
Enumeration of values returned for MLSTATUS.
Definition: Types.h:229
MeshLinkObject MeshFaceObj
Opaque pointer to a MeshFace object.
Definition: Types.h:199
MLUINT64 MLUINT
Standard unsigned integer - value depends on IS64BIT macro.
Definition: Types.h:122
unsigned long MLUINT64
64-bit unsigned integer
Definition: Types.h:96
int MLSTATUS
Return status of most public functions.
Definition: Types.h:246
int MLORIENT
Geometry orientation with respect to container entity.
Definition: Types.h:240
MeshLinkObject MeshEdgeObj
Opaque pointer to a MeshEdge object.
Definition: Types.h:197
MeshLinkObject GeometryKernelObj
Opaque pointer to a GeometryKernel object.
Definition: Types.h:167
void ML_assert(int val)
Helper function for trapping assertions.
long MLINT64
64-bit integer
Definition: Types.h:95
MeshLinkObject MeshLinkTransformObj
Opaque pointer to a MeshLinkTransform object.
Definition: Types.h:201
MLREAL MLVector3D[3]
3D vector of MLREAL
Definition: Types.h:154
MeshLinkObject MeshLinkWriterObj
Opaque pointer to a MeshLinkWriter object.
Definition: Types.h:171
MeshLinkConstObject ParamVertexConstObj
Opaque pointer to a constant ParamVertex object.
Definition: Types.h:208
MeshLinkObject MeshAssociativityObj
Opaque pointer to a MeshAssociativity object.
Definition: Types.h:174
MeshLinkObject MeshLinkParserObj
Opaque pointer to a MeshLinkParser object.
Definition: Types.h:169
MeshLinkGeomType
Enumeration of values returned for MLTYPE.
Definition: Types.h:234
MeshLinkObject MeshSheetObj
Opaque pointer to a MeshSheet object.
Definition: Types.h:191
float MLFLOAT
32-bit real
Definition: Types.h:113
MeshLinkObject MeshElementLinkageObj
Opaque pointer to a MeshElementLinkage object.
Definition: Types.h:204
MLREAL MLVector2D[2]
2D vector of MLREAL
Definition: Types.h:156
unsigned short MLUINT16
16-bit unsigned integer
Definition: Types.h:79
unsigned char MLUINT8
8-bit unsigned integer
Definition: Types.h:74
double MLREAL
64-bit real
Definition: Types.h:115
unsigned int MLUINT32
32-bit unsigned integer
Definition: Types.h:88
MeshLinkObject GeometryGroupObj
Opaque pointer to a GeometryGroup object.
Definition: Types.h:211
MeshLinkOrientation
Enumeration of values returned for MLORIENT.
Definition: Types.h:224
int MLINT32
32-bit integer
Definition: Types.h:86
MeshLinkConstObject GeometryGroupConstObj
Opaque pointer to a constant GeometryGroup object.
Definition: Types.h:213
signed char MLINT8
8-bit integer
Definition: Types.h:72
int MLTYPE
Basic geometry type.
Definition: Types.h:252
MLINT64 MLINT
Standard integer - value depends on IS64BIT macro.
Definition: Types.h:120
MeshLinkConstObject MeshTopoConstObj
Opaque pointer to a constant generic MeshTopo object.
Definition: Types.h:183