Subject: CVS commit: pkgsrc/geography/geos
From: Greg Troxel
Date: 2008-02-16 02:23:28
Message id: 20080216012328.1DB8D175BD@cvs.netbsd.org

Log Message:
Update to 3.0.0.

Changes in 3.0.0

   These are mostly ABI breaking changes.
   In few cases the API also changed, but the most external one
   (the documented one) should be unchanged.

- New things:
	- Added geom::BinaryOp class performing a binary operation
	  using different heuristics to reduce probability of robustness
	  issues. Both C-API and XMLTester now use this class for
	  binary operations.
	- Added covers() and coveredBy() predicates to Geometry class
	- Added overlay::overlayOp() adapter class
	- Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
	  to the C API
	- Added closed ring checks in IsValidOp
	- Multi-input support in XMLTester
	- HEXWKB I/O
	- Envelope(string) ctor
	- Ruby interface
	- New ShortCircuitedGeometryVisitor class
	- New operation/predicate package
	- Added CGAlgorithms::isPointInRing() version working with
	  Coordinate::ConstVect type (faster!)
	- Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
	  class.
	- Moved GetNumGeometries() and GetGeometryN() interfaces
	  from GeometryCollection to Geometry class.
	- New planarSubgraph class
	- New ConnectedSubgraphFinder class.
	- New LineSequencer class
	- New WKTWriter::toLineString and ::toPoint convenience methods
	- New IsValidOp::setSelfTouchingRingFormingHoleValid method
	- New WKTWriter::toLineString and ::toPoint convenience methods
	- New IsValidOp::setSelfTouchingRingFormingHoleValid method
	- New Envelope::centre()
	- New Envelope::intersection(Envelope)
	- New Envelope::expandBy(distance, [ydistance])
	- New LineString::reverse()
	- New MultiLineString::reverse()
	- New Geometry::buffer(distance, quadSeg, endCapStyle)
	- New SnapRounding code
	- New size() and operator[] interfaces to CoordinateSequence
	- New ScaledNoder class
	- New unit tests (make check rule)

- Optimizations:
	- WKT parser speedup
	- Function inlining
	- Coordinate copies reduction
  	- Heap allocations reduction
	- More classes made final
	- Better use of standard containers
	- Use of singletons when appropriate
	- Removed many function calls in loops' end conditions
	- Improved XMLTester output and user interface
	- Improved memory use in geos::geom::util::PolygonExtractor
	- Ported JTS-1.7 version of ConvexHull with big attention to
	  memory usage optimizations.
	- Changed CoordinateArrayFilter to reduce memory copies
	- Changed UniqueCoordinateArrayFilter to reduce memory copies
	- Added rectangle-based optimizations of intersects() and
	  contains() ops
	- Inlined all planarGraphComponent class
	- More iterators returning methods and inlining in planargraph.
	- Obsoleted toInternalGeometry/fromInternalGeometry
	- Improved buffering speed and robustness by using Snap Rounding

- Semantic changes

	- SegmentString: getCoordinates() doesn't return a clone
	  anymore, getCoordinatesRO() obsoleted.
	- JTS packages mapped to geos:: sub-namespaces
	- Geometry::getInteriorPoint() returns NULL if called
	  against an EMPTY geom
	- LineString::get{Start,End}Point return NULL for
	  EMPTY geoms
	- GEOSException is now derived by std::runtim_exception
	  and thrown by const reference.
	- Geometry constructors made protected, to force use
	  of a GeometryFactory.

- Correctness:
	- More const-correct signatures
	- Stronger methods typing (removed some void * args).
	- Changed index-related funx signatures to use size_t
	  rather then int
	- More const-correctness in Buffer "package"
	- Bugfix in LineString::getCoordinate() failing to return
	  NULL from getCoordinat() when empty.
	- Use unsigned int for indexes and sizes.

- Layout changes:
	- Namespaces mapping JTS packages
	- Renamed classes after JTS names (namespaces use made this possible
	  w/out name clashes)
	- Splitted headers, for build speedup and possible API reduction.
	- Moved source/bigtest and source/test to tests/bigtest
	  and test/xmltester
	- Moved C-API in it's own top-level dir capi/
	- Reworked automake scripts to produce a static lib for each subdir
	  and then link all subsystem's libs togheter
	- Renamed DefaultCoordinateSequence to CoordinateArraySequence.
	- Renamed OverlayOp opcodes by prepending the 'op' prefix, and
	  given the enum a name (OpCode) for type-safety.

- Bug fixes:
	- Fixed bug causing redundant linestrings to be returned in the
	  result of overlaying polygons containing touching holes (#13)
	- Fixed integer conversion bug
	- Fixed PointLocator handling of LinearRings
	- Added missing ::clone() methods for Multi* geoms

- (Partial) Detailed list of changes:
	- Changed SegmentNode to contain a *real* Coordinate (not a pointer)
  	  to reduce construction costs.
	- Changed geomgraph nodeMap to use Coordinate pointers as keys
	- Envelope destructor made non-virtual to give compiler more static
	  binding options.
	- Changed BufferSubgraph::computeDepths to use a set instead of a
	  vector for checking visited Edges.
	- Made LineIntersector a concrete type
	- Node::isIncidentEdgeInResult() method made virtual
	- Const-correct signatures in LineMerger package
	- Changed operation/valid/*NestedRingTester classes interface
	  to use Coordinate pointers instead of copies.
	- Changed EdgeIntersectionList to use a set instead of a vector
	- Changed DepthSegment to store a real Coordinate rather then a pointer.
	- Changed SubgraphDepthLocater to store real containers rather then
	  pointers.
	- Changed BufferSubgraph to store a real RightmostEdgeFinder and real
 	  containers rather then pointers.
	- CoordinateSequence API changes:
		- point index and size related functions
	  	  use unsigned int rather then int
	- Changed EdgeEndStar to maintain a single container for EdgeEnds
	- Changed PlanarGraph::addEdges to take a const vector by ref
	  rathern then a non-const vector by pointer
	- Changed EdgeList::addAll to take a const vector by ref
	  rather then a non-const vector by pointer
	- Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
	  const to CoordinateSequence
	- LineBuilder::lineEdgesList made a real vector, rather then pointer
	  (private member)
	- SegmentString::eiList made a real SegmentNodeList, rather then
	  a pointer (private member)
	- Removed coordinate copies in ElevationMatrix::elevate
	- Changed CoordinateFilter interface to have a const method
	  for filter_rw, updated interfaces using this to take
	  const CoordinateFilter (apply_rw).

Files:
RevisionActionfile
1.6modifypkgsrc/geography/geos/Makefile
1.3modifypkgsrc/geography/geos/PLIST
1.5modifypkgsrc/geography/geos/distinfo