62    using Corner = geos::coverage::Corner;
 
   71    template<
typename ItemType>
 
   72    using TemplateSTRtree = geos::index::strtree::TemplateSTRtree<ItemType>;
 
   73    using LinkedLine = geos::simplify::LinkedLine;
 
   90        LinkedLine linkedLine;
 
   92        std::size_t minEdgeSize;
 
  103        Edge(
const LineString* p_inputLine, 
bool p_isFreeRing, 
double p_areaTolerance);
 
  105        const Coordinate& getCoordinate(std::size_t index) 
const;
 
  107        const Envelope* getEnvelopeInternal() 
const;
 
  109        std::size_t size() 
const;
 
  111        std::unique_ptr<CoordinateSequence> simplify(EdgeIndex& edgeIndex);
 
  113        void createQueue(Corner::PriorityQueue& pq);
 
  115        void addCorner(std::size_t i, Corner::PriorityQueue& cornerQueue);
 
  117        bool isRemovable(Corner& corner, EdgeIndex& edgeIndex) 
const;
 
  128        bool hasIntersectingVertex(
const Corner& corner,
 
  130            const Edge& edge) 
const;
 
  132        std::vector<std::size_t> query(
const Envelope& cornerEnv) 
const;
 
  145            Corner::PriorityQueue& cornerQueue);
 
  153            TemplateSTRtree<const Edge*> index;
 
  155            void add(std::vector<Edge>& edges);
 
  157            std::vector<const Edge*> query(
const Envelope& queryEnv);
 
  171        double distanceTolerance);
 
  188        std::vector<bool>& freeRings,
 
  190        double distanceTolerance);
 
  194        double distanceTolerance);
 
  201    std::vector<bool> isFreeRing;
 
  202    double areaTolerance;
 
  208    void setFreeRingIndices(std::vector<bool>& freeRing);
 
  212    std::unique_ptr<MultiLineString> simplify();
 
  214    std::vector<Edge> createEdges(
 
  216        std::vector<bool>& freeRing);