30 lines
1.4 KiB
Plaintext
30 lines
1.4 KiB
Plaintext
|
|
qhull/src/libqhull
|
|
|
|
This directory contains the non-reentrant version of qhull, libqhull.
|
|
|
|
New code should use the reentrant version of qhull (libqhull_r).
|
|
It allows multiple instances of qhull to run at the same time. On
|
|
modern architectures, it is nearly as fast as libqhull.
|
|
|
|
Qhull programs may be built with either library. Each program has a
|
|
reentrant version (e.g., qconvex_r.c) and a non-reentrant
|
|
version (qconvex.c). The programs, rbox, qconvex, qdelaunay, qhalf,
|
|
and qvoronoi, are built with libqhull. The qhull program is built
|
|
with libqhull_r.
|
|
|
|
Qhull's C++ interface requires libqhull_r. If you previously used the
|
|
C++ interface with libqhull, you will need to update your code to libqhull_r.
|
|
See qh-code.htm#convert and Changes.txt for suggestions.
|
|
|
|
The C code in libqhull looks unusual because of the 'qh' macro. The 'qh'
|
|
macro controls access to Qhull's global data structure, qhT. If
|
|
'qh_QHpointer' is defined, 'qh' is 'qh_qh->' and 'qh_qh' is defined as
|
|
'qhT *qh_qh', otherwise 'qh' is 'qh_qh.' and 'qh_qh' is defined as
|
|
'qhT qh_qh'. This allows dynamic allocation of qh_qh without modifying
|
|
the code. Reentrant Qhull is a better solution.
|
|
|
|
libqhull will be supported indefinitely. The qh_QHpointer variation
|
|
of libqhull will be not be retested each release. It is replaced by
|
|
libqhull_r.
|
|
|