GDAL

internal_qhull_headers.h
1 /******************************************************************************
2 * $Id$
3 *
4 * Project: GDAL
5 * Purpose: Includes internal qhull headers
6 * Author: Even Rouault <even dot rouault at spatialys dot com>
7 *
8 ******************************************************************************
9 * Copyright (c) 2015, Even Rouault <even dot rouault at spatialys dot com>
10 *
11 * Permission is hereby granted, free of charge, to any person obtaining a
12 * copy of this software and associated documentation files (the "Software"),
13 * to deal in the Software without restriction, including without limitation
14 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15 * and/or sell copies of the Software, and to permit persons to whom the
16 * Software is furnished to do so, subject to the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be included
19 * in all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27 * DEALINGS IN THE SOFTWARE.
28 *****************************************************************************/
29
30 #ifndef INTERNAL_QHULL_HEADERS_H
31 #define INTERNAL_QHULL_HEADERS_H
32
33 #ifdef HAVE_GCC_SYSTEM_HEADER
34 #pragma GCC system_header
35 #endif
36
37 #if defined(__MINGW64__)
38 /* See https://github.com/scipy/scipy/issues/3237 */
39 /* This ensures that ptr_intT is a long lon on MinGW 64 */
40 #define _MSC_VER 1
41 #endif
42
43 // To avoid issue with icc that defines a template in qhull_a.h
44 #if defined(__INTEL_COMPILER)
45 #define QHULL_OS_WIN
46 #endif
47
48 /* Below a lot of renames and static definition of the symbols so as */
49 /* to avoid "contaminating" with a potential external qhull */
50 typedef struct setT gdal_setT;
51 typedef struct facetT gdal_facetT;
52 typedef struct vertexT gdal_vertexT;
53 typedef struct qhT gdal_qhT;
54 typedef struct ridgeT gdal_ridgeT;
55 #define gdal_realT double
56 #define gdal_pointT double
57 #define gdal_realT double
58 #define gdal_coordT double
59 #define gdal_boolT unsigned int
60
61 #define qhmem gdal_qhmem
62 #define qh_rand_seed gdal_qh_rand_seed
63 #define qh_qh gdal_qh_qh
64 #define qh_qhstat gdal_qh_qhstat
65 #define qh_version gdal_qh_version
66 #define qhull_inuse gdal_qhull_inuse
67
68 #define qh_compare_vertexpoint gdal_qh_compare_vertexpoint
69 static int qh_compare_vertexpoint();
70
71 #define qh_intcompare gdal_qh_intcompare
72
73 #ifdef notdef
74
75 Generated by the following Python script + manual cleaning of the result
76
77 f = open('headers.txt')
78 for line in f.readlines():
79 line = line[0:-1].strip()
80 if len(line) > 3 and line[0] != '#' and (line[-2:] == ');' or line[-1:] == ',') and \
81 line.find('(') > 0 and line.find('=') < 0 and line.find('typedef') < 0 and line.find('are used by') < 0 and \
82 line.find('&') < 0 and line.find('"') < 0 and line.find(' ') < line.find('('):
83 line = line[0:line.find('(')].strip()
84 last_star = line.rfind('*')
85 last_space = line.rfind(' ')
86 if last_star > last_space:
87 (type, name) = (line[0:last_star+1], line[last_star+1:])
88 else:
89 (type, name) = (line[0:last_space], line[last_space+1:])
90 type = type.strip()
91 print('#define %s gdal_%s' % (name, name))
92 if type.find('void') != 0 and type.find('int') != 0 and type.find('char') != 0 and type.find('double') != 0 and type.find('unsigned') != 0:
93 type = 'gdal_' + type
94 print("static %s %s();" % (type, name))
95 #endif
96
97 #define qh_backnormal gdal_qh_backnormal
98 static void qh_backnormal();
99 #define qh_distplane gdal_qh_distplane
100 static void qh_distplane();
101 #define qh_findbest gdal_qh_findbest
102 static gdal_facetT * qh_findbest();
103 #define qh_findbesthorizon gdal_qh_findbesthorizon
104 static gdal_facetT * qh_findbesthorizon();
105 #define qh_findbestnew gdal_qh_findbestnew
106 static gdal_facetT * qh_findbestnew();
107 #define qh_gausselim gdal_qh_gausselim
108 static void qh_gausselim();
109 #define qh_getangle gdal_qh_getangle
110 static gdal_realT qh_getangle();
111 #define qh_getcenter gdal_qh_getcenter
112 static gdal_pointT * qh_getcenter();
113 #define qh_getcentrum gdal_qh_getcentrum
114 static gdal_pointT * qh_getcentrum();
115 #define qh_getdistance gdal_qh_getdistance
116 static gdal_realT qh_getdistance();
117 #define qh_normalize gdal_qh_normalize
118 static void qh_normalize();
119 #define qh_normalize2 gdal_qh_normalize2
120 static void qh_normalize2();
121 #define qh_projectpoint gdal_qh_projectpoint
122 static gdal_pointT * qh_projectpoint();
123 #define qh_setfacetplane gdal_qh_setfacetplane
124 static void qh_setfacetplane();
125 #define qh_sethyperplane_det gdal_qh_sethyperplane_det
126 static void qh_sethyperplane_det();
127 #define qh_sethyperplane_gauss gdal_qh_sethyperplane_gauss
128 static void qh_sethyperplane_gauss();
129 #define qh_sharpnewfacets gdal_qh_sharpnewfacets
130 static gdal_boolT qh_sharpnewfacets();
131 #define qh_copypoints gdal_qh_copypoints
132 static gdal_coordT * qh_copypoints();
133 #define qh_crossproduct gdal_qh_crossproduct
134 static void qh_crossproduct();
135 #define qh_determinant gdal_qh_determinant
136 static gdal_realT qh_determinant();
137 #define qh_detjoggle gdal_qh_detjoggle
138 static gdal_realT qh_detjoggle();
139 #define qh_detroundoff gdal_qh_detroundoff
140 static void qh_detroundoff();
141 #define qh_detsimplex gdal_qh_detsimplex
142 static gdal_realT qh_detsimplex();
143 #define qh_distnorm gdal_qh_distnorm
144 static gdal_realT qh_distnorm();
145 #define qh_distround gdal_qh_distround
146 static gdal_realT qh_distround();
147 #define qh_divzero gdal_qh_divzero
148 static gdal_realT qh_divzero();
149 #define qh_facetarea gdal_qh_facetarea
150 static gdal_realT qh_facetarea();
151 #define qh_facetarea_simplex gdal_qh_facetarea_simplex
152 static gdal_realT qh_facetarea_simplex();
153 #define qh_facetcenter gdal_qh_facetcenter
154 static gdal_pointT * qh_facetcenter();
155 #define qh_findgooddist gdal_qh_findgooddist
156 static gdal_facetT * qh_findgooddist();
157 #define qh_getarea gdal_qh_getarea
158 static void qh_getarea();
159 #define qh_gram_schmidt gdal_qh_gram_schmidt
160 static gdal_boolT qh_gram_schmidt();
161 #define qh_inthresholds gdal_qh_inthresholds
162 static gdal_boolT qh_inthresholds();
163 #define qh_joggleinput gdal_qh_joggleinput
164 static void qh_joggleinput();
165 #define qh_maxabsval gdal_qh_maxabsval
166 static gdal_realT * qh_maxabsval();
167 #define qh_maxmin gdal_qh_maxmin
168 static gdal_setT * qh_maxmin();
169 #define qh_maxouter gdal_qh_maxouter
170 static gdal_realT qh_maxouter();
171 #define qh_maxsimplex gdal_qh_maxsimplex
172 static void qh_maxsimplex();
173 #define qh_minabsval gdal_qh_minabsval
174 static gdal_realT qh_minabsval();
175 #define qh_mindiff gdal_qh_mindiff
176 static int qh_mindiff();
177 #define qh_orientoutside gdal_qh_orientoutside
178 static gdal_boolT qh_orientoutside();
179 #define qh_outerinner gdal_qh_outerinner
180 static void qh_outerinner();
181 #define qh_pointdist gdal_qh_pointdist
182 static gdal_coordT qh_pointdist();
183 #define qh_printmatrix gdal_qh_printmatrix
184 static void qh_printmatrix();
185 #define qh_printpoints gdal_qh_printpoints
186 static void qh_printpoints();
187 #define qh_projectinput gdal_qh_projectinput
188 static void qh_projectinput();
189 #define qh_projectpoints gdal_qh_projectpoints
190 static void qh_projectpoints();
191 #define qh_rotateinput gdal_qh_rotateinput
192 static void qh_rotateinput();
193 #define qh_rotatepoints gdal_qh_rotatepoints
194 static void qh_rotatepoints();
195 #define qh_scaleinput gdal_qh_scaleinput
196 static void qh_scaleinput();
197 #define qh_scalelast gdal_qh_scalelast
198 static void qh_scalelast();
199 #define qh_scalepoints gdal_qh_scalepoints
200 static void qh_scalepoints();
201 #define qh_sethalfspace gdal_qh_sethalfspace
202 static gdal_boolT qh_sethalfspace();
203 #define qh_sethalfspace_all gdal_qh_sethalfspace_all
204 static gdal_coordT * qh_sethalfspace_all();
205 #define qh_voronoi_center gdal_qh_voronoi_center
206 static gdal_pointT * qh_voronoi_center();
207 #define dfacet gdal_dfacet
208 static void dfacet();
209 #define dvertex gdal_dvertex
210 static void dvertex();
211 #define qh_compare_facetarea gdal_qh_compare_facetarea
212 static int qh_compare_facetarea();
213 #define qh_compare_facetmerge gdal_qh_compare_facetmerge
214 static int qh_compare_facetmerge();
215 #define qh_compare_facetvisit gdal_qh_compare_facetvisit
216 static int qh_compare_facetvisit();
217 #define qh_copyfilename gdal_qh_copyfilename
218 static void qh_copyfilename();
219 #define qh_countfacets gdal_qh_countfacets
220 static void qh_countfacets();
221 #define qh_detvnorm gdal_qh_detvnorm
222 static gdal_pointT * qh_detvnorm();
223 #define qh_detvridge gdal_qh_detvridge
224 static gdal_setT * qh_detvridge();
225 #define qh_detvridge3 gdal_qh_detvridge3
226 static gdal_setT * qh_detvridge3();
227 #define qh_eachvoronoi gdal_qh_eachvoronoi
228 static int qh_eachvoronoi();
229 #define qh_eachvoronoi_all gdal_qh_eachvoronoi_all
230 static int qh_eachvoronoi_all();
231 #define qh_facet2point gdal_qh_facet2point
232 static void qh_facet2point();
233 #define qh_facetvertices gdal_qh_facetvertices
234 static gdal_setT * qh_facetvertices();
235 #define qh_geomplanes gdal_qh_geomplanes
236 static void qh_geomplanes();
237 #define qh_markkeep gdal_qh_markkeep
238 static void qh_markkeep();
239 #define qh_markvoronoi gdal_qh_markvoronoi
240 static gdal_setT * qh_markvoronoi();
241 #define qh_order_vertexneighbors gdal_qh_order_vertexneighbors
242 static void qh_order_vertexneighbors();
243 #define qh_prepare_output gdal_qh_prepare_output
244 static void qh_prepare_output();
245 #define qh_printafacet gdal_qh_printafacet
246 static void qh_printafacet();
247 #define qh_printbegin gdal_qh_printbegin
248 static void qh_printbegin();
249 #define qh_printcenter gdal_qh_printcenter
250 static void qh_printcenter();
251 #define qh_printcentrum gdal_qh_printcentrum
252 static void qh_printcentrum();
253 #define qh_printend gdal_qh_printend
254 static void qh_printend();
255 #define qh_printend4geom gdal_qh_printend4geom
256 static void qh_printend4geom();
257 #define qh_printextremes gdal_qh_printextremes
258 static void qh_printextremes();
259 #define qh_printextremes_2d gdal_qh_printextremes_2d
260 static void qh_printextremes_2d();
261 #define qh_printextremes_d gdal_qh_printextremes_d
262 static void qh_printextremes_d();
263 #define qh_printfacet gdal_qh_printfacet
264 static void qh_printfacet();
265 #define qh_printfacet2math gdal_qh_printfacet2math
266 static void qh_printfacet2math();
267 #define qh_printfacet2geom gdal_qh_printfacet2geom
268 static void qh_printfacet2geom();
269 #define qh_printfacet2geom_points gdal_qh_printfacet2geom_points
270 static void qh_printfacet2geom_points();
271 #define qh_printfacet3math gdal_qh_printfacet3math
272 static void qh_printfacet3math();
273 #define qh_printfacet3geom_nonsimplicial gdal_qh_printfacet3geom_nonsimplicial
274 static void qh_printfacet3geom_nonsimplicial();
275 #define qh_printfacet3geom_points gdal_qh_printfacet3geom_points
276 static void qh_printfacet3geom_points();
277 #define qh_printfacet3geom_simplicial gdal_qh_printfacet3geom_simplicial
278 static void qh_printfacet3geom_simplicial();
279 #define qh_printfacet3vertex gdal_qh_printfacet3vertex
280 static void qh_printfacet3vertex();
281 #define qh_printfacet4geom_nonsimplicial gdal_qh_printfacet4geom_nonsimplicial
282 static void qh_printfacet4geom_nonsimplicial();
283 #define qh_printfacet4geom_simplicial gdal_qh_printfacet4geom_simplicial
284 static void qh_printfacet4geom_simplicial();
285 #define qh_printfacetNvertex_nonsimplicial gdal_qh_printfacetNvertex_nonsimplicial
286 static void qh_printfacetNvertex_nonsimplicial();
287 #define qh_printfacetNvertex_simplicial gdal_qh_printfacetNvertex_simplicial
288 static void qh_printfacetNvertex_simplicial();
289 #define qh_printfacetheader gdal_qh_printfacetheader
290 static void qh_printfacetheader();
291 #define qh_printfacetridges gdal_qh_printfacetridges
292 static void qh_printfacetridges();
293 #define qh_printfacets gdal_qh_printfacets
294 static void qh_printfacets();
295 #define qh_printhyperplaneintersection gdal_qh_printhyperplaneintersection
296 static void qh_printhyperplaneintersection();
297 #define qh_printneighborhood gdal_qh_printneighborhood
298 static void qh_printneighborhood();
299 #define qh_printline3geom gdal_qh_printline3geom
300 static void qh_printline3geom();
301 #define qh_printpoint gdal_qh_printpoint
302 static void qh_printpoint();
303 #define qh_printpointid gdal_qh_printpointid
304 static void qh_printpointid();
305 #define qh_printpoint3 gdal_qh_printpoint3
306 static void qh_printpoint3();
307 #define qh_printpoints_out gdal_qh_printpoints_out
308 static void qh_printpoints_out();
309 #define qh_printpointvect gdal_qh_printpointvect
310 static void qh_printpointvect();
311 #define qh_printpointvect2 gdal_qh_printpointvect2
312 static void qh_printpointvect2();
313 #define qh_printridge gdal_qh_printridge
314 static void qh_printridge();
315 #define qh_printspheres gdal_qh_printspheres
316 static void qh_printspheres();
317 #define qh_printvdiagram gdal_qh_printvdiagram
318 static void qh_printvdiagram();
319 #define qh_printvdiagram2 gdal_qh_printvdiagram2
320 static int qh_printvdiagram2();
321 #define qh_printvertex gdal_qh_printvertex
322 static void qh_printvertex();
323 #define qh_printvertexlist gdal_qh_printvertexlist
324 static void qh_printvertexlist();
325 #define qh_printvertices gdal_qh_printvertices
326 static void qh_printvertices();
327 #define qh_printvneighbors gdal_qh_printvneighbors
328 static void qh_printvneighbors();
329 #define qh_printvoronoi gdal_qh_printvoronoi
330 static void qh_printvoronoi();
331 #define qh_printvnorm gdal_qh_printvnorm
332 static void qh_printvnorm();
333 #define qh_printvridge gdal_qh_printvridge
334 static void qh_printvridge();
335 #define qh_produce_output gdal_qh_produce_output
336 static void qh_produce_output();
337 #define qh_produce_output2 gdal_qh_produce_output2
338 static void qh_produce_output2();
339 #define qh_projectdim3 gdal_qh_projectdim3
340 static void qh_projectdim3();
341 #define qh_readfeasible gdal_qh_readfeasible
342 static int qh_readfeasible();
343 #define qh_readpoints gdal_qh_readpoints
344 static gdal_coordT * qh_readpoints();
345 #define qh_setfeasible gdal_qh_setfeasible
346 static void qh_setfeasible();
347 #define qh_skipfacet gdal_qh_skipfacet
348 static gdal_boolT qh_skipfacet();
349 #define qh_skipfilename gdal_qh_skipfilename
350 static char * qh_skipfilename();
351 #define qh_qhull gdal_qh_qhull
352 static void qh_qhull();
353 #define qh_addpoint gdal_qh_addpoint
354 static gdal_boolT qh_addpoint();
355 #define qh_printsummary gdal_qh_printsummary
356 static void qh_printsummary();
357 #define qh_errexit gdal_qh_errexit
358 static void qh_errexit();
359 #define qh_errprint gdal_qh_errprint
360 static void qh_errprint();
361 #define qh_new_qhull gdal_qh_new_qhull
362 static int qh_new_qhull();
363 #define qh_printfacetlist gdal_qh_printfacetlist
364 static void qh_printfacetlist();
365 #define qh_printhelp_degenerate gdal_qh_printhelp_degenerate
366 static void qh_printhelp_degenerate();
367 #define qh_printhelp_narrowhull gdal_qh_printhelp_narrowhull
368 static void qh_printhelp_narrowhull();
369 #define qh_printhelp_singular gdal_qh_printhelp_singular
370 static void qh_printhelp_singular();
371 #define qh_user_memsizes gdal_qh_user_memsizes
372 static void qh_user_memsizes();
373 #define qh_exit gdal_qh_exit
374 static void qh_exit();
375 #define qh_free gdal_qh_free
376 static void qh_free();
377 #define qh_malloc gdal_qh_malloc
378 static void * qh_malloc();
379 #define qh_fprintf gdal_qh_fprintf
380 static void qh_fprintf(FILE *fp, int msgcode, const char *fmt, ... );
381 /*#define qh_fprintf_rbox gdal_qh_fprintf_rbox*/
382 /*static void qh_fprintf_rbox(FILE *fp, int msgcode, const char *fmt, ... );*/
383 #define qh_findbest gdal_qh_findbest
384 static gdal_facetT * qh_findbest();
385 #define qh_findbestnew gdal_qh_findbestnew
386 static gdal_facetT * qh_findbestnew();
387 #define qh_gram_schmidt gdal_qh_gram_schmidt
388 static gdal_boolT qh_gram_schmidt();
389 #define qh_outerinner gdal_qh_outerinner
390 static void qh_outerinner();
391 #define qh_printsummary gdal_qh_printsummary
392 static void qh_printsummary();
393 #define qh_projectinput gdal_qh_projectinput
394 static void qh_projectinput();
395 #define qh_randommatrix gdal_qh_randommatrix
396 static void qh_randommatrix();
397 #define qh_rotateinput gdal_qh_rotateinput
398 static void qh_rotateinput();
399 #define qh_scaleinput gdal_qh_scaleinput
400 static void qh_scaleinput();
401 #define qh_setdelaunay gdal_qh_setdelaunay
402 static void qh_setdelaunay();
403 #define qh_sethalfspace_all gdal_qh_sethalfspace_all
404 static gdal_coordT * qh_sethalfspace_all();
405 #define qh_clock gdal_qh_clock
406 static unsigned long qh_clock();
407 #define qh_checkflags gdal_qh_checkflags
408 static void qh_checkflags();
409 #define qh_clear_outputflags gdal_qh_clear_outputflags
410 static void qh_clear_outputflags();
411 #define qh_freebuffers gdal_qh_freebuffers
412 static void qh_freebuffers();
413 #define qh_freeqhull gdal_qh_freeqhull
414 static void qh_freeqhull();
415 #define qh_freeqhull2 gdal_qh_freeqhull2
416 static void qh_freeqhull2();
417 #define qh_init_A gdal_qh_init_A
418 static void qh_init_A();
419 #define qh_init_B gdal_qh_init_B
420 static void qh_init_B();
421 #define qh_init_qhull_command gdal_qh_init_qhull_command
422 static void qh_init_qhull_command();
423 /*#define qh_initbuffers gdal_qh_initbuffers*/
424 /*static void qh_initbuffers();*/
425 #define qh_initflags gdal_qh_initflags
426 static void qh_initflags();
427 #define qh_initqhull_buffers gdal_qh_initqhull_buffers
428 static void qh_initqhull_buffers();
429 #define qh_initqhull_globals gdal_qh_initqhull_globals
430 static void qh_initqhull_globals();
431 #define qh_initqhull_mem gdal_qh_initqhull_mem
432 static void qh_initqhull_mem();
433 #define qh_initqhull_outputflags gdal_qh_initqhull_outputflags
434 static void qh_initqhull_outputflags();
435 #define qh_initqhull_start gdal_qh_initqhull_start
436 static void qh_initqhull_start();
437 #define qh_initqhull_start2 gdal_qh_initqhull_start2
438 static void qh_initqhull_start2();
439 #define qh_initthresholds gdal_qh_initthresholds
440 static void qh_initthresholds();
441 #define qh_option gdal_qh_option
442 static void qh_option();
443 /*#define qh_restore_qhull gdal_qh_restore_qhull*/
444 /*static void qh_restore_qhull();*/
445 /*#define qh_save_qhull gdal_qh_save_qhull*/
446 /*static gdal_qhT * qh_save_qhull();*/
447 #define dfacet gdal_dfacet
448 static void dfacet();
449 #define dvertex gdal_dvertex
450 static void dvertex();
451 #define qh_printneighborhood gdal_qh_printneighborhood
452 static void qh_printneighborhood();
453 #define qh_produce_output gdal_qh_produce_output
454 static void qh_produce_output();
455 #define qh_readpoints gdal_qh_readpoints
456 static gdal_coordT * qh_readpoints();
457 #define qh_meminit gdal_qh_meminit
458 static void qh_meminit();
459 #define qh_memfreeshort gdal_qh_memfreeshort
460 static void qh_memfreeshort();
461 #define qh_check_output gdal_qh_check_output
462 static void qh_check_output();
463 #define qh_check_points gdal_qh_check_points
464 static void qh_check_points();
465 #define qh_facetvertices gdal_qh_facetvertices
466 static gdal_setT * qh_facetvertices();
467 #define qh_findbestfacet gdal_qh_findbestfacet
468 static gdal_facetT * qh_findbestfacet();
469 #define qh_nearvertex gdal_qh_nearvertex
470 static gdal_vertexT * qh_nearvertex();
471 #define qh_point gdal_qh_point
472 static gdal_pointT * qh_point();
473 #define qh_pointfacet gdal_qh_pointfacet
474 static gdal_setT * qh_pointfacet();
475 #define qh_pointid gdal_qh_pointid
476 static int qh_pointid();
477 #define qh_pointvertex gdal_qh_pointvertex
478 static gdal_setT * qh_pointvertex();
479 #define qh_setvoronoi_all gdal_qh_setvoronoi_all
480 static void qh_setvoronoi_all();
481 #define qh_triangulate gdal_qh_triangulate
482 static void qh_triangulate();
483 /*#define qh_rboxpoints gdal_qh_rboxpoints*/
484 /*static int qh_rboxpoints();*/
485 /*#define qh_errexit_rbox gdal_qh_errexit_rbox*/
486 /*static void qh_errexit_rbox();*/
487 #define qh_collectstatistics gdal_qh_collectstatistics
488 static void qh_collectstatistics();
489 #define qh_printallstatistics gdal_qh_printallstatistics
490 static void qh_printallstatistics();
491 /*#define machines gdal_machines*/
492 /*static gdal_of machines();*/
493 #define qh_memalloc gdal_qh_memalloc
494 static void * qh_memalloc();
495 #define qh_memfree gdal_qh_memfree
496 static void qh_memfree();
497 #define qh_memfreeshort gdal_qh_memfreeshort
498 static void qh_memfreeshort();
499 #define qh_meminit gdal_qh_meminit
500 static void qh_meminit();
501 #define qh_meminitbuffers gdal_qh_meminitbuffers
502 static void qh_meminitbuffers();
503 #define qh_memsetup gdal_qh_memsetup
504 static void qh_memsetup();
505 #define qh_memsize gdal_qh_memsize
506 static void qh_memsize();
507 #define qh_memstatistics gdal_qh_memstatistics
508 static void qh_memstatistics();
509 #define qh_memtotal gdal_qh_memtotal
510 static void qh_memtotal();
511 /*#define qh_mergefacet gdal_qh_mergefacet*/
512 /*static gdal_if qh_mergefacet();*/
513 #define qh_premerge gdal_qh_premerge
514 static void qh_premerge();
515 #define qh_postmerge gdal_qh_postmerge
516 static void qh_postmerge();
517 #define qh_all_merges gdal_qh_all_merges
518 static void qh_all_merges();
519 #define qh_appendmergeset gdal_qh_appendmergeset
520 static void qh_appendmergeset();
521 #define qh_basevertices gdal_qh_basevertices
522 static gdal_setT * qh_basevertices();
523 #define qh_checkconnect gdal_qh_checkconnect
524 static void qh_checkconnect();
525 #define qh_checkzero gdal_qh_checkzero
526 static gdal_boolT qh_checkzero();
527 #define qh_compareangle gdal_qh_compareangle
528 static int qh_compareangle();
529 #define qh_comparemerge gdal_qh_comparemerge
530 static int qh_comparemerge();
531 #define qh_comparevisit gdal_qh_comparevisit
532 static int qh_comparevisit();
533 #define qh_copynonconvex gdal_qh_copynonconvex
534 static void qh_copynonconvex();
535 #define qh_degen_redundant_facet gdal_qh_degen_redundant_facet
536 static void qh_degen_redundant_facet();
537 #define qh_degen_redundant_neighbors gdal_qh_degen_redundant_neighbors
538 static void qh_degen_redundant_neighbors();
539 #define qh_find_newvertex gdal_qh_find_newvertex
540 static gdal_vertexT * qh_find_newvertex();
541 #define qh_findbest_test gdal_qh_findbest_test
542 static void qh_findbest_test();
543 #define qh_findbestneighbor gdal_qh_findbestneighbor
544 static gdal_facetT * qh_findbestneighbor();
545 #define qh_flippedmerges gdal_qh_flippedmerges
546 static void qh_flippedmerges();
547 #define qh_forcedmerges gdal_qh_forcedmerges
548 static void qh_forcedmerges();
549 #define qh_getmergeset gdal_qh_getmergeset
550 static void qh_getmergeset();
551 #define qh_getmergeset_initial gdal_qh_getmergeset_initial
552 static void qh_getmergeset_initial();
553 #define qh_hashridge gdal_qh_hashridge
554 static void qh_hashridge();
555 #define qh_hashridge_find gdal_qh_hashridge_find
556 static gdal_ridgeT * qh_hashridge_find();
557 #define qh_makeridges gdal_qh_makeridges
558 static void qh_makeridges();
559 #define qh_mark_dupridges gdal_qh_mark_dupridges
560 static void qh_mark_dupridges();
561 #define qh_maydropneighbor gdal_qh_maydropneighbor
562 static void qh_maydropneighbor();
563 #define qh_merge_degenredundant gdal_qh_merge_degenredundant
564 static int qh_merge_degenredundant();
565 #define qh_merge_nonconvex gdal_qh_merge_nonconvex
566 static void qh_merge_nonconvex();
567 #define qh_mergecycle gdal_qh_mergecycle
568 static void qh_mergecycle();
569 #define qh_mergecycle_all gdal_qh_mergecycle_all
570 static void qh_mergecycle_all();
571 #define qh_mergecycle_facets gdal_qh_mergecycle_facets
572 static void qh_mergecycle_facets();
573 #define qh_mergecycle_neighbors gdal_qh_mergecycle_neighbors
574 static void qh_mergecycle_neighbors();
575 #define qh_mergecycle_ridges gdal_qh_mergecycle_ridges
576 static void qh_mergecycle_ridges();
577 #define qh_mergecycle_vneighbors gdal_qh_mergecycle_vneighbors
578 static void qh_mergecycle_vneighbors();
579 #define qh_mergefacet gdal_qh_mergefacet
580 static void qh_mergefacet();
581 #define qh_mergefacet2d gdal_qh_mergefacet2d
582 static void qh_mergefacet2d();
583 #define qh_mergeneighbors gdal_qh_mergeneighbors
584 static void qh_mergeneighbors();
585 #define qh_mergeridges gdal_qh_mergeridges
586 static void qh_mergeridges();
587 #define qh_mergesimplex gdal_qh_mergesimplex
588 static void qh_mergesimplex();
589 #define qh_mergevertex_del gdal_qh_mergevertex_del
590 static void qh_mergevertex_del();
591 #define qh_mergevertex_neighbors gdal_qh_mergevertex_neighbors
592 static void qh_mergevertex_neighbors();
593 #define qh_mergevertices gdal_qh_mergevertices
594 static void qh_mergevertices();
595 #define qh_neighbor_intersections gdal_qh_neighbor_intersections
596 static gdal_setT * qh_neighbor_intersections();
597 #define qh_newvertices gdal_qh_newvertices
598 static void qh_newvertices();
599 #define qh_reducevertices gdal_qh_reducevertices
600 static gdal_boolT qh_reducevertices();
601 #define qh_redundant_vertex gdal_qh_redundant_vertex
602 static gdal_vertexT * qh_redundant_vertex();
603 #define qh_remove_extravertices gdal_qh_remove_extravertices
604 static gdal_boolT qh_remove_extravertices();
605 #define qh_rename_sharedvertex gdal_qh_rename_sharedvertex
606 static gdal_vertexT * qh_rename_sharedvertex();
607 #define qh_renameridgevertex gdal_qh_renameridgevertex
608 static void qh_renameridgevertex();
609 #define qh_renamevertex gdal_qh_renamevertex
610 static void qh_renamevertex();
611 #define qh_test_appendmerge gdal_qh_test_appendmerge
612 static gdal_boolT qh_test_appendmerge();
613 #define qh_test_vneighbors gdal_qh_test_vneighbors
614 static gdal_boolT qh_test_vneighbors();
615 #define qh_tracemerge gdal_qh_tracemerge
616 static void qh_tracemerge();
617 #define qh_tracemerging gdal_qh_tracemerging
618 static void qh_tracemerging();
619 #define qh_updatetested gdal_qh_updatetested
620 static void qh_updatetested();
621 #define qh_vertexridges gdal_qh_vertexridges
622 static gdal_setT * qh_vertexridges();
623 #define qh_vertexridges_facet gdal_qh_vertexridges_facet
624 static void qh_vertexridges_facet();
625 #define qh_willdelete gdal_qh_willdelete
626 static void qh_willdelete();
627 #define qh_appendfacet gdal_qh_appendfacet
628 static void qh_appendfacet();
629 #define qh_appendvertex gdal_qh_appendvertex
630 static void qh_appendvertex();
631 #define qh_attachnewfacets gdal_qh_attachnewfacets
632 static void qh_attachnewfacets();
633 #define qh_checkflipped gdal_qh_checkflipped
634 static gdal_boolT qh_checkflipped();
635 #define qh_delfacet gdal_qh_delfacet
636 static void qh_delfacet();
637 #define qh_deletevisible gdal_qh_deletevisible
638 static void qh_deletevisible();
639 #define qh_facetintersect gdal_qh_facetintersect
640 static gdal_setT * qh_facetintersect();
641 #define qh_gethash gdal_qh_gethash
642 static int qh_gethash();
643 #define qh_makenewfacet gdal_qh_makenewfacet
644 static gdal_facetT * qh_makenewfacet();
645 #define qh_makenewplanes gdal_qh_makenewplanes
646 static void qh_makenewplanes();
647 #define qh_makenew_nonsimplicial gdal_qh_makenew_nonsimplicial
648 static gdal_facetT * qh_makenew_nonsimplicial();
649 #define qh_makenew_simplicial gdal_qh_makenew_simplicial
650 static gdal_facetT * qh_makenew_simplicial();
651 #define qh_matchneighbor gdal_qh_matchneighbor
652 static void qh_matchneighbor();
653 #define qh_matchnewfacets gdal_qh_matchnewfacets
654 static void qh_matchnewfacets();
655 #define qh_matchvertices gdal_qh_matchvertices
656 static gdal_boolT qh_matchvertices();
657 #define qh_newfacet gdal_qh_newfacet
658 static gdal_facetT * qh_newfacet();
659 #define qh_newridge gdal_qh_newridge
660 static gdal_ridgeT * qh_newridge();
661 #define qh_pointid gdal_qh_pointid
662 static int qh_pointid();
663 #define qh_removefacet gdal_qh_removefacet
664 static void qh_removefacet();
665 #define qh_removevertex gdal_qh_removevertex
666 static void qh_removevertex();
667 #define qh_updatevertices gdal_qh_updatevertices
668 static void qh_updatevertices();
669 #define qh_addhash gdal_qh_addhash
670 static void qh_addhash();
671 #define qh_check_bestdist gdal_qh_check_bestdist
672 static void qh_check_bestdist();
673 #define qh_check_maxout gdal_qh_check_maxout
674 static void qh_check_maxout();
675 #define qh_check_output gdal_qh_check_output
676 static void qh_check_output();
677 #define qh_check_point gdal_qh_check_point
678 static void qh_check_point();
679 #define qh_check_points gdal_qh_check_points
680 static void qh_check_points();
681 #define qh_checkconvex gdal_qh_checkconvex
682 static void qh_checkconvex();
683 #define qh_checkfacet gdal_qh_checkfacet
684 static void qh_checkfacet();
685 #define qh_checkflipped_all gdal_qh_checkflipped_all
686 static void qh_checkflipped_all();
687 #define qh_checkpolygon gdal_qh_checkpolygon
688 static void qh_checkpolygon();
689 #define qh_checkvertex gdal_qh_checkvertex
690 static void qh_checkvertex();
691 #define qh_clearcenters gdal_qh_clearcenters
692 static void qh_clearcenters();
693 #define qh_createsimplex gdal_qh_createsimplex
694 static void qh_createsimplex();
695 #define qh_delridge gdal_qh_delridge
696 static void qh_delridge();
697 #define qh_delvertex gdal_qh_delvertex
698 static void qh_delvertex();
699 #define qh_facet3vertex gdal_qh_facet3vertex
700 static gdal_setT * qh_facet3vertex();
701 #define qh_findbestfacet gdal_qh_findbestfacet
702 static gdal_facetT * qh_findbestfacet();
703 #define qh_findbestlower gdal_qh_findbestlower
704 static gdal_facetT * qh_findbestlower();
705 #define qh_findfacet_all gdal_qh_findfacet_all
706 static gdal_facetT * qh_findfacet_all();
707 #define qh_findgood gdal_qh_findgood
708 static int qh_findgood();
709 #define qh_findgood_all gdal_qh_findgood_all
710 static void qh_findgood_all();
711 #define qh_furthestnext gdal_qh_furthestnext
712 static void qh_furthestnext();
713 #define qh_furthestout gdal_qh_furthestout
714 static void qh_furthestout();
715 #define qh_infiniteloop gdal_qh_infiniteloop
716 static void qh_infiniteloop();
717 #define qh_initbuild gdal_qh_initbuild
718 static void qh_initbuild();
719 #define qh_initialhull gdal_qh_initialhull
720 static void qh_initialhull();
721 #define qh_initialvertices gdal_qh_initialvertices
722 static gdal_setT * qh_initialvertices();
723 #define qh_isvertex gdal_qh_isvertex
724 static gdal_vertexT * qh_isvertex();
725 #define qh_makenewfacets gdal_qh_makenewfacets
726 static gdal_vertexT * qh_makenewfacets();
727 #define qh_matchduplicates gdal_qh_matchduplicates
728 static void qh_matchduplicates();
729 #define qh_nearcoplanar gdal_qh_nearcoplanar
730 static void qh_nearcoplanar();
731 #define qh_nearvertex gdal_qh_nearvertex
732 static gdal_vertexT * qh_nearvertex();
733 #define qh_newhashtable gdal_qh_newhashtable
734 static int qh_newhashtable();
735 #define qh_newvertex gdal_qh_newvertex
736 static gdal_vertexT * qh_newvertex();
737 #define qh_nextridge3d gdal_qh_nextridge3d
738 static gdal_ridgeT * qh_nextridge3d();
739 #define qh_outcoplanar gdal_qh_outcoplanar
740 static void qh_outcoplanar();
741 #define qh_point gdal_qh_point
742 static gdal_pointT * qh_point();
743 #define qh_point_add gdal_qh_point_add
744 static void qh_point_add();
745 #define qh_pointfacet gdal_qh_pointfacet
746 static gdal_setT * qh_pointfacet();
747 #define qh_pointvertex gdal_qh_pointvertex
748 static gdal_setT * qh_pointvertex();
749 #define qh_prependfacet gdal_qh_prependfacet
750 static void qh_prependfacet();
751 #define qh_printhashtable gdal_qh_printhashtable
752 static void qh_printhashtable();
753 #define qh_printlists gdal_qh_printlists
754 static void qh_printlists();
755 #define qh_resetlists gdal_qh_resetlists
756 static void qh_resetlists();
757 #define qh_setvoronoi_all gdal_qh_setvoronoi_all
758 static void qh_setvoronoi_all();
759 #define qh_triangulate gdal_qh_triangulate
760 static void qh_triangulate();
761 #define qh_triangulate_facet gdal_qh_triangulate_facet
762 static void qh_triangulate_facet();
763 #define qh_triangulate_link gdal_qh_triangulate_link
764 static void qh_triangulate_link();
765 #define qh_triangulate_mirror gdal_qh_triangulate_mirror
766 static void qh_triangulate_mirror();
767 #define qh_triangulate_null gdal_qh_triangulate_null
768 static void qh_triangulate_null();
769 #define qh_vertexintersect gdal_qh_vertexintersect
770 static void qh_vertexintersect();
771 #define qh_vertexintersect_new gdal_qh_vertexintersect_new
772 static gdal_setT * qh_vertexintersect_new();
773 #define qh_vertexneighbors gdal_qh_vertexneighbors
774 static void qh_vertexneighbors();
775 #define qh_vertexsubset gdal_qh_vertexsubset
776 static gdal_boolT qh_vertexsubset();
777 #define qh_qhull gdal_qh_qhull
778 static void qh_qhull();
779 #define qh_addpoint gdal_qh_addpoint
780 static gdal_boolT qh_addpoint();
781 #define qh_buildhull gdal_qh_buildhull
782 static void qh_buildhull();
783 #define qh_buildtracing gdal_qh_buildtracing
784 static void qh_buildtracing();
785 #define qh_build_withrestart gdal_qh_build_withrestart
786 static void qh_build_withrestart();
787 #define qh_errexit2 gdal_qh_errexit2
788 static void qh_errexit2();
789 #define qh_findhorizon gdal_qh_findhorizon
790 static void qh_findhorizon();
791 #define qh_nextfurthest gdal_qh_nextfurthest
792 static gdal_pointT * qh_nextfurthest();
793 #define qh_partitionall gdal_qh_partitionall
794 static void qh_partitionall();
795 #define qh_partitioncoplanar gdal_qh_partitioncoplanar
796 static void qh_partitioncoplanar();
797 #define qh_partitionpoint gdal_qh_partitionpoint
798 static void qh_partitionpoint();
799 #define qh_partitionvisible gdal_qh_partitionvisible
800 static void qh_partitionvisible();
801 #define qh_precision gdal_qh_precision
802 static void qh_precision();
803 #define qh_printsummary gdal_qh_printsummary
804 static void qh_printsummary();
805 #define qh_appendprint gdal_qh_appendprint
806 static void qh_appendprint();
807 #define qh_freebuild gdal_qh_freebuild
808 static void qh_freebuild();
809 #define qh_freebuffers gdal_qh_freebuffers
810 static void qh_freebuffers();
811 /*#define qh_initbuffers gdal_qh_initbuffers*/
812 /*static void qh_initbuffers();*/
813 #define qh_allstatA gdal_qh_allstatA
814 static void qh_allstatA();
815 #define qh_allstatB gdal_qh_allstatB
816 static void qh_allstatB();
817 #define qh_allstatC gdal_qh_allstatC
818 static void qh_allstatC();
819 #define qh_allstatD gdal_qh_allstatD
820 static void qh_allstatD();
821 #define qh_allstatE gdal_qh_allstatE
822 static void qh_allstatE();
823 #define qh_allstatE2 gdal_qh_allstatE2
824 static void qh_allstatE2();
825 #define qh_allstatF gdal_qh_allstatF
826 static void qh_allstatF();
827 #define qh_allstatG gdal_qh_allstatG
828 static void qh_allstatG();
829 #define qh_allstatH gdal_qh_allstatH
830 static void qh_allstatH();
831 #define qh_freebuffers gdal_qh_freebuffers
832 static void qh_freebuffers();
833 /*#define qh_initbuffers gdal_qh_initbuffers*/
834 /*static void qh_initbuffers();*/
835 #define qh_setaddsorted gdal_qh_setaddsorted
836 static void qh_setaddsorted();
837 #define qh_setaddnth gdal_qh_setaddnth
838 static void qh_setaddnth();
839 #define qh_setappend gdal_qh_setappend
840 static void qh_setappend();
841 #define qh_setappend_set gdal_qh_setappend_set
842 static void qh_setappend_set();
843 #define qh_setappend2ndlast gdal_qh_setappend2ndlast
844 static void qh_setappend2ndlast();
845 #define qh_setcheck gdal_qh_setcheck
846 static void qh_setcheck();
847 #define qh_setcompact gdal_qh_setcompact
848 static void qh_setcompact();
849 #define qh_setcopy gdal_qh_setcopy
850 static gdal_setT * qh_setcopy();
851 #define qh_setdel gdal_qh_setdel
852 static void * qh_setdel();
853 #define qh_setdellast gdal_qh_setdellast
854 static void * qh_setdellast();
855 #define qh_setdelnth gdal_qh_setdelnth
856 static void * qh_setdelnth();
857 #define qh_setdelnthsorted gdal_qh_setdelnthsorted
858 static void * qh_setdelnthsorted();
859 #define qh_setdelsorted gdal_qh_setdelsorted
860 static void * qh_setdelsorted();
861 #define qh_setduplicate gdal_qh_setduplicate
862 static gdal_setT * qh_setduplicate();
863 #define qh_setequal gdal_qh_setequal
864 static int qh_setequal();
865 #define qh_setequal_except gdal_qh_setequal_except
866 static int qh_setequal_except();
867 #define qh_setequal_skip gdal_qh_setequal_skip
868 static int qh_setequal_skip();
869 #define qh_setendpointer gdal_qh_setendpointer
870 static void ** qh_setendpointer();
871 #define qh_setfree gdal_qh_setfree
872 static void qh_setfree();
873 #define qh_setfree2 gdal_qh_setfree2
874 static void qh_setfree2();
875 #define qh_setfreelong gdal_qh_setfreelong
876 static void qh_setfreelong();
877 #define qh_setin gdal_qh_setin
878 static int qh_setin();
879 #define qh_setindex gdal_qh_setindex
880 static int qh_setindex();
881 #define qh_setlarger gdal_qh_setlarger
882 static void qh_setlarger();
883 #define qh_setlast gdal_qh_setlast
884 static void * qh_setlast();
885 #define qh_setnew gdal_qh_setnew
886 static gdal_setT * qh_setnew();
887 #define qh_setnew_delnthsorted gdal_qh_setnew_delnthsorted
888 static gdal_setT * qh_setnew_delnthsorted();
889 #define qh_setprint gdal_qh_setprint
890 static void qh_setprint();
891 #define qh_setreplace gdal_qh_setreplace
892 static void qh_setreplace();
893 #define qh_setsize gdal_qh_setsize
894 static int qh_setsize();
895 #define qh_settemp gdal_qh_settemp
896 static gdal_setT * qh_settemp();
897 #define qh_settempfree gdal_qh_settempfree
898 static void qh_settempfree();
899 #define qh_settempfree_all gdal_qh_settempfree_all
900 static void qh_settempfree_all();
901 #define qh_settemppop gdal_qh_settemppop
902 static gdal_setT * qh_settemppop();
903 #define qh_settemppush gdal_qh_settemppush
904 static void qh_settemppush();
905 #define qh_settruncate gdal_qh_settruncate
906 static void qh_settruncate();
907 #define qh_setunique gdal_qh_setunique
908 static int qh_setunique();
909 #define qh_setzero gdal_qh_setzero
910 static void qh_setzero();
911 #define qh_argv_to_command gdal_qh_argv_to_command
912 static int qh_argv_to_command();
913 #define qh_argv_to_command_size gdal_qh_argv_to_command_size
914 static int qh_argv_to_command_size();
915 #define qh_rand gdal_qh_rand
916 static int qh_rand();
917 #define qh_srand gdal_qh_srand
918 static void qh_srand();
919 #define qh_randomfactor gdal_qh_randomfactor
920 static gdal_realT qh_randomfactor();
921 #define qh_randommatrix gdal_qh_randommatrix
922 static void qh_randommatrix();
923 #define qh_strtol gdal_qh_strtol
924 static int qh_strtol();
925 #define qh_strtod gdal_qh_strtod
926 static double qh_strtod();
927 #define qh_allstatA gdal_qh_allstatA
928 static void qh_allstatA();
929 #define qh_allstatB gdal_qh_allstatB
930 static void qh_allstatB();
931 #define qh_allstatC gdal_qh_allstatC
932 static void qh_allstatC();
933 #define qh_allstatD gdal_qh_allstatD
934 static void qh_allstatD();
935 #define qh_allstatE gdal_qh_allstatE
936 static void qh_allstatE();
937 #define qh_allstatE2 gdal_qh_allstatE2
938 static void qh_allstatE2();
939 #define qh_allstatF gdal_qh_allstatF
940 static void qh_allstatF();
941 #define qh_allstatG gdal_qh_allstatG
942 static void qh_allstatG();
943 #define qh_allstatH gdal_qh_allstatH
944 static void qh_allstatH();
945 #define qh_allstatI gdal_qh_allstatI
946 static void qh_allstatI();
947 #define qh_allstatistics gdal_qh_allstatistics
948 static void qh_allstatistics();
949 #define qh_collectstatistics gdal_qh_collectstatistics
950 static void qh_collectstatistics();
951 #define qh_freestatistics gdal_qh_freestatistics
952 static void qh_freestatistics();
953 #define qh_initstatistics gdal_qh_initstatistics
954 static void qh_initstatistics();
955 #define qh_newstats gdal_qh_newstats
956 static gdal_boolT qh_newstats();
957 #define qh_nostatistic gdal_qh_nostatistic
958 static gdal_boolT qh_nostatistic();
959 #define qh_printallstatistics gdal_qh_printallstatistics
960 static void qh_printallstatistics();
961 #define qh_printstatistics gdal_qh_printstatistics
962 static void qh_printstatistics();
963 #define qh_printstatlevel gdal_qh_printstatlevel
964 static void qh_printstatlevel();
965 #define qh_printstats gdal_qh_printstats
966 static void qh_printstats();
967 #define qh_stddev gdal_qh_stddev
968 static gdal_realT qh_stddev();
969
970 #ifdef _MSC_VER
971 #pragma warning( push )
972 #pragma warning( disable : 4324 )
973 #pragma warning( disable : 4032 )
974 #pragma warning( disable : 4306 ) /* e.g 'type cast' : conversion from 'long' to 'facetT *' of greater size */
975 #endif
976
977 #include "internal_libqhull/libqhull.h"
978 #include "internal_libqhull/libqhull.c"
979 #include "internal_libqhull/poly.c"
980 #include "internal_libqhull/poly2.c"
981 #include "internal_libqhull/mem.c"
982 #include "internal_libqhull/user.c"
983 #include "internal_libqhull/global.c"
984 /*#include "userprintf.c"*/
985 #include "internal_libqhull/random.c"
986 #include "internal_libqhull/qset.c"
987 #include "internal_libqhull/io.c"
988 #include "internal_libqhull/usermem.c"
989 #include "internal_libqhull/geom.c"
990 #include "internal_libqhull/geom2.c"
991 #include "internal_libqhull/stat.c"
992 #include "internal_libqhull/merge.c"
993
994 #ifdef _MSC_VER
995 #pragma warning( pop )
996 #endif
997
998 /* Replaces userprintf.c implementation */
999 static void qh_fprintf(CPL_UNUSED FILE *fp, CPL_UNUSED int msgcode, const char *fmt, ... )
1000 {
1001 va_list args;
1002 va_start(args, fmt);
1003 CPLErrorV(CE_Warning, CPLE_AppDefined, fmt, args);
1004 va_end(args);
1005 }
1006
1007 #endif