1 /****************************************************************************
2 **
3 ** Copyright (c) 2008-2020 C.B. Barber. All rights reserved.
4 ** $Id: //main/2019/qhull/src/libqhullcpp/QhullSet.cpp#4 $$Change: 3009 $
5 ** $DateTime: 2020/07/30 19:25:22 $$Author: bbarber $
6 **
7 ****************************************************************************/
8 
9 #//! QhullSet -- Qhull's set structure, setT, as a C++ class
10 
11 #include "libqhullcpp/QhullSet.h"
12 
13 #include "libqhullcpp/Qhull.h"
14 #include "libqhullcpp/QhullError.h"
15 
16 #ifdef _MSC_VER  // Microsoft Visual C++ -- warning level 4
17 #endif
18 
19 namespace orgQhull {
20 
21 #//!\name Class objects
22 
23 setT QhullSetBase::
24 s_empty_set;
25 
26 #//!\name Constructors
27 
28 QhullSetBase::
QhullSetBase(const Qhull & q,setT * s)29 QhullSetBase(const Qhull &q, setT *s)
30 : qh_set(s ? s : &s_empty_set)
31 , qh_qh(q.qh())
32 {
33 }
34 
35 #//!\name Class methods
36 
37 // Same code for qh_setsize [qset_r.c] and QhullSetBase::count [static]
38 countT QhullSetBase::
count(const setT * set)39 count(const setT *set)
40 {
41     countT size;
42     const setelemT *sizep;
43 
44     if(!set){
45         return(0);
46     }
47     sizep= SETsizeaddr_(set);
48     if((size= sizep->i)){
49         size--;
50         if(size > set->maxsize){
51             // QH11022 FIX: How to add additional output to a error? -- qh_setprint(qhmem.ferr, "set: ", set);
52             throw QhullError(10032, "QhullSet internal error: current set size %d is greater than maximum size %d\n",
53                 size, set->maxsize);
54         }
55     }else{
56         size= set->maxsize;
57     }
58     return size;
59 }//count
60 
61 }//namespace orgQhull
62 
63