Created
February 17, 2012 11:04
-
-
Save meastp/1852693 to your computer and use it in GitHub Desktop.
Adaption of legacy objects to boost::geometry concepts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
||=== 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