Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proper way to dynamic_cast LineString #285

Closed
molind opened this issue Feb 24, 2020 · 10 comments
Closed

Proper way to dynamic_cast LineString #285

molind opened this issue Feb 24, 2020 · 10 comments

Comments

@molind
Copy link

molind commented Feb 24, 2020

Something strange happens with LineString:

    std::unique_ptr<geos::geom::LineString> a = geos::geom::GeometryFactory::getDefaultInstance()->createLineString();
    geos::geom::Geometry *b = a.get(); // ok
    geos::geom::LineString *c = dynamic_cast<geos::geom::LineString *>(b); // c = nullptr

but works with point:

    std::unique_ptr<geos::geom::Point> a = geos::geom::GeometryFactory::getDefaultInstance()->createPoint();
    geos::geom::Geometry *b = a.get(); // ok
    geos::geom::Point *c = dynamic_cast<geos::geom::Point *>(b); // c = b

Is there any reasonable explanation?

@molind
Copy link
Author

molind commented Feb 25, 2020

Forgot to mention that i'm using libgeos 3.8.0 from brew. On macOS Catalyna 10.15.3, in Xcode 11.3.1

@dbaston
Copy link
Member

dbaston commented Feb 25, 2020

This sounds similar to a unit test that also fails on OS X: https://github.com/libgeos/geos/blob/master/tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp#L56

That failure has been reported at least three times and never resolved:
https://trac.osgeo.org/geos/ticket/299
https://trac.osgeo.org/geos/ticket/328
https://trac.osgeo.org/geos/ticket/894

@molind
Copy link
Author

molind commented Feb 26, 2020

Black magic.

@molind
Copy link
Author

molind commented Feb 26, 2020

Built debug version of geos 3.8.0 from sources. Tried it. It works without issues. Very interesting.

And now most of geos_c also won't work correctly because it relies on dynamic_cast<LineString *> a lot.

@molind
Copy link
Author

molind commented Feb 26, 2020

Now I've tried static version from brew. No issues.

@molind
Copy link
Author

molind commented Feb 26, 2020

next step. nm -gC libgeos.dylib shows bunch of vtables

00000000000ac920 S vtable for geos::geom::LinearRing
00000000000acf88 S vtable for geos::geom::MultiPoint
00000000000ab498 S vtable for geos::geom::LineSegment
00000000000ad178 S vtable for geos::geom::MultiPolygon
00000000000ac8a8 S vtable for geos::geom::GeometryFactory
00000000000acd98 S vtable for geos::geom::MultiLineString
00000000000abb50 S vtable for geos::geom::CoordinateSequence
00000000000ac670 S vtable for geos::geom::GeometryCollection
00000000000abe00 S vtable for geos::geom::CoordinateArraySequence
00000000000ac860 S vtable for geos::geom::GeometryComponentFilter
00000000000ab570 S vtable for geos::geom::CoordinateArraySequenceFactory
00000000000adb38 S vtable for geos::geom::prep::PreparedPoint
00000000000adbc8 S vtable for geos::geom::prep::PreparedPolygon
00000000000adaa8 S vtable for geos::geom::prep::PreparedLineString
00000000000ada08 S vtable for geos::geom::prep::BasicPreparedGeometry
00000000000add30 S vtable for geos::geom::prep::PreparedPolygonCovers
00000000000adcd8 S vtable for geos::geom::prep::PreparedPolygonContains
00000000000ad978 S vtable for geos::geom::util::PointExtracter
00000000000ad9c0 S vtable for geos::geom::util::PolygonExtracter
00000000000ad7d8 S vtable for geos::geom::util::CoordinateOperation
00000000000ad8b0 S vtable for geos::geom::util::GeometryTransformer
00000000000ad928 S vtable for geos::geom::util::LinearComponentExtracter
00000000000ad788 S vtable for geos::geom::util::ComponentCoordinateExtracter
00000000000ad830 S vtable for geos::geom::util::Densifier::DensifyTransformer
00000000000ad368 S vtable for geos::geom::Point
00000000000ad598 S vtable for geos::geom::Polygon
00000000000ac2e0 S vtable for geos::geom::Geometry::GeometryChangedFilter
00000000000ac318 S vtable for geos::geom::Geometry

no vtable for LineString as you may notice.

@molind
Copy link
Author

molind commented Feb 26, 2020

Compiled same version on Ubuntu 18.04 and vtable persists. Looks like a compile issue.

macOS:

% c++ --version
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin19.3.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Ubuntu

$ c++ --version
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

@jsonn
Copy link

jsonn commented Feb 26, 2020

Please check the list of options from https://lld.llvm.org/missingkeyfunction.html#missing-key-function

@dbaston
Copy link
Member

dbaston commented Feb 26, 2020

Thank you for the link, @jsonn. @molind , I wonder what happens if you move the definition of LineString's destructor from the header to the source file?

molind added a commit to molind/geos that referenced this issue Feb 27, 2020
To have a vtable we should have explicit definition of key function. Details: https://lld.llvm.org/missingkeyfunction.html#missing-key-function
@molind
Copy link
Author

molind commented Feb 27, 2020

@dbaston It works! I have sent pull request.

strk pushed a commit that referenced this issue Mar 2, 2020
dbaston pushed a commit to dbaston/libgeos that referenced this issue Mar 2, 2020
dbaston added a commit to dbaston/libgeos that referenced this issue Mar 2, 2020
@dbaston dbaston mentioned this issue Mar 2, 2020
@molind molind closed this as completed Mar 3, 2020
strk pushed a commit that referenced this issue Mar 10, 2020
To have a vtable we should have explicit definition of key function. Details: https://lld.llvm.org/missingkeyfunction.html#missing-key-function
strk pushed a commit that referenced this issue Mar 10, 2020
clrpackages pushed a commit to clearlinux-pkgs/geos that referenced this issue Dec 30, 2022
Andrew Bell (1):
      Fix windows compilation issues.

Brendan Ward (14):
      Add GEOSDensify to CAPI
      Fix geometry variable name
      Remove guard for null geometry and associated test
      Move empty check to Densifier; reduce test boilerplate
      Ensure densify results in segments <= tolerance
      Make sure that Polygon::compareToSameClass compares holes
      Expand XML densify tests, reduce boilerplate in C API densify tests
      Adds several CAPI tests for GEOSDistanceWithin
      Failing test case for GEOSDistance floating point overflows
      Prepared geometry predicate exception memory leak (#506)
      ENH: Add GEOSGeom_createRectangle to C API (#558)
      Add GEOSHilbertCode to C API (#556)
      Add GEOSGeom_transformXY to C API
      Add warning related to #585 (#586)

Casper van der Wel (10):
      C API Headers
      C API plus tests
      Some missing includes
      Test segfaults
      Fix tests
      Clean
      Docstrings
      Writer WIP
      Finish C API
      Clean

Daniel Baston (491):
      Add comment explaining GEOSEqualsExact
      Avoid throwing exceptions as pointers
      Minimize heap allocations in IndexedPointInAreaLocator
      Remove unneeded constructor call
      Store SortedPackedIntervalRTree leaf and branch nodes in vectors
      Remove empty file
      Fix incorrect error return values in CAPI
      Resolve MSVC warning
      Fix memory leak in SIRtree
      Resolve segfault in BinTree
      Fix memory leak introduced in aefa49cbc
      Tidy MCPointInRing
      Resolve unused value warning
      Fix typo in error message [ci skip]
      Use unique_ptr in FastSegmentSetIntersectionFinder
      Make new methods static
      Fix mem leaks in SIRtreePointInRing
      Improve orientationIndex performance with fast filter
      Fix typos in comments
      Simplify for loop syntax
      Use unique_ptr for managed Envelopes in LineSegmentIndex
      Remove C-style casts
      Simplify for loop definition
      Store LineSegmentIndex Quadtree as value, not pointer
      Use unique_ptr for Quadtree-owned envelopes
      Use std::array for Quadtree nodes
      Simplify for loop
      Avoid specifying iterator type
      Use std::pair instead of length-2 std::vector
      Optimize intersection testing
      Change std::map to std::unordered_map in TopologyPreservingSimplifier
      Update PR to incorporate master branch refactoring
      Enable commented-out test
      Complete tuple->struct transition
      Replace fixed-size std::vector with std::array
      Update AppVeyor badge URLs
      Fix conversion error warning in Profiler
      NEWS entry for GEOSPointOnSurface improvements
      Add test case for DistanceOp::closestPoints
      Run make distcheck on Travis
      Install git2cl for Travis autotools builds
      Fix make distcheck failures
      Fix memory leaks in MinimumBoundingCircle
      Fix memory leak in IndexedFacetDistance
      Fix memory leaks in GeometryCollection unit test
      Fix memory leak in GeometryGraph
      Fix copy-paste error in debug output
      Add ability to retrieve only valid polygons from Polygonizer.
      Remove some manual memory management
      Improve Polygonizer performance for cases with many potential holes
      Make Polygonizer::findValidRings static
      Simplify for loops in PolygonizeGraph
      Add GEOSPolygonize_valid to CAPI
      Initial implementation of CoverageUnion.
      Fail on overlapping or incorrectly noded inputs
      Define a hash function for LineSegment
      Add GEOSCoverageUnion to C API
      Polygonizer performance improvements
      Add GEOSCoverageUnion CAPI test
      Fix compilation for gcc 4.8
      Rework c5c826b340 to match what ultimately landed in JTS
      NEWS entry
      Add HoleAssigner to automake files
      Switch Travis builds to xenial
      Fix compilation on gcc 4.8
      Switch Travis builds to xenial
      Reduce Travis build matrix
      Reduce CMake requirement to version installed on AppVeyor
      Fix warnings in FacetSequence
      Some updates to README [ci skip]
      Remove unstable API warnings for tests
      Disable ttmath ASM for MSVC
      Revert "Remove unstable API warnings for tests"
      Revert "Remove unstable API warnings for tests"
      Update Visual Studio instructions in README.md [ci skip]
      .gitignore additions
      [CMake] Exclude perf tests from make check
      [CMake] Don't package build subdirs of project root
      Pull removeRepeatedPoints out of CoordinateSequence
      Use unique_ptr for functions returning CoordinateSequence
      Fix handling of repeated points in ScaledNoder
      Use unique_ptr for prepared geometries
      Remove leftover nmake.opt
      Remove CoordinateSequence::toVector()
      Add comment explaining c14208190ad4
      Add missing GEOS_DLL for MSVC
      Remove unneeded Coordinate copies in InteriorPointArea
      Clear -Wshadow warning in FacetSequence
      [CMake] Add target for doc/example.cpp
      Return unique_ptr from Geometry::clone and Geometry::reverse
      Return unique_ptr from Geometry::convexHull()
      Return unique_ptr from Geometry::getEnvelope, getBoundary, getCentroid
      Return unique_ptr from Geometry::relate
      Make Geometry::relate non-virtual
      Return unique_ptr from Geometry::getInteriorPoint
      Make Geometry::getInteriorPoint non-virtual
      Return unique_ptr from Geometry overlay, buffer methods
      Fix compilation of example.cpp
      Fix compilation with gcc 4.8
      Report code coverage from Travis
      Exclude vendored libs from codecov
      Disable coverage comments on PRs [ci skip]
      Remove CoordinateSequence::deleteAt
      Add missing benchmark to CMake build
      Resolve memory leaks in DistanceOp
      Add Voronoi perf test
      Improve performance of VoronoiDiagramBuilder
      Add make_unique to geos_util.h
      Remove using geos::detail::make_unique statements
      Remove some trivial uses of CoordinateSequence::add
      Implement CoordinateSequence::toString()
      Move CoordinateSequence::add variants to CoordinateArraySequence
      Resolve trivial TODO in LineSegment::reverse
      Remove some unnecessary Coordinate copies
      Remove additional unnecessary Coordinate copies
      Add GEOSPreparedContains perf test
      Use adaptive OrientationIndex in RayCrossingCounter
      Avoid double-testing all positive PIP results in
      Avoid performing envelope test against Points
      Add Point short-circuit to PreparedPolygonPredicate::isAnyTestComponentInTargetInterior
      Use custom GeometryComponentFilter in PreparedPolygonPredicate to avoid creating vectors
      Add GeometryComponentFilter::isDone()
      Use C++11 std::chrono for Profiler
      Remove manual memory management in Profiler
      More informative timing output in VoronoiPerfTest
      Quiet a couple of warnings
      Add some prepared polygon predicate tests
      Clarify PIP short-circuits in PreparedPolygonPredicate
      Avoid relying on numeric ordering of Location
      Rename location filters
      Factor out AbstractPreparedPolygonContains::evalPointTestGeom
      Fix incorrect return from OutermostLocationFilter
      Handle Polygon rings as LinearRings
      Add test case for #850
      Fix memory leak on GeometryCollection::getCoordinate
      Remove Puntal, Lineal, and Polygonal classes
      Reformat Doxygen comment that apparently breaks autotools build
      Add Geometry::isDimensionStrict
      Convert Location into an enum class
      Return unique_ptr from WKTReader and WKBReader
      Simplify constuction of base class unique_ptr from subclass unique_ptr
      Remove trivial heap alloc in GeometryPrecisionReducer
      Use unique_ptr in GeometryEditor
      Return unique_ptr from GeometryCombiner
      Fix test build failures
      Throw unthrown exception
      Throw another unthrown exception
      Remove manual memory management from GeometryCollection, Polygon
      Fix badge format in README.md
      Remove commented-out code
      Avoid heap-allocating std::vector in CoordinateArraySequence
      Remove virtual inheritance in Geometry subclasses
      Remove use of std::mem_fun
      Fix always-true conditional
      [azure-pipelines] Disable C++20 build for XCode 10.x
      Augment GeometryFactory with a methods taking and returning unique_ptr
      Add FixedSizeCoordinateSequence
      Add missing NEWS entry for #873
      Catch exception by reference
      Catch exception by reference
      [azure-pipelines] Remove MSVC 2017 C++20 build
      Delaunay performance enhancements
      Avoid a heap alloc / raw pointer usage
      Store visit state with each QuadEdge instead of in a set
      NEWS updates
      Add envelope test to Distance::segmentToSegment
      Add failing test for #858
      Fix invalid read on exception in IsValidOp
      Attempt to quiet TUT warnings in both MSVC, gcc
      Store PrecisionModel as a value
      Fix doc typos
      Use empty() instead of size() where possible
      Add test for #588
      Add comment referring to ticket
      Add test case for #523
      Add FixedSizeCoordinateSequence to autotools build
      Make FixedSizeCoordinateSequence match CoordinateArraySequence dim
      Mark FixedSizeCoordinateSequence methods as final
      Use unique_ptr in geomgraph::Edge
      Use unique_ptr in NodedSegmentString
      Use unique_ptr in MonotoneChain
      Remove some heap-allocated vectors
      Add Doxygen "docs" target to CMake build
      Add doxygen to Travis
      Avoid unnecessary sort in SubgraphDepthLocater
      Add multi-ordinate coordseq setters and getters to C API
      Clear -Wsuggest-override warnings
      Add include to IsSimpleOpTest.cpp
      Add Coordinate::distanceSquared
      Use uint8_t for TopologyLocation size
      Avoid Polygon->Geometry conversion in CoverageUnion
      Remove some unneeded heap allocs in EdgeEndBuilder
      Simplify MakeValid
      Improve MinimumDiameter
      Fix typo in a6edac73
      Avoid unneeded Coordinate copies in MinimumBoundingCircle
      Manage some prepared geometry members with unique_ptr
      Simplify Geometry methods with new GeometryFactory methods
      Avoid heap alloc in EdgeRing::toPolygon
      Simplify ConvexHull::lineOrPolygon
      Simplify WKTReader::readPolygonText
      Simplify QuadEdgeSubdivision::getVoronoiCellPolygon
      Fix gcc 4.8 build
      Register individual tests with ctest
      Add overlay perf test
      Handle triangle coords with unique_ptr in QuadEdgeSubdivsion
      Return unique_ptr from Envelope->Geometry conversion
      Simplify BufferBuilder::createEmptyResultGeometry()
      Store polygonize EdgeRing holes as unique_ptr
      Store Polygonizer invalid ring lines as unique_ptr
      Update GeometricShapeFactory
      Avoid heap-allocating Coordinate vectors in SineStarFactory
      Store GeometryGraph EdgeRing rings using unique_ptr
      Simplify GeometryFactory::buildGeometry
      Simplify GeometryFactory::buildGeometry
      Return unique_ptr for empty geometry factory methods
      Use empty geometry constructor in GeometryCombiner
      Simplify GeometryFactory usage in GeometryEditor
      Use empty geometry constructors in WKTReader
      Use empty geom constructor in getBoundary methods
      Avoid heap alloc in GeometryCollection::reverse
      Avoid heap alloc in GeometryNoder::toGeometry
      Avoid vector heap alloc in BuildArea
      Use simpler GeometryFactory methods in WKBReader
      Use simpler GeometryFactory methods in CoordinateOperation
      Add GeometryFactory::buildGeometry signature and simplify implementations
      Use simpler GeometryFactory methods in GeometryTransformer
      Simplify FuzzyPointLocator
      Minor simplification in ConvexHull
      Return unique_ptr from MinimumBoundingCircle
      Simplify access to NodeMap
      Make geos_unit return 1 when called with non-existent test name
      Standardize test file naming
      Fix CMake inference of test suite name from file name
      Remove unused files
      Inline most methods of TopologyLocation and Label
      Declare empty destructors as default in header
      Inline EdgeEnd::getCoordinate
      Inline AbstractNode and ItemBoundable
      Reduce heap allocs in EdgeIntersectionList
      Back EdgeIntersectionList with std::vector
      Avoid heap alloc in EdgeIntersectionList::createSplitEdge
      Store OrientedCoordinateArrays in unordered_map
      Inline many methods of Quadrant
      Avoid repeated call to CoordinateSequence::getSize()
      Avoid dynamic_cast in STRtree
      Reduce size of SweepLineEvent
      Reduce heap allocations in SimpleMCSweepLineIntersector
      Remove unused Edge::name
      Reduce CoordinateSequence::getAt calls in MonotoneChainBuilder
      Inline many methods of Envelope
      Optimize Edge Envelope calculation
      Eagerly calculate Envelope in Edge and MonotoneChain
      Inline CoordinateArraySequence destructor
      Inline small methods of Depth
      Optimize LineString::computeEnvelopeInternal
      Reuse vector between iterations of MCIndexNoder::intersectChains()
      Remove heap alloc in EdgeEndBundle
      Avoid heap alloc in DirectedEdgeStar
      Inline simple methods of BasicSegmentString
      Inline short methods of SegmentIntersector
      Use array instead of vector in SegmentIntersector
      Fix build for -DDISABLE_GEOS_INLINE=YES
      Catch exception by reference
      Add DefaultCoordinateSequenceFactory
      Add benchmark for unary union of segments
      Reduce dynamic_cast usage in SimplePointInAreaLocator
      Remove redundant envelope test
      Do cascaded union of lines only after standard union fails
      Update unit tests to accomodate UnaryUnion optimization.
      Update expected result for issue-geos-392 test
      NEWS updates
      Ignore z in Coordinate::HashCode
      Return specific type from getGeometryN methods
      Avoid accessing pointer after move
      Provide more XML test output on failure
      Show 3.8 branch badges in README.md
      Avoid access past end of vector
      Improve Delaunay/Voronoi performance
      Minor optimization to Vertex::isCCW
      Avoid returning size-1 CoordinateSequence from empty point
      Distinguish between 2D and 3D empty Points
      Catch exception by reference
      Initialize interval tree with known number of segments
      Inline SortedPackedIntervalRTree::insert
      Presize segment vector in IntervalIndexedGeometry
      Speed up sort in SortedPackedIntervalRTree construction
      Remove copy-paste error handling in CAPI
      Disable AzP MSVC C++20 build affected by compiler bug
      Fix memory leak in PointTest
      Avoid use of int for boolean in WKBWriter
      Clear signed->unsigned warnings in CAPI
      Clear unused variable warning
      Simplify CAPI polygonizer code
      Remove heap alloc in GEOSGeom_createCollection_r
      Simplify GEOSLineMerge_r
      Avoid MonotoneChain self-compare in SimpleMCSweepLineIntersector
      Fix MSVC build
      Fix a few clang conversion warnings
      Add TopologyLocation tests
      Avoid indexing polygon shell if we have no holes to test
      Use unordered_map for GeometryGraph::lineEdgeMap
      Improve performance of PlanarGraph::findEdgeInSameDirection
      Add generic perf test for unary operations
      Lazily build index in IndexedPointInAreaLocator
      Pull vector declaration out of loop
      Use spatial index to check shell nesting in IsValidOp
      Avoid nested shell check for single-part MultiPolygons
      Optimize IndexedNesterRingTester
      Build up EdgeRing points in std::vector, not CoordinateSequence
      Remove using namespace std
      Disable Travis scan-build job
      Throw exception for unhandled situation in IndexedNestedShellTester
      Remove unneeded ctor calls
      Provide location for GEOSNode failure
      Add test for MakeValid
      Fix README badge URLs
      Fix memory leak in GEOSLineMerge
      Add test for GEOSversion
      Make LineMerger noncopyable (fixes MSVC build)
      Remove unreachable code
      Update deprecated throw() specifications
      Declare nan as constexpr
      Retain component order in MultiLineString::reverse
      Fix comment typos
      Add test showing LineString vtable creation
      Add Envelope::distanceToCoordinate
      Add envelope distance test in LineStringSnapper
      Add headers
      Add envelope check to DistanceOp::computeMinDistance
      Optimize and inline Envelope::distance
      Add additional envelope test to DistanceOp::computeMinDistance
      Clarify variable names
      Add Envelope::distanceSquared
      Use reference in Envelope::distance signature
      Add some tests for Envelope::distance
      Fix invalid reads in LEC and MIC tests
      Remove manual memory management from FacetSequenceTreeBuilder
      Add failing test for GEOSDistance segfault
      Avoid heap allocs in FacetSequenceTreeBuilder
      Optimize FacetSequence envelope calculation
      Skip zero-length segments in FacetSequence::distance
      Add envelope checks to FacetSequence::distance
      Add some CAPI tests
      Remove heap alloc in SegmentNodeList
      Return SegmentString by unique_ptr
      Add const to SegmentNodeList methods
      Fix some memory leaks in tests
      Add union to UnaryOpPerfTest
      Inline many methods of OverlayLabel
      Clear warnings about deprecated assignment operator
      Remove default arguments for Coordinate constructor
      Use char array instead of std::istream in WKBReader
      Inline GeometryFactory::getPrecisionModel
      Inline PrecisionModel::makePrecise
      Fix some typos
      Store SegmentNode values directly in SegmentNodeList
      Store SegmentNode in std::vector instead of std::map
      Tidy SegmentNodeList
      Avoid Coordinate copy in SnapRoundingNoder
      Inline SegmentNode::compareTo
      Inline simple methods of LineIntersector
      Inline short methods of EdgeKey
      Inline short methods of NodingIntersectionFinder
      Inline small methods of overlayng::Edge
      Inline short methods of overlayng::OverlayEdge
      Inline some methods of NodedSegmentString
      Fix autotools build
      Another autotools fix
      Avoid CoordinateSequence clone in EdgeNodingBuilder
      Avoid CoordinateSequence clone in OverlayEdgeRing
      Remove Envelope copy constructor / assignment operator
      Inline Envelope::expandToInclude methods
      Address "redundant move" compiler warnings
      Add test for MakeValid of empty MultiPolygon
      Inline CGAlgorithmsDD::orientationIndexFilter
      CMake: Use GNUInstallDirs to set install directories
      Remove StackWalker
      Throw exception instead of dumping to stderr
      [CMake] Make sure that assert() is disabled for any non-Debug build.
      Remove autotools configuration
      [CMake] Add -ffloat-store to 32-bit build
      [CMake] Disable issue-geos-837 test on 32-bit builds
      Remove old example program
      Clear compiler warning in GEOSGeom_createPolygon_r
      Remove Travis configuration [ci skip]
      Resolve some fussy clang warnings
      Make some WKTReader methods static
      Read unsigned integers in WKBReader
      Quiet warnings in WKTReader
      Mark WKTReader methods const
      Quiet more clang warnings
      Clear more clang warnings
      Quiet clang warnings
      Quiet clang warnings
      Fix doxygen
      Revert "Fix doxygen"
      Fix doxygen
      [CMake] Enable "developer mode" from git worktree [ci skip]
      Clear clang warnings
      Mark some methods/parameters const/static
      Clear clang warnings
      Clear clang warnings in OverlayNG
      Mark some methods as static/const
      Shrink EdgeSourceInfo
      Clear MSVC warnings
      Remove some duplicated code in CAPI tests
      Remove more duplicated code in CAPI tests
      Exclude vendored libs from GEOS compiler warnings
      [appveyor] Emit CMake version
      Avoid install error about ryu?
      Add comment [ci skip]
      Restore codecov reports
      Add some information to side location error message.
      Add Debug configuration to GitHub Actions
      Add typed variant of WKTReader::read
      Add methods to release objects owned by some Geometry types
      Enable GeometryCombiner to consume its inputs
      Fix MSVC build
      Represent empty envelope with NaN
      Guard against use of meaningless null Envelope bounds
      Remove outdated doc doc
      Mark some RayCrossingCounter methods const
      Add MakeValid test from PostGIS
      Avoid ElevationModel calcs for 2D geometries
      Use unordered_map in OverlayGraph
      Inline EdgeKey constructor
      Remove redundant check in Octant
      Add some benchmarks using Google Benchmark library
      Inline some methods of Envelope and MonotoneChain
      Inline some LineIntersector methods
      Add LineIntersector perf test
      Remove autotools doc build instructions [ci skip]
      Remove linear CascadedUnion
      Add IndexedPointInAreaLocator benchmark (WIP)
      Add MonotoneChainBuilder perf test
      Reimplment MonotoneChainBuilder as a CoordinateFilter
      Add -Werror to developer build
      Clear warnings in WKBReader
      Fix gcc warnings in geosop
      Clear WKBReader shadow warning
      Ignore warning options not supported by compiler
      Clear gcc warning in RobustLineIntersectorZTest
      Fix errors in GEOSNormalize doc
      Quiet CMake warnings when Benchmark library not found
      Fix warning
      Add TemplateSTRtree
      Add SpatialIndex benchmark
      Switch to templated tree in HoleAssigner
      Switch to template tree in IndexedNestedShellTester
      Use template tree in MCIndexNoder
      Use template tree in MCIndexSegmentSetMutualIntersector
      Use TemplateSTRtree in IndexedPointInAreaLocator
      Use TemplateSTRtree in CascadedPolygonUnion
      Use TemplateSTRtree in IndexedFacetDistance, MinimumClearance
      Use TemplateSTRtree in IndexedNestedRingTester
      Use TemplateSTRtree in C API
      Improve IndexedPointInAreaLocator performance
      Reduce node size in IndexedPointInAreaLocator tree
      Remove unused field in IndexedPointInAreaLocator
      Avoid vector use in MonotoneChain index queries, mark methods const
      Reduce heap allocs in SegmentNodeList
      Add mingw-w64 build to GitHub Actions
      Quiet signed conversion warning
      Quiet gcc ABI change warning
      Quiet signed conversion warnings
      Add CAPI functions to copy coordinate sequences from arrays and buffers
      Future-proof CoordSeq array API against M values
      Update branch references in README
      Restore availability of GEOSversion under GEOS_USE_ONLY_R_API
      Handle buffers with M in GEOSCoordSeq_copyFromBuffer,
      Document and test ownership semantics of GEOSSTRtree_insert
      Add GEOSSTRtree_query thread-safety test
      NEWS entry [ci skip]
      Fix memory leak in unit test
      Fix compilation error in GEOSCoordSeqPerfTest
      Enable benchmarks in one CI run
      Fix syntax error in workflow file
      Fix syntax error in workflow file
      Test Debug build with MSVC22 (#514)
      Reduce heap allocations in MonotoneChainBuilder (#520)
      Add missing include to WKTReader.h
      Fix MSVC build name in Actions [ci skip]
      Multiple fixes to STRtree remove method (#545)
      Perf improvement to GEOSCoordSeq_copyToBuffer (#562)
      Properly short-circuit STRtree queries (#578)
      Add test cases for Trac #1134 (#670)
      Fix crash in GEOSIntersects with empty point inputs (#673)
      GeometryFactory: Add createMultiPoint(std::vector<Coordinate>&&)
      Fix RelateOp for empty geometry and closed linear geometry
      GeometryPrecisionReducer: Avoid returning 3D Polygon on 2D input

Darafei Praliaskouski (1):
      Fix Delaunay robustness by using longer floating point variable on inCircle

Dylan Richardson (2):
      docs: update flags used in tar example (#521)
      inline: ensure inline.h is included in all .inl includers (#525)

EC2 Default User (1):
      Add fp-contract=off flag to builds to avoid precision mistakes in the double-double code

Even Rouault (67):
      Densifier.h: add missing override keyword
      Do not compile unused function getIndent()
      tinyxml2: add missing override keyword
      astyle: add missing override keyword
      .travis.yml: use ccache to speed-up builds
      appveyor.yml: reduce the number of configurations to 2, still testing 2 compiler versions, 2 architectures and 2 makefile generators (fixes #955)
      InteriorPointAreaPerfTest.cpp: fix MSVC build (fixes #957)
      Integrate InteriorPointAreaPerfTest.cpp in autoconf builds (fixes #957)
      tools/astyle/Makefile.am: fixes so that the .tar.gz generated by 'make dist' can be built with cmake
      src/algorithm/InteriorPointArea.cpp: fix -Wshadow warning (fixes #954)
      Add operation::polygonize::BuildArea
      Add operation::valid::MakeValid
      make check: fix whitespace detection for out-of-tree builds
      NEWS: mention GEOSBuildArea and GEOSMakeValid
      Use !std::isfinite() to exclude nan and infinite values
      Fix a few CLang 9 -Wextra warnings
      Fix -Wmismatched-tags warning related to WK[T/B][Reader/Writer]
      Add a geos::detail::down_cast<To>(From*) function
      include/: add deleted copy constructors and assignment operators
      Orientation.cpp: fix warning about implicit cast of size_t to int
      WKBReader.cpp: fix warning about signed vs unsigned comparison
      GEOSGeom_setPrecisionTest.cpp: fix warning about initialization of members not in the order of their declaration
      TaggedLineStringSimplifier.cpp: avoid importing whole std namespace to avoid cppcheck confusing the class' remove method with std::remove
      operator<< on MaximalEdgeRing: remove useless nullptr check
      Fix cppcheck warnings related to postfixOperator
      Add tools/cppcheck.sh
      .azure-pipelines.yml: add a job to run tools/cppcheck.sh
      EdgeList.cpp: *(&foo)) is equivalent to foo
      KdTree.cpp: remove useless duplicated condition
      HotPixel.cpp: fix -Wreorder warning
      SineStarFactory::createSineStar(): fix compiler warning about signed/unsigned comparison in for() comparison
      Fix warnings about signed vs unsigned comparisons
      Fix warnings about implicit int->uint8_t casts
      Fix wrong use of variable assingment instead of equality comparison
      Avoid shadowing of member variable pm
      Mark methods as static
      Fix "Variable 'xx' is reassigned a value before the old one has been used" type of warnings
      Fix crash with GEOSPreparedIntersects/Covers on a POINT EMPTY
      CoverageUnion::polygonize(): remove unneeded use of std::unique_ptr
      Fix always true tests
      Remove always false comparisons
      Just re-throw original object instead of a copy
      Do not test unsigned variable against being negative
      Reduce the scope of local variables
      Declare const parameter
      Avoid useless comparison against glsz inside loop
      Remove unneeded explicit .clear()
      Geometry classes: make clone() return a std::unique_ptr<ActualGeometryType>
      Suppress casts after clone() that are now useless
      Replace uses of dynamic_cast<> with detail::down_cast<> when the cast is bound to succeed
      Add missing nullptr checks after dynamic_cast<> that could fail
      Remove useless override of equalsExact() in MultiXXXX classes
      Geometry classes: make reverse() return a std::unique_ptr<ActualGeometryType>
      Remove useless LineSequencer::reverse()
      Do get() and release() in same invokation
      Avoid undefined behavior in casts in Densify(), DiscreteHausdorffDistance and DiscreteFrechetDistance
      Move impl of setDensifyFraction() impls to .cpp file to avoid linking issue with java_math_round() on Windows
      OffsetCurveSetBuilder::addRingSide(): fix memleak
      test/unit: fix memory leaks
      GEOSMakeValidTest.cpp: fix memory leaks
      SegmentNodeList::getSplitCoordinates(): fix quadratic performance pattern
      LineSegment: tiny improvement in project(const LineSegment&, ...) and closestPoint()
      Remove always true check
      KdTree::queryNode(): rewrite it to avoid blowing up the stack
      GeoJSON reader: fix crashes (in debug mode) on invalid GeoJSON
      OffsetCurve::getBufferOriented(): return poly.clone() when numGeometries == 1 (#557)
      Boring Cppcheck fixes (#626)

Evgen Bodunov (1):
      Fixed https://trac.osgeo.org/geos/ticket/894 and https://github.com/libgeos/geos/issues/285

Ewout ter Hoeven (1):
      DOCS: Convert NEWS to NEWS.md enabling Markdown layout (#491)

Eyal (2):
      Add GEOS_CC_LIBS for linking with c++
      Remove autotools configuration instructions

Fabrice Fontaine (1):
      CMakeLists.txt: add BUILD_BENCHMARKS

GOUJON Évan (2):
      capi: Fix geometry destructor function name
      Fix some C API documentation typos

Greg Troxel (1):
      README.md: Clarify installation instructions

Grzegorz Szymaszek (2):
      Update the link to the geos-docker repository
      Remove redundant EditorConfig properties

Howard Butler (9):
      -DBUILD_SHARED_LIBS=ON for msvc builds in azp
      intPt is already a member variable. rename local object to ptInt
      cast type of INSIDE_AREA to match segIndex
      remove unused variables
      clean up many implicit bool conversions in the tests
      clean up more implicit bool conversions
      clean up implicit bool conversion
      clean up unused variable warnings
      check for empty extHandle using nullptr instead of 0

Jared Erickson (24):
      Add geojson reader and writer
      Change GeoJSONValue to use a union
      Fix build
      Fix build
      More const, auto, and ParseExceptions
      Code review comments: build vectors of unique_ptr.
      Fix build
      Update copyrights
      Fix seg fault on linux/gcc
      Add copy assignment operator
      Fix builds
      Add more units tests for reading geojson
      More const references
      Include json in dedicated namespace
      Vendorize and namespace nlohmann json
      Add c api tests for disjoint and touches
      Refactor tests
      Add unit test for GEOSCrosses
      Add covered by, covers, and overlaps c api unit tests
      Add capi unit tests for RelatePattern and Relate
      Add capi tests for to hex, wkb buf and typeid
      Add capi tests for sym difference
      Add c api tests for unaryunionprec and unioncascaded
      Add capi tests for getexeriorring, getgeometryn, and getinteriorringn

John K. Harvey (1):
      'make check' passes with autoconf 2.63.

Joris Van den Bossche (6):
      DOC: clarify that GEOSProject returns -1 on exception (C API)
      BUG: Fix GEOSProjectNormalized return -1 on exception
      Fix return error code of GEOSCoordSeq_setOrdinate (closes #1078)
      Add XML overlay test Shapely#1061
      Fix GEOSSTRtree_query_r to be thread-safe on first call (lock TemplateSTRtreeImpl on build)
      Add GEOSGeom_getExtent C API function (#555)

Justin Bronn (1):
      Use `#if` instead of `#ifdef` macros for an already defined value, fixes #1116.

Kirill Kouzoubov (1):
      Link against static lib if shared lib is disabled

Ko Nagase (1):
      Added GeoJSON reader/writer support in NEWS.md 3.10.0 section (#537)

Krzysztof Dyba (1):
      add R {geos} to bindings (#576)

Marian Krivos (1):
      Rename geos::M_PI to less intrusive MATH_PI (that don't collide with standard <cmath> name

Martin Davis (216):
      Disable cmake perf tests (#61)
      Update 'README.md'
      Build perf tests but don't run them by default
      Add InteriorPoint Area perf test, Profile enhancement (#63)
      Fix spaces in InteriorPointAreaPerfTest (#66)
      Fix more spaces in InteriorPointAreaPerfTest (#67)
      Port JTS InteriorPointArea improvements
      Fix declaration for std::sort
      Add tests README
      Add XMLTester time output for -v
      Improve tests README
      Rework the logic to cope with unsafe unions by envelope
      Reverting problematic fix for CascadedPolygonUnion
      Fix QuadEdgeSubdivision remove method
      Simplify logic for edge erase-remove
      Add QuadEdge output
      Remove no-op code from QESubdiv::remove
      Remove incorrect isoceles heuristic in QuadEdgeSubdivision::TriangleCircumcentreVisitor, fix unit test
      Remove OverlapUnion from CascadedPolygonUnion
      Add geosop utility
      update geosop README
      Update geosop README
      Fix some geosop warnings and build issues
      Improve geosop WKT numeric output
      Add geosop distance and nearestPoints operations
      Improve geosop logging
      Add geosop functions
      Add geosop delaunay and voronoi ops
      Fix geosop op help and negative args
      Update NEWS for geosop
      Add geosop simplifyDP and simplifyTP
      Improve geosop timing, add --repeat
      Fix geosop operation count
      Add geosop normalize operation
      Add geosop lineMerge operation
      Improve geosop number formatting
      update geosop README
      Update geosop README
      Add geosop PreparedGeometryCache class
      Add geosop isEmpty function
      Fix OverlayNG line ordering
      Update NEWS
      Check for invalid area before fixing polygonal result in Densifier and DPSimplifier
      Update NEWS
      Update 'README.md'
      Update 'README.md'
      Update 'README.md'
      Fix OverlayNG handling of flat interior line
      Update 'NEWS'
      Update 'README.md'
      Update 'README.md'
      Update 'NEWS'
      Remove geosop dead code
      Fix Cmake to recognize Apple Clang
      Fix geosop compile warnings
      Fix OverlayNG LineBuilder warning
      Fix geosop formatNum function
      Add geosop clipRect operation
      Fix IsValidOp nested shells detection
      Update NEWS
      Move IndexedNestedRingTester.h to include
      Fix BufferOp to avoid artifacts in certain polygon buffers
      Update NEWS
      Fix DPSimplifier collapsed ring removal
      Add geosop largestEmptyCircle
      Fix IsValidOp for LinearRings
      Update NEWS
      Improve geosop function descriptions
      Add geosop DiscreteFrechetDistance
      Fix DiscreteFrechetDistance initialization problem
      Update NEWS
      Add geosop function categorization
      Fix DiscreteFrechetDistance method misspelling
      Add geosop future function code
      Add geosop constrainedDelaunay
      Fix geosop op metadata
      Improve geosop op descriptions
      Add robust overlay test case
      Add SnappingNoder seeding
      Update NEWS
      Add geosop reducePrecision operations
      Add geosop help text for negative positional args
      Switch geosop to new OffsetCurve
      Update NEWS.md
      Add geosop concaveHull and concaveHullHoles
      Fix test READMD.md commands
      Update README.md
      Improve tests README
      Improve doc for building
      Sync BufferParameters logic with JTS
      Move doc Usage up
      Update docs
      Add  doc Tools page
      Update doc for Tools
      Fix RelateOp intersects for points near boundary (#570)
      Add doc Tools section on JTSTestBuilder
      Update NEWS
      Remove obsolete code
      Add doc for Bindings
      Change doc Go binding link
      Update NEWS
      Update NEWS for 3.10 IsValidOp, IsSimpleOp
      Improve doc for testing
      Add GEOSBufferTest for issue 1131
      Update README
      Add doc index file; try out Project heading
      Add doc index files
      Reorg doc for testing
      Improve doc Testing page
      Add doc Testing ctest ref
      Doc for Testing minor edits
      Fix IsValidOp to handle repeated node points (JTS-845)
      Rename IsValidOp methods
      Improve doc front page
      Minor doc front page improvements
      Rename doc project dir
      Fix doc links, etc
      Fix doc reference
      Remove doc extra link char
      Reorg doc home page
      Add geosop buildArea operation
      Improve doc build instructions
      Fix doc lack of note shortcodes
      Add doc Install TOC
      Add doc FAQ
      Add doc header GitHub link
      Add doc Cmake warning block
      Minor doc test update
      Add doc FAQ entry and images
      Improve doc FAQ structure
      Add doc FAQ entries
      Improve doc Tools page
      Fix IsSimple for closed lines with repeated endpoints (#591)
      Remove IsSimpleOp obsolete code
      Remove more IsSimpleOp dead code
      Update testing doc
      Add OverlayNG fix to NEWS
      Improve unit test runner (#594)
      Fix LengthIndexedLine for touching MultiLineString (#595)
      Update NEWS
      Fix PolygonHoleJoiner (#598)
      Add geosop operation: equals
      Add geosop operation fixInvalid
      Improve doc for C-API
      Fix C API doc for GEOSOffsetCurve
      Improve doc for GEOSOffsetCurve
      Improve C API doc for GEOSNormalize
      Formatting for C API doc for GEOSOffsetCurve
      Improve doc for usage
      Improve C API doc for GEOSEqualsExact
      Improve doc for Usage
      Try C API doc grouping
      Improve PolygonHull to avoid exceeding target param
      Add C API doc structure
      Add C API doc section
      Group C API doc for relate
      Improve C API doc title
      Add C API doc Buffer group
      Change C API doc title
      Add C API doc groups
      Add C API STRtree group
      Add C API doc groups
      Add C API doc Constuctions group
      Add C API doc groups
      Add C API doc groups
      Add C API doc groups
      Improve C API wording
      Add C API doc groups
      Fix C API doc grouping
      Add C API groups
      Add C API group
      Add C API doc groups for IO
      Test C API doc formatting
      Fix C API doc grouping
      Reorder C API doc groups
      Add C API doc group
      Reorder C API doc Validation group
      Improve C API doc group titles
      Move C API doc functions
      Update NEWS.md
      Fix memory-handling bugs found by GCC 12 (#610)
      Add checks, assert to FixedSizeCoordSeq.setPoints (#613)
      Fix MinimumDiameter getMinimumRectangle for flat input (#616)
      Add MinimumDiameter fix to NEWS
      Simplify GEOSMinRotatedRectTest
      Improve doc API section
      Update doc for Bindings
      Fix buffer inverted ring check (JTS-878)
      Update NEWS
      Minor NEW update
      Simplify BufferOp test
      Fix number formatting with comma seps
      Fix ConcaveHullOfPolygons hole erosion (#628)
      Fix OverlayNG geomunion to avoid lines in result (#630)
      Update NEWS
      Add geosop unionCoverage and unionCoverageNG
      Fix doc error in GEOSMakeValidParams_setKeepCollapsed
      Add NEWS items to 3.11
      Fix PreparedGeometry for EMPTY elements (#678)
      Update NEWS.md
      Fix LineSegment.orientationIndex(LineSegment) (#699)
      Update NEWS.md
      Fix DepthSegment comparison op (#707)
      Update NEWS.md
      Fix LineSegment.maxX from #715
      Fix typo in DepthSegment.compareTo
      Add OverlayNG support for simple GeometryCollection inputs (#716)
      Update NEWS.md
      Fix TPSimplifier to be deterministic (#718)
      Update NEWS.md
      Improve ConvexHull radial sort robustness (#724)
      Update NEWS.md
      Clean up ConvexHull unit tests
      More robust Delaunay Triangulation frame size heuristic (#728)
      Update NEWS.md
      Fix NEWS

Mateusz Łoskot (8):
      Modernize CMake configuration
      Add GEOS_DLL_EXPORT to compile definitions for MSVC
      Fix MSVC warning C4189: local variable not referenced
      Add GEOS_DLL missing from class RepeatedPointRemover
      Point CMAKE_*_OUTPUT_DIRECTORY to common location
      Disable dist and distcheck targets for multi-configuration generators
      Move tests/perf to new benchmarks directory
      Add CI builds on Azure Pipelines using CMake

Michael Sumner (1):
      GeosOp.cpp: minor fix explode description (#624)

Mike Taves (28):
      Fix typo in error message
      Fix CMake build without tests
      Update geos-config tool for consistency and escape paths
      Convert tools/ci to use POSIX Shell instead of Bash
      Restore #!/bin/sh for geos-config.cmake; escape prefix via CMake
      CMake: Remove NAMELINK_SKIP for C++ lib install
      Fix CMake Windows install: keep geos-config.cmake
      Drop SWIG bindings, including for Ruby and Python
      Feature: add support for pkg-config for GEOS C API (only)
      Validate complex UnaryUnion test with OverlayNG
      CMake: re-write GEOS_VERSION and GEOS_VERSION_PATCH after project()
      Temporarily disable component of TopologyPreservingSimplifier test
      CI: use different versions of CMake in GitHub Actions matrix
      CI: add .local/bin to GITHUB_PATH; use make directly
      Specify full namespace for MSVC C++20
      CMake: Configure geos-config and geos.pc using functions
      CMake: add option BUILD_ASTYLE, with default ON
      Install geosop using option BUILD_GEOSOP
      CMake: ensure C99 is enabled for ryu
      pkg-config: add -lgeos -lstdc++ -lm for static build options
      Fix unaryUnion to avoid segfault with empty polygon (GH-502)
      Update NEWS.md for GH-518 [ci skip]
      Update NEWS.md; fix GH-513 and sort [ci skip]
      Use relative CMAKE_INSTALL_RPATH for geosop (#572)
      Resolve MSVC warning C4101: 'e': unreferenced local variable
      CMake: add option USE_CCACHE=OFF to use ccache to compile C/C++ objs (#573)
      Add NEWS.md for GH-639
      Use HTTPS for download.osgeo.org links (#643)

Momtchil Momtchev (1):
      do not use end() iterators (#508)

Niyas Sait (1):
      Add windows/arm64 cross-compilation stage to Azure pipeline (#588)

Oliver Tan (1):
      WKBWriter: fix -Wsign-conversion compilation error

Paul Ramsey (737):
      Ignore TextMate transient files
      Update link to php repo
      Clean up warnings and add CMake build support for tinyxml2
      Make test XML more valid
      Actually, more valid XML uses " for attributes
      Update to latest tinyxml2
      Force destruction of xml document stub on failed loading
      Update Centroid algorithm to match JTS, and accompanying test file
      Update handling of EMPTY geometry typing to match JTS current version and update test cases to match.
      Revert tests/general/TestFunctionAA.xml to previous version, as it requires further ports from JTS to support new behaviour
      Fix SharePathsOp to deal with Empty results from OverlayOp
      Formatting changes to please make check (hm)
      Add TestFunctionAA.xml new tests from JTS
      Harmonize TestConvexHull.xml with JTS version
      Harmonize with JTS isSimple behaviour for GeometryCollection
      Harmonize CMake tests with autotools, using --test-valid-output
      Remove failing tests from XML for now
      Implement updated JTS hole assignment code, and associated tests.
      Update TestRectanglePredicate.xml to current JTS version
      Harmonize formatting of XML tests with JTS so the files
      Change PolygonBuilder::findEdgeRingContaining over to an iterator loop
      One better, use C++11 auto iterator on the vector
      OK, use a auto const& loop instead, as I read
      Reorder XML tests in CMakeFile to sort order
      Add the JTS ./validate XML tests.
      Add TestEqualsExact.xml and update XMLTester
      Reformatting pass
      Add TestMinimumClearance.xml to test set and
      Clean build of Densifier code only, tests still TBD
      Complete Densifier port and add in integration XML tests
      Port from JTS 6e44c5ceb791a939bd54643e38a8fe5ee7b500a6
      Partially harmonize with JTS 8e6abedeca3f3c1905c2f58c0a2dccc77f1f2f12
      Update AreaLocator classes to return Location
      Reformatting pass for some wonky formatting
      Draft port of ttmath and CGAlgorithmsDD from JTS,
      Add in test for orientation that stresses robustness
      Add DD orientation test cases
      Add autoconf support for DD updates
      Change coordinate list access to an iterator pattern
      Remove commented out code from example
      Small clean-ups preparatory for aping the JTS refactor around DD
      While we work up the nerves to bulk-format the
      Reformat CGAlgorithmsDD
      Blind port for RayCrossingCounterDD and some minor
      Move to 0.9.4 prerelease version of ttmath in hopes of getting
      Turn off ASM for gcc < 5 and 32-bit builds, as there's
      Change isValidOp to use IndexedPointInAreaLocator
      Reformat IsValidOp
      Add JTS tests from 9fa51113caeea33551fa8ee2f25fcbab60090004
      Add autotools support for new LocatePointInRingTest
      Remove unused typedef
      A little clean up, but not quite full deprecation
      Remove MCPointInRing
      Add test for cCGAlgorithmsDD::signOfDet2x2
      Change types in test to double
      Whoops, forgot the implementation of CGAlgorithmsDD::signOfDet2x2
      Remove CentroidArea, CentroidLine, CentroidPoint as per
      Remove references to RobustDeterminant
      Try fix build with isfinite macro
      Delete obsolete PointInRing classes
      Add L/A optimization for covers and contains
      Improve optimization of contains and covers for mixed dimension cases
      Move area functions to Area class
      Use fabs not abs
      Change buffer unit failures to more correct message
      std::abs vs fabs
      Remove dead comments from Area code
      Move length functions to Length class
      Add some robustness failure tests
      Try to quiet GCC warning about type promotion
      Quiet warnings from GCC 4.8
      Pass by reference for cpp magic
      Quiet compiler warnings in xmltester
      Move CGAlgorithms functions into Orientation class
      Return unused member for now
      Add some doco
      Move CGAlgorithms point location functions to PointLocation
      Remove use of temporary Envelopes in MonotoneChainEdge
      Temporary envelope removal
      Remove duplicate header includes
      Remove base 'using namespace' call in header
      Refactor CGAlgorithms distance functions into Distance class
      Remove extra coordinate references in MonotoneChain classes
      Throw exception by value
      Deprecate CGAlgorithms and remove all references
      Avoid using reflection
      Move version numbers to a single file
      Fill out other common macros for autotools
      Really get those CAPI numbers in...
      Still trying to get past CI
      Aha, add Version.txt to dist files
      Harmonize spacing with other entries
      Prefix version file with srcdir for out-of-tree support
      Add <algorithm> header for std::min
      Try and make gitlab-ci happy with the packages we're adding
      Remove ttmath ASM on Windows/MinGW for now to see if we
      Add missing header to algorithm Makefile.am
      Message about not using TTMATH_NOASM
      Attempt to catch all gcc/windows = mingw cases in one net
      Simpler windows test
      Improve overlay noding validation
      Add test case and fix intersection finger
      Confirm Fix Overlay polygon building
      Confirm Polygon.normalize
      Harmonize test list w/ autotools
      First draft of MinimumBoundingCircle port
      Draft tests for MinimumBoundingCircle
      MinimumBoundingCircle passes tests
      Add a return value in no-entry portion of code to quite compiler.
      Use strtod in Envelope constructor
      Remove autogen.bat, as all our *.vc infra is now gone
      convert remaining NAN/INF macros to std::
      Remove stray references to CGAlgorithms.h
      Remove spurious reference to MCPointInRing
      Clean ups for make dist and build bots
      Fix first appveyor issue
      Disable copy constructors on classes using vector<std::unique_ptr<>>
      Remove defunct appveyor nmake-only build
      Quiet warnings, enable ASM build for win64?
      Return to original platform detection
      Add a debugging output to try to fix NMake/CMake issue with ASM file
      More debugging in aid of NMake/CMake/ASM combo
      Test to note MSVC+x64 to turn on ASM in ttmath
      Apply 4-spaces standard indenting,
      Add reformatting commit to ignorable commits in blame
      Astyle 3.1 added to source tree for future
      Add astyle license
      Address build failure on GitLabCI
      Quiet clang warnings about Vertex
      Quiet compiler warnings
      Quiet compiler warnings
      Remove vestigial references to io/markup
      Update to latest JTS version of test file
      Reorganize some tests and the makefiles
      Reorganize tests some more
      Rename ticket to issue
      Change build files for new ticket names
      Remove old duplicative test files
      Just the unique tests from old test cases
      Rename more tests
      Fix automake file
      Harmonize with JTS
      Add envelope check to SimplePointInAreaLocator
      Harmonize with JTS empty handling
      Improvements to IndexedFacetDistance
      Reformat files after port
      unpad-header doesn't seem to match the default
      Strip out commented dead code
      IndexedFacetDistance withinDistance
      Include <algorithm> for std::min
      Fill in the exception error point when a eHoleOutsideShell occurs.
      Add NaN test to unit, references #963
      Add new Cmake files to autoconf file list.
      Add moved tests to autotools build, fix cmake versions.txt filename
      Emit cmake version in CI
      Add geos_revision.h back to dist files
      Use slightly older CMake syntax in add_executable()
      Go to old Cmake syntax for add_executable()
      Change bigtest to add_executable() syntax
      Add geos_revision.h back to dist files
      Use USE_UNSTABLE_GEOS_CPP_API in all builds so that non-debug builds aren't noisy. Pretty silly.
      Work on cmake patterns for 'dist' target
      Add prototype 'make distcheck' target
      Remove noisy messages
      First step to fixing geos-config, generate from separate
      Automatically omit the build directory from the package
      Generate git revision hash into geos_c.h
      Hash should be a string
      Don't need GenerateRevisionHeader in distribution list anymore
      Remove reference to repo_revision.sh
      Remove GIT_COMMIT_HASH entirely
      Try to get clean appveyor build
      Fix up autotools build after reorg of benchmark files
      Quiet warning
      Minor edits
      First draft of circumcenterDD support
      Fix up mistakes in drafting and add simple unit test
      Add actual test case
      Add filter to only use DD math is we are in the "danger zone" for circumcenter, namely that we have a potential equally-sided right triangle on our hands.
      First draft of circumcenterDD support
      Fix up mistakes in drafting and add simple unit test
      Add actual test case
      Add filter to only use DD math is we are in the "danger zone" for circumcenter, namely that we have a potential equally-sided right triangle on our hands.
      Port https://github.com/locationtech/jts/pull/441
      Port JTS PR 462
      MonotoneChainBuilder can be refactored to avoid using
      Port JTS PR 468
      Use std::array instead of std::vector in TopologyLocation.cpp
      Use Release as default cmake build instead of Debug
      Port JTS improvements to cascaded union.
      Handle nbits > 63
      Improve the bit-shifting logic with good types and so on
      Allow noop zeroing
      Match test to behaviour in no-op case (leave -1 in place)
      Fix MSVC 2017 compilation, from @hobu.
      Fix test case expected value to match up to results generated now.
      Be explicit about our literals in enumerations
      Log the move of issue 488 xml test
      Add robust determinant test files
      Harmonize cmake install names with autotools
      Uncomment the mapping of GEOS_VERSION to VERSION for geos_c.h generation
      No symlinks on libgeos, only on libgeos_c
      Add NEWS entries
      Make inlining status message less opaque
      Expose MinimumBoundingCircle to CAPI
      Preserve SRID in constructive geometry functions called via CAPI
      Add news line about extended precision work
      Bump to beta version number, update docs with new versioning file (yay)
      Reorganize release directions
      Put tag step after verify step
      Bump versions
      Change directions for tag push
      Add trimmed down test case on Voronoi.
      RC1 release commit
      Bump version post-release
      Add in CMake artifacts necessary to build/check in the
      Bump version number
      Random guess at what the problem is
      Add new XML tests to autoconf build
      Bump versions after release
      Allocate linesegments on stack for union check
      Suggestions from PR
      Try to learn C++ more better
      MD edit
      Release version numbers and NEWS
      Bump versions for master development to 3.9
      News entry
      Match cmake --ldflags output to autotools
      add unit test for GH290
      reorder tests for #1018
      add note about trac milestone
      Fix buffer fillet generation to avoid extra segments JTS-526, https://trac.osgeo.org/geos/ticket/743
      Squashed commit of the following:
      news entry for ttmath retirement
      Fix bug in DistanceOp for geometries with empty components, Closes #1026
      news entry for #1026
      Remove undefined behaviour in CPI, closes #1021
      Fix crash on WKT write of MULTIPOINT(EMPTY, 1 1)
      Buffering a specific closed linestring erroneously produces polygon without hole. References #1022
      quiet compiler warnings (clang)
      Add a test to IFD and make it actually a test
      msvc build?
      Port MaximumInscribedCircle and LargestEmptyCircle
      Fixed MinimumBoundingCircle.getMaximumDiameter() to handle case where extremalPts[2]-[0] is longest, JTS 533
      use magic for loop iterator
      avoid some tiny copy overhead using emplace over push
      Match up parameters names to doc names
      properly ignore files ending in tilde
      quiet warning about type coersion?
      add static check on input array, closes https://github.com/libgeos/geos/issues/261
      Remove DoubleBits in favour of exp2 and frexp
      Add unit tests for empty WKB variants
      Add boundary argument to CAPI for LargestEmptyCircle
      Initial build port of HotPixel
      First port of HotPixelIndex
      First port of edgegraph
      Strip out hacked up pool, as we will want a nicer one if we really go that way.
      Replace array of heap-allocated HalfEdge with deque of stack-allocated HalfEdge
      Remove unused constant
      Bring bug fixes from JTS and change storage of HotPixels from the heap to inside the hotPixelMap
      Bring in further changes to HotPixel from JTS
      First draft of SnapIntersectionAdder
      Add SnapIntersectionAdder, remove SimpleSnapRounder
      KdTree implementation builds
      Update test for new HotPixel initializer
      Fix tree initialization error
      Add KdTreeTest
      Add EdgeGraphTest
      Update HotPixelTest to the latest JTS version
      Move Position and Quadrant to geom/ and update all references and build
      rename SnapRoundingIntersectionAdder
      SnapRoundingNoder builds
      Add developer notes draft
      Add draft ValidatingNoder
      SnapRoundingNoderTest builds
      start debugging SnapRoundingNoder
      Another big fix for SnapRoundingNoder and updates to KdTree and HotPixelIndex
      add SnapRoundingNoder tests
      SnappingNoder initial build
      Refactor noding test utils out of snapping noder test
      SnappingNoderTest
      Reorg vars
      Fix mistake in update to SegmentNodeList
      OverlayLabel draft
      EdgeSourceInfo draft
      Only run tests in files that end in Test.cpp
      InputGeometry draft
      OverlayNoder, LineLimiter, RingClipper, start of OverlayUtil, un-tested drafts that compile
      RingClipperTest and LineLimiterTest with fix to RingClipper
      Edge draft builds
      EdgeKey draft builds
      EdgeMerger draft
      OverlayEdge, OverlayEdgeRing, MaximalEdgeRing draft builds
      OverlayGraph draft builds
      Add OverlayGraphTest and fix failures, caused by not declaring directionPt() virtual in HalfEdge
      Refactor OverlayNoder to EdgeNodingBuilder
      IndexedPointOnLineLocator, IntersectionPointBuilder, LineBuilder, OverlayLabeller, OverlayMixedPoints, OverlayNG, OverlayPoints, PolygonBuilder, RobustClipEnvelopeComputer completed and build!
      Add OverlayNGTest and first test case, fixes to allow it to run
      Add more tests on OverlayNGTest
      Add OverlayNGTest and fix all failing tests
      Add OverlayNGPointsTest
      Add OverlayNGMixedPointsTest
      Add OverlayNGSnappingNoderTest
      Fix regression due to Point being constructed without rounding
      Add commentary on compareTo and normalize
      Stop using ensure_geometry_equals to test non-equal things
      Strip extraneous header entries
      Port refactor of OverlayLabeller https://github.com/dr-jts/jts/commit/9ebe2a5acfc0d43357e6e7e569e8da9d33abcefb
      Add OverlayNGFloatingNoderTest and alter ensure_geometry_equals to test geometry equality in addition to metadata equality.
      Add OverlayNGSnappingOneTest
      Add OverlayNGOneTest
      Added PrecisionUtil and PrecisionUtilTest
      Add safeguard against infinite loop in decimal check
      PrecisionReducer and PrecisionReducerText
      Add XML tests and necessary fixes
      Move NG tests into alphabetical order
      Add UnionStrategy and associated refactoring in CascadedUnion. Fix unit test names so cmake tests pass.
      Manage SegmentNodes inside SegmentNodeList
      Add UnaryUnionNG and some misc diffs
      Add OverlayNGSnapIfNeeded
      Add overlayareatest support.
      Quiet some gcc warnings
      Quiet gcc warning
      Quiet gcc warnings
      Quiet gcc warnings
      Quiet gcc warnings
      Add unionLength op type
      Quiet gcc warnings
      Close up memory leak where SegmentStrings are converted to Edges
      Remove leak in EdgeNodingBuilder
      quiet debugging output in unit tests
      manage vector as unique_ptr
      Switch to unique_ptr
      Free sublcass?
      old segmentnodelist behavior
      Remove memory leak when ValidatingNoder throws TopologyException
      Remove memory leak in SnappingNoder
      Fix makefile in overlayng
      Fix reference to SnappingNoderTest in makefile
      Add NodingTestUtil to autotools build
      Quiet gcc warnings about overridden functions
      Fix snap noding test to use validating noder correctly
      store segmentnodes in a deque to avoid many teeny allocations
      Add unionArea test type
      move TestOverlay-misc-5.xml to new home
      Add JTS robust/overlay tests
      comment out unused member variables
      remove std::move per compiler suggestion
      remove unused member variable
      Add compile-time flags to turn on OverlayNG
      Run a snap-rounded overlay when provided with geometries that have fixed precision model
      Fix up unit tests were issues of representation (ring order, component order, etc) were causing failures
      output geometries with a bit more precision
      Remove unused compile-time options for BinaryOp
      Tie MakeValid implementation directly to the old overlay operations
      Use BinaryOp instead of OverlayOp in order to access old fall-back behaviour in overlay. References #1037
      Add cstring header to pick up std::strlen
      Add cstring header to pick up std::strlen
      Replace forward defns with headers for classes in vector<unique_ptr<>> situations for MSVC
      Make sure geos::geom namespace is available
      Make sure there are no forward declarations in templates
      turn off doco build for now
      try making geom explicit in CoordinateSequence vector
      Port https://github.com/dr-jts/jts/commit/2a385fe46dc12e7b765569d010fb50c19e9bca46 Change line output behaviour to preserve noding
      Use default C++ std out precision
      Add snap-if-needed intersectionSIN mode to XMLTester that handles the misc-3 test cases. Sever the 2 failing STMLF cases from the 1800 passing ones and move the passing ones back into the active test area.
      Port https://github.com/dr-jts/jts/commit/ea13dc32415a7cf6e38279354f7a06e5e2aff1ea Switch to outputting all components for intersection op
      Normalize test results before comparing and use tolerance in comparison.
      Remove precisionModel from test files to harmonize with JTS. Move failing tests to Prec files, where they are run under a precisionModel again.
      Clean out some old iterator loops in favour of for loops
      Make function calls look more like JTS originals, counting on copy elision to avoid overhead of returning vector<>
      Error out on failure in ctest call
      Check Location::UNDEF to Location::NONE to match JTS
      Comment out docs target in cmake
      Quiet warnings from CI
      Fix doxygen errors and re-enable CI test
      Add ARM64 build host to travis matrix
      Add ARM64 build host to travis matrix
      Add s390x build target to Travis matrix
      Quiet some MSVC warnings
      Output POINT EMPTY in WKB. References #1005
      Comment out s390 as seems to hang builds from time to time
      Add some interrupt checking in MakeValid loop, references https://trac.osgeo.org/postgis/ticket/4582
      Support reading WKB that includes M coordinates, but do not actually store the M (because we have nowhere to store it right now). References #460
      Add test for geos-1046
      When called without options, use OverlayNG for CAPI GEOSGeom_setPrecision
      Rename the utility test functions to ensure_* and change the struct name to reflect larger goals than just providing helper init/finish code
      Update script to new JTS cmd setup
      Remove unused CTS class file
      Change BufferResultMatcher to static methods
      Port JTS https://github.com/locationtech/jts/commit/be18a8a797763116346ca605f8d7aedc66153773 Improve Orientation isCCW to handle topology collapse
      Port https://github.com/dr-jts/jts/commit/feee2334edbc968bf1f7adf0d0de3c11cb2521a2
      Port https://github.com/dr-jts/jts/commit/ea45557987f4e992094842e7badde65811ea75cd, Cleanup of mixed result logic
      Port https://github.com/dr-jts/jts/commit/959a61dcf5c5bb993e9de462f316b14e5c564ed7, Add optimization for line building
      Port https://github.com/dr-jts/jts/commit/1f41dd9906fb710ac0662423ae2f1a956f92c6e1, unit test testPolygonFlatCollapseIntersection
      Port https://github.com/dr-jts/jts/commit/c9cd451e7b6f21ae4d8ddde95757433587a4ec76, Add SnapRoundingNoder unit test
      Allow OverlayNG results to include collapsed edges https://github.com/dr-jts/jts/commit/764bb49cd461686d51d77f743441591b3fe70080
      Add SR fallback to snapifneeded NG, https://github.com/dr-jts/jts/commit/a81078568f0c78ab2c7fadbfa0936669d9f09256
      Move OverlayNGSnapIfNeeded out of Geometry and into HeuristicOverlay.
      Rename OverlayNGSnapIfNeeded to OverlayNGRobust, https://github.com/dr-jts/jts/commit/c1277b0658868bf49db0f9583255eebed7d0a757
      Unit test and fix for dateline clipping case reported by @roualt
      Update comments on test
      Add OverlayNG strict mode, from https://github.com/dr-jts/jts/commit/0da1f61ad6e71c04c7de22853cb06fb1b394bec6 and https://github.com/dr-jts/jts/commit/b0d6f035777de7035cbe915ec18e65c2b9f0838e
      Private method name change, https://github.com/dr-jts/jts/commit/1def2ed0c80de4243fa81342a5c876c98bc3f987
      Improve HotPixel memory usage by dropping some fields https://github.com/locationtech/jts/commit/02f0a258778c840dc257879c18697f2544445f59
      Fix HotPixel intersects test https://github.com/locationtech/jts/commit/c1977c8181137e8f705a66f0ea6784f428716953
      Minor SnappingNoder performance enhancement by moving test up https://github.com/locationtech/jts/commit/5e9404918adb13796b3d9df7878b0a885cd627c9
      Add coordinate sequence to kdtree in random order https://github.com/locationtech/jts/commit/d73c798f8e54f2c8fbff66e27f2fca24a9ebb710
      Randomize input to kdtree to avoid unbalanced tree
      Avoid doxygen linking errors
      match type in the index to type in the iteration
      Remove un-needed std::move in return value
      Create new EMPTY geometry with 2D coordinates by default. Parse Z EMPTY geometry in WKT reader, for simple (non-multi) geometries. Closes #1048
      Use shuffle instead of random_shuffle to avoid C++ deprecations, use a type-strong enumeration
      Comment out accidental test case
      Enable OverlayNG by default
      Match doxygen to function signature
      Add GitHub Actions recipe in preparation for the loss of Travis
      Add GitHub Actions badge to README
      add github badges to readme
      Add output to a test that AppVeyor is failing
      add output to debug appveyor?
      Comment out output for AppVeyor, which is failing tests in 32bit windows
      Remove un-used method
      Correctly handle higher-dimension empty geometries in the WKB reader.
      Sort STRtree inputs in the X direction before slicing, then
      SimpleSTRtree implementation. Functionally the same as STRtree,
      SimpleSTRtree autotools build.
      Switch MCIndexNoder and MCIndexSegmentSetMutualIntersector over to
      Fix type in Makefile.am for SimpleSTRTree test
      Add nearestNeighbor() to the SimpleSTRtree implementation as well as
      Change to automatic iter…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants