1 // The patch makes it build with new geos-3.3.0
2 // create(suze_t, size_t) is pretty straightforward, but
3 // these dynamic_casts I really don't like
4 --- build_geometry
.cpp
.orig
2011-01-16 20:01:16.000000000 +0300
5 +++ build_geometry
.cpp
2011-06-30 02:51:28.000000000 +0400
8 char *get_wkt_simple(osmNode
*nodes
, int count
, int polygon
) {
10 - std::auto_ptr
<CoordinateSequence
> coords(gf
.getCoordinateSequenceFactory()->create(0, 2));
11 + std::auto_ptr
<CoordinateSequence
> coords(gf
.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2));
17 size_t get_wkt_split(osmNode
*nodes
, int count
, int polygon
, double split_at
) {
19 - std::auto_ptr
<CoordinateSequence
> coords(gf
.getCoordinateSequenceFactory()->create(0, 2));
20 + std::auto_ptr
<CoordinateSequence
> coords(gf
.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2));
27 std::auto_ptr
<CoordinateSequence
> segment
;
28 - segment
= std::auto_ptr
<CoordinateSequence
>(gf
.getCoordinateSequenceFactory()->create(0, 2));
29 + segment
= std::auto_ptr
<CoordinateSequence
>(gf
.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2));
30 segment
->add(coords
->getAt(0));
31 for(unsigned i
=1; i
<coords
->getSize(); i
++) {
32 segment
->add(coords
->getAt(i
));
37 - segment
= std::auto_ptr
<CoordinateSequence
>(gf
.getCoordinateSequenceFactory()->create(0, 2));
38 + segment
= std::auto_ptr
<CoordinateSequence
>(gf
.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2));
39 segment
->add(coords
->getAt(i
));
45 case GEOS_MULTILINESTRING
:
46 - gc
= (GeometryCollection
*) geometry
;
47 + gc
= dynamic_cast<GeometryCollection
*>(geometry
);
48 num_geometries
= gc
->getNumGeometries();
49 *xnodes
= (struct osmNode
**) malloc((num_geometries
+ 1) * sizeof(struct osmNode
*));
50 *xcount
= (int *) malloc(num_geometries
* sizeof(int));
54 for (int c
=0; xnodes
[c
]; c
++) {
55 - std::auto_ptr
<CoordinateSequence
> coords(gf
.getCoordinateSequenceFactory()->create(0, 2));
56 + std::auto_ptr
<CoordinateSequence
> coords(gf
.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2));
57 for (int i
= 0; i
< xcount
[c
]; i
++) {
58 struct osmNode
*nodes
= xnodes
[c
];
61 //std::cerr << "polygon(" << osm_id << ") is no good: points(" << pline->getNumPoints() << "), closed(" << pline->isClosed() << "). " << writer.write(pline.get()) << std::endl;
63 std::auto_ptr
<CoordinateSequence
> segment
;
64 - segment
= std::auto_ptr
<CoordinateSequence
>(gf
.getCoordinateSequenceFactory()->create(0, 2));
65 + segment
= std::auto_ptr
<CoordinateSequence
>(gf
.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2));
66 segment
->add(pline
->getCoordinateN(0));
67 for(unsigned i
=1; i
<pline
->getNumPoints(); i
++) {
68 segment
->add(pline
->getCoordinateN(i
));
73 - segment
= std::auto_ptr
<CoordinateSequence
>(gf
.getCoordinateSequenceFactory()->create(0, 2));
74 + segment
= std::auto_ptr
<CoordinateSequence
>(gf
.getCoordinateSequenceFactory()->create((size_t)0, (size_t)2));
75 segment
->add(pline
->getCoordinateN(i
));
80 for(unsigned i
=0; i
<toplevelpolygons
; i
++)
82 - Polygon
* poly
= (Polygon
*)polygons
->at(i
);
83 + Polygon
* poly
= dynamic_cast<Polygon
*>(polygons
->at(i
));
84 std::string text
= writer
.write(poly
);
86 areas
.push_back(poly
->getArea());