From 43ae475b2c8d0389112085a3fc11ff27f9869b32 Mon Sep 17 00:00:00 2001
From: Brad Barber <bradb@shore.net>
Date: Mon, 11 Jan 2010 22:21:33 -0500
Subject: [PATCH] Restore qhull_interface.cpp.  It may be useful for simple
 integrations.

                           --Brad
---
 cpp/qhull_interface.cpp | 96 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100644 cpp/qhull_interface.cpp

diff --git a/cpp/qhull_interface.cpp b/cpp/qhull_interface.cpp
new file mode 100644
index 0000000..9b008e0
--- /dev/null
+++ b/cpp/qhull_interface.cpp
@@ -0,0 +1,96 @@
+/*<html><pre>  -<a                             href="qh-user.htm"
+  >-------------------------------</a><a name="TOP">-</a>
+*/
+
+#include <iostream.h>
+#include <conio.h>
+
+//--- Include qhull, so it works from with in a C++ source file
+//---
+//--- In MVC one cannot just do:
+//---
+//---    extern "C"
+//---    {
+//---      #include "qhull_a.h"
+//---    }
+//---
+//--- Because qhull_a.h includes math.h, which can not appear
+//--- inside a extern "C" declaration.
+//---
+//--- Maybe that why Numerical recipes in C avoid this problem, by removing
+//--- standard include headers from its header files and add them in the
+//--- respective source files instead.
+//---
+//--- [K. Erleben]
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <qhull/qhulllib.h>
+#include <qhull/mem.h>
+#include <qhull/qset.h>
+#include <qhull/geom.h>
+#include <qhull/merge.h>
+#include <qhull/poly.h>
+#include <qhull/io.h>
+#include <qhull/stat.h>
+#if defined(__cplusplus)
+}
+#endif
+
+/*********************************************************************/
+/*                                                                   */
+/*                                                                   */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+
+void compute_convex_hull(void)
+{
+        int dim;                      /* dimension of points */
+        int numpoints;            /* number of points */
+        coordT *points;           /* array of coordinates for each point */
+        boolT ismalloc;           /* True if qhull should free points in qh_freeqhull() or reallocation */
+        char flags[]= "qhull Tv"; /* option flags for qhull, see qh_opt.htm */
+        FILE *outfile= stdout;    /* output from qh_produce_output()
+                                     use NULL to skip qh_produce_output() */
+        FILE *errfile= stderr;    /* error messages from qhull code */
+        int exitcode;             /* 0 if no error from qhull */
+        facetT *facet;            /* set by FORALLfacets */
+        int curlong, totlong;     /* memory remaining after qh_memfreeshort */
+
+        /* initialize dim, numpoints, points[], ismalloc here */
+        exitcode= qh_new_qhull(dim, numpoints, points, ismalloc,
+                                                        flags, outfile, errfile);
+        if (!exitcode) { /* if no error */
+                /* 'qh facet_list' contains the convex hull */
+                FORALLfacets {
+                        /* ... your code ... */
+                }
+        }
+        qh_freeqhull(!qh_ALL);
+        qh_memfreeshort(&curlong, &totlong);
+        if (curlong || totlong)
+                fprintf(errfile, "qhull internal warning (main): did not free %d bytes of long memory(%d pieces)\n",
+                             totlong, curlong);
+};
+
+/*********************************************************************/
+/*                                                                   */
+/*                                                                   */
+/*                                                                   */
+/*                                                                   */
+/*********************************************************************/
+
+void main()
+{
+        cout << "Hello world" << endl;
+
+        cout << "Press any key..." << endl;
+
+        while (!_kbhit());
+
+};
-- 
GitLab