Skip to content

Instantly share code, notes, and snippets.

@meastp
Created February 17, 2012 11:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save meastp/1852693 to your computer and use it in GitHub Desktop.
Save meastp/1852693 to your computer and use it in GitHub Desktop.
Adaption of legacy objects to boost::geometry concepts
#include <iostream>
#include <boost/geometry.hpp>
#include <boost/range.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include "objdefs.h"
namespace boost {
namespace geometry {
namespace traits {
// Adapt points to Boost.Geometry
template<> struct tag<QPoint>
{ typedef point_tag type; };
template<> struct coordinate_type<QPoint>
{ typedef long type; };
template<> struct coordinate_system<QPoint>
{ typedef cs::cartesian type; };
template<> struct dimension<QPoint> : boost::mpl::int_<2> {};
template<>
struct access<QPoint, 0>
{
static long get(QPoint const& p)
{
return p.x;
}
static void set(QPoint& p, long const& value)
{
p.x = value;
}
};
template<>
struct access<QPoint, 1>
{
static long get(QPoint const& p)
{
return p.y;
}
static void set(QPoint& p, long const& value)
{
p.y = value;
}
};
// POINTER version - still necessary for QLineString*
template<> struct tag<QPoint*>
{ typedef point_tag type; };
template<> struct coordinate_type<QPoint*>
{ typedef long type; };
template<> struct coordinate_system<QPoint*>
{ typedef cs::cartesian type; };
template<> struct dimension<QPoint*> : boost::mpl::int_<2> {};
template<>
struct access<QPoint*, 0>
{
static long get(QPoint* const& p)
{
return p->x;
}
static void set(QPoint*& p, long const& value)
{
p->x = value;
}
};
template<>
struct access<QPoint*, 1>
{
static long get(QPoint* const& p)
{
return p->y;
}
static void set(QPoint*& p, long const& value)
{
p->y = value;
}
};
}
}
} // namespace boost::geometry::traits
namespace boost
{
//
// Specialize metafunctions. We must include the range.hpp header.
// We must open the 'boost' namespace.
//
template<>
struct range_iterator< QLineString* >
{
typedef std::vector<QPoint*>::iterator type;
};
template<>
struct range_const_iterator< QLineString* >
{
//
// Remark: this is defined similar to 'range_iterator'
// because the 'Pair' type does not distinguish
// between an iterator and a const_iterator.
//
typedef std::vector<QPoint*>::const_iterator type;
};
template<>
struct range_size< QLineString* >
{
typedef std::size_t type;
};
} // namespace boost
//
// The required functions. These should be defined in
// the same namespace as 'Pair', in this case
// in namespace 'Foo'.
//
inline std::vector<QPoint*>::iterator range_begin( QLineString* x )
{
return x->points.begin();
}
inline std::vector<QPoint*>::const_iterator range_begin( const QLineString* x )
{
return x->points.begin();
}
inline std::vector<QPoint*>::iterator range_end( QLineString* x )
{
return x->points.end();
}
inline std::vector<QPoint*>::const_iterator range_end( const QLineString* x )
{
return x->points.end();
}
inline std::vector<QPoint*>::size_type
range_size( const QLineString* x )
{
return x->points.size();
}
//BOOST_GEOMETRY_REGISTER_LINESTRING(QLineString);
namespace boost {
namespace geometry {
namespace traits {
template
<>
struct tag<QLineString*>
{
typedef linestring_tag type;
};
}
}
}
// Ring adaption
/* Custom iterator type that flattens a 2D array into a 1D array */
/*
template <class I, // Line iterator type
class R // Point reference type
>
class RingIteratorImpl : public boost::iterator_facade<
RingIteratorImpl<I,R>, R, boost::forward_traversal_tag, R>
{
public:
RingIteratorImpl() : lineStringIter_(0), pointIndex_(0) {}
explicit RingIteratorImpl(I lineStringIter)
: lineStringIter_(lineStringIter), pointIndex_(0) {}
template<class OtherI, class OtherR>
RingIteratorImpl(RingIteratorImpl<OtherI, OtherR> const& other) :
lineStringIter_(other.getLineStrIt()), pointIndex_(other.getPointIdx()) {}
I getLineStrIt() const {return lineStringIter_;}
size_t getPointIdx() const {return pointIndex_;}
private:
friend class boost::iterator_core_access;
void increment()
{
++pointIndex_;
if (pointIndex_ >= (*lineStringIter_)->points.size())
{
++lineStringIter_;
pointIndex_ = 0;
}
}
bool equal(const RingIteratorImpl& other) const
{
return (lineStringIter_ == other.lineStringIter_) &&
(pointIndex_ == other.pointIndex_);
}
R dereference() const {return *(*lineStringIter_)->points[pointIndex_];}
I lineStringIter_;
size_t pointIndex_;
};
*/
/* Custom iterator type that flattens a 2D array into a 1D array */
template <class I, // Line iterator type
class R // Point reference type
>
class RingIteratorImpl : public boost::iterator_facade<
RingIteratorImpl<I,R>, R, boost::random_access_traversal_tag, R> //new traversal tag
{
public:
RingIteratorImpl() : lineStringIter_(0), lineStringIndex_(0), pointIndex_(0) {}
explicit RingIteratorImpl(I lineStringIter)
: lineStringIter_(lineStringIter), lineStringIndex_(0), pointIndex_(0) {}
template<class OtherI, class OtherR>
RingIteratorImpl(RingIteratorImpl<OtherI, OtherR> const& other) :
lineStringIter_(other.getLineStrIt()), lineStringIndex_(other.getLineStrIdx()), pointIndex_(other.getPointIdx()) {}
I getLineStrIt() const {return lineStringIter_;}
size_t getLineStrIdx() const {return lineStringIndex_;}
size_t getPointIdx() const {return pointIndex_;}
typedef typename boost::iterator_facade<RingIteratorImpl<I,R>, R, boost::random_access_traversal_tag, R>::difference_type difference_type;
private:
friend class boost::iterator_core_access;
void increment()
{
++pointIndex_;
if (pointIndex_ >= (*lineStringIter_)->points.size())
{
++lineStringIter_;
++lineStringIndex_;
pointIndex_ = 0;
}
}
// new decrement
void decrement()
{
if(pointIndex_>0)
{
--pointIndex_;
}
else
{
--lineStringIter_;
--lineStringIndex_;
pointIndex_ = (*lineStringIter_)->points.size();
}
}
//new
void advance(difference_type n)
{
difference_type counter = n;
size_t maxPointIndex, remainderPointIndex;
while(counter>0)
{
maxPointIndex = (*lineStringIter_)->points.size(),
remainderPointIndex = maxPointIndex - pointIndex_;
if(counter>remainderPointIndex)
{
counter -= remainderPointIndex;
++lineStringIter_;
++lineStringIndex_;
}
else // (counter<=remainderPointIndex)
{
counter = 0;
pointIndex_ = remainderPointIndex;
}
}
}
//new
difference_type distance_to(const RingIteratorImpl& other) const
{
size_t otherLineStringIndex = other.getLineStrIdx(),
otherPointIndex = other.getPointIdx();
size_t counter = 0,
currentLineStringIndex = lineStringIndex_,
currentPointIndex = pointIndex_;
I currentLineStringIter = lineStringIter_;
while (currentLineStringIndex != otherLineStringIndex)
{
counter += (*currentLineStringIter)->points.size();
++currentLineStringIndex;
++currentLineStringIter;
}
return (counter + (currentPointIndex - otherPointIndex)); // can distance_type be negative?
}
bool equal(const RingIteratorImpl& other) const
{
return (lineStringIndex_ == other.getLineStrIdx()) &&
(pointIndex_ == other.getPointIdx());
}
R dereference() const {return *(*lineStringIter_)->points[pointIndex_];}
I lineStringIter_;
size_t lineStringIndex_;
size_t pointIndex_;
};
typedef RingIteratorImpl<std::vector<QLineString*>::iterator, QPoint> RingIterator;
typedef RingIteratorImpl<std::vector<QLineString*>::const_iterator, const QPoint>
ConstRingIterator;
namespace boost
{
// Specialize metafunctions. We must include the range.hpp header.
// We must open the 'boost' namespace.
template <>
struct range_iterator<QRing*> { typedef RingIterator type; };
template<>
struct range_const_iterator<QRing*> { typedef ConstRingIterator type; };
} // namespace 'boost'
// The required Range functions. These should be defined in the same namespace
// as Ring.
inline RingIterator range_begin(QRing* r)
{return RingIterator((*r).lines.begin());}
inline ConstRingIterator range_begin(const QRing* r)
{return ConstRingIterator((*r).lines.begin());}
inline RingIterator range_end(QRing* r)
{return RingIterator((*r).lines.end());}
inline ConstRingIterator range_end(const QRing* r)
{return ConstRingIterator((*r).lines.end());}
namespace boost {
namespace geometry {
namespace traits {
template <>
struct tag<QRing*>
{
typedef ring_tag type;
};
template <>
struct tag<QRing const*>
{
typedef ring_tag type;
};
template
<>
struct point_order<QRing*>
{
static const order_selector value = clockwise;
};
template
<>
struct point_order<QRing const*>
{
static const order_selector value = clockwise;
};
template
<>
struct closure<QRing*>
{
static const closure_selector value = closed;
};
template
<>
struct closure<QRing const*>
{
static const closure_selector value = closed;
};
} // namespace traits
} // namespace geometry
} // namespace boost
//polygon
namespace boost {
namespace geometry {
namespace traits
{
template <>
struct tag<QPolygon>
{
typedef polygon_tag type;
};
template<>
struct ring_const_type<QPolygon>
{
typedef QRing const* type;
};
template <>
struct ring_mutable_type<QPolygon>
{
typedef QRing* type;
};
template <>
struct interior_const_type<QPolygon>
{
typedef std::vector<QRing*> const& type;
};
template <>
struct interior_mutable_type<QPolygon>
{
typedef std::vector<QRing*>& type;
};
template<>
struct exterior_ring<QPolygon>
{
typedef QPolygon polygon_type;
static inline QRing* get(polygon_type& p)
{
return p.exterior;
}
static inline QRing const* get(polygon_type const& p)
{
return p.exterior;
}
};
template<>
struct interior_rings<QPolygon>
{
typedef QPolygon polygon_type;
typedef std::vector<QRing*> holes_type;
static inline holes_type& get(
polygon_type& p)
{
return p.interiors;
}
static inline holes_type const& get(
polygon_type const& p)
{
return p.interiors;
}
};
} // namespace traits
} // namespace geometry
} // namespace boost
int main()
{
QPoint* pP1 = new QPoint(1,1);
QPoint* pP2 = new QPoint(1,5);
QPoint* pP3 = new QPoint(15,5);
QPoint* pP4 = new QPoint(10,1);
QPoint* pP5 = new QPoint(3,2);
QPoint* pP6 = new QPoint(2,3);
QPoint* pP7 = new QPoint(3,4);
QPoint* pP8 = new QPoint(5,3);
QPoint* pP9 = new QPoint(6,4);
QPoint* pP10 = new QPoint(9,3);
QPoint* pP11 = new QPoint(8,2);
QLineString* pls = new QLineString();
pls->cw = true;
pls->points.push_back(pP1);
pls->points.push_back(pP2);
pls->points.push_back(pP3);
std::cout << boost::geometry::wkt(pls) << std::endl;
QLineString* pls2 = new QLineString();
pls2->cw = true;
pls2->points.push_back(pP4);
pls2->points.push_back(pP1);
std::cout << boost::geometry::wkt(pls2) << std::endl;
QRing* r1 = new QRing();
r1->lines.push_back(pls);
r1->lines.push_back(pls2);
/*
RingIterator ri = range_begin(r1);
ri++;
ri++;
QPoint& p = *ri;
p.x = 50;
std::cout << boost::geometry::wkt(p) << std::endl;
*/
std::cout << boost::geometry::wkt(r1) << std::endl;
// QPoint const& pc = *ri;
// std::cout << boost::geometry::wkt(pc) << std::endl;
/*
QRing* r2 = new QRing();
r2->lines.push_back(pls);
r2->lines.push_back(pls2);
QRing* r3 = new QRing();
r3->lines.push_back(pls);
r3->lines.push_back(pls2);
*/
QPolygon pol1 = QPolygon();
pol1.exterior = r1;
// pol1.interiors.push_back(r2);
// pol1.interiors.push_back(r3);
//boost::geometry::correct(pol1);
std::cout << boost::geometry::wkt(pol1) << std::endl;
return 0;
}
#ifndef OBJDEFS_DEF_H_INCLUDED
#define OBJDEFS_DEF_H_INCLUDED
#include <vector>
class QPoint {
public:
long x;
long y;
QPoint(long x, long y) : x(x), y(y) {}
};
class QLineString {
public:
bool cw;
std::vector<QPoint*> points;
};
class QRing {
public:
std::vector<QLineString*> lines;
};
class QPolygon {
public:
QRing* exterior;
std::vector<QRing*> interiors;
};
#endif // OBJDEFS
||=== mapperdefs, Debug ===|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp||In function ‘int main()’:|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|527|warning: unused variable ‘pP5’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|528|warning: unused variable ‘pP6’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|529|warning: unused variable ‘pP7’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|531|warning: unused variable ‘pP8’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|532|warning: unused variable ‘pP9’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|533|warning: unused variable ‘pP10’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|534|warning: unused variable ‘pP11’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/core/point_type.hpp|65|instantiated from ‘boost::geometry::core_dispatch::point_type<void, QRing>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/core/coordinate_dimension.hpp|58|instantiated from ‘boost::geometry::core_dispatch::dimension<void, QRing>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/core/coordinate_dimension.hpp|80|instantiated from ‘boost::geometry::dimension<QRing>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|132|instantiated from ‘static void boost::geometry::detail::wkt::wkt_range<Range, PrefixPolicy, SuffixPolicy>::apply(std::basic_ostream<Char, Traits>&, const Range&) [with Char = char, Traits = std::char_traits<char>, Range = const QRing*, PrefixPolicy = boost::geometry::detail::wkt::opening_parenthesis, SuffixPolicy = boost::geometry::detail::wkt::closing_parenthesis]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|176|instantiated from ‘static void boost::geometry::detail::wkt::wkt_poly<Polygon, PrefixPolicy>::apply(std::basic_ostream<Char, Traits>&, const Polygon&) [with Char = char, Traits = std::char_traits<char>, Polygon = QPolygon, PrefixPolicy = boost::geometry::detail::wkt::prefix_polygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|361|instantiated from ‘std::basic_ostream<Char, Traits>& boost::geometry::operator<<(std::basic_ostream<Char, Traits>&, const boost::geometry::wkt_manipulator<Geometry>&) [with Char = char, Traits = std::char_traits<char>, Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/core/point_type.hpp|44|error: no matching function for call to ‘assertion_failed(mpl_::failed************ (boost::geometry::traits::point_type<QRing>::NOT_IMPLEMENTED_FOR_THIS_POINT_TYPE::************)(mpl_::assert_::types<QRing, mpl_::na, mpl_::na, mpl_::na>))’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/core/coordinate_dimension.hpp|58|instantiated from ‘boost::geometry::core_dispatch::dimension<void, QRing>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/core/coordinate_dimension.hpp|80|instantiated from ‘boost::geometry::dimension<QRing>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|132|instantiated from ‘static void boost::geometry::detail::wkt::wkt_range<Range, PrefixPolicy, SuffixPolicy>::apply(std::basic_ostream<Char, Traits>&, const Range&) [with Char = char, Traits = std::char_traits<char>, Range = const QRing*, PrefixPolicy = boost::geometry::detail::wkt::opening_parenthesis, SuffixPolicy = boost::geometry::detail::wkt::closing_parenthesis]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|176|instantiated from ‘static void boost::geometry::detail::wkt::wkt_poly<Polygon, PrefixPolicy>::apply(std::basic_ostream<Char, Traits>&, const Polygon&) [with Char = char, Traits = std::char_traits<char>, Polygon = QPolygon, PrefixPolicy = boost::geometry::detail::wkt::prefix_polygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|361|instantiated from ‘std::basic_ostream<Char, Traits>& boost::geometry::operator<<(std::basic_ostream<Char, Traits>&, const boost::geometry::wkt_manipulator<Geometry>&) [with Char = char, Traits = std::char_traits<char>, Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/core/point_type.hpp|65|error: no type named ‘type’ in ‘struct boost::geometry::traits::point_type<QRing>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|176|instantiated from ‘static void boost::geometry::detail::wkt::wkt_poly<Polygon, PrefixPolicy>::apply(std::basic_ostream<Char, Traits>&, const Polygon&) [with Char = char, Traits = std::char_traits<char>, Polygon = QPolygon, PrefixPolicy = boost::geometry::detail::wkt::prefix_polygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|361|instantiated from ‘std::basic_ostream<Char, Traits>& boost::geometry::operator<<(std::basic_ostream<Char, Traits>&, const boost::geometry::wkt_manipulator<Geometry>&) [with Char = char, Traits = std::char_traits<char>, Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|132|error: no type named ‘type’ in ‘struct boost::geometry::dimension<QRing>’|
/home/meastp/Downloads/boost_1_47_0/boost/range/begin.hpp||In function ‘typename boost::range_iterator<const T>::type boost::range_adl_barrier::begin(const T&) [with T = const QRing*]’:|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|127|instantiated from ‘static void boost::geometry::detail::wkt::wkt_range<Range, PrefixPolicy, SuffixPolicy>::apply(std::basic_ostream<Char, Traits>&, const Range&) [with Char = char, Traits = std::char_traits<char>, Range = const QRing*, PrefixPolicy = boost::geometry::detail::wkt::opening_parenthesis, SuffixPolicy = boost::geometry::detail::wkt::closing_parenthesis]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|176|instantiated from ‘static void boost::geometry::detail::wkt::wkt_poly<Polygon, PrefixPolicy>::apply(std::basic_ostream<Char, Traits>&, const Polygon&) [with Char = char, Traits = std::char_traits<char>, Polygon = QPolygon, PrefixPolicy = boost::geometry::detail::wkt::prefix_polygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|361|instantiated from ‘std::basic_ostream<Char, Traits>& boost::geometry::operator<<(std::basic_ostream<Char, Traits>&, const boost::geometry::wkt_manipulator<Geometry>&) [with Char = char, Traits = std::char_traits<char>, Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Downloads/boost_1_47_0/boost/range/begin.hpp|119|error: cannot convert ‘ConstRingIterator’ to ‘const QRing*’ in return|
/home/meastp/Downloads/boost_1_47_0/boost/range/end.hpp||In function ‘typename boost::range_iterator<const T>::type boost::range_adl_barrier::end(const T&) [with T = const QRing*]’:|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|127|instantiated from ‘static void boost::geometry::detail::wkt::wkt_range<Range, PrefixPolicy, SuffixPolicy>::apply(std::basic_ostream<Char, Traits>&, const Range&) [with Char = char, Traits = std::char_traits<char>, Range = const QRing*, PrefixPolicy = boost::geometry::detail::wkt::opening_parenthesis, SuffixPolicy = boost::geometry::detail::wkt::closing_parenthesis]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|176|instantiated from ‘static void boost::geometry::detail::wkt::wkt_poly<Polygon, PrefixPolicy>::apply(std::basic_ostream<Char, Traits>&, const Polygon&) [with Char = char, Traits = std::char_traits<char>, Polygon = QPolygon, PrefixPolicy = boost::geometry::detail::wkt::prefix_polygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|361|instantiated from ‘std::basic_ostream<Char, Traits>& boost::geometry::operator<<(std::basic_ostream<Char, Traits>&, const boost::geometry::wkt_manipulator<Geometry>&) [with Char = char, Traits = std::char_traits<char>, Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Downloads/boost_1_47_0/boost/range/end.hpp|113|error: cannot convert ‘ConstRingIterator’ to ‘const QRing*’ in return|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp||In destructor ‘boost::Convertible<X, Y>::~Convertible() [with X = boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::random_access_traversal_tag>, Y = std::bidirectional_iterator_tag]’:|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|38|instantiated from ‘static void boost::concepts::requirement<boost::concepts::failed************ Model::************>::failed() [with Model = boost::Convertible<boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::random_access_traversal_tag>, std::bidirectional_iterator_tag>]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|579|instantiated from ‘boost::BidirectionalIterator<TT>::~BidirectionalIterator() [with TT = RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint>]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|571|instantiated from ‘static void boost::concepts::requirement<boost::concepts::failed************ Model::************>::failed() [with Model = boost::BidirectionalIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> >]’|
/home/meastp/Downloads/boost_1_47_0/boost/range/concepts.hpp|333|instantiated from ‘boost::BidirectionalRangeConcept<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/range/concepts.hpp|349|instantiated from ‘boost::RandomAccessRangeConcept<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::constraint<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::RandomAccessRangeConcept<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::RandomAccessRangeConcept<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/ring_concept.hpp|85|instantiated from ‘boost::geometry::concept::ConstRing<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::constraint<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstRing<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstRing<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/polygon_concept.hpp|105|instantiated from ‘boost::geometry::concept::ConstPolygon<const QPolygon>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::constraint<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstPolygon<const QPolygon>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstPolygon<const QPolygon>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|44|instantiated from ‘boost::geometry::detail::concept_check::check<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|58|instantiated from ‘boost::geometry::dispatch::check<boost::geometry::polygon_tag, const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|132|instantiated from ‘boost::geometry::concept::detail::checker<const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|146|instantiated from ‘void boost::geometry::concept::check() [with Geometry = const QPolygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|387|instantiated from ‘boost::geometry::wkt_manipulator<Geometry> boost::geometry::wkt(const Geometry&) [with Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|212|error: conversion from ‘boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::random_access_traversal_tag>’ to non-scalar type ‘std::bidirectional_iterator_tag’ requested|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp||In destructor ‘boost::Convertible<X, Y>::~Convertible() [with X = boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::random_access_traversal_tag>, Y = std::random_access_iterator_tag]’:|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|38|instantiated from ‘static void boost::concepts::requirement<boost::concepts::failed************ Model::************>::failed() [with Model = boost::Convertible<boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::random_access_traversal_tag>, std::random_access_iterator_tag>]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|609|instantiated from ‘boost::RandomAccessIterator<TT>::~RandomAccessIterator() [with TT = RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint>]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|600|instantiated from ‘static void boost::concepts::requirement<boost::concepts::failed************ Model::************>::failed() [with Model = boost::RandomAccessIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> >]’|
/home/meastp/Downloads/boost_1_47_0/boost/range/concepts.hpp|351|instantiated from ‘boost::RandomAccessRangeConcept<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::constraint<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::RandomAccessRangeConcept<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::RandomAccessRangeConcept<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/ring_concept.hpp|85|instantiated from ‘boost::geometry::concept::ConstRing<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::constraint<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstRing<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstRing<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/polygon_concept.hpp|105|instantiated from ‘boost::geometry::concept::ConstPolygon<const QPolygon>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::constraint<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstPolygon<const QPolygon>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstPolygon<const QPolygon>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|44|instantiated from ‘boost::geometry::detail::concept_check::check<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|58|instantiated from ‘boost::geometry::dispatch::check<boost::geometry::polygon_tag, const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|132|instantiated from ‘boost::geometry::concept::detail::checker<const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|146|instantiated from ‘void boost::geometry::concept::check() [with Geometry = const QPolygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|387|instantiated from ‘boost::geometry::wkt_manipulator<Geometry> boost::geometry::wkt(const Geometry&) [with Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|212|error: conversion from ‘boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::random_access_traversal_tag>’ to non-scalar type ‘std::random_access_iterator_tag’ requested|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp||In destructor ‘boost::Convertible<X, Y>::~Convertible() [with X = boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::random_access_traversal_tag>, Y = std::forward_iterator_tag]’:|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|38|instantiated from ‘static void boost::concepts::requirement<boost::concepts::failed************ Model::************>::failed() [with Model = boost::Convertible<boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::random_access_traversal_tag>, std::forward_iterator_tag>]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|551|instantiated from ‘boost::ForwardIterator<TT>::~ForwardIterator() [with TT = RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint>]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/usage.hpp|22|instantiated from ‘boost::concepts::usage_requirements<Model>::~usage_requirements() [with Model = boost::ForwardIterator<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> >]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|38|instantiated from ‘static void boost::concepts::requirement<boost::concepts::failed************ Model::************>::failed() [with Model = boost::concepts::usage_requirements<boost::ForwardIterator<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> > >]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|546|instantiated from ‘boost::ForwardIterator<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|573|instantiated from ‘boost::BidirectionalIterator<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|571|instantiated from ‘boost::BidirectionalIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::BidirectionalIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> > >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::BidirectionalIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> > >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::BidirectionalIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> > >, boost::concepts::constraint<boost::BidirectionalIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> > >, boost::concepts::requirement<boost::concepts::failed************ boost::BidirectionalIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> >::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::BidirectionalIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> >)>’|
/home/meastp/Downloads/boost_1_47_0/boost/range/concepts.hpp|333|instantiated from ‘boost::BidirectionalRangeConcept<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/range/concepts.hpp|349|instantiated from ‘boost::RandomAccessRangeConcept<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::constraint<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::RandomAccessRangeConcept<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::RandomAccessRangeConcept<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/ring_concept.hpp|85|instantiated from ‘boost::geometry::concept::ConstRing<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::constraint<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstRing<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstRing<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/polygon_concept.hpp|105|instantiated from ‘boost::geometry::concept::ConstPolygon<const QPolygon>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::constraint<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstPolygon<const QPolygon>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstPolygon<const QPolygon>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|44|instantiated from ‘boost::geometry::detail::concept_check::check<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|58|instantiated from ‘boost::geometry::dispatch::check<boost::geometry::polygon_tag, const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|132|instantiated from ‘boost::geometry::concept::detail::checker<const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|146|instantiated from ‘void boost::geometry::concept::check() [with Geometry = const QPolygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|387|instantiated from ‘boost::geometry::wkt_manipulator<Geometry> boost::geometry::wkt(const Geometry&) [with Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|212|error: conversion from ‘boost::detail::iterator_category_with_traversal<std::input_iterator_tag, boost::random_access_traversal_tag>’ to non-scalar type ‘std::forward_iterator_tag’ requested|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp||In member function ‘void RingIteratorImpl<I, R>::advance(typename boost::iterator_facade<RingIteratorImpl<I, R>, R, boost::random_access_traversal_tag, R, long int>::difference_type) [with I = __gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, R = QPoint]’:|
/home/meastp/Downloads/boost_1_47_0/boost/iterator/iterator_facade.hpp|547|instantiated from ‘static void boost::iterator_core_access::advance(Facade&, typename Facade::difference_type) [with Facade = RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint>]’|
/home/meastp/Downloads/boost_1_47_0/boost/iterator/iterator_facade.hpp|694|instantiated from ‘Derived& boost::iterator_facade<I, V, TC, R, D>::operator+=(Difference) [with Derived = RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint>, Value = QPoint, CategoryOrTraversal = boost::random_access_traversal_tag, Reference = QPoint, Difference = long int]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|611|instantiated from ‘boost::RandomAccessIterator<TT>::~RandomAccessIterator() [with TT = RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint>]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|600|instantiated from ‘static void boost::concepts::requirement<boost::concepts::failed************ Model::************>::failed() [with Model = boost::RandomAccessIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString**, std::vector<QLineString*, std::allocator<QLineString*> > >, QPoint> >]’|
/home/meastp/Downloads/boost_1_47_0/boost/range/concepts.hpp|351|instantiated from ‘boost::RandomAccessRangeConcept<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::constraint<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::RandomAccessRangeConcept<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::RandomAccessRangeConcept<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/ring_concept.hpp|85|instantiated from ‘boost::geometry::concept::ConstRing<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::constraint<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstRing<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstRing<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/polygon_concept.hpp|105|instantiated from ‘boost::geometry::concept::ConstPolygon<const QPolygon>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::constraint<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstPolygon<const QPolygon>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstPolygon<const QPolygon>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|44|instantiated from ‘boost::geometry::detail::concept_check::check<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|58|instantiated from ‘boost::geometry::dispatch::check<boost::geometry::polygon_tag, const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|132|instantiated from ‘boost::geometry::concept::detail::checker<const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|146|instantiated from ‘void boost::geometry::concept::check() [with Geometry = const QPolygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|387|instantiated from ‘boost::geometry::wkt_manipulator<Geometry> boost::geometry::wkt(const Geometry&) [with Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|305|warning: comparison between signed and unsigned integer expressions|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp||In member function ‘void RingIteratorImpl<I, R>::advance(typename boost::iterator_facade<RingIteratorImpl<I, R>, R, boost::random_access_traversal_tag, R, long int>::difference_type) [with I = __gnu_cxx::__normal_iterator<QLineString* const*, std::vector<QLineString*, std::allocator<QLineString*> > >, R = const QPoint]’:|
/home/meastp/Downloads/boost_1_47_0/boost/iterator/iterator_facade.hpp|547|instantiated from ‘static void boost::iterator_core_access::advance(Facade&, typename Facade::difference_type) [with Facade = RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString* const*, std::vector<QLineString*, std::allocator<QLineString*> > >, const QPoint>]’|
/home/meastp/Downloads/boost_1_47_0/boost/iterator/iterator_facade.hpp|694|instantiated from ‘Derived& boost::iterator_facade<I, V, TC, R, D>::operator+=(Difference) [with Derived = RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString* const*, std::vector<QLineString*, std::allocator<QLineString*> > >, const QPoint>, Value = const QPoint, CategoryOrTraversal = boost::random_access_traversal_tag, Reference = const QPoint, Difference = long int]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|611|instantiated from ‘boost::RandomAccessIterator<TT>::~RandomAccessIterator() [with TT = RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString* const*, std::vector<QLineString*, std::allocator<QLineString*> > >, const QPoint>]’|
/home/meastp/Downloads/boost_1_47_0/boost/concept_check.hpp|600|instantiated from ‘static void boost::concepts::requirement<boost::concepts::failed************ Model::************>::failed() [with Model = boost::RandomAccessIteratorConcept<RingIteratorImpl<__gnu_cxx::__normal_iterator<QLineString* const*, std::vector<QLineString*, std::allocator<QLineString*> > >, const QPoint> >]’|
/home/meastp/Downloads/boost_1_47_0/boost/range/concepts.hpp|352|instantiated from ‘boost::RandomAccessRangeConcept<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::constraint<boost::RandomAccessRangeConcept<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::RandomAccessRangeConcept<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::RandomAccessRangeConcept<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/ring_concept.hpp|85|instantiated from ‘boost::geometry::concept::ConstRing<QRing*>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::constraint<boost::geometry::concept::ConstRing<QRing*> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstRing<QRing*>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstRing<QRing*>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/polygon_concept.hpp|105|instantiated from ‘boost::geometry::concept::ConstPolygon<const QPolygon>’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|42|instantiated from ‘const bool boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >::value’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/has_constraints.hpp|45|instantiated from ‘boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/mpl/if.hpp|67|instantiated from ‘boost::mpl::if_<boost::concepts::not_satisfied<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::constraint<boost::geometry::concept::ConstPolygon<const QPolygon> >, boost::concepts::requirement<boost::concepts::failed************ boost::geometry::concept::ConstPolygon<const QPolygon>::************> >’|
/home/meastp/Downloads/boost_1_47_0/boost/concept/detail/general.hpp|20|instantiated from ‘boost::concepts::requirement_<void (*)(boost::geometry::concept::ConstPolygon<const QPolygon>)>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|44|instantiated from ‘boost::geometry::detail::concept_check::check<boost::geometry::concept::ConstPolygon<const QPolygon> >’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|58|instantiated from ‘boost::geometry::dispatch::check<boost::geometry::polygon_tag, const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|132|instantiated from ‘boost::geometry::concept::detail::checker<const QPolygon, true>’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/geometries/concepts/check.hpp|146|instantiated from ‘void boost::geometry::concept::check() [with Geometry = const QPolygon]’|
/home/meastp/Downloads/boost_1_47_0/boost/geometry/domains/gis/io/wkt/write_wkt.hpp|387|instantiated from ‘boost::geometry::wkt_manipulator<Geometry> boost::geometry::wkt(const Geometry&) [with Geometry = QPolygon]’|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|588|instantiated from here|
/home/meastp/Development/boostgeometry/mapperdefs/main.cpp|305|warning: comparison between signed and unsigned integer expressions|
||=== Build finished: 8 errors, 9 warnings (0 minutes, 7 seconds) ===|
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment