diff --git a/cpp/Coordinates.h b/cpp/Coordinates.h index a062c42a0d8b2c144f929e1e94311b23ea1c2fc5..774fd4819d8ef4a9db54672602331319b8023d06 100644 --- a/cpp/Coordinates.h +++ b/cpp/Coordinates.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/Coordinates.h#35 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/Coordinates.h#36 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -180,7 +180,7 @@ public: bool operator>(const Coordinates::const_iterator &other) const { return *this>reinterpret_cast<const iterator &>(other); } bool operator>=(const Coordinates::const_iterator &other) const { return *this>=reinterpret_cast<const iterator &>(other); } - iterator operator++() { return iterator(++i); } //FIXUP QH10012 Should return reference, but get reference to temporary + iterator operator++() { return iterator(++i); } //FIXUP QH11012 Should return reference, but get reference to temporary iterator operator++(int) { return iterator(i++); } iterator operator--() { return iterator(--i); } iterator operator--(int) { return iterator(i--); } @@ -221,7 +221,7 @@ public: bool operator>(const const_iterator &other) const { return i>other.i; } bool operator>=(const const_iterator &other) const { return i>=other.i; } - const_iterator operator++() { return const_iterator(++i); } //FIXUP QH10014 -- too much copying + const_iterator operator++() { return const_iterator(++i); } //FIXUP QH11014 -- too much copying const_iterator operator++(int) { return const_iterator(i++); } const_iterator operator--() { return const_iterator(--i); } const_iterator operator--(int) { return const_iterator(i--); } diff --git a/cpp/PointCoordinates.h b/cpp/PointCoordinates.h index 4ded776a5722d5b6950c19aa65632c42c38cc1a8..037a1ad57b49251ceb453cd7c9cdab413c0d6e1b 100644 --- a/cpp/PointCoordinates.h +++ b/cpp/PointCoordinates.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/PointCoordinates.h#16 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/PointCoordinates.h#17 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -88,7 +88,7 @@ public: PointCoordinates operator+(const PointCoordinates &other) const; #//Modify - //FIXUP QH10001: Add clear() and other modify operators from Coordinates.h. Include QhullPoint::operator=() + //FIXUP QH11001: Add clear() and other modify operators from Coordinates.h. Include QhullPoint::operator=() void append(int count, const coordT *c); //! Dimension previously defined void append(const coordT &c) { append(1, &c); } //! Dimension previously defined void append(const QhullPoint &p); @@ -138,7 +138,7 @@ class PointCoordinatesIterator return false; } };//CoordinatesIterator -// FIXUP QH10002: Add MutablePointCoordinatesIterator after adding modify operators +// FIXUP QH11002: Add MutablePointCoordinatesIterator after adding modify operators \ }//namespace orgQhull diff --git a/cpp/Qhull.cpp b/cpp/Qhull.cpp index 38c324cc62831d7fa39759e3557b0cd0eb1376db..39318292ff741480daaf6c0074c2853f0919640c 100644 --- a/cpp/Qhull.cpp +++ b/cpp/Qhull.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/Qhull.cpp#44 $$Change: 1180 $ -** $DateTime: 2010/01/12 21:45:49 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/Qhull.cpp#46 $$Change: 1194 $ +** $DateTime: 2010/01/23 12:14:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -96,6 +96,40 @@ Qhull(const char *rboxCommand, int pointDimension, int pointCount, const realT * runQhull(rboxCommand, pointDimension, pointCount, points, qhullCommand); }//Qhull points +Qhull:: +Qhull(const Qhull &other) +: qhull_qh(0) +, qhull_run_id(UsingLibQhull::NOqhRunId) +, origin_point() +, qhull_status(qh_ERRnone) +, qhull_dimension(0) +, run_called(false) +, qh_active(false) +, qhull_message(other.qhull_message) +, error_stream(other.error_stream) +, output_stream(other.output_stream) +, feasiblePoint(other.feasiblePoint) +, useOutputStream(other.useOutputStream) +{ + if(other.initialized()){ + throw QhullError(10069, "Qhull error: can not use Qhull copy constructor if initialized() is true"); + } + initializeQhull(); +}//copy constructor + +Qhull & Qhull:: +operator=(const Qhull &other) +{ + if(other.initialized() || initialized()){ + throw QhullError(10070, "Qhull error: can not use Qhull copy assignment if initialized() is true"); + } + qhull_message= other.qhull_message; + error_stream= other.error_stream; + output_stream= other.output_stream; + feasiblePoint= other.feasiblePoint; + useOutputStream= other.useOutputStream; + return *this; +}//copy constructor void Qhull:: initializeQhull() @@ -134,7 +168,7 @@ Qhull:: qhull_run_id= UsingLibQhull::NOqhRunId; // Except for cerr, does not throw errors if(hasQhullMessage()){ - cerr<< "\nQhull output at end\n"; //FIXUP QH10005: where should error and log messages go on ~Qhull? + cerr<< "\nQhull output at end\n"; //FIXUP QH11005: where should error and log messages go on ~Qhull? cerr<<qhullMessage(); clearQhullMessage(); } @@ -172,7 +206,7 @@ bool Qhull:: hasQhullMessage() const { return (!qhull_message.empty() || qhull_status!=qh_ERRnone); - //FIXUP QH10006 -- inconsistent usage with Rbox. hasRboxMessage just tests rbox_status. No appendRboxMessage() + //FIXUP QH11006 -- inconsistent usage with Rbox. hasRboxMessage just tests rbox_status. No appendRboxMessage() } //! qhullMessage does not throw errors (~Qhull) @@ -417,7 +451,7 @@ maybeThrowQhullMessage(int exitCode) if(qhull_status!=qh_ERRnone){ QhullError e(qhull_status, qhull_message); clearQhullMessage(); - throw e; // FIXUP QH10007: copy constructor is expensive if logging + throw e; // FIXUP QH11007: copy constructor is expensive if logging } }//maybeThrowQhullMessage @@ -482,7 +516,7 @@ void qh_fprintf(FILE *fp, int msgcode, const char *fmt, ... ) { va_end(args); return; } - // FIXUP QH10008: how do users trap messages and handle input? A callback? + // FIXUP QH11008: how do users trap messages and handle input? A callback? char newMessage[MSG_MAXLEN]; vsnprintf(newMessage, sizeof(newMessage), fmt, args); out->appendQhullMessage(newMessage); diff --git a/cpp/Qhull.h b/cpp/Qhull.h index 850760ebfc37257e79fe3a94bce7e0ca20196216..b3b9768e1b5b5215cc1e93a2cab6515366189ed0 100644 --- a/cpp/Qhull.h +++ b/cpp/Qhull.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/Qhull.h#38 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/Qhull.h#39 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -23,6 +23,13 @@ #include <sstream> #include <iostream> +#if qh_QHpointer != 1 +#error qh_QHpointer is not set. Please set it in user.h or +#error compile Qhull with -Dqh_QHpointer. The C++ classes +#error require dynamic allocation for Qhulls global data +#error structure qhT (QhullQh). +#endif + namespace orgQhull { /*** @@ -47,7 +54,7 @@ private: int qhull_status; //! qh_ERRnone if valid int qhull_dimension; //! Dimension of result (qh.hull_dim or one less for Delaunay/Voronoi) bool run_called; //! True at start of runQhull. Errors if call again. - bool qh_active; //! True if qh_qh is qhull_qh + bool qh_active; //! True if global pointer qh_qh equals qhull_qh std::string qhull_message; std::ostream *error_stream; //! overrides errorMessage, use appendQhullMessage() std::ostream *output_stream; //! send output to stream @@ -59,21 +66,23 @@ private: public: Coordinates feasiblePoint; //! feasible point for half-space intersection bool useOutputStream; //! Set if using outputStream - // FIXUP QH10003 feasiblePoint useOutputStream as field or getter? + // FIXUP QH11003 feasiblePoint useOutputStream as field or getter? #//constructor, assignment, destructor, invariant Qhull(); //! Qhull::runQhull() must be called next Qhull(const RboxPoints &points, const char *qhullCommand); Qhull(const char *rboxCommand, int pointDimension, int pointCount, const realT *points, const char *qhullCommand); + // Throws error if other.initialized(). Needed for return by value and parameter passing + Qhull(const Qhull &other); + // Throws error if initialized() or other.initialized(). Needed for vector<Qhull> + Qhull &operator=(const Qhull &other); ~Qhull() throw(); private: void initializeQhull(); - Qhull(const Qhull&); //disabled - Qhull &operator=(const Qhull&); //disabled public: #//virtual methods - //FIXUP QH10004 -- qh_memfree, etc. as virtual? + //FIXUP QH11004 -- qh_memfree, etc. as virtual? #//Messaging void appendQhullMessage(const std::string &s); diff --git a/cpp/QhullError.h b/cpp/QhullError.h index f90f44c70bec1b534b8e01fbe74a9dcdbfad4514..2f3e226491f3c80611737a57df8fe6c82b91c147 100644 --- a/cpp/QhullError.h +++ b/cpp/QhullError.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullError.h#33 $$Change: 1139 $ -** $DateTime: 2010/01/03 11:20:29 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullError.h#34 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -26,8 +26,8 @@ class QhullError : public RoadError { public: #//Constants enum { - QHULLfirstError= 10000, //Larger than msgcode in Qhull's user.h - QHULLlastError= 10067, + QHULLfirstError= 10000, //MSG_QHULL_ERROR in Qhull's user.h + QHULLlastError= 10070, NOthrow= 1 //! For flag to UsingLibQhull() }; diff --git a/cpp/QhullFacet.cpp b/cpp/QhullFacet.cpp index 43715af62983331a8da11d396a28459db4d5ce6a..eb306b1b4ec28a2a89a7a6ab4e9190271179283d 100644 --- a/cpp/QhullFacet.cpp +++ b/cpp/QhullFacet.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacet.cpp#37 $$Change: 1184 $ -** $DateTime: 2010/01/13 22:44:48 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullFacet.cpp#38 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -131,7 +131,7 @@ tricoplanarOwner() const } return qh_facet->f.triowner; } - return 0; // FIXUP QH10009 Should false be the NULL facet or empty facet + return 0; // FIXUP QH11009 Should false be the NULL facet or empty facet }//tricoplanarOwner QhullPoint QhullFacet:: @@ -258,11 +258,11 @@ operator<<(ostream &os, const QhullFacet::PrintCenter &pr) f->center= qh_facetcenter(f->vertices); } for(int k=0; k<numCoords; k++){ - os << f->center[k] << " "; // FIXUP QH10010 qh_REAL_1 + os << f->center[k] << " "; // FIXUP QH11010 qh_REAL_1 } }else{ for(int k=0; k<numCoords; k++){ - os << qh_INFINITE << " "; // FIXUP QH10010 qh_REAL_1 + os << qh_INFINITE << " "; // FIXUP QH11010 qh_REAL_1 } } }else{ // qh CENTERtype==qh_AScentrum @@ -274,7 +274,7 @@ operator<<(ostream &os, const QhullFacet::PrintCenter &pr) f->center= qh_getcentrum(f); } for(int k=0; k<numCoords; k++){ - os << f->center[k] << " "; // FIXUP QH10010 qh_REAL_1 + os << f->center[k] << " "; // FIXUP QH11010 qh_REAL_1 } } if(pr.print_format==qh_PRINTgeom && numCoords==2){ @@ -364,7 +364,7 @@ operator<<(ostream &os, const QhullFacet::PrintHeader &pr) os << "- f" << facet.id() << endl; os << facet.printFlags(" - flags:"); if(f->isarea){ - os << " - area: " << f->f.area << endl; //FIXUP QH10010 2.2g + os << " - area: " << f->f.area << endl; //FIXUP QH11010 2.2g }else if(qh NEWfacets && f->visible && f->f.replace){ os << " - replacement: f" << f->f.replace->id << endl; }else if(f->newfacet){ @@ -381,13 +381,13 @@ operator<<(ostream &os, const QhullFacet::PrintHeader &pr) if(f->nummerge){ os << " - merges: " << f->nummerge << endl; } - os << facet.hyperplane().print(" - normal: ", "\n - offset: "); // FIXUP QH10010 %10.7g + os << facet.hyperplane().print(" - normal: ", "\n - offset: "); // FIXUP QH11010 %10.7g if(qh CENTERtype==qh_ASvoronoi || f->center){ os << facet.printCenter(pr.run_id, qh_PRINTfacets, " - center: "); } #if qh_MAXoutside if(f->maxoutside > qh DISTround){ - os << " - maxoutside: " << f->maxoutside << endl; //FIXUP QH10010 %10.7g + os << " - maxoutside: " << f->maxoutside << endl; //FIXUP QH11010 %10.7g } #endif QhullPointSet ps= facet.outsidePoints(); @@ -406,7 +406,7 @@ operator<<(ostream &os, const QhullFacet::PrintHeader &pr) os << furthest.print(pr.run_id, " Furthest"); } #if !qh_COMPUTEfurthest - os << " - furthest distance= " << f->furthestdist << endl; //FIXUP QH10010%2.2g + os << " - furthest distance= " << f->furthestdist << endl; //FIXUP QH11010 %2.2g #endif } QhullPointSet cs= facet.coplanarPoints(); diff --git a/cpp/QhullFacet.h b/cpp/QhullFacet.h index 72ced3072dbc54a1e3b3c4b44f6e0b695deabf29..4d8bbe76fbf5b2713effa7d3d7bf5d78ce944a95 100644 --- a/cpp/QhullFacet.h +++ b/cpp/QhullFacet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacet.h#37 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullFacet.h#38 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -50,8 +50,9 @@ public: #//Constructors QhullFacet() : qh_facet(&s_empty_facet) {} - //! Shallow copy + // Creates an alias. Does not copy QhullFacet. Needed for return by value and parameter passing QhullFacet(const QhullFacet &o) : qh_facet(o.qh_facet ? o.qh_facet : &s_empty_facet) {} + // Creates an alias. Does not copy QhullFacet. Needed for vector<QhullFacet> QhullFacet &operator=(const QhullFacet &o) { qh_facet= o.qh_facet ? o.qh_facet : &s_empty_facet; return *this; } ~QhullFacet() {} diff --git a/cpp/QhullFacetList.h b/cpp/QhullFacetList.h index 2f14a8476de342c46ecf7447a6887dea26c00ad9..d7dfb88e750786a5cb8d7dfbda4bd40aaa6cf7ef 100644 --- a/cpp/QhullFacetList.h +++ b/cpp/QhullFacetList.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacetList.h#25 $$Change: 1172 $ -** $DateTime: 2010/01/09 21:42:16 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullFacetList.h#26 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -35,12 +35,12 @@ private: #//Constructors public: QhullFacetList(QhullFacet b, QhullFacet e) : QhullLinkedList<QhullFacet>(b, e), select_all(false) {} - //Copy constructor copies pointer but not contents. Needed for return by value. + //Copy constructor copies pointer but not contents. Needed for return by value and parameter passing. QhullFacetList(const QhullFacetList &o) : QhullLinkedList<QhullFacet>(*o.begin(), *o.end()), select_all(o.select_all) {} ~QhullFacetList() {} private: - //!Disable default constructor and copy assignment. See QhullSetBase + //!Disable default constructor and copy assignment. See QhullLinkedList QhullFacetList(); QhullFacetList &operator=(const QhullFacetList &); public: diff --git a/cpp/QhullFacetSet.h b/cpp/QhullFacetSet.h index c250ad797440fd90f9a964c07a993415a6cddc02..fc66ec4cb6e8344c711e011c3ea6857364b840ce 100644 --- a/cpp/QhullFacetSet.h +++ b/cpp/QhullFacetSet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullFacetSet.h#23 $$Change: 1172 $ -** $DateTime: 2010/01/09 21:42:16 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullFacetSet.h#24 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -34,7 +34,7 @@ public: #//Constructor //Conversion from setT* is not type-safe. Implicit conversion for void* to T explicit QhullFacetSet(setT *s) : QhullSet<QhullFacet>(s), select_all(false) {} - //Copy constructor copies pointer but not contents. Needed for return by value. + //Copy constructor copies pointer but not contents. Needed for return by value and parameter passing. QhullFacetSet(const QhullFacetSet &o) : QhullSet<QhullFacet>(o), select_all(o.select_all) {} private: diff --git a/cpp/QhullHyperplane.cpp b/cpp/QhullHyperplane.cpp index f3af99c2951e1b0c59940db524b24d8d602c20ff..946dbadd3d4d45069f375834c4be6af5f022b785 100644 --- a/cpp/QhullHyperplane.cpp +++ b/cpp/QhullHyperplane.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.cpp#11 $$Change: 1176 $ -** $DateTime: 2010/01/11 19:40:05 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.cpp#12 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -150,9 +150,9 @@ operator<<(ostream &os, const QhullHyperplane::PrintHyperplane &pr) for(int k=p.dimension(); k--; ){ realT r= *c++; if(pr.hyperplane_message){ - os << " " << r; // FIXUP QH10010 %8.4g + os << " " << r; // FIXUP QH11010 %8.4g }else{ - os << " " << r; // FIXUP QH10010 qh_REAL_1 + os << " " << r; // FIXUP QH11010 qh_REAL_1 } } if(pr.hyperplane_offset_message){ diff --git a/cpp/QhullHyperplane.h b/cpp/QhullHyperplane.h index ae3835f79098972fb68ceab3a64af6141cf26ede..29c9385f7154965e90a166a3704b198120ac4b78 100644 --- a/cpp/QhullHyperplane.h +++ b/cpp/QhullHyperplane.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.h#13 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullHyperplane.h#14 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -46,9 +46,9 @@ public: #//Construct QhullHyperplane() : hyperplane_coordinates(0), hyperplane_dimension(0), hyperplane_offset(0.0) {}; QhullHyperplane(int dimension, coordT *c, coordT offset) : hyperplane_coordinates(c), hyperplane_dimension(dimension), hyperplane_offset(offset) {} - // Creates an alias. Does not copy the point. Needed for parameter passing + // Creates an alias. Does not copy the hyperplane's coordinates. Needed for return by value and parameter passing. QhullHyperplane(const QhullHyperplane &other) : hyperplane_coordinates(other.hyperplane_coordinates), hyperplane_dimension(other.hyperplane_dimension), hyperplane_offset(other.hyperplane_offset) {} - // Creates an alias. Does not copy the point. Needed for vector<QhullHyperplane> + // Creates an alias. Does not copy the hyperplane's coordinates. Needed for vector<QhullHyperplane> QhullHyperplane &operator=(const QhullHyperplane &other) { hyperplane_coordinates= other.hyperplane_coordinates; hyperplane_dimension= other.hyperplane_dimension; hyperplane_offset= other.hyperplane_offset; return *this; } ~QhullHyperplane() {} @@ -116,7 +116,7 @@ QHULL_DECLARE_SEQUENTIAL_ITERATOR(QhullHyperplane, coordT) #//Global functions std::ostream &operator<<(std::ostream &os, const orgQhull::QhullHyperplane::PrintHyperplane &pr); -std::ostream &operator<<(std::ostream &os, const orgQhull::QhullHyperplane &p); //FIXUP QH10015 -- multiple instances if define here +std::ostream &operator<<(std::ostream &os, const orgQhull::QhullHyperplane &p); //FIXUP QH11015 -- multiple instances if define here #endif // QHHYPERPLANE_H diff --git a/cpp/QhullLinkedList.h b/cpp/QhullLinkedList.h index 4c03a3c66cc435c57179cf7c8931919edfab0af9..4de29b0abc0177351a19c0c3bc3f3d5bcbca555b 100644 --- a/cpp/QhullLinkedList.h +++ b/cpp/QhullLinkedList.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullLinkedList.h#33 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullLinkedList.h#34 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -59,6 +59,7 @@ public: #//Constructors QhullLinkedList<T>(T b, T e) : begin_node(b), end_node(e) {} + //Copy constructor copies pointer but not contents. Needed for return by value and parameter passing. QhullLinkedList<T>(const QhullLinkedList<T> &o) : begin_node(o.begin_node), end_node(o.end_node) {} ~QhullLinkedList<T>() {} @@ -177,7 +178,7 @@ public: };//QhullLinkedList template <typename T> -class QhullLinkedListIterator // FiXUP QH10016 define QhullMutableLinkedListIterator +class QhullLinkedListIterator // FIXUP QH11016 define QhullMutableLinkedListIterator { typedef typename QhullLinkedList<T>::const_iterator const_iterator; const QhullLinkedList<T> *c; diff --git a/cpp/QhullPoint.cpp b/cpp/QhullPoint.cpp index b61f8a417df2a5089630d59d7aef9030a5a7a8f6..d8ef470e232adbf7a38121f5b1223c20f1849146 100644 --- a/cpp/QhullPoint.cpp +++ b/cpp/QhullPoint.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPoint.cpp#29 $$Change: 1180 $ -** $DateTime: 2010/01/12 21:45:49 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullPoint.cpp#30 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -166,9 +166,9 @@ operator<<(ostream &os, const QhullPoint::PrintPoint &pr) for(int k=p.dimension(); k--; ){ realT r= *c++; if(pr.point_message){ - os << " " << r; // FIXUP QH10010 %8.4g + os << " " << r; // FIXUP QH11010 %8.4g }else{ - os << " " << r; // FIXUP QH10010 qh_REAL_1 + os << " " << r; // FIXUP QH11010 qh_REAL_1 } } os << std::endl; diff --git a/cpp/QhullPoint.h b/cpp/QhullPoint.h index 785877a19eb834d2bf7513ffc71571431c348d02..097586c04f83bfa493b3c03185a1ff224c3a63c0 100644 --- a/cpp/QhullPoint.h +++ b/cpp/QhullPoint.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPoint.h#34 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullPoint.h#35 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -52,7 +52,7 @@ public: QhullPoint() : point_coordinates(0), point_dimension(0) {}; QhullPoint(int dimension, coordT *c) : point_coordinates(c), point_dimension(dimension) {} explicit QhullPoint(Coordinates &c) : point_coordinates(c.data()), point_dimension(c.count()) {} - // Creates an alias. Does not copy the point. Needed for parameter passing + // Creates an alias. Does not copy the point. Needed for return by value and parameter passing. QhullPoint(const QhullPoint &other) : point_coordinates(other.point_coordinates), point_dimension(other.point_dimension) {} // Creates an alias. Does not copy the point. Needed for vector<QhullPoint> QhullPoint &operator=(const QhullPoint &other) { point_coordinates= other.point_coordinates; point_dimension= other.point_dimension; return *this; } @@ -124,7 +124,7 @@ QHULL_DECLARE_SEQUENTIAL_ITERATOR(QhullPoint, coordT) #//Global functions std::ostream &operator<<(std::ostream &os, const orgQhull::QhullPoint::PrintPoint &pr); -std::ostream &operator<<(std::ostream &os, const orgQhull::QhullPoint &p); // FIXUP QH10017 OK in c program but not inline { os << p.print(orgQhull::UsingLibQhull::NOqhRunId, ""); return os; } +std::ostream &operator<<(std::ostream &os, const orgQhull::QhullPoint &p); // FIXUP QH11017 OK in c program but not inline { os << p.print(orgQhull::UsingLibQhull::NOqhRunId, ""); return os; } #endif // QHPOINT_H diff --git a/cpp/QhullPointSet.h b/cpp/QhullPointSet.h index bc4498097cc55819f66c940a1cb83d8d524d92f2..b954cf477441f824c21be9fbaeccecf47c64223e 100644 --- a/cpp/QhullPointSet.h +++ b/cpp/QhullPointSet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPointSet.h#20 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullPointSet.h#21 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -45,7 +45,7 @@ public: typedef QhullPoint value_type; typedef ptrdiff_t difference_type; typedef int size_type; - //typedef const value_type *const_pointer; // FIXUP QH10019: QhullPointSet does not define pointer or reference due to point_dimension + //typedef const value_type *const_pointer; // FIXUP QH11019: QhullPointSet does not define pointer or reference due to point_dimension //typedef const value_type &const_reference; //typedef value_type *pointer; //typedef value_type &reference; @@ -53,11 +53,11 @@ public: #//Construct //Conversion from setT* is not type-safe. Implicit conversion for void* to T QhullPointSet(int dimension, setT *s) : QhullSet<coordT *>(s), point_dimension(dimension) {} - //Copy constructor copies pointer but not contents. Needed for return by value. + //Copy constructor copies pointer but not contents. Needed for return by value and parameter passing. QhullPointSet(const QhullPointSet &o) : QhullSet<coordT *>(o), point_dimension(o.point_dimension) {} ~QhullPointSet() {} -//disabled since p= p2 is ambiguous (coord* vs coord) +//Default constructor and copy assignment disabled since p= p2 is ambiguous (coord* vs coord) private: QhullPointSet(); QhullPointSet &operator=(const QhullPointSet &); @@ -223,7 +223,7 @@ public: };//QhullPointSet //derived from qiterator.h -class QhullPointSetIterator { // FiXUP QH10020 define QhullMutablePointSetIterator +class QhullPointSetIterator { // FIXUP QH11020 define QhullMutablePointSetIterator typedef QhullPointSet::const_iterator const_iterator; const QhullPointSet *c; const_iterator i; diff --git a/cpp/QhullPoints.h b/cpp/QhullPoints.h index 2e913e653659ba60fcdd01dee4e2f86363b98a2c..68265b6c6487bcbeaa8302e78f78e46aab53f03a 100644 --- a/cpp/QhullPoints.h +++ b/cpp/QhullPoints.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2009-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullPoints.h#31 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullPoints.h#32 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -46,6 +46,7 @@ public: QhullPoints() : point_first(0), point_end(0), point_dimension(0) {}; QhullPoints(int dimension) : point_first(0), point_end(0), point_dimension(dimension) { QHULL_ASSERT(dimension>=0); } QhullPoints(int dimension, int coordinateCount, coordT *c) : point_first(c), point_end(c+coordinateCount), point_dimension(dimension) { QHULL_ASSERT(dimension>=0 && coordinateCount>=0 ); } + //Copy constructor copies pointers but not contents. Needed for return by value and parameter passing. QhullPoints(const QhullPoints &other) : point_first(other.point_first), point_end(other.point_end), point_dimension(other.point_dimension) {} ~QhullPoints() {} @@ -158,7 +159,7 @@ public: difference_type operator-(iterator other) const { QHULL_ASSERT(dimension()==other.dimension()); return (coordinates()-other.coordinates())/dimension(); } };//QhullPoints::iterator -#//QhullPoints::const_iterator -- FIXUP QH10018 const_iterator same as iterator +#//QhullPoints::const_iterator -- FIXUP QH11018 const_iterator same as iterator class const_iterator : public QhullPoint { public: diff --git a/cpp/QhullRidge.h b/cpp/QhullRidge.h index ce35d5249ea929b4ab0b123b8dafc8b505f45df5..68f7ddf93225b083c140616ec20651cf9913881d 100644 --- a/cpp/QhullRidge.h +++ b/cpp/QhullRidge.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullRidge.h#24 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullRidge.h#25 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -62,8 +62,9 @@ public: #//Constructors QhullRidge() : qh_ridge(&s_empty_ridge) {} - //! Shallow copy + // Creates an alias. Does not copy QhullRidge. Needed for return by value and parameter passing QhullRidge(const QhullRidge &o) : qh_ridge(o.qh_ridge) {} + // Creates an alias. Does not copy QhullRidge. Needed for vector<QhullRidge> QhullRidge &operator=(const QhullRidge &o) { qh_ridge= o.qh_ridge; return *this; } ~QhullRidge() {} diff --git a/cpp/QhullSet.cpp b/cpp/QhullSet.cpp index 3c9ea410a6563ff03bb2b40d1e5696fd5efd96d7..ebe3f87e82a7693117bab74d45aba6d650632569 100644 --- a/cpp/QhullSet.cpp +++ b/cpp/QhullSet.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullSet.cpp#20 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullSet.cpp#21 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -33,7 +33,7 @@ int QhullSetBase::count(const setT *set) if ((size= *sizep)) { size--; if (size > set->maxsize) { - // FIXUP QH10022 How to add additional output to a error? -- qh_setprint(qhmem.ferr, "set: ", set); + // FIXUP QH11022 How to add additional output to a error? -- qh_setprint(qhmem.ferr, "set: ", set); throw QhullError(10032, "QhullSet internal error: current set size %d is greater than maximum size %d\n", size, set->maxsize); } diff --git a/cpp/QhullSet.h b/cpp/QhullSet.h index 4d1e16b7728b59682348f0257015a664ec79fdb9..0a3ee5a5ca8f5f7d6fac67106233378666fa2b8c 100644 --- a/cpp/QhullSet.h +++ b/cpp/QhullSet.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullSet.h#38 $$Change: 1167 $ -** $DateTime: 2010/01/08 19:03:17 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullSet.h#39 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -56,7 +56,7 @@ public: #//Constructors - //! Copy constructor copies the pointer but not the set. Needed for return by value. + //! Copy constructor copies the pointer but not the set. Needed for return by value and parameter passing. QhullSetBase(const QhullSetBase &o) : qh_set(o.qh_set) {} explicit QhullSetBase(setT *s) : qh_set(s ? s : &s_empty_set) {} ~QhullSetBase() {} diff --git a/cpp/QhullVertex.cpp b/cpp/QhullVertex.cpp index c788c79c3947bf97fc17fdf774837674c14e882b..dd483b680e917ad28157b28a03df6eae136dd7fe 100644 --- a/cpp/QhullVertex.cpp +++ b/cpp/QhullVertex.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullVertex.cpp#25 $$Change: 1180 $ -** $DateTime: 2010/01/12 21:45:49 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullVertex.cpp#26 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -62,7 +62,7 @@ operator<<(ostream &os, const QhullVertex::PrintVertex &pr) os << "- p" << p.id(pr.run_id) << " (v" << v.id() << "): "; const realT *c= p.coordinates(); for(int k= p.dimension(); k--; ){ - os << " " << *c++; // FIXUP QH10010 %5.2g + os << " " << *c++; // FIXUP QH11010 %5.2g } if(v.getVertexT()->deleted){ os << " deleted"; diff --git a/cpp/QhullVertex.h b/cpp/QhullVertex.h index a41c5771bda0e2d57f79c1f18a225865b875064a..1b50bf2d434a3ff11f71ee219ecc99bfc01c70df 100644 --- a/cpp/QhullVertex.h +++ b/cpp/QhullVertex.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/QhullVertex.h#26 $$Change: 1164 $ -** $DateTime: 2010/01/07 21:52:00 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/QhullVertex.h#27 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -54,8 +54,9 @@ public: #//Constructors QhullVertex() : qh_vertex(&s_empty_vertex) {} - //! Shallow copy + // Creates an alias. Does not copy QhullVertex. Needed for return by value and parameter passing QhullVertex(const QhullVertex &o) : qh_vertex(o.qh_vertex) {} + // Creates an alias. Does not copy QhullVertex. Needed for vector<QhullVertex> QhullVertex &operator=(const QhullVertex &o) { qh_vertex= o.qh_vertex; return *this; } ~QhullVertex() {} diff --git a/cpp/UsingLibQhull.cpp b/cpp/UsingLibQhull.cpp index f8c5a478e890fe80a781c0ef9cf820318ec91049..5e4b15178c25a02481ae116880a4a6917270dfd2 100644 --- a/cpp/UsingLibQhull.cpp +++ b/cpp/UsingLibQhull.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.cpp#7 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.cpp#9 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -45,7 +45,7 @@ int UsingLibQhull:: s_points_dimension= 0; int UsingLibQhull:: -s_vertex_dimension= 0; // FIXUP QH10023: s_vertex_dimension is required if dimension>15. Cannot store in QhullVertex +s_vertex_dimension= 0; // FIXUP QH11023: s_vertex_dimension is required if dimension>15. Cannot store in QhullVertex bool UsingLibQhull:: s_has_points= false; @@ -94,7 +94,7 @@ UsingLibQhull(Qhull *q) qhullqh->old_qhstat= 0; qhullqh->old_tempstack= 0; #else - #error FIXUP QH10024 static qh_qh not tested. Delete the line to try. + #error FIXUP QH11024 static qh_qh not tested. Delete the line to try. if(qhullqh!=&qh_qh){ throw QhullError(10040, "Qhull internal error: Qhull.qhullQh() is not qh_qh (%x, static). Overwrite?", 0,0,0.0, &qh_qh); } diff --git a/cpp/UsingLibQhull.h b/cpp/UsingLibQhull.h index c3c8c105d2bfafec76f98b250b84ca0058b18482..f971b69ccdcf315e239ae1dbf66349a0402a943d 100644 --- a/cpp/UsingLibQhull.h +++ b/cpp/UsingLibQhull.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.h#6 $$Change: 1164 $ -** $DateTime: 2010/01/07 21:52:00 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/UsingLibQhull.h#7 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -100,6 +100,12 @@ public: UsingLibQhull(int qhRunId); ~UsingLibQhull(); +private: //! disable default constructor, copy constructor, and copy assignment + UsingLibQhull(); + UsingLibQhull(const UsingLibQhull &); + UsingLibQhull &operator=(const UsingLibQhull &); +public: + #//Methods #//Access bool defined() const { return my_qhull!=0; } diff --git a/cpp/qhulltest/Qhull_test.cpp b/cpp/qhulltest/Qhull_test.cpp index de286c1f69e6170c17429e2ec3595d18b8877118..77cba8537767d97f7c30e46a3cdd39352b87ee38 100644 --- a/cpp/qhulltest/Qhull_test.cpp +++ b/cpp/qhulltest/Qhull_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/Qhull_test.cpp#38 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/qhulltest/Qhull_test.cpp#40 $$Change: 1194 $ +** $DateTime: 2010/01/23 12:14:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -70,6 +70,10 @@ t_construct() }catch (const std::exception &e) { cout << "INFO : Caught " << e.what(); } + Qhull q2(q); // Copy constructor and copy assignment OK if not q.initialized() + QCOMPARE(q2.dimension(),0); + q= q2; + QCOMPARE(q.dimension(),0); } { RboxPoints rbox("10000"); @@ -77,6 +81,28 @@ t_construct() QCOMPARE(q.dimension(),3); QVERIFY(q.volume() < 1.0); QVERIFY(q.volume() > 0.99); + try{ + Qhull q2(q); + QFAIL("Copy constructor did not fail for initialized Qhull."); + }catch (const std::exception &e) { + cout << "INFO : Caught " << e.what(); + } + try{ + Qhull q3; + q3= q; + QFAIL("Copy assignment did not fail for initialized Qhull source."); + }catch (const std::exception &e) { + cout << "INFO : Caught " << e.what(); + } + QCOMPARE(q.dimension(),3); + try{ + Qhull q4; + q= q4; + QFAIL("Copy assignment did not fail for initialized Qhull destination."); + }catch (const std::exception &e) { + cout << "INFO : Caught " << e.what(); + } + QCOMPARE(q.dimension(),3); } { double points[] = { @@ -137,7 +163,7 @@ t_message() const char *s= e.what(); cout << "INFO : Caught " << s; QCOMPARE(QString::fromStdString(s).left(6), QString("QH6029")); - // FIXUP QH10025 -- review decision to clearQhullMessage at QhullError() // Cleared when copied to QhullError + // FIXUP QH11025 -- review decision to clearQhullMessage at QhullError() // Cleared when copied to QhullError QVERIFY(!q.hasQhullMessage()); // QCOMPARE(q.qhullMessage(), QString::fromStdString(s).remove(0, 7)); // QCOMPARE(q.qhullStatus(), 6029); diff --git a/cpp/qhulltest/UsingLibQhull_test.cpp b/cpp/qhulltest/UsingLibQhull_test.cpp index 5d6f15d2890b42698b74af0bf3f9d463ebd3f29c..f5f8dda5d4ad02c967e4a4b95ef72d17bf7c2d1c 100644 --- a/cpp/qhulltest/UsingLibQhull_test.cpp +++ b/cpp/qhulltest/UsingLibQhull_test.cpp @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/qhulltest/UsingLibQhull_test.cpp#6 $$Change: 1176 $ -** $DateTime: 2010/01/11 19:40:05 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/qhulltest/UsingLibQhull_test.cpp#7 $$Change: 1194 $ +** $DateTime: 2010/01/23 12:14:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -172,6 +172,7 @@ t_UsingLibQhull() } Qhull q3; UsingLibQhull uq3(&q3); + // UsingLibQhull uq4; // Default constructors disabled. }//t_UsingLibQhull void UsingLibQhull_test:: diff --git a/cpp/road/RoadError.h b/cpp/road/RoadError.h index b8c1f7be3e699a501a09e05b01653b6615aec5a6..c1b5cc3e4c78358201d7e979f2a3820e77e971bd 100644 --- a/cpp/road/RoadError.h +++ b/cpp/road/RoadError.h @@ -1,8 +1,8 @@ /**************************************************************************** ** ** Copyright (C) 2008-2010 C.B. Barber. All rights reserved. -** $Id: //product/qhull/main/rel/cpp/road/RoadError.h#22 $$Change: 1179 $ -** $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ +** $Id: //product/qhull/main/rel/cpp/road/RoadError.h#23 $$Change: 1193 $ +** $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ ** ****************************************************************************/ @@ -70,7 +70,7 @@ public: #//GetSet bool defined() const { return log_event.defined(); } int errorCode() const { return error_code; }; - // FIXUP QH10021 should RoadError provide errorMessage(). Currently what() + // FIXUP QH11021 should RoadError provide errorMessage(). Currently what() RoadLogEvent roadLogEvent() const { return log_event; }; #//Update diff --git a/src/Changes.txt b/src/Changes.txt index 77316b1d4cc4787328398ab9161b4ebba0c07079..693249262bd58284731e349c6391d6053fc5b53a 100644 --- a/src/Changes.txt +++ b/src/Changes.txt @@ -7,17 +7,36 @@ Need help http://gitorious.org/qhull/ - Produce conformant triangulations for merged facets using option 'Qt' - Add CMakeLists.txt for qhullcpp, user_eg3, cpp/, and cpp/road - If practical, please move to project/ - - Verify -fno-strict-aliasing needed for gcc 4.1, 4.2, and 4.3 (qset segfault) + If practical, please move CMakeLists.txt to project/ + - Verify -fno-strict-aliasing needed for gcc 4.1, 4.2, 4.3 (qset segfault) - Set up debian build [Pkg-octave-devel] Please keep debian files in config/ and project/debian/ Branch 'debian' is from http://savannah.nongnu.org/cvs/?group=qhull - project/debian needs updating for its new location. It was at qhull's level. + project/debian needs updating for its new location. To do - Review email for doc changes - RMP build of Qhull +------------ +gitorious.org/qhull 2010/01/23 +- Reviewed all copy constructors and copy assignments. Updated comments. + Defined Qhull copy constructor and copy assignment [G. Rivet-Sabourin] + Disabled UsingQhullLib default constructor, copy construct, and copy assign +- Add #error to Qhull.h if qh_QHpointer is not defined +- Define MSG_QHULL_ERROR in user.h +- Move MSG_FIXUP to 11000 and updated FIXUP QH11... +- Add patch for old builds in qh-get.htm +- Add eg/q_test to libqhull.pro + Add note to q_test than R1e-3 may error (qh-code.htm, Enhancements) +- Added C++ compiling instructions to README.txt + Add instructions for fixing the DOS window +- Updated CMakeLists.txt to compile shared and static libraries and link the + command line utilities to the shared one. Allows install of + targets, libqhull.h, and html docs. [M. Moll] +- Fixed location of qhull.man and rbox.man in src/Makefile.txt [M. Moll] +- Copy HEADER and OTHERFILES from libqhull.pro to libqhullp.pro + ------------ qhull 2010.1 2010/01/14 - Fixed quote for #include in qhull.h [U.Hergenhahn, K.Roland] @@ -46,7 +65,7 @@ qhull 2010.1 2010/01/09 Changes to build and distribution - Use qh_QHpointer=0 for libqhull.a, qhull, rbox, etc. Use -Dqh_QHpointer for libqhullp.a, qhullcpp.dll, etc. - qh_QHpointer costs: [2010, gcc] 4% time 4% space, [2003, msvc] 8% time 2% space + qh_QHpointer [2010, gcc] 4% time 4% space, [2003, msvc] 8% time 2% space - Add config/ and project/debian/ for Autoconf build [R. Laboissiere] from debian branch in git and http://savannah.nongnu.org/cvs/?group=qhull - Add CMakeLists.txt [kwilliams] @@ -66,7 +85,7 @@ qhull 2009.1.1 2010/01/09 - Patch release of 2009.1. qh_gethash allowed a negative result, causing overwrite or segfault See git:qhull/project/patch/qhull-2003.1/poly.c-qh_gethash.patch - Compared results of q_test, q_eg, and q_egtest with patched poly.c, qhull-2003.1 + Compared results of q_test, q_eg, q_egtest with patched poly.c, qhull-2003.1 ------------ qhull 2010.1 2010/01/07 @@ -89,8 +108,9 @@ qhull 2010.1 2010/01/06 ------------ qhull 2010.0.3 2010/01/05 Fixed bugs -- 'QJn' (joggle): Fix qh.STOPcone in qh_build_withrestart(). It was not cleared. -- qh_initqhull_outputflags [global.c]: warn about Qc only if QHULLfinished, otherwise set if needed +- 'QJn': Fix qh.STOPcone in qh_build_withrestart(). It was not cleared. +- qh_initqhull_outputflags [global.c]: warn about Qc only if QHULLfinished + otherwise set if needed qhull 2010.0.2 2010/01/04 diff --git a/src/io.c b/src/io.c index afa89c06ef1d2d617c0c0cf5dfeb6184f8cae567..1ebea06b268ea0acfa742519e6e1657039ec96fa 100644 --- a/src/io.c +++ b/src/io.c @@ -14,8 +14,8 @@ This allows the user to avoid loading io.o from qhull.a copyright (c) 1993-2010 The Geometry Center. - $Id: //product/qhull/main/rel/src/io.c#38 $$Change: 1179 $ - $DateTime: 2010/01/12 19:53:15 $$Author: bbarber $ + $Id: //product/qhull/main/rel/src/io.c#39 $$Change: 1193 $ + $DateTime: 2010/01/23 11:31:35 $$Author: bbarber $ */ #include "qhull_a.h" @@ -3669,7 +3669,7 @@ int qh_readfeasible(int dim, const char *curline) { notes: dimension will change in qh_initqhull_globals if qh.PROJECTinput uses malloc() since qh_mem not initialized - FIXUP QH10012: qh_readpoints needs rewriting, too long + FIXUP QH11012: qh_readpoints needs rewriting, too long */ coordT *qh_readpoints(int *numpoints, int *dimension, boolT *ismalloc) { coordT *points, *coords, *infinity= NULL; diff --git a/src/user.h b/src/user.h index 52608c3cd80e96242da1680e78f64a6086c68d4a..25ec0fe4d25930b02dda4d3c384fb85699b08d10 100644 --- a/src/user.h +++ b/src/user.h @@ -50,7 +50,7 @@ Code flags -- If add new messages, assign these values and increment. def counters = [27, 1047, 2059, 3025, 4068, 5003, - 6233, 7079, 8143, 9410, 10026] + 6233, 7079, 8143, 9410, 10000, 11026] See: qh_ERR* [libqhull.h] */ @@ -65,7 +65,8 @@ Code flags -- #define MSG_WARNING 7000 #define MSG_STDERR 8000 /* log messages Written to qh.ferr */ #define MSG_OUTPUT 9000 -#define MSG_FIXUP 10000 +#define MSG_QHULL_ERROR 10000 /* errors thrown by QhullError [QhullError.h] */ +#define MSG_FIXUP 11000 /* FIXUP QH11... */ #define MSG_MAXLEN 3000 /* qh_printhelp_degenerate() in user.c */