|  line  | 
 stmt  | 
 bran  | 
 cond  | 
 sub  | 
 pod  | 
 time  | 
 code  | 
| 
1
 | 
  
 
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /*  | 
| 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * This file was generated automatically by ExtUtils::ParseXS version 3.34 from the  | 
| 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * contents of Geos.xs. Do not edit this file, edit Geos.xs instead.  | 
| 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  *  | 
| 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  *    ANY CHANGES MADE HERE WILL BE LOST!  | 
| 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  *  | 
| 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  */  | 
| 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1 "Geos.xs"  | 
| 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #include "xs/geos.h"  | 
| 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #include "panda/Geos/Helper.h"  | 
| 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #include "panda/Geos/tesselate.h"  | 
| 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #include "xsi/private_typemaps.h"  | 
| 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using xs::my_perl;  | 
| 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using xs::Sv;  | 
| 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::geom;  | 
| 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::geom::prep;  | 
| 
19
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::algorithm;  | 
| 
20
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::noding;  | 
| 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::noding::snapround;  | 
| 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::io;  | 
| 
23
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::index::chain;  | 
| 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::index;  | 
| 
25
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::precision;  | 
| 
26
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::operation::buffer;  | 
| 
27
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::operation::distance;  | 
| 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::operation::overlay;  | 
| 
29
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::operation::valid;  | 
| 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::operation::relate;  | 
| 
31
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::operation::linemerge;  | 
| 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace geos::triangulate;  | 
| 
33
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace xs;  | 
| 
34
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace Geo::Geos;  | 
| 
35
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 using namespace panda;  | 
| 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
37
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 struct IntersectionFinderAdder_payload {  | 
| 
38
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     using vector_t = std::vector<::geos::geom::Coordinate>;  | 
| 
39
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
40
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Object lineIntersector;  | 
| 
41
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     vector_t coords;  | 
| 
42
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 };  | 
| 
43
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
44
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 struct Noder_payload {  | 
| 
45
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     using vector_t = std::vector<::geos::noding::SegmentString*>;  | 
| 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
47
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Ref array_ref;  | 
| 
48
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     vector_t segments;  | 
| 
49
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 };  | 
| 
50
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
51
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
52
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 struct MonotoneChain_payload {  | 
| 
53
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::unique_ptr seq;  | 
| 
54
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 };  | 
| 
55
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
56
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 struct SubItemVisitor: public geos::index::ItemVisitor {  | 
| 
57
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sub sub;  | 
| 
58
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Helper::lookup_map_t& lookup_map;  | 
| 
59
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
60
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SubItemVisitor(Sub sub_, Helper::lookup_map_t& lookup_map_):sub{sub_}, lookup_map{lookup_map_} {};  | 
| 
61
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     void visitItem (void *data) {  | 
| 
62
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         SV* key = static_cast(data);  | 
| 
63
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         HE* he = hv_fetch_ent(lookup_map, key, 0, 0);  | 
| 
64
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!he) throw ("Cannot lookup key in map");  | 
| 
65
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Scalar arg {HeVAL(he)};  | 
| 
66
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         sub(arg);  | 
| 
67
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
68
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 };  | 
| 
69
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
70
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 struct SVs_map_payload {  | 
| 
71
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Helper::lookup_map_t map;  | 
| 
72
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SVs_map_payload(): map{Hash::create()} {}  | 
| 
73
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 };  | 
| 
74
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
75
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static xs::Sv::payload_marker_t payload_marker{};  | 
| 
76
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static xs::Sv::payload_marker_t payload_marker_IntersectionFinderAdder{};  | 
| 
77
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static xs::Sv::payload_marker_t payload_marker_Noder{};  | 
| 
78
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static xs::Sv::payload_marker_t payload_marker_MonotoneChain{};  | 
| 
79
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static xs::Sv::payload_marker_t payload_marker_SVs_map{};  | 
| 
80
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
81
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static int payload_marker_IntersectionFinderAdder_free(pTHX_ SV*, MAGIC* mg) {  | 
| 
82
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (mg->mg_virtual == &payload_marker_IntersectionFinderAdder) {  | 
| 
83
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto* payload = static_cast((void*)mg->mg_ptr);  | 
| 
84
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         delete payload;  | 
| 
85
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
86
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     return 0;  | 
| 
87
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
88
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
89
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static int payload_marker_Noder_free(pTHX_ SV*, MAGIC* mg) {  | 
| 
90
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (mg->mg_virtual == &payload_marker_Noder) {  | 
| 
91
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto* payload = static_cast((void*)mg->mg_ptr);  | 
| 
92
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         delete payload;  | 
| 
93
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
94
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     return 0;  | 
| 
95
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
96
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
97
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static int payload_marker_MonotoneChain_free(pTHX_ SV*, MAGIC* mg) {  | 
| 
98
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (mg->mg_virtual == &payload_marker_MonotoneChain) {  | 
| 
99
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto* payload = static_cast((void*)mg->mg_ptr);  | 
| 
100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         delete payload;  | 
| 
101
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
102
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     return 0;  | 
| 
103
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
104
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
105
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static int payload_marker_SVs_map_free(pTHX_ SV*, MAGIC* mg) {  | 
| 
106
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (mg->mg_virtual == &payload_marker_SVs_map) {  | 
| 
107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto* payload = static_cast((void*)mg->mg_ptr);  | 
| 
108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         delete payload;  | 
| 
109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
110
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     return 0;  | 
| 
111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
112
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
113
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
114
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static Sv coordinate_create_null () {  | 
| 
115
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Sv ret = xs::out(aTHX_ new Coordinate());  | 
| 
116
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     return ret;  | 
| 
117
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
118
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 static Sv coordinate_get_null () {  | 
| 
120
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     static thread_local Sv obj = coordinate_create_null();  | 
| 
121
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     return obj;  | 
| 
122
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
123
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 //static Sv::payload_marker_t payload_marker;  | 
| 
125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
126
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 127 "Geos.xs.cc"  | 
| 
127
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifndef PERL_UNUSED_VAR  | 
| 
128
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define PERL_UNUSED_VAR(var) if (0) var = var  | 
| 
129
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
130
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
131
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifndef dVAR  | 
| 
132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define dVAR		dNOOP  | 
| 
133
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
134
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
136
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* This stuff is not part of the API! You have been warned. */  | 
| 
137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifndef PERL_VERSION_DECIMAL  | 
| 
138
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)  | 
| 
139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
140
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifndef PERL_DECIMAL_VERSION  | 
| 
141
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define PERL_DECIMAL_VERSION \  | 
| 
142
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	  PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)  | 
| 
143
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifndef PERL_VERSION_GE  | 
| 
145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define PERL_VERSION_GE(r,v,s) \  | 
| 
146
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	  (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))  | 
| 
147
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifndef PERL_VERSION_LE  | 
| 
149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define PERL_VERSION_LE(r,v,s) \  | 
| 
150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	  (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s))  | 
| 
151
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
153
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* XS_INTERNAL is the explicit static-linkage variant of the default  | 
| 
154
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * XS macro.  | 
| 
155
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  *  | 
| 
156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * XS_EXTERNAL is the same as XS_INTERNAL except it does not include  | 
| 
157
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * "STATIC", ie. it exports XSUB symbols. You probably don't want that  | 
| 
158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * for anything but the BOOT XSUB.  | 
| 
159
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  *  | 
| 
160
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * See XSUB.h in core!  | 
| 
161
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  */  | 
| 
162
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
163
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
164
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* TODO: This might be compatible further back than 5.10.0. */  | 
| 
165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1)  | 
| 
166
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  undef XS_EXTERNAL  | 
| 
167
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  undef XS_INTERNAL  | 
| 
168
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)  | 
| 
169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #    define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)  | 
| 
170
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #    define XS_INTERNAL(name) STATIC XSPROTO(name)  | 
| 
171
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  endif  | 
| 
172
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  if defined(__SYMBIAN32__)  | 
| 
173
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #    define XS_EXTERNAL(name) EXPORT_C XSPROTO(name)  | 
| 
174
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #    define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)  | 
| 
175
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  endif  | 
| 
176
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  ifndef XS_EXTERNAL  | 
| 
177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #    if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)  | 
| 
178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #      define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)  | 
| 
179
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #      define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)  | 
| 
180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #    else  | 
| 
181
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #      ifdef __cplusplus  | 
| 
182
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #        define XS_EXTERNAL(name) extern "C" XSPROTO(name)  | 
| 
183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #        define XS_INTERNAL(name) static XSPROTO(name)  | 
| 
184
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #      else  | 
| 
185
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #        define XS_EXTERNAL(name) XSPROTO(name)  | 
| 
186
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #        define XS_INTERNAL(name) STATIC XSPROTO(name)  | 
| 
187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #      endif  | 
| 
188
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #    endif  | 
| 
189
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  endif  | 
| 
190
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
191
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* perl >= 5.10.0 && perl <= 5.15.1 */  | 
| 
193
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
194
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
195
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* The XS_EXTERNAL macro is used for functions that must not be static  | 
| 
196
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL  | 
| 
197
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * macro defined, the best we can do is assume XS is the same.  | 
| 
198
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * Dito for XS_INTERNAL.  | 
| 
199
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  */  | 
| 
200
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifndef XS_EXTERNAL  | 
| 
201
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define XS_EXTERNAL(name) XS(name)  | 
| 
202
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
203
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifndef XS_INTERNAL  | 
| 
204
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define XS_INTERNAL(name) XS(name)  | 
| 
205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
207
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* Now, finally, after all this mess, we want an ExtUtils::ParseXS  | 
| 
208
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * internal macro that we're free to redefine for varying linkage due  | 
| 
209
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use  | 
| 
210
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to!  | 
| 
211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  */  | 
| 
212
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #undef XS_EUPXS  | 
| 
214
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #if defined(PERL_EUPXS_ALWAYS_EXPORT)  | 
| 
215
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define XS_EUPXS(name) XS_EXTERNAL(name)  | 
| 
216
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #else  | 
| 
217
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    /* default to internal */  | 
| 
218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define XS_EUPXS(name) XS_INTERNAL(name)  | 
| 
219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE  | 
| 
222
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)  | 
| 
223
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
224
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* prototype to pass -Wmissing-prototypes */  | 
| 
225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 STATIC void  | 
| 
226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 S_croak_xs_usage(const CV *const cv, const char *const params);  | 
| 
227
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
228
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 STATIC void  | 
| 
229
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 S_croak_xs_usage(const CV *const cv, const char *const params)  | 
| 
230
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
231
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     const GV *const gv = CvGV(cv);  | 
| 
232
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_ARGS_ASSERT_CROAK_XS_USAGE;  | 
| 
234
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
235
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (gv) {  | 
| 
236
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         const char *const gvname = GvNAME(gv);  | 
| 
237
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         const HV *const stash = GvSTASH(gv);  | 
| 
238
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         const char *const hvname = stash ? HvNAME(stash) : NULL;  | 
| 
239
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (hvname)  | 
| 
241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    Perl_croak_nocontext("Usage: %s::%s(%s)", hvname, gvname, params);  | 
| 
242
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else  | 
| 
243
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    Perl_croak_nocontext("Usage: %s(%s)", gvname, params);  | 
| 
244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     } else {  | 
| 
245
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         /* Pants. I don't think that it should be possible to get here. */  | 
| 
246
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Perl_croak_nocontext("Usage: CODE(0x%" UVxf ")(%s)", PTR2UV(cv), params);  | 
| 
247
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }  | 
| 
249
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #undef  PERL_ARGS_ASSERT_CROAK_XS_USAGE  | 
| 
250
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
251
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #define croak_xs_usage        S_croak_xs_usage  | 
| 
252
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
253
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
254
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* NOTE: the prototype of newXSproto() is different in versions of perls,  | 
| 
256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  * so we define a portable version of newXSproto()  | 
| 
257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  */  | 
| 
258
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifdef newXS_flags  | 
| 
259
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0)  | 
| 
260
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #else  | 
| 
261
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv)  | 
| 
262
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif /* !defined(newXS_flags) */  | 
| 
263
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #if PERL_VERSION_LE(5, 21, 5)  | 
| 
265
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define newXS_deffile(a,b) Perl_newXS(aTHX_ a,b,file)  | 
| 
266
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #else  | 
| 
267
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b)  | 
| 
268
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
270
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 271 "Geos.xs.cc"  | 
| 
271
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/Coordinate.xsi' from 'Geos.xs' */  | 
| 
273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
275
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
276
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_getNull) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
277
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
278
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
279
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 0)  | 
| 
280
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "");  | 
| 
281
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
282
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
283
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/Coordinate.xsi"  | 
| 
284
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = coordinate_get_null();   | 
| 
285
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 286 "Geos.xs.cc"  | 
| 
286
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
287
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
288
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
289
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
290
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
291
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
292
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
293
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
294
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
295
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
296
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
297
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
298
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
299
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
300
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
301
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
302
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
303
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
304
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
305
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
306
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
307
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
309
 | 
632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
310
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
311
 | 
316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
312
 | 
316
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 4)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
313
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, x= 0, y= 0, z= NULL");  | 
| 
314
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
315
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	x;  | 
| 
317
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	y;  | 
| 
318
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	z;  | 
| 
319
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
320
 | 
316
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
321
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    x = 0;  | 
| 
322
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
323
 | 
632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    x = (double)SvNV(ST(1))  | 
| 
324
 | 
316
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
325
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
326
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
327
 | 
316
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
328
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    y = 0;  | 
| 
329
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
330
 | 
632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    y = (double)SvNV(ST(2))  | 
| 
331
 | 
316
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
332
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
333
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
334
 | 
316
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
335
 | 
309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    z = NULL;  | 
| 
336
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
337
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    z = ST(3)  | 
| 
338
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
339
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
340
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7 "./xsi/Coordinate.xsi"  | 
| 
341
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(x, y, z ? SvNV(z) : DoubleNotANumber);  | 
| 
343
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 344 "Geos.xs.cc"  | 
| 
344
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
346
 | 
316
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
347
 | 
316
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
348
 | 
316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
349
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
351
 | 
316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
352
 | 
316
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
353
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
356
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_x) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
358
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
359
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dXSI32;  | 
| 
360
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
361
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newval= NULL");  | 
| 
362
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
364
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
365
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
366
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
367
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	newval;  | 
| 
368
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
369
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
370
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = NULL;  | 
| 
371
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
372
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = ST(1)  | 
| 
373
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
374
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
375
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11 "./xsi/Coordinate.xsi"  | 
| 
376
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     double* val;  | 
| 
377
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     switch (ix) {  | 
| 
378
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 0:  val = &THIS->x; break;  | 
| 
379
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 1:  val = &THIS->y; break;  | 
| 
380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         default: val = &THIS->z; break;  | 
| 
381
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
382
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (newval) {  | 
| 
383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (SvREADONLY(ST(0))) throw "cannot modify readonly object";  | 
| 
384
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         *val = SvNV(newval);  | 
| 
385
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
386
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = *val;  | 
| 
387
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 388 "Geos.xs.cc"  | 
| 
388
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
389
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
390
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
391
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
392
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
393
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
394
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
395
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_setNull) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
396
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
397
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
398
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
399
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
400
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
401
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
402
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
403
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
404
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 25 "./xsi/Coordinate.xsi"  | 
| 
406
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (SvREADONLY(ST(0))) throw "cannot modify readonly object";  | 
| 
407
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->setNull();  | 
| 
408
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 409 "Geos.xs.cc"  | 
| 
409
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
410
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
411
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
412
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
413
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
414
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
415
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
416
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_isNull) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
417
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
418
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
419
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
420
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
421
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
422
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
423
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
424
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
425
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 29 "./xsi/Coordinate.xsi"  | 
| 
426
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isNull();  | 
| 
427
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 428 "Geos.xs.cc"  | 
| 
428
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
429
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
430
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
431
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
432
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
433
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
434
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
435
 | 
20
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_equals) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
436
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
437
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
438
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
439
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
440
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
441
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
442
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
443
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
444
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	other = xs::in(aTHX_ ST(1));  | 
| 
445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
446
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 31 "./xsi/Coordinate.xsi"  | 
| 
447
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->equals(other);  | 
| 
448
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 449 "Geos.xs.cc"  | 
| 
449
 | 
10
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
450
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
451
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
452
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
453
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
454
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
455
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
456
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_equals2D) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
457
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
458
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
459
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
460
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
461
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
462
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
463
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
464
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
465
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	other = xs::in(aTHX_ ST(1));  | 
| 
466
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 33 "./xsi/Coordinate.xsi"  | 
| 
468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->equals2D(other);  | 
| 
469
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 470 "Geos.xs.cc"  | 
| 
470
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
471
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
472
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
473
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
474
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
475
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
476
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
477
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_equals3D) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
478
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
479
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
480
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
481
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
483
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
484
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
485
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
486
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	other = xs::in(aTHX_ ST(1));  | 
| 
487
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
488
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 35 "./xsi/Coordinate.xsi"  | 
| 
489
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->equals3D(other);  | 
| 
490
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 491 "Geos.xs.cc"  | 
| 
491
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
492
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
493
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
494
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
495
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
496
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
497
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
498
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_compareTo) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
499
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
500
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
501
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
502
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
504
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
505
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
506
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
508
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	other = xs::in(aTHX_ ST(1));  | 
| 
509
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
510
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 37 "./xsi/Coordinate.xsi"  | 
| 
511
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->compareTo(other);  | 
| 
512
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 513 "Geos.xs.cc"  | 
| 
513
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
514
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
515
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
516
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
517
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
518
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
519
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
520
 | 
96
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_eq) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
521
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
522
 | 
48
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
523
 | 
48
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
524
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other_arg, SV*");  | 
| 
525
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
526
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
527
 | 
48
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
528
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
529
 | 
96
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv    other_arg = ST(1)  | 
| 
530
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 40 "./xsi/Coordinate.xsi"  | 
| 
532
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto* other = xs::in(other_arg);  | 
| 
533
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = other ? THIS->equals(*other) : false;  | 
| 
534
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 535 "Geos.xs.cc"  | 
| 
535
 | 
48
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
536
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
537
 | 
48
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
538
 | 
48
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
539
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
540
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
541
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
542
 | 
264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
543
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
544
 | 
132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
545
 | 
132
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
546
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
547
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
548
 | 
264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
549
 | 
132
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
550
 | 
132
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
551
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
552
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 45 "./xsi/Coordinate.xsi"  | 
| 
553
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->toString();  | 
| 
554
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 555 "Geos.xs.cc"  | 
| 
555
 | 
132
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
556
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
557
 | 
132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
558
 | 
132
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
560
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
561
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
562
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_distance) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
563
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
564
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
565
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
566
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
567
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
568
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
569
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
570
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
571
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
572
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	other = xs::in(aTHX_ ST(1));  | 
| 
573
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
574
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 47 "./xsi/Coordinate.xsi"  | 
| 
575
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->distance(other);  | 
| 
576
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 577 "Geos.xs.cc"  | 
| 
577
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
578
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
579
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
580
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
582
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
583
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
584
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_hashCode) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
585
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
586
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
587
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
588
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
589
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
590
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
591
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
592
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
593
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
594
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 49 "./xsi/Coordinate.xsi"  | 
| 
595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hashCode();  | 
| 
596
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 597 "Geos.xs.cc"  | 
| 
597
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
598
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
599
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
600
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
602
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
603
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
604
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Coordinate_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
605
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
606
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
607
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
608
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
609
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
610
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
611
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 51 "./xsi/Coordinate.xsi"  | 
| 
612
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
613
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 614 "Geos.xs.cc"  | 
| 
614
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
616
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
617
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
618
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
619
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
620
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/Coordinate.xsi' */  | 
| 
621
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
622
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
623
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/Dimension.xsi' from 'Geos.xs' */  | 
| 
624
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
625
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
626
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
627
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Dimension_toDimensionSymbol) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
628
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
629
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
630
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
631
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "value");  | 
| 
632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
633
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	string	RETVAL;  | 
| 
634
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
635
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	value = (int)SvIV(ST(0))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
636
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
637
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/Dimension.xsi"  | 
| 
638
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     char c = Dimension::toDimensionSymbol(value);  | 
| 
639
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = c;  | 
| 
640
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 641 "Geos.xs.cc"  | 
| 
641
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
642
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
643
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
644
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
645
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
648
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Dimension_toDimensionValue) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
649
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
650
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
651
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
652
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "value");  | 
| 
653
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
654
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
655
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
656
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	string	value;  | 
| 
657
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
658
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
   { STRLEN __value_len;  | 
| 
659
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     const char* __value_buf = SvPV(ST(0), __value_len);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
660
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     value.assign(__value_buf, __value_len); }  | 
| 
661
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
662
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10 "./xsi/Dimension.xsi"  | 
| 
663
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (value.size() != 1) throw "string of one char is expected";  | 
| 
664
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL =  Dimension::toDimensionValue(value[0]);  | 
| 
665
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 666 "Geos.xs.cc"  | 
| 
666
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
668
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
669
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
670
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
672
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/Dimension.xsi' */  | 
| 
673
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
674
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
675
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/Envelope.xsi' from 'Geos.xs' */  | 
| 
676
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
677
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
678
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
679
 | 
84
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
680
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
681
 | 
42
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
682
 | 
42
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 5)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
683
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, arg1= Sv(), arg2= NULL, arg3= NULL, arg4= NULL");  | 
| 
684
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope *	RETVAL;  | 
| 
686
 | 
84
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	arg1;  | 
| 
687
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
688
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
689
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg4;  | 
| 
690
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
691
 | 
42
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
692
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = Sv();  | 
| 
693
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
694
 | 
41
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     arg1 = ST(1)  | 
| 
695
 | 
41
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
696
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
698
 | 
42
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
699
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
701
 | 
39
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
702
 | 
39
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
703
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
704
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
705
 | 
42
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
706
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
707
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
708
 | 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
709
 | 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
710
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
711
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
712
 | 
42
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 5)  | 
| 
713
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = NULL;  | 
| 
714
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
715
 | 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = ST(4)  | 
| 
716
 | 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
717
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
718
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/Envelope.xsi"  | 
| 
719
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
720
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items == 1) RETVAL = new Envelope();  | 
| 
721
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if (items == 2) {  | 
| 
722
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!arg1.is_simple()) {  | 
| 
723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& c = xs::in(arg1);  | 
| 
724
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = new Envelope(c);  | 
| 
725
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
726
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
727
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             if(!arg1) throw("undef not allowed");  | 
| 
728
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             panda::string_view sw = Simple(arg1);  | 
| 
729
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             std::string str { sw.begin(), sw.end() };  | 
| 
730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = new Envelope(str);  | 
| 
731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
732
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
733
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if (items == 3) {  | 
| 
734
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c1 = xs::in(arg1);  | 
| 
735
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c2 = xs::in(arg2);  | 
| 
736
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = new Envelope(c1, c2);  | 
| 
737
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
738
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if (items == 5)  RETVAL = new Envelope(Simple(arg1), Simple(arg2), Simple(arg3), Simple(arg4));  | 
| 
739
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else throw ("unsupported constructor");  | 
| 
740
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 741 "Geos.xs.cc"  | 
| 
741
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
742
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
743
 | 
41
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
744
 | 
41
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
745
 | 
41
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
746
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
747
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
748
 | 
41
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
749
 | 
42
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
750
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
751
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
752
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
753
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_init) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
754
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
755
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
756
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 5)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
757
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1= NULL, arg2= NULL, arg3= NULL, arg4= NULL");  | 
| 
758
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
759
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
760
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
761
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
762
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
763
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
764
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
766
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg4;  | 
| 
767
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
768
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
769
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
770
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
771
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
772
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
773
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
774
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
775
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
776
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
778
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
779
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
780
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
781
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
782
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
783
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
784
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
785
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
786
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
787
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
788
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
789
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 5)  | 
| 
790
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = NULL;  | 
| 
791
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
792
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = ST(4)  | 
| 
793
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
794
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
795
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 28 "./xsi/Envelope.xsi"  | 
| 
796
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items == 1) THIS->init();  | 
| 
797
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if (items == 2) {  | 
| 
798
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c = xs::in(arg1);  | 
| 
799
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->init(c);  | 
| 
800
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
801
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if (items == 3) {  | 
| 
802
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto c1 = xs::in(arg1);  | 
| 
803
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto c2 = xs::in(arg2);  | 
| 
804
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->init(c1, c2);  | 
| 
805
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
806
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if (items == 5)  THIS->init(Simple(arg1), Simple(arg2), Simple(arg3), Simple(arg4));  | 
| 
807
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else throw ("unsupported arguments");  | 
| 
808
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 809 "Geos.xs.cc"  | 
| 
809
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
810
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
812
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
813
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
814
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
815
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
816
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_setToNull) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
818
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
819
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
820
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
821
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
822
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
823
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
824
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
825
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 42 "./xsi/Envelope.xsi"  | 
| 
827
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setToNull();  | 
| 
828
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 829 "Geos.xs.cc"  | 
| 
829
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
830
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
831
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
832
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
833
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
835
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
836
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_getArea) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
837
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
838
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
839
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
840
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
842
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
843
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
844
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
845
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
846
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 44 "./xsi/Envelope.xsi"  | 
| 
847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getArea();  | 
| 
848
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 849 "Geos.xs.cc"  | 
| 
849
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
851
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
852
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
853
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
854
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
855
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
856
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_getMaxY) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
857
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
858
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
859
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
860
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
861
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
863
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
864
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
865
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
866
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 46 "./xsi/Envelope.xsi"  | 
| 
867
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getMaxY();  | 
| 
868
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 869 "Geos.xs.cc"  | 
| 
869
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
870
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
871
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
872
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
873
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
876
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_getMaxX) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
877
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
878
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
879
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
880
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
881
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
883
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
884
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
885
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
886
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 48 "./xsi/Envelope.xsi"  | 
| 
887
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getMaxX();  | 
| 
888
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 889 "Geos.xs.cc"  | 
| 
889
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
890
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
891
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
892
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
894
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
896
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_getMinY) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
897
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
898
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
899
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
900
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
901
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
902
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
903
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
904
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 50 "./xsi/Envelope.xsi"  | 
| 
907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getMinY();  | 
| 
908
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 909 "Geos.xs.cc"  | 
| 
909
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
910
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
911
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
912
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
913
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
914
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
915
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
916
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_getMinX) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
918
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
919
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
920
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
921
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
922
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
923
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
924
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
925
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
926
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 52 "./xsi/Envelope.xsi"  | 
| 
927
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getMinX();  | 
| 
928
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 929 "Geos.xs.cc"  | 
| 
929
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
930
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
931
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
932
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
933
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
934
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
935
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
936
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_getWidth) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
937
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
938
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
939
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
940
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
941
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
942
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
943
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
944
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
946
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 54 "./xsi/Envelope.xsi"  | 
| 
947
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getWidth();  | 
| 
948
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 949 "Geos.xs.cc"  | 
| 
949
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
950
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
951
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
952
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
953
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
954
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
955
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
956
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_getHeight) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
957
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
958
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
959
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
960
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
961
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
962
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
963
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
964
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
965
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
966
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 56 "./xsi/Envelope.xsi"  | 
| 
967
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getHeight();  | 
| 
968
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 969 "Geos.xs.cc"  | 
| 
969
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
970
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
971
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
972
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
974
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
976
 | 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_isNull) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
977
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
978
 | 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
979
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
980
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
981
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
982
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
983
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
984
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 58 "./xsi/Envelope.xsi"  | 
| 
986
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isNull();  | 
| 
987
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 988 "Geos.xs.cc"  | 
| 
988
 | 
9
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
989
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
990
 | 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
991
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
992
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
993
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
995
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_hashCode) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
997
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
998
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
999
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1000
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1001
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
1002
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1003
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1004
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 60 "./xsi/Envelope.xsi"  | 
| 
1006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hashCode();  | 
| 
1007
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1008 "Geos.xs.cc"  | 
| 
1008
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1009
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1010
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1011
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1012
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1014
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1015
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1016
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1017
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1018
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
1019
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
1020
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1021
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
1022
 | 
14
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1023
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1024
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 62 "./xsi/Envelope.xsi"  | 
| 
1026
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->toString();  | 
| 
1027
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1028 "Geos.xs.cc"  | 
| 
1028
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1029
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1030
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1031
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1033
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1034
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1035
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_eq) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1036
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1037
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1038
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
1039
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other_arg, SV*");  | 
| 
1040
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1041
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1042
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1044
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv    other_arg = ST(1)  | 
| 
1045
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1046
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 65 "./xsi/Envelope.xsi"  | 
| 
1047
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto other = xs::in(other_arg);  | 
| 
1048
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = other ? THIS->equals(other) : false;  | 
| 
1049
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1050 "Geos.xs.cc"  | 
| 
1050
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1052
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1053
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1054
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1056
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1057
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_centre) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1059
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1060
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1061
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
1064
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1065
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 70 "./xsi/Envelope.xsi"  | 
| 
1067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
1068
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
1069
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!THIS->centre(c)) XSRETURN_UNDEF;  | 
| 
1070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
1071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1072 "Geos.xs.cc"  | 
| 
1072
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
1073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
1074
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
1075
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
1076
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
1077
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1078
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1079
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1080
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1082
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1084
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_contains) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1086
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1087
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1088
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1, arg2= NULL");  | 
| 
1089
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1090
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1091
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1092
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1093
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1 = ST(1)  | 
| 
1094
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
1096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1097
 | 
7
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
1098
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
1099
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1100
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
1101
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1102
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1103
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 76 "./xsi/Envelope.xsi"  | 
| 
1104
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg2) {  | 
| 
1105
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Object obj {arg1};  | 
| 
1106
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!obj) throw("wrong argument");  | 
| 
1107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (obj.stash().name() == "Geo::Geos::Envelope") {  | 
| 
1108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto e = xs::in(obj);  | 
| 
1109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = THIS->contains(e);  | 
| 
1110
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
1112
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& c = xs::in(obj);  | 
| 
1113
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = THIS->contains(c);  | 
| 
1114
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1115
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1116
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else RETVAL = THIS->contains(Simple(arg1), Simple(arg2));  | 
| 
1117
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1118 "Geos.xs.cc"  | 
| 
1118
 | 
7
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1120
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1121
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1122
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1123
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1125
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_covers) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1126
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1127
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1128
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1129
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1, arg2= NULL");  | 
| 
1130
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1131
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1132
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1133
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1134
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1 = ST(1)  | 
| 
1135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1136
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
1137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1138
 | 
7
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
1139
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
1140
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1141
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
1142
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1143
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 92 "./xsi/Envelope.xsi"  | 
| 
1145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg2) {  | 
| 
1146
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Object obj {arg1};  | 
| 
1147
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!obj) throw("wrong argument");  | 
| 
1148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (obj.stash().name() == "Geo::Geos::Envelope") {  | 
| 
1149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto e = xs::in(obj);  | 
| 
1150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = THIS->covers(e);  | 
| 
1151
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
1153
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& c = xs::in(obj);  | 
| 
1154
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = THIS->covers(c);  | 
| 
1155
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1157
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else RETVAL = THIS->covers(Simple(arg1), Simple(arg2));  | 
| 
1158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1159 "Geos.xs.cc"  | 
| 
1159
 | 
7
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1160
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1161
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1162
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1163
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1164
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1166
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_intersects) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1167
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1168
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1169
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 4)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1170
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "maybe_self, arg1, arg2= NULL, arg3= NULL");  | 
| 
1171
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1172
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1173
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Object    maybe_self = ST(0);  | 
| 
1174
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!maybe_self && SvOK(ST(0))) throw "arg is not a blessed reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1175
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1176
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1 = ST(1)  | 
| 
1177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
1179
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
1180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1181
 | 
11
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
1182
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
1183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1184
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
1185
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1186
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1188
 | 
11
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
1189
 | 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
1190
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1191
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
1192
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1193
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1194
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 108 "./xsi/Envelope.xsi"  | 
| 
1195
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!maybe_self) throw("wrong argument");  | 
| 
1196
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto arg0_stash = maybe_self.stash().name();  | 
| 
1197
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (arg0_stash != "Geo::Geos::Envelope") {  | 
| 
1198
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         // static method  | 
| 
1199
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& p1 = xs::in(maybe_self);  | 
| 
1200
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& p2 = xs::in(arg1);  | 
| 
1201
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!arg3) {  | 
| 
1202
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& q = xs::in(arg2);  | 
| 
1203
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = Envelope::intersects(p1, p2, q);  | 
| 
1204
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
1206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& q1 = xs::in(arg2);  | 
| 
1207
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& q2 = xs::in(arg3);  | 
| 
1208
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = Envelope::intersects(p1, p2, q1, q2);  | 
| 
1209
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1210
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     } else  {  | 
| 
1211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         // object method  | 
| 
1212
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Envelope& self = xs::in(maybe_self);  | 
| 
1213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!arg2) {  | 
| 
1214
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             Object obj {arg1};  | 
| 
1215
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             if(!obj) throw("wrong argument");  | 
| 
1216
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             if (obj.stash().name() == "Geo::Geos::Envelope") {  | 
| 
1217
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 auto& e = xs::in(obj);  | 
| 
1218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 RETVAL = self.intersects(&e);  | 
| 
1219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             }  | 
| 
1220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             else {  | 
| 
1221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 auto& c = xs::in(obj);  | 
| 
1222
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 RETVAL = self.intersects(c);  | 
| 
1223
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             }  | 
| 
1224
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else RETVAL = self.intersects(Simple(arg1), Simple(arg2));  | 
| 
1226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1227
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1228 "Geos.xs.cc"  | 
| 
1228
 | 
11
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1229
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1230
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1231
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1232
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1234
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1235
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_expandToInclude) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1236
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1237
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1238
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1239
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1, arg2= NULL");  | 
| 
1240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
1241
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
1242
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1243
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1245
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1 = ST(1)  | 
| 
1246
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1247
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
1248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1249
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
1250
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
1251
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1252
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
1253
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1254
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 143 "./xsi/Envelope.xsi"  | 
| 
1256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg2) {  | 
| 
1257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Object obj {arg1};  | 
| 
1258
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!obj) throw("wrong argument");  | 
| 
1259
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (obj.stash().name() == "Geo::Geos::Envelope") {  | 
| 
1260
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& e = xs::in(obj);  | 
| 
1261
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             THIS->expandToInclude(&e);  | 
| 
1262
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1263
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
1264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& c = xs::in(obj);  | 
| 
1265
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             THIS->expandToInclude(c);  | 
| 
1266
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1267
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1268
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else THIS->expandToInclude(Simple(arg1), Simple(arg2));  | 
| 
1269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1270 "Geos.xs.cc"  | 
| 
1270
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
1271
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
1272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1273
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1275
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1276
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1277
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_distance) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1278
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1279
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1280
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
1281
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
1282
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1283
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
1284
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1285
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1286
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1287
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope&	other = xs::in(aTHX_ ST(1));  | 
| 
1288
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1289
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 158 "./xsi/Envelope.xsi"  | 
| 
1290
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->distance(&other);   | 
| 
1291
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1292 "Geos.xs.cc"  | 
| 
1292
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1293
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1294
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1295
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1296
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1297
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1298
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1299
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_translate) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1300
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1301
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1302
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
1303
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, tX, tY");  | 
| 
1304
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
1305
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
1306
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1307
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1309
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	tX = (double)SvNV(ST(1))  | 
| 
1310
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1311
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	tY = (double)SvNV(ST(2))  | 
| 
1312
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1313
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 160 "./xsi/Envelope.xsi"  | 
| 
1314
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->translate(tX, tY);  | 
| 
1315
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1316 "Geos.xs.cc"  | 
| 
1316
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
1317
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
1318
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1319
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1320
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1321
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1322
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1323
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_expandBy) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1324
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1325
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1326
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
1327
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, dX, dY");  | 
| 
1328
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
1329
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
1330
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1331
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1332
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1333
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	dX = (double)SvNV(ST(1))  | 
| 
1334
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1335
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	dY = (double)SvNV(ST(2))  | 
| 
1336
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 162 "./xsi/Envelope.xsi"  | 
| 
1338
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->expandBy(dX, dY);  | 
| 
1339
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1340 "Geos.xs.cc"  | 
| 
1340
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
1341
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
1342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1343
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1344
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1346
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1347
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_intersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1348
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1349
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1350
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
1351
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
1352
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1353
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope *	RETVAL;  | 
| 
1354
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1356
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope&	other = xs::in(aTHX_ ST(1));  | 
| 
1357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 165 "./xsi/Envelope.xsi"  | 
| 
1359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
1360
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Envelope e;  | 
| 
1361
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!THIS->intersection(other, e)) XSRETURN_UNDEF;  | 
| 
1362
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Envelope(e);  | 
| 
1363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1364 "Geos.xs.cc"  | 
| 
1364
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
1365
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
1366
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
1367
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
1368
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
1369
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1370
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1371
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1372
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1373
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1374
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1375
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1376
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Envelope_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1377
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1378
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1379
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
1380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1381
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
1382
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 170 "./xsi/Envelope.xsi"  | 
| 
1384
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
1385
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1386 "Geos.xs.cc"  | 
| 
1386
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1387
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1388
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1389
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1390
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1391
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1392
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/Envelope.xsi' */  | 
| 
1393
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1394
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/PrecisionModel.xsi' from 'Geos.xs' */  | 
| 
1396
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1397
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1399
 | 
56
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1400
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1401
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1402
 | 
28
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 4)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1403
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, arg1= NULL, arg2= NULL, arg3= NULL");  | 
| 
1404
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel *	RETVAL;  | 
| 
1406
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
1407
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
1408
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
1409
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1410
 | 
28
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
1411
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
1412
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1413
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
1414
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1415
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1416
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1417
 | 
28
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
1418
 | 
27
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
1419
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1420
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
1421
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1422
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1423
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1424
 | 
28
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
1425
 | 
27
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
1426
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1427
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
1428
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1429
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1430
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/PrecisionModel.xsi"  | 
| 
1431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
1432
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = new PrecisionModel();  | 
| 
1433
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
1434
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(SvIOK(arg1)) {  | 
| 
1435
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             PrecisionModel::Type model = static_cast(SvIV(arg1));  | 
| 
1436
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = new PrecisionModel(model);  | 
| 
1437
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1438
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
1439
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             double scale = SvNV(arg1);  | 
| 
1440
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             if (arg2) {  | 
| 
1441
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 if(!arg3) throw("undef not allowed");  | 
| 
1442
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 double offsetX = SvNV(arg2);  | 
| 
1443
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 double offsetY = SvNV(arg3);  | 
| 
1444
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 RETVAL = new PrecisionModel(scale, offsetX, offsetY);  | 
| 
1445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             }  | 
| 
1446
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             else RETVAL = new PrecisionModel(scale);  | 
| 
1447
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
1448
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1449
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1450 "Geos.xs.cc"  | 
| 
1450
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
1451
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
1452
 | 
28
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
1453
 | 
28
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
1454
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
1455
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1456
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1457
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1458
 | 
28
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1459
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1460
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1461
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1462
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_getScale) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1463
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1464
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1465
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1466
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
1469
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1470
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1471
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1472
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 24 "./xsi/PrecisionModel.xsi"  | 
| 
1473
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getScale();  | 
| 
1474
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1475 "Geos.xs.cc"  | 
| 
1475
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1476
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1477
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1478
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1479
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1480
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1481
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1482
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_getOffsetX) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1483
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1484
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1485
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1486
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1487
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1488
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
1489
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1490
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1491
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1492
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 26 "./xsi/PrecisionModel.xsi"  | 
| 
1493
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getOffsetX();  | 
| 
1494
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1495 "Geos.xs.cc"  | 
| 
1495
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1496
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1497
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1498
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1499
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1500
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1501
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1502
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_getOffsetY) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1504
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1505
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1506
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1508
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
1509
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1510
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1511
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1512
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 28 "./xsi/PrecisionModel.xsi"  | 
| 
1513
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getOffsetY();  | 
| 
1514
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1515 "Geos.xs.cc"  | 
| 
1515
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1516
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1517
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1518
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1519
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1520
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1521
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1522
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_isFloating) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1524
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1525
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1526
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1527
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1528
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1529
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1530
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 30 "./xsi/PrecisionModel.xsi"  | 
| 
1532
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isFloating();  | 
| 
1533
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1534 "Geos.xs.cc"  | 
| 
1534
 | 
11
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1535
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1536
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1537
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1538
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1539
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1540
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1541
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_getMaximumSignificantDigits) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1542
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1543
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1544
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1545
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1547
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
1548
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1549
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1550
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1551
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 32 "./xsi/PrecisionModel.xsi"  | 
| 
1552
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getMaximumSignificantDigits();  | 
| 
1553
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1554 "Geos.xs.cc"  | 
| 
1554
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1555
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1556
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1557
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1558
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1560
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1561
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_getType) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1562
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1563
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1564
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1565
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1567
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
1568
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1569
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1570
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1571
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 34 "./xsi/PrecisionModel.xsi"  | 
| 
1572
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getType();  | 
| 
1573
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1574 "Geos.xs.cc"  | 
| 
1574
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1575
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1576
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1577
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1578
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1579
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1580
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1581
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_makePrecise) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1582
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1583
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1584
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
1585
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, val");  | 
| 
1586
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1587
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
1588
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1589
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1590
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1591
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	val = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1592
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1593
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 36 "./xsi/PrecisionModel.xsi"  | 
| 
1594
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->makePrecise(val);  | 
| 
1595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1596 "Geos.xs.cc"  | 
| 
1596
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1597
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1598
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1599
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1600
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1602
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1603
 | 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1604
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1605
 | 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1606
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
1607
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
1608
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1609
 | 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
1610
 | 
9
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1611
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1612
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1613
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 38 "./xsi/PrecisionModel.xsi"  | 
| 
1614
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->toString();  | 
| 
1615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1616 "Geos.xs.cc"  | 
| 
1616
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1617
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1618
 | 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1619
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1620
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1621
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1622
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1623
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__PrecisionModel_compareTo) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1624
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1625
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1626
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
1627
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
1628
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1629
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
1630
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1631
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1633
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel&	other = xs::in(aTHX_ ST(1));  | 
| 
1634
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1635
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 40 "./xsi/PrecisionModel.xsi"  | 
| 
1636
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->compareTo(&other);   | 
| 
1637
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1638 "Geos.xs.cc"  | 
| 
1638
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1639
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1640
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1641
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1642
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1643
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1644
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/PrecisionModel.xsi' */  | 
| 
1645
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/IntersectionMatrix.xsi' from 'Geos.xs' */  | 
| 
1648
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1649
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1650
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1651
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1652
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1653
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1654
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1655
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, arg1= NULL");  | 
| 
1656
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1657
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix *	RETVAL;  | 
| 
1658
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
1659
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1660
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
1661
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
1662
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1663
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
1664
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1665
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1666
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/IntersectionMatrix.xsi"  | 
| 
1667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
1668
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = new IntersectionMatrix();  | 
| 
1669
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
1670
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         std::string elements { SvPV_nolen(arg1) };  | 
| 
1671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = new IntersectionMatrix(elements);  | 
| 
1672
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1673
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1674 "Geos.xs.cc"  | 
| 
1674
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
1675
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
1676
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
1677
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
1678
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
1679
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1680
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1681
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1682
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1683
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1684
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1686
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_matches) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1687
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1688
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1689
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
1690
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, requiredDimensionSymbols");  | 
| 
1691
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1692
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1693
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1694
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1695
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	requiredDimensionSymbols;  | 
| 
1696
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
   { STRLEN __requiredDimensionSymbols_len;  | 
| 
1698
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     const char* __requiredDimensionSymbols_buf = SvPV(ST(1), __requiredDimensionSymbols_len);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1699
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     requiredDimensionSymbols.assign(__requiredDimensionSymbols_buf, __requiredDimensionSymbols_len); }  | 
| 
1700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1701
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/IntersectionMatrix.xsi"  | 
| 
1702
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->matches(requiredDimensionSymbols);  | 
| 
1703
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1704 "Geos.xs.cc"  | 
| 
1704
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1705
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1706
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1707
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1708
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1709
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1710
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1711
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_add) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1712
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1713
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1714
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
1715
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
1716
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
1717
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
1718
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1719
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1720
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1721
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix&	other = xs::in(aTHX_ ST(1));  | 
| 
1722
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/IntersectionMatrix.xsi"  | 
| 
1724
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  THIS->add(&other);   | 
| 
1725
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1726 "Geos.xs.cc"  | 
| 
1726
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
1727
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
1728
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1729
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1732
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1733
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_set) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1734
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1735
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1736
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 4)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1737
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1, arg2= NULL, arg3= NULL");  | 
| 
1738
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
1739
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
1740
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1741
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1742
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1743
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1 = ST(1)  | 
| 
1744
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1745
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
1746
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
1747
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1748
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
1749
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
1750
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1751
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
1752
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1753
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1754
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1755
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
1756
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
1757
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1758
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
1759
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1760
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1761
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 17 "./xsi/IntersectionMatrix.xsi"  | 
| 
1762
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if(!arg1) throw("undef not allowed");  | 
| 
1763
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg2) {  | 
| 
1764
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         std::string dimensionSymbols { SvPV_nolen(arg1) };  | 
| 
1765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->set(dimensionSymbols);  | 
| 
1766
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     } else {  | 
| 
1767
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg3) throw("undef not allowed");  | 
| 
1768
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         int row = SvIV(arg1);  | 
| 
1769
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         int col = SvIV(arg2);  | 
| 
1770
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         int val = SvIV(arg3);  | 
| 
1771
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->set(row, col, val);  | 
| 
1772
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1773
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1774 "Geos.xs.cc"  | 
| 
1774
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
1775
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
1776
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1777
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1778
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1779
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1780
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1781
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_setAtLeast) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1782
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1783
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1784
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 4)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1785
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1, arg2= NULL, arg3= NULL");  | 
| 
1786
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
1787
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
1788
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1789
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1790
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1791
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1 = ST(1)  | 
| 
1792
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1793
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
1794
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
1795
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1796
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
1797
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
1798
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1799
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
1800
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1801
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1802
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1803
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
1804
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
1805
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
1806
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
1807
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1808
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
1809
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 31 "./xsi/IntersectionMatrix.xsi"  | 
| 
1810
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if(!arg1) throw("undef not allowed");  | 
| 
1811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg2) {  | 
| 
1812
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         std::string dimensionSymbols { SvPV_nolen(arg1) };  | 
| 
1813
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setAtLeast(dimensionSymbols);  | 
| 
1814
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     } else {  | 
| 
1815
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg3) throw("undef not allowed");  | 
| 
1816
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         int row = SvIV(arg1);  | 
| 
1817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         int col = SvIV(arg2);  | 
| 
1818
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         int val = SvIV(arg3);  | 
| 
1819
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setAtLeast(row, col, val);  | 
| 
1820
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1821
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1822 "Geos.xs.cc"  | 
| 
1822
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
1823
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
1824
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1825
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1827
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1828
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1829
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_setAll) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1830
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1831
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1832
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
1833
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, dimensionValue");  | 
| 
1834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
1835
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
1836
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1837
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1838
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1839
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dimensionValue = (int)SvIV(ST(1))  | 
| 
1840
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 44 "./xsi/IntersectionMatrix.xsi"  | 
| 
1842
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setAll(dimensionValue);  | 
| 
1843
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1844 "Geos.xs.cc"  | 
| 
1844
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
1845
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
1846
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1847
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1848
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1849
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1851
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_setAtLeastIfValid) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1852
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1853
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1854
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 4)  | 
| 
1855
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, row, column, minimumDimensionValue");  | 
| 
1856
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
1857
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
1858
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1859
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1860
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1861
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	row = (int)SvIV(ST(1))  | 
| 
1862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1863
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	column = (int)SvIV(ST(2))  | 
| 
1864
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1865
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	minimumDimensionValue = (int)SvIV(ST(3))  | 
| 
1866
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1867
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 46 "./xsi/IntersectionMatrix.xsi"  | 
| 
1868
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setAtLeastIfValid(row, column, minimumDimensionValue);  | 
| 
1869
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1870 "Geos.xs.cc"  | 
| 
1870
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
1871
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
1872
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1873
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1876
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1877
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_get) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1878
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1879
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1880
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
1881
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, row, col");  | 
| 
1882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1883
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
1884
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1885
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1886
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1887
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	row = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1888
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1889
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	col = (int)SvIV(ST(2))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1890
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1891
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 48 "./xsi/IntersectionMatrix.xsi"  | 
| 
1892
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->get(row, col);  | 
| 
1893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1894 "Geos.xs.cc"  | 
| 
1894
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1896
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1897
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1898
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1899
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1900
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1901
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isDisjoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1902
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1903
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1904
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1905
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1908
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1909
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1910
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 50 "./xsi/IntersectionMatrix.xsi"  | 
| 
1911
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isDisjoint();  | 
| 
1912
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1913 "Geos.xs.cc"  | 
| 
1913
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1914
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1915
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1916
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1918
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1920
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isIntersects) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1921
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1922
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1923
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1924
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1925
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1926
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1927
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1928
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1929
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 52 "./xsi/IntersectionMatrix.xsi"  | 
| 
1930
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isIntersects();  | 
| 
1931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1932 "Geos.xs.cc"  | 
| 
1932
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1933
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1934
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1935
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1936
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1937
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1938
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1939
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isWithin) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1940
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1941
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1942
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1943
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1944
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1946
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1947
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1948
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 54 "./xsi/IntersectionMatrix.xsi"  | 
| 
1949
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isWithin();  | 
| 
1950
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1951 "Geos.xs.cc"  | 
| 
1951
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1953
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1954
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1955
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1956
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1957
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1958
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isContains) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1959
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1960
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1961
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1962
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1963
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1964
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1965
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1966
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1967
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 56 "./xsi/IntersectionMatrix.xsi"  | 
| 
1968
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isContains();  | 
| 
1969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1970 "Geos.xs.cc"  | 
| 
1970
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1971
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1972
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1973
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1974
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1976
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1977
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isCovers) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1978
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1979
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1980
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
1981
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
1982
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
1983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
1984
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
1986
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 58 "./xsi/IntersectionMatrix.xsi"  | 
| 
1987
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isCovers();  | 
| 
1988
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 1989 "Geos.xs.cc"  | 
| 
1989
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
1990
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
1991
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
1992
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
1993
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1995
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
1996
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isCoveredBy) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
1997
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
1998
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
1999
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2000
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2001
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2002
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
2003
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2004
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 60 "./xsi/IntersectionMatrix.xsi"  | 
| 
2006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isCoveredBy();  | 
| 
2007
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2008 "Geos.xs.cc"  | 
| 
2008
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
2009
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2010
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2011
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2012
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2014
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2015
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isTouches) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2016
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2017
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2018
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
2019
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, dimensionOfGeometryA, dimensionOfGeometryB");  | 
| 
2020
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2021
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
2022
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2023
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2024
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dimensionOfGeometryA = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2026
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dimensionOfGeometryB = (int)SvIV(ST(2))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2027
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2028
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 62 "./xsi/IntersectionMatrix.xsi"  | 
| 
2029
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isTouches(dimensionOfGeometryA, dimensionOfGeometryB);  | 
| 
2030
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2031 "Geos.xs.cc"  | 
| 
2031
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
2032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2033
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2034
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2035
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2036
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2037
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2038
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isCrosses) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2039
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2040
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2041
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
2042
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, dimensionOfGeometryA, dimensionOfGeometryB");  | 
| 
2043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2044
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
2045
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2046
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2047
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dimensionOfGeometryA = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2048
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2049
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dimensionOfGeometryB = (int)SvIV(ST(2))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2050
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 64 "./xsi/IntersectionMatrix.xsi"  | 
| 
2052
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isCrosses(dimensionOfGeometryA, dimensionOfGeometryB);  | 
| 
2053
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2054 "Geos.xs.cc"  | 
| 
2054
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
2055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2056
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2057
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2059
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2060
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2061
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isEquals) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2063
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2064
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
2065
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, dimensionOfGeometryA, dimensionOfGeometryB");  | 
| 
2066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
2068
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2069
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2070
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dimensionOfGeometryA = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2072
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dimensionOfGeometryB = (int)SvIV(ST(2))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2074
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 66 "./xsi/IntersectionMatrix.xsi"  | 
| 
2075
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isEquals(dimensionOfGeometryA, dimensionOfGeometryB);  | 
| 
2076
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2077 "Geos.xs.cc"  | 
| 
2077
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
2078
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2079
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2080
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2082
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2084
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_isOverlaps) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2086
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2087
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
2088
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, dimensionOfGeometryA, dimensionOfGeometryB");  | 
| 
2089
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2090
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
2091
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2092
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2093
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dimensionOfGeometryA = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2094
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2095
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dimensionOfGeometryB = (int)SvIV(ST(2))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2097
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 68 "./xsi/IntersectionMatrix.xsi"  | 
| 
2098
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isOverlaps(dimensionOfGeometryA, dimensionOfGeometryB);  | 
| 
2099
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2100 "Geos.xs.cc"  | 
| 
2100
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
2101
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2102
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2103
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2104
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2105
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2106
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2107
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_transpose) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2109
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2110
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2111
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2112
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
2113
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
2114
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2115
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2116
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2117
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 71 "./xsi/IntersectionMatrix.xsi"  | 
| 
2118
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  THIS->transpose(); XSRETURN(1);   | 
| 
2119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2120 "Geos.xs.cc"  | 
| 
2120
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
2121
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
2122
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2123
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2126
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2127
 | 
40
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2128
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2129
 | 
20
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2130
 | 
20
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
2131
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
2132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2133
 | 
40
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
2134
 | 
20
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2135
 | 
20
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2136
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 73 "./xsi/IntersectionMatrix.xsi"  | 
| 
2138
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->toString();  | 
| 
2139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2140 "Geos.xs.cc"  | 
| 
2140
 | 
20
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2141
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2142
 | 
20
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2143
 | 
20
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2146
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2147
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__IntersectionMatrix_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2149
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
2151
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
2153
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2154
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 75 "./xsi/IntersectionMatrix.xsi"  | 
| 
2155
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
2156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2157 "Geos.xs.cc"  | 
| 
2157
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2159
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2160
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2161
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2162
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2163
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/IntersectionMatrix.xsi' */  | 
| 
2164
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2166
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/Triangle.xsi' from 'Geos.xs' */  | 
| 
2167
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2168
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2170
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangle_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2171
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2172
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2173
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 4)  | 
| 
2174
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, p0, p1, p2");  | 
| 
2175
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2176
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Triangle *	RETVAL;  | 
| 
2177
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p0 = xs::in(aTHX_ ST(1));  | 
| 
2178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2179
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p1 = xs::in(aTHX_ ST(2));  | 
| 
2180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2181
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p2 = xs::in(aTHX_ ST(3));  | 
| 
2182
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/Triangle.xsi"  | 
| 
2184
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2185
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Triangle(p0, p1, p2);  | 
| 
2186
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2187 "Geos.xs.cc"  | 
| 
2187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2188
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2189
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2190
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2191
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2193
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2194
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2195
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2196
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2197
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2198
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2199
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangle_p0) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2200
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2201
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2202
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dXSI32;  | 
| 
2203
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2204
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newval= NULL");  | 
| 
2205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
2207
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Triangle*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2208
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2209
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	newval;  | 
| 
2210
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2211
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
2212
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = NULL;  | 
| 
2213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
2214
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = xs::in(aTHX_ ST(1));  | 
| 
2215
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2216
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2217
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7 "./xsi/Triangle.xsi"  | 
| 
2218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate* val;  | 
| 
2220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     switch (ix) {  | 
| 
2221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 0:  val = &THIS->p0; break;  | 
| 
2222
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 1:  val = &THIS->p1; break;  | 
| 
2223
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         default: val = &THIS->p2; break;  | 
| 
2224
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (newval) {  | 
| 
2226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         *val = *newval;  | 
| 
2227
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2228
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(*val);  | 
| 
2229
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2230 "Geos.xs.cc"  | 
| 
2230
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2231
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2232
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2233
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2234
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2235
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2236
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2237
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2238
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2239
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2242
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangle_inCentre) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2243
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2244
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2245
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2246
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2247
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
2249
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Triangle*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2250
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2251
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 20 "./xsi/Triangle.xsi"  | 
| 
2252
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2253
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
2254
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->inCentre(c);  | 
| 
2255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
2256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2257 "Geos.xs.cc"  | 
| 
2257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2258
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2259
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2260
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2261
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2262
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2263
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2264
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2265
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2266
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2267
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2268
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2269
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangle_circumcentre) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2270
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2271
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2272
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2273
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2275
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
2276
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Triangle*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2277
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2278
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 26 "./xsi/Triangle.xsi"  | 
| 
2279
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2280
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
2281
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->circumcentre(c);  | 
| 
2282
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
2283
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2284 "Geos.xs.cc"  | 
| 
2284
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2285
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2286
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2287
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2288
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2289
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2290
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2291
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2292
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2293
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2294
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2295
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2296
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangle_isInCircleNonRobust) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2297
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2298
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2299
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dXSI32;  | 
| 
2300
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 4)  | 
| 
2301
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "a, b, c, p");  | 
| 
2302
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2303
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
2304
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	a = xs::in(aTHX_ ST(0));  | 
| 
2305
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2306
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	b = xs::in(aTHX_ ST(1));  | 
| 
2307
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2308
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	c = xs::in(aTHX_ ST(2));  | 
| 
2309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2310
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(3));  | 
| 
2311
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2312
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 32 "./xsi/Triangle.xsi"  | 
| 
2313
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     switch(ix) {  | 
| 
2314
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 0: RETVAL = TrianglePredicate::isInCircleNonRobust(a, b, c, p); break;  | 
| 
2315
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 1: RETVAL = TrianglePredicate::isInCircleNormalized(a, b, c, p); break;  | 
| 
2316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         default: RETVAL = TrianglePredicate::isInCircleRobust(a, b, c, p); break;  | 
| 
2317
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2318
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2319 "Geos.xs.cc"  | 
| 
2319
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
2320
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2321
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2322
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2323
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2324
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2325
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2326
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangle_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2327
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2328
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2329
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
2330
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2331
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
2332
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2333
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 40 "./xsi/Triangle.xsi"  | 
| 
2334
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
2335
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2336 "Geos.xs.cc"  | 
| 
2336
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2338
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2339
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2340
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2341
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/Triangle.xsi' */  | 
| 
2343
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2344
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/LineSegment.xsi' from 'Geos.xs' */  | 
| 
2346
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2347
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2348
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2349
 | 
34
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2351
 | 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2352
 | 
17
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 5)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2353
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, arg1= NULL, arg2= NULL, arg3= NULL, arg4= NULL");  | 
| 
2354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment *	RETVAL;  | 
| 
2356
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
2357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
2358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
2359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg4;  | 
| 
2360
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2361
 | 
17
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
2362
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
2363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
2364
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
2365
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2366
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2367
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2368
 | 
17
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
2369
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
2370
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
2371
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
2372
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2373
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2374
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2375
 | 
17
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
2376
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
2377
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
2378
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
2379
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2381
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2382
 | 
17
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 5)  | 
| 
2383
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = NULL;  | 
| 
2384
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
2385
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = ST(4)  | 
| 
2386
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2387
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2388
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/LineSegment.xsi"  | 
| 
2389
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2390
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = new LineSegment();  | 
| 
2391
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if (!arg3) {  | 
| 
2392
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c1 = xs::in(arg1);  | 
| 
2393
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c2 = xs::in(arg2);  | 
| 
2394
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = new LineSegment(c1, c2);  | 
| 
2395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2396
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
2397
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg2) throw("undef not allowed");  | 
| 
2398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg3) throw("undef not allowed");  | 
| 
2399
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg4) throw("undef not allowed");  | 
| 
2400
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         double x0 = SvNV(arg1);  | 
| 
2401
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         double y0 = SvNV(arg2);  | 
| 
2402
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         double x1 = SvNV(arg3);  | 
| 
2403
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         double y1 = SvNV(arg4);  | 
| 
2404
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = new LineSegment(x0, y0, x1, y1);  | 
| 
2405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2406
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2407 "Geos.xs.cc"  | 
| 
2407
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2408
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2409
 | 
17
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2410
 | 
17
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2411
 | 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2412
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2413
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2414
 | 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2415
 | 
17
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2416
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2417
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2418
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2419
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_getLength) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2420
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2421
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2422
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2423
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2424
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2425
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
2426
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2427
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2428
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2429
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 23 "./xsi/LineSegment.xsi"  | 
| 
2430
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getLength();  | 
| 
2431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2432 "Geos.xs.cc"  | 
| 
2432
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2433
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2434
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2435
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2436
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2437
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2438
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2439
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_isHorizontal) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2440
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2441
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2442
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2443
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2444
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
2446
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2447
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2448
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 25 "./xsi/LineSegment.xsi"  | 
| 
2449
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isHorizontal();  | 
| 
2450
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2451 "Geos.xs.cc"  | 
| 
2451
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
2452
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2453
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2454
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2455
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2456
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2457
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2458
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_isVertical) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2459
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2460
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2461
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2462
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2463
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2464
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
2465
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2466
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 27 "./xsi/LineSegment.xsi"  | 
| 
2468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isVertical();  | 
| 
2469
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2470 "Geos.xs.cc"  | 
| 
2470
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
2471
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2472
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2473
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2474
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2475
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2476
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2477
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_setCoordinates) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2478
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2479
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2480
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2481
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1, arg2= NULL");  | 
| 
2482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
2483
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
2484
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2485
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2486
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2487
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1 = ST(1)  | 
| 
2488
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2489
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
2490
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2491
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
2492
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
2493
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
2494
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
2495
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2496
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2497
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 30 "./xsi/LineSegment.xsi"  | 
| 
2498
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg2) {  | 
| 
2499
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& ls = xs::in(arg1);  | 
| 
2500
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setCoordinates(ls);  | 
| 
2501
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2502
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
2503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c1 = xs::in(arg1);  | 
| 
2504
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c2 = xs::in(arg2);  | 
| 
2505
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setCoordinates(c1, c2);  | 
| 
2506
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2508 "Geos.xs.cc"  | 
| 
2508
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
2509
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
2510
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2511
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2512
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2513
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2514
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2515
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_orientationIndex) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2516
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2517
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2518
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2519
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg");  | 
| 
2520
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2521
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
2522
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2523
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2524
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2525
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Object    arg = ST(1);  | 
| 
2526
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg && SvOK(ST(1))) throw "arg is not a blessed reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2527
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2528
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 42 "./xsi/LineSegment.xsi"  | 
| 
2529
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (arg.stash().name() == "Geo::Geos::Coordinate") {  | 
| 
2530
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto c = xs::in(arg);  | 
| 
2531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->orientationIndex(*c);  | 
| 
2532
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2533
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
2534
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& ls = xs::in(arg);  | 
| 
2535
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->orientationIndex(ls);  | 
| 
2536
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2537
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2538 "Geos.xs.cc"  | 
| 
2538
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2539
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2540
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2541
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2542
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2543
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2544
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2545
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_reverse) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2547
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2548
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2549
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2550
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
2551
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
2552
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2553
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2554
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2555
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 52 "./xsi/LineSegment.xsi"  | 
| 
2556
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->reverse();  | 
| 
2557
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2558 "Geos.xs.cc"  | 
| 
2558
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
2559
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
2560
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2561
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2562
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2563
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2564
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2565
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_normalize) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2567
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2568
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2569
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2570
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
2571
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
2572
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2573
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2574
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2575
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 54 "./xsi/LineSegment.xsi"  | 
| 
2576
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->normalize();  | 
| 
2577
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2578 "Geos.xs.cc"  | 
| 
2578
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
2579
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
2580
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2581
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2582
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2583
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2584
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2585
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_angle) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2586
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2587
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2588
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2589
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2590
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2591
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
2592
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2593
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2594
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 56 "./xsi/LineSegment.xsi"  | 
| 
2596
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->angle();  | 
| 
2597
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2598 "Geos.xs.cc"  | 
| 
2598
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2599
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2600
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2601
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2602
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2603
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2604
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2605
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_midPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2606
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2607
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2608
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
2609
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
2610
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2611
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
2612
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2613
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2614
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 59 "./xsi/LineSegment.xsi"  | 
| 
2615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2616
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
2617
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->midPoint(c);  | 
| 
2618
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
2619
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2620 "Geos.xs.cc"  | 
| 
2620
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2621
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2622
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2623
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2624
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2625
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2626
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2627
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2628
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2629
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2630
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2631
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2632
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_distance) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2633
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2634
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2635
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2636
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg");  | 
| 
2637
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2638
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
2639
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2640
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2641
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2642
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Object    arg = ST(1);  | 
| 
2643
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg && SvOK(ST(1))) throw "arg is not a blessed reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2644
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2645
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 65 "./xsi/LineSegment.xsi"  | 
| 
2646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (arg.stash().name() == "Geo::Geos::Coordinate") {  | 
| 
2647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto c = xs::in(arg);  | 
| 
2648
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->distance(*c);  | 
| 
2649
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2650
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
2651
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& ls = xs::in(arg);  | 
| 
2652
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->distance(ls);  | 
| 
2653
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2654
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2655 "Geos.xs.cc"  | 
| 
2655
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2656
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2657
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2658
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2659
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2660
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2661
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2662
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_distancePerpendicular) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2663
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2664
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2665
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2666
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, p");  | 
| 
2667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2668
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
2669
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2670
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2672
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(1));  | 
| 
2673
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2674
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 75 "./xsi/LineSegment.xsi"  | 
| 
2675
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->distancePerpendicular(p);  | 
| 
2676
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2677 "Geos.xs.cc"  | 
| 
2677
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2678
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2679
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2680
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2681
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2682
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2683
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2684
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_pointAlong) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2686
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2687
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2688
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, segmentLengthFraction");  | 
| 
2689
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2690
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
2691
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2692
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2693
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	segmentLengthFraction = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2694
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2695
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 78 "./xsi/LineSegment.xsi"  | 
| 
2696
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
2698
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->pointAlong(segmentLengthFraction, c);  | 
| 
2699
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
2700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2701 "Geos.xs.cc"  | 
| 
2701
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2702
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2703
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2704
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2705
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2706
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2707
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2708
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2709
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2710
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2711
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2712
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2713
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_pointAlongOffset) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2714
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2715
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2716
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
2717
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, segmentLengthFraction, offsetDistance");  | 
| 
2718
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2719
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
2720
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2721
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2722
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	segmentLengthFraction = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2724
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	offsetDistance = (double)SvNV(ST(2))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2725
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2726
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 84 "./xsi/LineSegment.xsi"  | 
| 
2727
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2728
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
2729
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->pointAlongOffset(segmentLengthFraction, offsetDistance, c);  | 
| 
2730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
2731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2732 "Geos.xs.cc"  | 
| 
2732
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2733
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2734
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2735
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2736
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2737
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2738
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2739
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2740
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2741
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2742
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2743
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2744
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_projectionFactor) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2745
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2746
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2747
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2748
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, p");  | 
| 
2749
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2750
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
2751
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2752
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2753
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2754
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(1));  | 
| 
2755
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2756
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 89 "./xsi/LineSegment.xsi"  | 
| 
2757
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->projectionFactor(p);  | 
| 
2758
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2759 "Geos.xs.cc"  | 
| 
2759
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2760
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2761
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2762
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2763
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2764
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2766
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_segmentFraction) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2767
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2768
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2769
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2770
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, p");  | 
| 
2771
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2772
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
2773
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2774
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2775
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2776
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(1));  | 
| 
2777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2778
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 91 "./xsi/LineSegment.xsi"  | 
| 
2779
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->segmentFraction(p);  | 
| 
2780
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2781 "Geos.xs.cc"  | 
| 
2781
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2782
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2783
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2784
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2785
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2786
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2787
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2788
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_project) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2789
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2790
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2791
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2792
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg");  | 
| 
2793
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
2794
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
2795
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2796
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2797
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2798
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Object    arg = ST(1);  | 
| 
2799
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg && SvOK(ST(1))) throw "arg is not a blessed reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2800
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2801
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 94 "./xsi/LineSegment.xsi"  | 
| 
2802
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (arg.stash().name() == "Geo::Geos::Coordinate") {  | 
| 
2803
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c = xs::in(arg);  | 
| 
2804
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Coordinate c_out;  | 
| 
2805
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->project(c, c_out);  | 
| 
2806
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto wrapped = xs::out<>(new Coordinate(c_out));  | 
| 
2807
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         mXPUSHs(wrapped.detach());  | 
| 
2808
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2809
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
2810
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& ls = xs::in(arg);  | 
| 
2811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         LineSegment ls_out;  | 
| 
2812
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         bool overlap = THIS->project(ls, ls_out);  | 
| 
2813
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto wrapped = xs::out<>(new LineSegment(ls_out));  | 
| 
2814
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         mXPUSHs(wrapped.detach());  | 
| 
2815
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (GIMME_V == G_ARRAY) mXPUSHi(overlap);  | 
| 
2816
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2818 "Geos.xs.cc"  | 
| 
2818
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
2819
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
2820
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2821
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2822
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2823
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2824
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2825
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_closestPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2827
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2828
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2829
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, p");  | 
| 
2830
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2831
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
2832
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2833
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2834
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(1));  | 
| 
2835
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2836
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 112 "./xsi/LineSegment.xsi"  | 
| 
2837
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2838
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
2839
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->closestPoint(p, c);  | 
| 
2840
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
2841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2842 "Geos.xs.cc"  | 
| 
2842
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2843
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2844
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2845
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2846
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2848
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2849
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2850
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2851
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2852
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2853
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2854
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_compareTo) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2855
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2856
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2857
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2858
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
2859
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2860
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
2861
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2862
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2863
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2864
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment&	other = xs::in(aTHX_ ST(1));  | 
| 
2865
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2866
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 117 "./xsi/LineSegment.xsi"  | 
| 
2867
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->compareTo(other);  | 
| 
2868
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2869 "Geos.xs.cc"  | 
| 
2869
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2870
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2871
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2872
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2873
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2876
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_equalsTopo) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2877
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2878
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2879
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2880
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
2881
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
2883
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2884
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2885
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment&	other = xs::in(aTHX_ ST(1));  | 
| 
2886
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2887
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 119 "./xsi/LineSegment.xsi"  | 
| 
2888
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->equalsTopo(other);  | 
| 
2889
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2890 "Geos.xs.cc"  | 
| 
2890
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
2891
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2892
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2893
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2894
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2896
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2897
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_closestPoints) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2898
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2899
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2900
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2901
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, line");  | 
| 
2902
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2903
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
2904
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2906
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment&	line = xs::in(aTHX_ ST(1));  | 
| 
2907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2908
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 122 "./xsi/LineSegment.xsi"  | 
| 
2909
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = std::unique_ptr(THIS->closestPoints(line));  | 
| 
2910
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::convert_copy(seq.get());  | 
| 
2911
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2912 "Geos.xs.cc"  | 
| 
2912
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2913
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2914
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
2915
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
2916
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
2917
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2918
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2920
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2921
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2922
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2923
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2924
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2925
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2926
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_intersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2927
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2928
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2929
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2930
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, line");  | 
| 
2931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2932
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
2933
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2934
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2935
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment&	line = xs::in(aTHX_ ST(1));  | 
| 
2936
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2937
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 127 "./xsi/LineSegment.xsi"  | 
| 
2938
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2939
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
2940
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if(THIS->intersection(line, c)) RETVAL = new Coordinate(c);  | 
| 
2941
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
2942
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2943 "Geos.xs.cc"  | 
| 
2943
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2944
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2945
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2946
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2947
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2948
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2949
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2950
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2951
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2953
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2954
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2955
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_lineIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2956
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2957
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2958
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2959
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, line");  | 
| 
2960
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2961
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
2962
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2963
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2964
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment&	line = xs::in(aTHX_ ST(1));  | 
| 
2965
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2966
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 133 "./xsi/LineSegment.xsi"  | 
| 
2967
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2968
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
2969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if(THIS->lineIntersection(line, c)) RETVAL = new Coordinate(c);  | 
| 
2970
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
2971
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 2972 "Geos.xs.cc"  | 
| 
2972
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
2973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
2974
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
2975
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
2976
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
2977
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
2978
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
2979
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
2980
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
2981
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2982
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2984
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_toGeometry) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
2985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
2986
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
2987
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
2988
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, gf");  | 
| 
2989
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
2990
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineString *	RETVAL;  | 
| 
2991
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
2992
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2993
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory&	gf = xs::in(aTHX_ ST(1));  | 
| 
2994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
2995
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 139 "./xsi/LineSegment.xsi"  | 
| 
2996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
2997
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto ptr = THIS->toGeometry(gf);  | 
| 
2998
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = ptr.release();  | 
| 
2999
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3000 "Geos.xs.cc"  | 
| 
3000
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3001
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3002
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3003
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3004
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3007
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3008
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3009
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3010
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3011
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3012
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3014
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3015
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
3016
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
3017
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3018
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
3019
 | 
14
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3020
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3021
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3022
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 144 "./xsi/LineSegment.xsi"  | 
| 
3023
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::ostringstream out;  | 
| 
3024
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     out << *THIS;  | 
| 
3025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = out.str();  | 
| 
3026
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3027 "Geos.xs.cc"  | 
| 
3027
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3028
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3029
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3030
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3031
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3033
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3034
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_p0) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3035
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3036
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3037
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dXSI32;  | 
| 
3038
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3039
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newval= NULL");  | 
| 
3040
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3041
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
3042
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3044
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	newval;  | 
| 
3045
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3046
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
3047
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = NULL;  | 
| 
3048
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3049
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = ST(1)  | 
| 
3050
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3052
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 150 "./xsi/LineSegment.xsi"  | 
| 
3053
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3054
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate* val;  | 
| 
3055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     switch (ix) {  | 
| 
3056
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 0:  val = &THIS->p0; break;  | 
| 
3057
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         default: val = &THIS->p1; break;  | 
| 
3058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3059
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (newval) {  | 
| 
3060
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c = xs::in(newval);  | 
| 
3061
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         *val = c;  | 
| 
3062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(*val);  | 
| 
3064
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3065 "Geos.xs.cc"  | 
| 
3065
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3067
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3068
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3069
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3072
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3073
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3074
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3075
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3076
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3077
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineSegment_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3078
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3079
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3080
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
3081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3082
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
3083
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3084
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 162 "./xsi/LineSegment.xsi"  | 
| 
3085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
3086
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3087 "Geos.xs.cc"  | 
| 
3087
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3088
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3089
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3090
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3091
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3092
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3093
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/LineSegment.xsi' */  | 
| 
3094
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/GeometryFactory.xsi' from 'Geos.xs' */  | 
| 
3097
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3098
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3099
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3100
 | 
62
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_create) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3101
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3102
 | 
31
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3103
 | 
31
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 0 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3104
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "arg1= NULL, arg2= NULL");  | 
| 
3105
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3106
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory *	RETVAL;  | 
| 
3107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
3108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
3109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3110
 | 
31
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 1)  | 
| 
3111
 | 
27
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
3112
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3113
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(0)  | 
| 
3114
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3115
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3116
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3117
 | 
31
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
3118
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
3119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3120
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(1)  | 
| 
3121
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3122
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3123
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/GeometryFactory.xsi"  | 
| 
3124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     GeometryFactory::Ptr ptr;  | 
| 
3126
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) {  | 
| 
3127
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         ptr = GeometryFactory::create();  | 
| 
3128
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3129
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
3130
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& pm = xs::in(arg1);  | 
| 
3131
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (arg2) {  | 
| 
3132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             int srid = SvIV(arg2);  | 
| 
3133
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             ptr = GeometryFactory::create(&pm, srid);  | 
| 
3134
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
3135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else ptr = GeometryFactory::create(&pm);  | 
| 
3136
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3138
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (ptr.get()) {  | 
| 
3139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         /* steal pointer without destroying the factory */  | 
| 
3140
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = ptr.release();  | 
| 
3141
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3142
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else throw ("unsupported arguments");  | 
| 
3143
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3144 "Geos.xs.cc"  | 
| 
3144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3146
 | 
31
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3147
 | 
31
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3148
 | 
31
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3151
 | 
31
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3152
 | 
31
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3153
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3154
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3155
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3156
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_getPrecisionModel) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3157
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3158
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3159
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3160
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3161
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3162
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel *	RETVAL;  | 
| 
3163
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3164
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 26 "./xsi/GeometryFactory.xsi"  | 
| 
3166
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3167
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto pm = THIS->getPrecisionModel();  | 
| 
3168
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new PrecisionModel(*pm);  | 
| 
3169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3170 "Geos.xs.cc"  | 
| 
3170
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3171
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3172
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3173
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3174
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3175
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3176
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3177
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3178
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3179
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3181
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3182
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_getSRID) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3184
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3185
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3186
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3188
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
3189
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3190
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3191
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 30 "./xsi/GeometryFactory.xsi"  | 
| 
3193
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getSRID();  | 
| 
3194
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3195 "Geos.xs.cc"  | 
| 
3195
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3196
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3197
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3198
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3199
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3200
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3201
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3202
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_createGeometryCollection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3203
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3204
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3205
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3206
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3207
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3208
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryCollection *	RETVAL;  | 
| 
3209
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3210
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 33 "./xsi/GeometryFactory.xsi"  | 
| 
3212
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = THIS->createGeometryCollection();  | 
| 
3214
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3215 "Geos.xs.cc"  | 
| 
3215
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3216
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3217
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3218
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3219
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3222
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3223
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3224
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3227
 | 
70
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_createPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3228
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3229
 | 
35
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3230
 | 
35
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3231
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1= Sv{}, arg2= NULL");  | 
| 
3232
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Point *	RETVAL;  | 
| 
3234
 | 
35
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3235
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3236
 | 
70
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	arg1;  | 
| 
3237
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
3238
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3239
 | 
35
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
3240
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = Sv{};  | 
| 
3241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3242
 | 
34
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     arg1 = ST(1)  | 
| 
3243
 | 
34
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3245
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3246
 | 
35
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
3247
 | 
33
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
3248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3249
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
3250
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3251
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3252
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 37 "./xsi/GeometryFactory.xsi"  | 
| 
3253
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3254
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = THIS->createPoint();  | 
| 
3255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
3256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!arg1.is_array_ref()) {  | 
| 
3257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             Object obj {arg1};  | 
| 
3258
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             if (obj && obj.stash().name() == "Geo::Geos::Coordinate") {  | 
| 
3259
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 auto coord = xs::in(obj);  | 
| 
3260
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
                 RETVAL = THIS->createPoint(*coord);  | 
| 
3261
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             }  | 
| 
3262
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             else throw ("Object must be blessed into Geo::Geos::Coordinate");  | 
| 
3263
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
3264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
3265
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             if (!arg2) throw ("missing mandatory argument");  | 
| 
3266
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             size_t dims = SvIV(arg2);  | 
| 
3267
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto seq = Helper::convert_copy(*THIS, Array(arg1), dims);  | 
| 
3268
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = THIS->createPoint(seq);  | 
| 
3269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
3270
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3271
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3272 "Geos.xs.cc"  | 
| 
3272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3274
 | 
35
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3275
 | 
35
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3276
 | 
35
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3277
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3278
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3279
 | 
35
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3280
 | 
35
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3281
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3282
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3283
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3284
 | 
26
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_createMultiPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3285
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3286
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3287
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3288
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1= NULL, arg2= NULL");  | 
| 
3289
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3290
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MultiPoint *	RETVAL;  | 
| 
3291
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3292
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3293
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
3294
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
3295
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3296
 | 
13
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
3297
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
3298
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3299
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
3300
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3301
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3302
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3303
 | 
13
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
3304
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
3305
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3306
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
3307
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 57 "./xsi/GeometryFactory.xsi"  | 
| 
3310
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3311
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = THIS->createMultiPoint();  | 
| 
3312
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
3313
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!arg2) throw ("missing mandatory argument");  | 
| 
3314
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         size_t dims = SvIV(arg2);  | 
| 
3315
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto seq = std::unique_ptr(Helper::convert_copy(*THIS, Array(arg1), dims));  | 
| 
3316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->createMultiPoint(*seq);  | 
| 
3317
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3318
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3319 "Geos.xs.cc"  | 
| 
3319
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3320
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3321
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3322
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3323
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3324
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3325
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3326
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3327
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3328
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3329
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3330
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3331
 | 
44
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_createLineString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3332
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3333
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3334
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3335
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1= NULL, arg2= NULL");  | 
| 
3336
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineString *	RETVAL;  | 
| 
3338
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3339
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3340
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
3341
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
3342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3343
 | 
22
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
3344
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
3345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3346
 | 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
3347
 | 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3348
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3349
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3350
 | 
22
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
3351
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
3352
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3353
 | 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
3354
 | 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3356
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 67 "./xsi/GeometryFactory.xsi"  | 
| 
3357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = THIS->createLineString();  | 
| 
3359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
3360
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!arg2) throw ("missing argument");  | 
| 
3361
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         size_t dims = SvIV(arg2);  | 
| 
3362
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto seq = std::unique_ptr(Helper::convert_copy(*THIS, Array(arg1), dims));  | 
| 
3363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->createLineString(*seq);  | 
| 
3364
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3365
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3366 "Geos.xs.cc"  | 
| 
3366
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3367
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3368
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3369
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3370
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3371
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3372
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3373
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3374
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3375
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3376
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3377
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3378
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_createMultiLineString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3379
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3380
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3381
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3382
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1= NULL");  | 
| 
3383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3384
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MultiLineString *	RETVAL;  | 
| 
3385
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3386
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3387
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
3388
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3389
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
3390
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
3391
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3392
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
3393
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3394
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 77 "./xsi/GeometryFactory.xsi"  | 
| 
3396
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3397
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = THIS->createMultiLineString();  | 
| 
3398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
3399
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Array geometries(arg1);  | 
| 
3400
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!geometries) throw ("unsupported argument");  | 
| 
3401
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto lines = Helper::convert_geometries(geometries);  | 
| 
3402
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->createMultiLineString(lines);  | 
| 
3403
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3404
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3405 "Geos.xs.cc"  | 
| 
3405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3406
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3407
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3408
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3409
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3410
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3411
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3412
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3413
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3414
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3415
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3416
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3417
 | 
44
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_createLinearRing) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3418
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3419
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3420
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3421
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1= NULL, arg2= NULL");  | 
| 
3422
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3423
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LinearRing *	RETVAL;  | 
| 
3424
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3425
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3426
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
3427
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
3428
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3429
 | 
22
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
3430
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
3431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3432
 | 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
3433
 | 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3434
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3435
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3436
 | 
22
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
3437
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
3438
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3439
 | 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
3440
 | 
21
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3441
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3442
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 87 "./xsi/GeometryFactory.xsi"  | 
| 
3443
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3444
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = THIS->createLinearRing();  | 
| 
3445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
3446
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!arg2) throw ("missing argument");  | 
| 
3447
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         size_t dims = SvIV(arg2);  | 
| 
3448
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto seq = std::unique_ptr(Helper::convert_copy(*THIS, Array(arg1), dims));  | 
| 
3449
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->createLinearRing(*seq);  | 
| 
3450
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3451
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3452 "Geos.xs.cc"  | 
| 
3452
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3453
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3454
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3455
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3456
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3457
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3458
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3459
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3460
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3461
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3462
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3463
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3464
 | 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_createPolygon) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3465
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3466
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3467
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3468
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1= NULL, arg2= NULL");  | 
| 
3469
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3470
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Polygon *	RETVAL;  | 
| 
3471
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3472
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3473
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
3474
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
3475
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3476
 | 
16
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
3477
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
3478
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3479
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
3480
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3481
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3483
 | 
16
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
3484
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
3485
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3486
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
3487
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3488
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3489
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 97 "./xsi/GeometryFactory.xsi"  | 
| 
3490
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3491
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = THIS->createPolygon();  | 
| 
3492
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
3493
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto ring = xs::in(arg1);  | 
| 
3494
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto holes = Helper::convert_geometries(Array(arg2));  | 
| 
3495
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->createPolygon(*ring, holes);  | 
| 
3496
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3497
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3498 "Geos.xs.cc"  | 
| 
3498
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3499
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3500
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3501
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3502
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3504
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3505
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3506
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3508
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3509
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3510
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_createMultiPolygon) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3511
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3512
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3513
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3514
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1= NULL");  | 
| 
3515
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3516
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MultiPolygon *	RETVAL;  | 
| 
3517
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3518
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3519
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1;  | 
| 
3520
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3521
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
3522
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = NULL;  | 
| 
3523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
3524
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg1 = ST(1)  | 
| 
3525
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3526
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3527
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 106 "./xsi/GeometryFactory.xsi"  | 
| 
3528
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3529
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1) RETVAL = THIS->createMultiPolygon();  | 
| 
3530
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
3531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto polygons = Helper::convert_geometries(Array(arg1));  | 
| 
3532
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->createMultiPolygon(polygons);  | 
| 
3533
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3534
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3535 "Geos.xs.cc"  | 
| 
3535
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3536
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3537
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3538
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3539
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3540
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3541
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3542
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3543
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3544
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3545
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3547
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_toGeometry) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3548
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3549
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3550
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
3551
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, env");  | 
| 
3552
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3553
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
3554
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3555
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3556
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope*	env = xs::in(aTHX_ ST(1));  | 
| 
3557
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3558
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 114 "./xsi/GeometryFactory.xsi"  | 
| 
3559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(THIS->toGeometry(env));  | 
| 
3560
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3561 "Geos.xs.cc"  | 
| 
3561
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3562
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3563
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
3564
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
3565
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3566
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
3567
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3568
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3569
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
3570
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
3571
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
3572
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
3573
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
3574
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3575
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3576
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3577
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3578
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3579
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3580
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3582
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3583
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3584
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_createEmptyGeometry) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3585
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3586
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3587
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3588
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3589
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3590
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
3591
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryFactory*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3592
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3593
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 118 "./xsi/GeometryFactory.xsi"  | 
| 
3594
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(THIS->createEmptyGeometry());  | 
| 
3595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3596 "Geos.xs.cc"  | 
| 
3596
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3597
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3598
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
3599
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
3600
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3601
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
3602
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3603
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3604
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
3605
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
3606
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
3607
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
3608
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
3609
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3610
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3611
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3612
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3613
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3614
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3615
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3616
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3617
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3618
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3619
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryFactory_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3620
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3621
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3622
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
3623
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3624
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
3625
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3626
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 121 "./xsi/GeometryFactory.xsi"  | 
| 
3627
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
3628
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3629 "Geos.xs.cc"  | 
| 
3629
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3630
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3631
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3632
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3633
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3634
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3635
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/GeometryFactory.xsi' */  | 
| 
3636
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3637
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3638
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/Geometry.xsi' from 'Geos.xs' */  | 
| 
3639
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3640
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3641
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3642
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getSRID) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3643
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3644
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3645
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3646
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3648
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
3649
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3650
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3651
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3652
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/Geometry.xsi"  | 
| 
3653
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getSRID();  | 
| 
3654
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3655 "Geos.xs.cc"  | 
| 
3655
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3656
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3657
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3658
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3659
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3660
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3661
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3662
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_setSRID) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3663
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3664
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3665
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
3666
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newSRID");  | 
| 
3667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
3668
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
3669
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3670
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3672
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	newSRID = (int)SvIV(ST(1))  | 
| 
3673
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3674
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/Geometry.xsi"  | 
| 
3675
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setSRID(newSRID);  | 
| 
3676
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3677 "Geos.xs.cc"  | 
| 
3677
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
3678
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
3679
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3680
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3681
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3682
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3683
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3684
 | 
34
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_isEmpty) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3686
 | 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3687
 | 
17
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3688
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3689
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3690
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
3691
 | 
17
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3692
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3693
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8 "./xsi/Geometry.xsi"  | 
| 
3694
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isEmpty();  | 
| 
3695
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3696 "Geos.xs.cc"  | 
| 
3696
 | 
17
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
3697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3698
 | 
17
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3699
 | 
17
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3701
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3702
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3703
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_isSimple) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3704
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3705
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3706
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3707
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3708
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3709
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
3710
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3711
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3712
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10 "./xsi/Geometry.xsi"  | 
| 
3713
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isSimple();  | 
| 
3714
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3715 "Geos.xs.cc"  | 
| 
3715
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
3716
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3717
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3718
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3719
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3720
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3721
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3722
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_isRectangle) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3724
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3725
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3726
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3727
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3728
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
3729
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/Geometry.xsi"  | 
| 
3732
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isRectangle();  | 
| 
3733
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3734 "Geos.xs.cc"  | 
| 
3734
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
3735
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3736
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3737
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3738
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3739
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3740
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3741
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_isValid) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3742
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3743
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3744
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3745
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3746
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3747
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
3748
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3749
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3750
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/Geometry.xsi"  | 
| 
3751
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isValid();  | 
| 
3752
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3753 "Geos.xs.cc"  | 
| 
3753
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
3754
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3755
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3756
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3757
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3758
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3759
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3760
 | 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getNumPoints) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3761
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3762
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3763
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3764
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3766
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	size_t	RETVAL;  | 
| 
3767
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3768
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3769
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3770
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 16 "./xsi/Geometry.xsi"  | 
| 
3771
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getNumPoints();  | 
| 
3772
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3773 "Geos.xs.cc"  | 
| 
3773
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHu((UV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3774
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3775
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3776
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3778
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3779
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3780
 | 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getDimension) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3781
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3782
 | 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3783
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3784
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3785
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3786
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
3787
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3788
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3789
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3790
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 18 "./xsi/Geometry.xsi"  | 
| 
3791
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getDimension();  | 
| 
3792
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3793 "Geos.xs.cc"  | 
| 
3793
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3794
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3795
 | 
9
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3796
 | 
9
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3797
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3798
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3799
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3800
 | 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getCoordinateDimension) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3801
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3802
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3803
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3804
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3805
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3806
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
3807
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3808
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3809
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3810
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 20 "./xsi/Geometry.xsi"  | 
| 
3811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getCoordinateDimension();  | 
| 
3812
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3813 "Geos.xs.cc"  | 
| 
3813
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3814
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3815
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3816
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3818
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3819
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3820
 | 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getBoundaryDimension) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3821
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3822
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3823
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3824
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3825
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
3827
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3828
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3829
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3830
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 22 "./xsi/Geometry.xsi"  | 
| 
3831
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getBoundaryDimension();  | 
| 
3832
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3833 "Geos.xs.cc"  | 
| 
3833
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3835
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3836
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3837
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3838
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3839
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3840
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getNumGeometries) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3842
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3843
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3844
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3845
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3846
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
3847
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3848
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3849
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 24 "./xsi/Geometry.xsi"  | 
| 
3851
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getNumGeometries();  | 
| 
3852
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3853 "Geos.xs.cc"  | 
| 
3853
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3854
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3855
 | 
11
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3856
 | 
11
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3857
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3858
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3859
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3860
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_reverse) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3861
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3862
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3863
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3864
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3865
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3866
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
3867
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3868
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3869
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 26 "./xsi/Geometry.xsi"  | 
| 
3870
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->reverse());   | 
| 
3871
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3872 "Geos.xs.cc"  | 
| 
3872
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3873
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3874
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
3875
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
3876
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3877
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
3878
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3879
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3880
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
3881
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
3882
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
3883
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
3884
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
3885
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3886
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3887
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3888
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3889
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3890
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3891
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3892
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3894
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3895
 | 
26
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getGeometryN) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3896
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3897
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3898
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
3899
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, n");  | 
| 
3900
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3901
 | 
26
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
3902
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3903
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3904
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	size_t	n = (size_t)SvUV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 29 "./xsi/Geometry.xsi"  | 
| 
3907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto g = THIS->getGeometryN(n);  | 
| 
3908
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (g) RETVAL = Helper::uplift(g->clone());  | 
| 
3909
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
3910
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3911 "Geos.xs.cc"  | 
| 
3911
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3912
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3913
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
3914
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
3915
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3916
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
3917
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3918
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
3920
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
3921
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
3922
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
3923
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
3924
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3925
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3926
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3927
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3928
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3929
 | 
13
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3930
 | 
13
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3932
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3933
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3934
 | 
44
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getCoordinate) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3935
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3936
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3937
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3938
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3939
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3940
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
3941
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3942
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3943
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 35 "./xsi/Geometry.xsi"  | 
| 
3944
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
3945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     // avoid mem-leak due to https://trac.osgeo.org/geos/ticket/918  | 
| 
3946
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (THIS->isEmpty()) XSRETURN_UNDEF;  | 
| 
3947
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3948
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto c = THIS->getCoordinate();  | 
| 
3949
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (c) RETVAL = new Coordinate(*c);  | 
| 
3950
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
3951
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3952 "Geos.xs.cc"  | 
| 
3952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
3953
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
3954
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
3955
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
3956
 | 
22
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
3957
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
3958
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3959
 | 
22
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3960
 | 
22
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3961
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3962
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3963
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3964
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getGeometryType) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3965
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3966
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3967
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3968
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3970
 | 
28
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
3971
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3972
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3974
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 43 "./xsi/Geometry.xsi"  | 
| 
3975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getGeometryType();  | 
| 
3976
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3977 "Geos.xs.cc"  | 
| 
3977
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3978
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3979
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
3980
 | 
14
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
3981
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3982
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3984
 | 
64
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getGeometryTypeId) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
3985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
3986
 | 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
3987
 | 
32
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
3988
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
3989
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
3990
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
3991
 | 
32
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3992
 | 
32
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3993
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
3994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 45 "./xsi/Geometry.xsi"  | 
| 
3995
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getGeometryTypeId();  | 
| 
3996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 3997 "Geos.xs.cc"  | 
| 
3997
 | 
32
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
3998
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
3999
 | 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4000
 | 
32
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4001
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4002
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4003
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4004
 | 
442
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4006
 | 
221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4007
 | 
221
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
4008
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
4009
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4010
 | 
442
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
4011
 | 
221
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4012
 | 
221
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4014
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 47 "./xsi/Geometry.xsi"  | 
| 
4015
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->toString();  | 
| 
4016
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4017 "Geos.xs.cc"  | 
| 
4017
 | 
221
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4018
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4019
 | 
221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4020
 | 
221
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4021
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4022
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4023
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4024
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_toText) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4026
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4027
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4028
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4029
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4030
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
4031
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4032
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4033
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4034
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 49 "./xsi/Geometry.xsi"  | 
| 
4035
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->toText();  | 
| 
4036
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4037 "Geos.xs.cc"  | 
| 
4037
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4038
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4039
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4040
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4041
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4042
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4044
 | 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_equalsExact) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4045
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4046
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4047
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4048
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other, tolerance= 0");  | 
| 
4049
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4050
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4051
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4052
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4053
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4054
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	tolerance;  | 
| 
4056
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4057
 | 
15
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
4058
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    tolerance = 0;  | 
| 
4059
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
4060
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    tolerance = (double)SvNV(ST(2))  | 
| 
4061
 | 
8
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 51 "./xsi/Geometry.xsi"  | 
| 
4064
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->equalsExact(&other, tolerance);   | 
| 
4065
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4066 "Geos.xs.cc"  | 
| 
4066
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4068
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4069
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4072
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4073
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_equals) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4074
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4075
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4076
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4077
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4078
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4079
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4080
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4082
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4084
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 53 "./xsi/Geometry.xsi"  | 
| 
4085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->equals(&other);   | 
| 
4086
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4087 "Geos.xs.cc"  | 
| 
4087
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4088
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4089
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4090
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4091
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4092
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4093
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4094
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_compareTo) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4096
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4097
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4098
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4099
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
4101
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4102
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4103
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4104
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4105
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4106
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 55 "./xsi/Geometry.xsi"  | 
| 
4107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->compareTo(&other);   | 
| 
4108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4109 "Geos.xs.cc"  | 
| 
4109
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4110
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4111
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4112
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4113
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4114
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4115
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4116
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getBoundary) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4117
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4118
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4119
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4120
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4121
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4122
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4123
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 57 "./xsi/Geometry.xsi"  | 
| 
4126
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->getBoundary());   | 
| 
4127
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4128 "Geos.xs.cc"  | 
| 
4128
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4129
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4130
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4131
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4132
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4133
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4134
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4135
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4136
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4138
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4139
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4140
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4141
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4142
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4143
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4146
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4147
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4151
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getArea) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4153
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4154
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4155
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4157
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
4158
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4159
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4160
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4161
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 59 "./xsi/Geometry.xsi"  | 
| 
4162
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getArea();  | 
| 
4163
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4164 "Geos.xs.cc"  | 
| 
4164
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4166
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4167
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4168
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4170
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4171
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getLength) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4172
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4173
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4174
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4175
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4176
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
4178
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4179
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4181
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 61 "./xsi/Geometry.xsi"  | 
| 
4182
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getLength();  | 
| 
4183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4184 "Geos.xs.cc"  | 
| 
4184
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4185
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4186
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4187
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4188
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4189
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4190
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4191
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_distance) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4193
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4194
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4195
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, g");  | 
| 
4196
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4197
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
4198
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4199
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4200
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4201
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(1));  | 
| 
4202
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4203
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 63 "./xsi/Geometry.xsi"  | 
| 
4204
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->distance(&g);   | 
| 
4205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4206 "Geos.xs.cc"  | 
| 
4206
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4207
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4208
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4209
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4210
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4212
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4213
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_isWithinDistance) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4214
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4215
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4216
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
4217
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, g, distance");  | 
| 
4218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4220
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4222
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(1));  | 
| 
4223
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4224
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	distance = (double)SvNV(ST(2))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 65 "./xsi/Geometry.xsi"  | 
| 
4227
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->isWithinDistance(&g, distance);   | 
| 
4228
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4229 "Geos.xs.cc"  | 
| 
4229
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4230
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4231
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4232
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4234
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4235
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4236
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getCentroid) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4237
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4238
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4239
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4240
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4242
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Point *	RETVAL;  | 
| 
4243
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4245
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 67 "./xsi/Geometry.xsi"  | 
| 
4246
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
4247
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->getCentroid();   | 
| 
4248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4249 "Geos.xs.cc"  | 
| 
4249
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4250
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4251
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
4252
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4253
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4254
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4256
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4257
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4258
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4259
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4260
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4261
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getInteriorPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4262
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4263
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4264
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4265
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4266
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4267
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Point *	RETVAL;  | 
| 
4268
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4270
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 69 "./xsi/Geometry.xsi"  | 
| 
4271
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
4272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->getInteriorPoint();   | 
| 
4273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4274 "Geos.xs.cc"  | 
| 
4274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4275
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4276
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
4277
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4278
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4279
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4280
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4281
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4282
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4283
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4284
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4285
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4286
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_symDifference) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4287
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4288
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4289
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4290
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4291
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4292
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4293
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4294
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4295
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4296
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4297
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 71 "./xsi/Geometry.xsi"  | 
| 
4298
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->symDifference(&other));   | 
| 
4299
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4300 "Geos.xs.cc"  | 
| 
4300
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4301
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4302
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4303
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4304
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4305
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4306
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4307
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4310
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4311
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4312
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4313
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4314
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4315
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4317
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4318
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4319
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4320
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4321
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4322
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4323
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_difference) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4324
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4325
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4326
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4327
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4328
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4329
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4330
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4331
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4332
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4333
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4334
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 73 "./xsi/Geometry.xsi"  | 
| 
4335
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->difference(&other));   | 
| 
4336
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4337 "Geos.xs.cc"  | 
| 
4337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4338
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4339
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4340
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4341
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4342
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4343
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4344
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4346
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4347
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4348
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4349
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4351
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4352
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4353
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4355
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4356
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4360
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_Union) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4361
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4362
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4363
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4364
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4365
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4366
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4367
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4368
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4369
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4370
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4371
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 75 "./xsi/Geometry.xsi"  | 
| 
4372
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->Union(&other));   | 
| 
4373
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4374 "Geos.xs.cc"  | 
| 
4374
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4375
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4376
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4377
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4378
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4379
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4380
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4381
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4382
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4384
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4385
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4386
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4387
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4388
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4389
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4390
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4391
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4392
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4393
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4394
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4396
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4397
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_intersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4399
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4400
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4401
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4402
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4403
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4404
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4406
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4407
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4408
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 77 "./xsi/Geometry.xsi"  | 
| 
4409
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->intersection(&other));   | 
| 
4410
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4411 "Geos.xs.cc"  | 
| 
4411
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4412
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4413
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4414
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4415
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4416
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4417
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4418
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4419
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4420
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4421
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4422
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4423
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4424
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4425
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4426
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4427
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4428
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4429
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4430
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4432
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4433
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4434
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_convexHull) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4435
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4436
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4437
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4438
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4439
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4440
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4441
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4442
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4443
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 79 "./xsi/Geometry.xsi"  | 
| 
4444
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->convexHull());   | 
| 
4445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4446 "Geos.xs.cc"  | 
| 
4446
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4447
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4448
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4449
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4450
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4451
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4452
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4453
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4454
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4455
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4456
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4457
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4458
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4459
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4460
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4461
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4462
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4463
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4464
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4465
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4466
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4469
 | 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_buffer) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4470
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4471
 | 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4472
 | 
18
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 4)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4473
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, distance, arg2= NULL, arg3= NULL");  | 
| 
4474
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4475
 | 
36
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4476
 | 
18
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4477
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4478
 | 
18
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	distance = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4479
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4480
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
4481
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
4482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4483
 | 
18
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
4484
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
4485
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
4486
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
4487
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4488
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4489
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4490
 | 
18
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
4491
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
4492
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
4493
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
4494
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4495
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4496
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 82 "./xsi/Geometry.xsi"  | 
| 
4497
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Geometry* r;  | 
| 
4498
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg2) r = THIS->buffer(distance);  | 
| 
4499
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
4500
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         int quadrantSegments = SvIV(arg2);  | 
| 
4501
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (arg3) {  | 
| 
4502
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             int endCapStyle = SvIV(arg3);  | 
| 
4503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             r = THIS->buffer(distance, quadrantSegments, endCapStyle);  | 
| 
4504
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         } else {  | 
| 
4505
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             r = THIS->buffer(distance, quadrantSegments);  | 
| 
4506
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
4507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4508
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(r);  | 
| 
4509
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4510 "Geos.xs.cc"  | 
| 
4510
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4511
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4512
 | 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4513
 | 
18
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4514
 | 
18
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4515
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4516
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4517
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4518
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4519
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4520
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4521
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4522
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4524
 | 
18
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4525
 | 
18
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4526
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4527
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4528
 | 
18
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4529
 | 
18
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4530
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4532
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4533
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_coveredBy) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4534
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4535
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4536
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4537
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4538
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4539
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4540
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4541
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4542
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4543
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4544
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 96 "./xsi/Geometry.xsi"  | 
| 
4545
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->coveredBy(&other);   | 
| 
4546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4547 "Geos.xs.cc"  | 
| 
4547
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4548
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4549
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4550
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4551
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4552
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4553
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4554
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_covers) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4555
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4556
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4557
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4558
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4560
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4561
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4562
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4563
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4564
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4565
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 98 "./xsi/Geometry.xsi"  | 
| 
4566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->covers(&other);   | 
| 
4567
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4568 "Geos.xs.cc"  | 
| 
4568
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4569
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4570
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4571
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4572
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4573
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4574
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4575
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_overlaps) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4576
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4577
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4578
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4579
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4580
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4582
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4583
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4584
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4585
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4586
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 100 "./xsi/Geometry.xsi"  | 
| 
4587
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->overlaps(&other);   | 
| 
4588
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4589 "Geos.xs.cc"  | 
| 
4589
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4590
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4591
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4592
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4593
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4594
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4596
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_contains) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4597
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4598
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4599
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4600
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4602
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4603
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4604
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4605
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4606
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4607
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 102 "./xsi/Geometry.xsi"  | 
| 
4608
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->contains(&other);   | 
| 
4609
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4610 "Geos.xs.cc"  | 
| 
4610
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4611
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4612
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4613
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4614
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4616
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4617
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_within) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4618
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4619
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4620
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4621
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4622
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4623
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4624
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4625
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4626
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4627
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4628
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 104 "./xsi/Geometry.xsi"  | 
| 
4629
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->within(&other);   | 
| 
4630
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4631 "Geos.xs.cc"  | 
| 
4631
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4633
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4634
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4635
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4636
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4637
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4638
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_crosses) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4639
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4640
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4641
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4642
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4643
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4644
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4645
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4647
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4648
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4649
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 106 "./xsi/Geometry.xsi"  | 
| 
4650
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->crosses(&other);   | 
| 
4651
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4652 "Geos.xs.cc"  | 
| 
4652
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4653
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4654
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4655
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4656
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4657
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4658
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4659
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_intersects) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4660
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4661
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4662
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4663
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4664
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4665
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4666
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4668
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4669
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4670
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 108 "./xsi/Geometry.xsi"  | 
| 
4671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->intersects(&other);   | 
| 
4672
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4673 "Geos.xs.cc"  | 
| 
4673
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4674
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4675
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4676
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4677
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4678
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4679
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4680
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_touches) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4681
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4682
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4683
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4684
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4686
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4687
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4688
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4689
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4690
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4691
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 110 "./xsi/Geometry.xsi"  | 
| 
4692
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->touches(&other);   | 
| 
4693
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4694 "Geos.xs.cc"  | 
| 
4694
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4695
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4696
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4697
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4698
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4699
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4701
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_disjoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4702
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4703
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4704
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
4705
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
4706
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4707
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
4708
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4709
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4710
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4711
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4712
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 112 "./xsi/Geometry.xsi"  | 
| 
4713
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->disjoint(&other);   | 
| 
4714
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4715 "Geos.xs.cc"  | 
| 
4715
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
4716
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4717
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4718
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4719
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4720
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4721
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4722
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getEnvelope) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4724
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4725
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4726
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4727
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4728
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4729
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 114 "./xsi/Geometry.xsi"  | 
| 
4732
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->getEnvelope());   | 
| 
4733
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4734 "Geos.xs.cc"  | 
| 
4734
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4735
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4736
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4737
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4738
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4739
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4740
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4741
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4742
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4743
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4744
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4745
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4746
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4747
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4748
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4749
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4750
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4751
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4752
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4753
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4754
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4755
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4756
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4757
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_clone) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4758
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4759
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4760
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4761
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4762
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4763
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4764
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4766
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 116 "./xsi/Geometry.xsi"  | 
| 
4767
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->clone());   | 
| 
4768
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4769 "Geos.xs.cc"  | 
| 
4769
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4770
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4771
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4772
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4773
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4774
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4775
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4776
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4778
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4779
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4780
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4781
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4782
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4783
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4784
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4785
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4786
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4787
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4788
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4789
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4790
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4791
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4792
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getPrecisionModel) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4793
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4794
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4795
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4796
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4797
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4798
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PrecisionModel *	RETVAL;  | 
| 
4799
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4800
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4801
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 119 "./xsi/Geometry.xsi"  | 
| 
4802
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
4803
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto pm = THIS->getPrecisionModel();  | 
| 
4804
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new PrecisionModel(*pm);  | 
| 
4805
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4806 "Geos.xs.cc"  | 
| 
4806
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4807
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4808
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
4809
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4810
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4812
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4813
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4814
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4815
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4816
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4818
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_getCoordinates) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4819
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4820
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4821
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4822
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4823
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4824
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
4825
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4827
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 124 "./xsi/Geometry.xsi"  | 
| 
4828
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = std::unique_ptr(THIS->getCoordinates());  | 
| 
4829
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::convert_copy(seq.get());  | 
| 
4830
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4831 "Geos.xs.cc"  | 
| 
4831
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4832
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4833
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4834
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4835
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4836
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4837
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4838
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4839
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4840
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4841
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4842
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4843
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4844
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4845
 | 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_relate) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4846
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4847
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4848
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4849
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other, arg= NULL");  | 
| 
4850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4851
 | 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4852
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4853
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4854
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	other = xs::in(aTHX_ ST(1));  | 
| 
4855
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4856
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg;  | 
| 
4857
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4858
 | 
12
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
4859
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg = NULL;  | 
| 
4860
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
4861
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg = ST(2)  | 
| 
4862
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4863
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4864
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 129 "./xsi/Geometry.xsi"  | 
| 
4865
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg) RETVAL = xs::out(THIS->relate(&other));  | 
| 
4866
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
4867
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         std::string intersectionPattern {  SvPV_nolen(arg) };  | 
| 
4868
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = Simple(THIS->relate(&other, intersectionPattern));  | 
| 
4869
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4870
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4871 "Geos.xs.cc"  | 
| 
4871
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4872
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4873
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4874
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4875
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4876
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4877
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4878
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4879
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4880
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4881
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4882
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4883
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4884
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4885
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4886
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4887
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4888
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4889
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4890
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4891
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4892
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4894
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_normalize) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4896
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4897
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4898
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4899
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
4900
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
4901
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4902
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4903
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4904
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 137 "./xsi/Geometry.xsi"  | 
| 
4905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->normalize();  | 
| 
4906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4907 "Geos.xs.cc"  | 
| 
4907
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
4908
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
4909
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4910
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4911
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4912
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4913
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4914
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4915
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4916
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
4918
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
4920
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4921
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 169 "./xsi/Geometry.xsi"  | 
| 
4922
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
4923
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4924 "Geos.xs.cc"  | 
| 
4924
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4925
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4926
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4927
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4928
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4929
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4930
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4931
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Geometry_HOOK_CLONE) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4932
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4933
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4934
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4935
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
4936
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4937
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
4938
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4939
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
4940
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 172 "./xsi/Geometry.xsi"  | 
| 
4941
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(THIS->clone());  | 
| 
4942
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4943 "Geos.xs.cc"  | 
| 
4943
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
4944
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
4945
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
4946
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
4947
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4948
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
4949
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4950
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4951
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
4952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
4953
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
4954
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
4955
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
4956
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4957
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
4958
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
4959
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
4960
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4961
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4962
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4963
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4964
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4965
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/Geometry.xsi' */  | 
| 
4966
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4967
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4968
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/GeometryCollection.xsi' from 'Geos.xs' */  | 
| 
4969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4970
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4971
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4972
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__GeometryCollection_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4974
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
4976
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
4977
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
4978
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4979
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/GeometryCollection.xsi"  | 
| 
4980
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
4981
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4982 "Geos.xs.cc"  | 
| 
4982
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
4984
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
4985
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
4986
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4987
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4988
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/GeometryCollection.xsi' */  | 
| 
4989
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4990
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4991
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/Point.xsi' from 'Geos.xs' */  | 
| 
4992
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4993
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
4995
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Point_getX) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
4996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
4997
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
4998
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
4999
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5000
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5001
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
5002
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5003
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Point*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5004
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/Point.xsi"  | 
| 
5006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getX();  | 
| 
5007
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5008 "Geos.xs.cc"  | 
| 
5008
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5009
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5010
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5011
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5012
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5014
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5015
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Point_getY) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5016
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5017
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5018
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5019
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5020
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5021
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
5022
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5023
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Point*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5024
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/Point.xsi"  | 
| 
5026
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getY();  | 
| 
5027
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5028 "Geos.xs.cc"  | 
| 
5028
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5029
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5030
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5031
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5033
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5034
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5035
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Point_reverse) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5036
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5037
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5038
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5039
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5040
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5041
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
5042
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Point*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5044
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8 "./xsi/Point.xsi"  | 
| 
5045
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->reverse());   | 
| 
5046
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5047 "Geos.xs.cc"  | 
| 
5047
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5048
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5049
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
5050
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
5051
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5052
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
5053
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5054
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
5056
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
5057
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
5058
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
5059
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
5060
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5061
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5062
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5064
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5065
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5066
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5068
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5069
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/Point.xsi' */  | 
| 
5070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5072
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/MultiPoint.xsi' from 'Geos.xs' */  | 
| 
5073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5074
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5075
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5076
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__MultiPoint_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5077
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5078
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5079
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
5080
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
5082
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/MultiPoint.xsi"  | 
| 
5084
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
5085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5086 "Geos.xs.cc"  | 
| 
5086
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5087
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5088
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5089
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5090
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5091
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5092
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/MultiPoint.xsi' */  | 
| 
5093
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5094
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/LineString.xsi' from 'Geos.xs' */  | 
| 
5096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5097
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5098
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5099
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineString_getPointN) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5101
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5102
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5103
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, n");  | 
| 
5104
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5105
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Point *	RETVAL;  | 
| 
5106
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5108
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::size_t	n = xs::in(aTHX_ ST(1));  | 
| 
5109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5110
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/LineString.xsi"  | 
| 
5111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
5112
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->getPointN(n);   | 
| 
5113
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5114 "Geos.xs.cc"  | 
| 
5114
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5115
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5116
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
5117
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5118
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5120
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5121
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5122
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5123
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5126
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineString_getStartPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5127
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5128
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5129
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5130
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5131
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Point *	RETVAL;  | 
| 
5133
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5134
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/LineString.xsi"  | 
| 
5136
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
5137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->getStartPoint();   | 
| 
5138
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5139 "Geos.xs.cc"  | 
| 
5139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5140
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5141
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
5142
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5143
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5146
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5147
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5151
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineString_getEndPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5153
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5154
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5155
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5157
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Point *	RETVAL;  | 
| 
5158
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5159
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5160
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8 "./xsi/LineString.xsi"  | 
| 
5161
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
5162
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->getEndPoint();   | 
| 
5163
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5164 "Geos.xs.cc"  | 
| 
5164
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5166
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
5167
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5168
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5170
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5171
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5172
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5173
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5174
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5175
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5176
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineString_isClosed) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5178
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5179
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5180
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5181
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5182
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
5183
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5184
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5185
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10 "./xsi/LineString.xsi"  | 
| 
5186
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isClosed();  | 
| 
5187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5188 "Geos.xs.cc"  | 
| 
5188
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
5189
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5190
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5191
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5193
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5194
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5195
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LineString_isRing) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5196
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5197
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5198
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5199
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5200
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5201
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
5202
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5203
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5204
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/LineString.xsi"  | 
| 
5205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isRing();  | 
| 
5206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5207 "Geos.xs.cc"  | 
| 
5207
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
5208
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5209
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5210
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5212
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/LineString.xsi' */  | 
| 
5214
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5215
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5216
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/MultiLineString.xsi' from 'Geos.xs' */  | 
| 
5217
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5220
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__MultiLineString_isClosed) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5222
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5223
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5224
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
5227
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MultiLineString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5228
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5229
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/MultiLineString.xsi"  | 
| 
5230
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isClosed();  | 
| 
5231
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5232 "Geos.xs.cc"  | 
| 
5232
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
5233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5234
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5235
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5236
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5237
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5238
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/MultiLineString.xsi' */  | 
| 
5239
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/LinearRing.xsi' from 'Geos.xs' */  | 
| 
5242
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5243
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5245
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__LinearRing_reverse) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5246
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5247
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5248
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5249
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5250
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5251
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
5252
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LinearRing*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5253
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5254
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/LinearRing.xsi"  | 
| 
5255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Helper::uplift(THIS->reverse());   | 
| 
5256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5257 "Geos.xs.cc"  | 
| 
5257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5258
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5259
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
5260
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
5261
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5262
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
5263
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5264
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5265
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
5266
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
5267
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
5268
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
5269
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
5270
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5271
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5272
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5275
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5276
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5277
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5278
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5279
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/LinearRing.xsi' */  | 
| 
5280
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5281
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5282
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/Polygon.xsi' from 'Geos.xs' */  | 
| 
5283
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5284
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5285
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5286
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Polygon_getExteriorRing) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5287
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5288
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5289
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5290
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5291
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5292
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LinearRing *	RETVAL;  | 
| 
5293
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Polygon*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5294
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5295
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/Polygon.xsi"  | 
| 
5296
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
5297
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = dyn_cast(THIS->getExteriorRing()->clone());  | 
| 
5298
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5299 "Geos.xs.cc"  | 
| 
5299
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5300
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5301
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
5302
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5303
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5304
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5305
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5306
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5307
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5310
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5311
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Polygon_getInteriorRingN) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5312
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5313
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5314
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5315
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, index");  | 
| 
5316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5317
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LinearRing *	RETVAL;  | 
| 
5318
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Polygon*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5319
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5320
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::size_t	index = xs::in(aTHX_ ST(1));  | 
| 
5321
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5322
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10 "./xsi/Polygon.xsi"  | 
| 
5323
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
5324
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto r = THIS->getInteriorRingN(index);  | 
| 
5325
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (r) RETVAL = dyn_cast(r->clone());  | 
| 
5326
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
5327
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5328 "Geos.xs.cc"  | 
| 
5328
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5329
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5330
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
5331
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5332
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5333
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5334
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5335
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5336
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5338
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5339
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5340
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Polygon_getNumInteriorRing) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5341
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5342
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5343
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5344
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5346
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::size_t	RETVAL;  | 
| 
5347
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Polygon*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5348
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5349
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 15 "./xsi/Polygon.xsi"  | 
| 
5350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
5351
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->getNumInteriorRing();   | 
| 
5352
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5353 "Geos.xs.cc"  | 
| 
5353
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5355
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
5356
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5357
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5360
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5361
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5362
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5364
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5365
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Polygon_tesselate) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5366
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5367
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5368
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5369
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5370
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5371
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryCollection *	RETVAL;  | 
| 
5372
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Polygon*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5373
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5374
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 18 "./xsi/Polygon.xsi"  | 
| 
5375
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
5376
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = panda::Geos::tesselate(*THIS);  | 
| 
5377
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5378 "Geos.xs.cc"  | 
| 
5378
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5379
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5380
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
5381
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5382
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5384
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5385
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5386
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5387
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5388
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5389
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5390
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Polygon_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5391
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5392
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5393
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
5394
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
5396
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5397
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 21 "./xsi/Polygon.xsi"  | 
| 
5398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
5399
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5400 "Geos.xs.cc"  | 
| 
5400
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5401
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5402
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5403
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5404
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5406
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/Polygon.xsi' */  | 
| 
5407
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5408
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5409
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/MultiPolygon.xsi' from 'Geos.xs' */  | 
| 
5410
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5411
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5412
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5413
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__MultiPolygon_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5414
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5415
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5416
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
5417
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5418
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
5419
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5420
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/MultiPolygon.xsi"  | 
| 
5421
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
5422
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5423 "Geos.xs.cc"  | 
| 
5423
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5424
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5425
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5426
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5427
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5428
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5429
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/MultiPolygon.xsi' */  | 
| 
5430
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5432
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/WKBConstants.xsi' from 'Geos.xs' */  | 
| 
5433
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5434
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5435
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5436
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBConstants_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5437
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5438
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5439
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
5440
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5441
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
5442
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5443
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/WKBConstants.xsi"  | 
| 
5444
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
5445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5446 "Geos.xs.cc"  | 
| 
5446
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5447
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5448
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5449
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5450
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5451
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5452
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/WKBConstants.xsi' */  | 
| 
5453
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5454
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5455
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/WKBWriter.xsi' from 'Geos.xs' */  | 
| 
5456
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5457
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5458
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5459
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5460
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5461
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5462
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 4)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5463
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, dims= 2, bo= getMachineByteOrder(), includeSRID= false");  | 
| 
5464
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5465
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKBWriter *	RETVAL;  | 
| 
5466
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	dims;  | 
| 
5467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	bo;  | 
| 
5468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	includeSRID;  | 
| 
5469
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5470
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
5471
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    dims = 2;  | 
| 
5472
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
5473
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    dims = (int)SvIV(ST(1))  | 
| 
5474
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5475
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5476
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5477
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
5478
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    bo = getMachineByteOrder();  | 
| 
5479
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
5480
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    bo = (int)SvIV(ST(2))  | 
| 
5481
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5483
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5484
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
5485
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    includeSRID = false;  | 
| 
5486
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
5487
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    includeSRID = (bool)SvTRUE(ST(3))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5488
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5489
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5490
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/WKBWriter.xsi"  | 
| 
5491
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
5492
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new WKBWriter(dims, bo, includeSRID);  | 
| 
5493
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5494 "Geos.xs.cc"  | 
| 
5494
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5495
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5496
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
5497
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5498
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5499
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5500
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5501
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5502
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5504
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5505
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5506
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_getOutputDimension) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5508
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5509
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5510
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5511
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5512
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
5513
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5514
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKBWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5515
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5516
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8 "./xsi/WKBWriter.xsi"  | 
| 
5517
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getOutputDimension();  | 
| 
5518
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5519 "Geos.xs.cc"  | 
| 
5519
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5520
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5521
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5522
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5524
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5525
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5526
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_setOutputDimension) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5527
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5528
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5529
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5530
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newOutputDimension");  | 
| 
5531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
5532
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
5533
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5534
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKBWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5535
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5536
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	newOutputDimension = (int)SvIV(ST(1))  | 
| 
5537
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5538
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10 "./xsi/WKBWriter.xsi"  | 
| 
5539
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setOutputDimension(newOutputDimension);  | 
| 
5540
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5541 "Geos.xs.cc"  | 
| 
5541
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
5542
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
5543
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5544
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5545
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5547
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5548
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_getByteOrder) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5549
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5550
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5551
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5552
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5553
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5554
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
5555
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5556
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKBWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5557
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5558
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/WKBWriter.xsi"  | 
| 
5559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getByteOrder();  | 
| 
5560
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5561 "Geos.xs.cc"  | 
| 
5561
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5562
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5563
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5564
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5565
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5567
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5568
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_setByteOrder) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5569
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5570
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5571
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5572
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newByteOrder");  | 
| 
5573
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
5574
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
5575
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5576
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKBWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5577
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5578
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	newByteOrder = (int)SvIV(ST(1))  | 
| 
5579
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5580
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/WKBWriter.xsi"  | 
| 
5581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setByteOrder(newByteOrder);  | 
| 
5582
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5583 "Geos.xs.cc"  | 
| 
5583
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
5584
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
5585
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5586
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5587
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5588
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5589
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5590
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_getIncludeSRID) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5591
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5592
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5593
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
5594
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
5595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5596
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
5597
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5598
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKBWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5599
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5600
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 16 "./xsi/WKBWriter.xsi"  | 
| 
5601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getIncludeSRID();  | 
| 
5602
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5603 "Geos.xs.cc"  | 
| 
5603
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5604
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5605
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5606
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5607
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5608
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5609
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5610
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_setIncludeSRID) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5611
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5612
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5613
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5614
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newIncludeSRID");  | 
| 
5615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
5616
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
5617
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5618
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKBWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5619
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5620
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	newIncludeSRID = (int)SvIV(ST(1))  | 
| 
5621
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5622
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 18 "./xsi/WKBWriter.xsi"  | 
| 
5623
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setIncludeSRID(newIncludeSRID);  | 
| 
5624
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5625 "Geos.xs.cc"  | 
| 
5625
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
5626
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
5627
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5628
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5629
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5630
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5631
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5632
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_write) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5633
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5634
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5635
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5636
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, g");  | 
| 
5637
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5638
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
5639
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5640
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKBWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5641
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5642
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(1));  | 
| 
5643
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5644
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 21 "./xsi/WKBWriter.xsi"  | 
| 
5645
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::ostringstream out;  | 
| 
5646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->write(g, out);  | 
| 
5647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = out.str();  | 
| 
5648
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5649 "Geos.xs.cc"  | 
| 
5649
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5650
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5651
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5652
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5653
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5654
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5655
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5656
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_writeHEX) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5657
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5658
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5659
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5660
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, g");  | 
| 
5661
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5662
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
5663
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5664
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKBWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5665
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5666
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(1));  | 
| 
5667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5668
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 27 "./xsi/WKBWriter.xsi"  | 
| 
5669
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::ostringstream out;  | 
| 
5670
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->writeHEX(g, out);  | 
| 
5671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = out.str();  | 
| 
5672
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5673 "Geos.xs.cc"  | 
| 
5673
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5674
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5675
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5676
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5677
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5678
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5679
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5680
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBWriter_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5681
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5682
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5683
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
5684
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
5686
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5687
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 32 "./xsi/WKBWriter.xsi"  | 
| 
5688
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
5689
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5690 "Geos.xs.cc"  | 
| 
5690
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5691
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5692
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5693
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5694
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5695
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5696
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/WKBWriter.xsi' */  | 
| 
5697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5698
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5699
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/WKBReader.xsi' from 'Geos.xs' */  | 
| 
5700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5701
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5702
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5703
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBReader_read) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5704
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5705
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5706
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5707
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "in, geometry_factory= NULL");  | 
| 
5708
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5709
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
5710
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	in;  | 
| 
5711
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	geometry_factory;  | 
| 
5712
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5713
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
   { STRLEN __in_len;  | 
| 
5714
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     const char* __in_buf = SvPV(ST(0), __in_len);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5715
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     in.assign(__in_buf, __in_len); }  | 
| 
5716
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5717
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5718
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
5719
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    geometry_factory = NULL;  | 
| 
5720
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
5721
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    geometry_factory = ST(1)  | 
| 
5722
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5724
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/WKBReader.xsi"  | 
| 
5725
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::istringstream in_stream(in);  | 
| 
5726
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Geometry* g;  | 
| 
5727
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (geometry_factory) {  | 
| 
5728
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         WKBReader r(xs::in(geometry_factory));  | 
| 
5729
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         g = r.read(in_stream);  | 
| 
5730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
5732
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         WKBReader r;  | 
| 
5733
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         g = r.read(in_stream);  | 
| 
5734
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5735
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(g);  | 
| 
5736
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5737 "Geos.xs.cc"  | 
| 
5737
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5738
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5739
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
5740
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
5741
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5742
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
5743
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5744
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5745
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
5746
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
5747
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
5748
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
5749
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
5750
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5751
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5752
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5753
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5754
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5755
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5756
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5757
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5758
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5759
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5760
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKBReader_readHEX) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5761
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5762
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5763
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5764
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "in, geometry_factory= NULL");  | 
| 
5765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5766
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
5767
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	in;  | 
| 
5768
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	geometry_factory;  | 
| 
5769
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5770
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
   { STRLEN __in_len;  | 
| 
5771
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     const char* __in_buf = SvPV(ST(0), __in_len);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5772
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     in.assign(__in_buf, __in_len); }  | 
| 
5773
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5774
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5775
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
5776
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    geometry_factory = NULL;  | 
| 
5777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
5778
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    geometry_factory = ST(1)  | 
| 
5779
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5780
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5781
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 19 "./xsi/WKBReader.xsi"  | 
| 
5782
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::istringstream in_stream(in);  | 
| 
5783
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Geometry* g;  | 
| 
5784
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (geometry_factory) {  | 
| 
5785
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         WKBReader r(xs::in(geometry_factory));  | 
| 
5786
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         g = r.readHEX(in_stream);  | 
| 
5787
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5788
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
5789
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         WKBReader r;  | 
| 
5790
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         g = r.readHEX(in_stream);  | 
| 
5791
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5792
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(g);  | 
| 
5793
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5794 "Geos.xs.cc"  | 
| 
5794
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5795
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5796
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
5797
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
5798
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5799
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
5800
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5801
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5802
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
5803
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
5804
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
5805
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
5806
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
5807
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5808
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5809
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5810
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5812
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5813
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5814
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5815
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5816
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/WKBReader.xsi' */  | 
| 
5817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5818
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5819
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/WKTWriter.xsi' from 'Geos.xs' */  | 
| 
5820
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5821
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5822
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5823
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKTWriter_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5824
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5825
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5826
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5827
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, roundingPrecision= NULL, trim= NULL");  | 
| 
5828
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5829
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKTWriter *	RETVAL;  | 
| 
5830
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	roundingPrecision;  | 
| 
5831
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	trim;  | 
| 
5832
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5833
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
5834
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    roundingPrecision = NULL;  | 
| 
5835
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
5836
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    roundingPrecision = ST(1)  | 
| 
5837
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5838
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5839
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5840
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
5841
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    trim = NULL;  | 
| 
5842
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
5843
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    trim = ST(2)  | 
| 
5844
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5845
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5846
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/WKTWriter.xsi"  | 
| 
5847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
5848
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new WKTWriter();  | 
| 
5849
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (roundingPrecision) RETVAL->setRoundingPrecision(SvIV(roundingPrecision));  | 
| 
5850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (trim) RETVAL->setTrim(SvTRUE(trim));  | 
| 
5851
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5852 "Geos.xs.cc"  | 
| 
5852
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5853
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5854
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
5855
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
5856
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
5857
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5858
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5859
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5860
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5861
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5863
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5864
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKTWriter_setTrim) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5865
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5866
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5867
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5868
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, value");  | 
| 
5869
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
5870
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
5871
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5872
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKTWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5873
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5874
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	value = (bool)SvTRUE(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5876
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10 "./xsi/WKTWriter.xsi"  | 
| 
5877
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setTrim(value);  | 
| 
5878
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5879 "Geos.xs.cc"  | 
| 
5879
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
5880
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
5881
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5882
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5883
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5884
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5885
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5886
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKTWriter_setRoundingPrecision) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5887
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5888
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5889
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5890
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, value");  | 
| 
5891
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
5892
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
5893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5894
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKTWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5896
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	value = (int)SvIV(ST(1))  | 
| 
5897
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5898
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/WKTWriter.xsi"  | 
| 
5899
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setRoundingPrecision(value);  | 
| 
5900
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5901 "Geos.xs.cc"  | 
| 
5901
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
5902
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
5903
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5904
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5908
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKTWriter_write) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5909
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5910
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5911
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
5912
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, g");  | 
| 
5913
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5914
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
5915
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5916
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	WKTWriter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5918
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(1));  | 
| 
5919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5920
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/WKTWriter.xsi"  | 
| 
5921
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->write(&g);   | 
| 
5922
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5923 "Geos.xs.cc"  | 
| 
5923
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5924
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5925
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5926
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5927
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5928
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5929
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5930
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKTWriter_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5932
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5933
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
5934
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5935
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
5936
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5937
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 16 "./xsi/WKTWriter.xsi"  | 
| 
5938
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
5939
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5940 "Geos.xs.cc"  | 
| 
5940
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5941
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5942
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
5943
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
5944
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5946
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/WKTWriter.xsi' */  | 
| 
5947
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5948
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5949
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/WKTReader.xsi' from 'Geos.xs' */  | 
| 
5950
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5951
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5953
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__WKTReader_read) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
5954
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
5955
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
5956
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5957
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "in, geometry_factory= NULL");  | 
| 
5958
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
5959
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
5960
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	in;  | 
| 
5961
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	geometry_factory;  | 
| 
5962
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5963
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
   { STRLEN __in_len;  | 
| 
5964
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     const char* __in_buf = SvPV(ST(0), __in_len);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5965
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     in.assign(__in_buf, __in_len); }  | 
| 
5966
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5967
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5968
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
5969
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    geometry_factory = NULL;  | 
| 
5970
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
5971
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    geometry_factory = ST(1)  | 
| 
5972
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
5973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
5974
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/WKTReader.xsi"  | 
| 
5975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Geometry* g;  | 
| 
5976
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (geometry_factory) {  | 
| 
5977
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         WKTReader r(xs::in(geometry_factory));  | 
| 
5978
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         g = r.read(in);  | 
| 
5979
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5980
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
5981
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         WKTReader r;  | 
| 
5982
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         g = r.read(in);  | 
| 
5983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
5984
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(g);  | 
| 
5985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5986 "Geos.xs.cc"  | 
| 
5986
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
5987
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
5988
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
5989
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
5990
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5991
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
5992
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5993
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
5994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
5995
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
5996
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
5997
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
5998
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
5999
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6000
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
6001
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
6002
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
6003
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6004
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6005
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6007
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6008
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/WKTReader.xsi' */  | 
| 
6009
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6010
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6011
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/PrepGeometry.xsi' from 'Geos.xs' */  | 
| 
6012
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6014
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6015
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_getGeometry) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6016
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6017
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6018
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6019
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
6020
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6021
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry *	RETVAL;  | 
| 
6022
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6023
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6024
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/PrepGeometry.xsi"  | 
| 
6025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
6026
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->getGeometry().clone();   | 
| 
6027
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6028 "Geos.xs.cc"  | 
| 
6028
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
6029
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
6030
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
6031
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
6032
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
6033
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
6034
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6035
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6036
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6037
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6038
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6039
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6040
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_contains) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6041
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6042
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6043
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6044
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6045
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6046
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6047
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6048
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6049
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6050
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/PrepGeometry.xsi"  | 
| 
6052
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->contains(&geom);   | 
| 
6053
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6054 "Geos.xs.cc"  | 
| 
6054
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6056
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6057
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6059
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6060
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6061
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_containsProperly) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6063
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6064
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6065
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6068
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6069
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6070
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6072
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8 "./xsi/PrepGeometry.xsi"  | 
| 
6073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->containsProperly(&geom);   | 
| 
6074
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6075 "Geos.xs.cc"  | 
| 
6075
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6076
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6077
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6078
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6079
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6080
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6082
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_coveredBy) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6084
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6085
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6086
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6087
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6088
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6089
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6090
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6091
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6092
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6093
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10 "./xsi/PrepGeometry.xsi"  | 
| 
6094
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->coveredBy(&geom);   | 
| 
6095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6096 "Geos.xs.cc"  | 
| 
6096
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6097
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6098
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6099
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6101
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6102
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6103
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_covers) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6104
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6105
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6106
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6107
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6110
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6112
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6113
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6114
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/PrepGeometry.xsi"  | 
| 
6115
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->covers(&geom);   | 
| 
6116
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6117 "Geos.xs.cc"  | 
| 
6117
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6118
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6119
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6120
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6121
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6122
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6123
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6124
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_crosses) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6126
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6127
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6128
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6129
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6130
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6131
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6133
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6134
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/PrepGeometry.xsi"  | 
| 
6136
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->crosses(&geom);   | 
| 
6137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6138 "Geos.xs.cc"  | 
| 
6138
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6140
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6141
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6142
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6143
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6145
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_disjoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6146
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6147
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6148
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6149
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6151
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6152
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6153
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6154
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6155
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 16 "./xsi/PrepGeometry.xsi"  | 
| 
6157
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->disjoint(&geom);   | 
| 
6158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6159 "Geos.xs.cc"  | 
| 
6159
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6160
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6161
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6162
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6163
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6164
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6166
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_intersects) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6167
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6168
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6169
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6170
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6171
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6172
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6173
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6174
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6175
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6176
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 18 "./xsi/PrepGeometry.xsi"  | 
| 
6178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->intersects(&geom);   | 
| 
6179
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6180 "Geos.xs.cc"  | 
| 
6180
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6181
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6182
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6183
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6184
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6185
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6186
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6187
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_overlaps) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6188
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6189
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6190
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6191
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6193
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6194
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6195
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6196
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6197
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6198
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 20 "./xsi/PrepGeometry.xsi"  | 
| 
6199
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->overlaps(&geom);   | 
| 
6200
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6201 "Geos.xs.cc"  | 
| 
6201
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6202
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6203
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6204
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6207
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6208
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_touches) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6209
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6210
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6211
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6212
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6214
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6215
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6216
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6217
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 22 "./xsi/PrepGeometry.xsi"  | 
| 
6220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->touches(&geom);   | 
| 
6221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6222 "Geos.xs.cc"  | 
| 
6222
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6223
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6224
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6225
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6227
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6228
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6229
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_within) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6230
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6231
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6232
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6233
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geom");  | 
| 
6234
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6235
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6236
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6237
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6238
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
6239
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 24 "./xsi/PrepGeometry.xsi"  | 
| 
6241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->within(&geom);   | 
| 
6242
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6243 "Geos.xs.cc"  | 
| 
6243
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6245
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6246
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6247
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6249
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6250
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6251
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6252
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6253
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
6254
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
6255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6256
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
6257
 | 
4
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6258
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6259
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6260
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 26 "./xsi/PrepGeometry.xsi"  | 
| 
6261
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->toString();  | 
| 
6262
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6263 "Geos.xs.cc"  | 
| 
6263
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6265
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6266
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6267
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6268
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6270
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__Geometry_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6271
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6272
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
6274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6275
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
6276
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6277
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 28 "./xsi/PrepGeometry.xsi"  | 
| 
6278
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
6279
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6280 "Geos.xs.cc"  | 
| 
6280
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6281
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6282
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6283
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6284
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6285
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6286
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/PrepGeometry.xsi' */  | 
| 
6287
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6288
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6289
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/PrepGeometryFactory.xsi' from 'Geos.xs' */  | 
| 
6290
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6291
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6292
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6293
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Prep__GeometryFactory_prepare) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6294
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6295
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6296
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6297
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g");  | 
| 
6298
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6299
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicPreparedGeometry *	RETVAL;  | 
| 
6300
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
6301
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6302
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/PrepGeometryFactory.xsi"  | 
| 
6303
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
6304
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto pg = const_cast(PreparedGeometryFactory::prepare(&g));  | 
| 
6305
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = static_cast(pg);  | 
| 
6306
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6307 "Geos.xs.cc"  | 
| 
6307
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
6308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
6309
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
6310
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
6311
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
6312
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
6313
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6314
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6315
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6317
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6318
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/PrepGeometryFactory.xsi' */  | 
| 
6319
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6320
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6321
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/algorithm.xsi' from 'Geos.xs' */  | 
| 
6322
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6323
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6324
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6325
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_toDegrees) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6326
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6327
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6328
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6329
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "radians");  | 
| 
6330
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6331
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6332
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6333
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	radians = (double)SvNV(ST(0))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6334
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6335
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/algorithm.xsi"  | 
| 
6336
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Angle::toDegrees(radians);   | 
| 
6337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6338 "Geos.xs.cc"  | 
| 
6338
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6339
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6340
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6341
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6343
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6344
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6345
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_toRadians) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6346
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6347
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6348
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6349
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "angleDegrees");  | 
| 
6350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6351
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6352
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6353
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	angleDegrees = (double)SvNV(ST(0))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/algorithm.xsi"  | 
| 
6356
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Angle::toRadians(angleDegrees);   | 
| 
6357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6358 "Geos.xs.cc"  | 
| 
6358
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6360
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6361
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6362
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6364
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6365
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_angle) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6366
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6367
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6368
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6369
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p0");  | 
| 
6370
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6371
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6372
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6373
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p0 = xs::in(aTHX_ ST(0));  | 
| 
6374
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6375
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8 "./xsi/algorithm.xsi"  | 
| 
6376
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Angle::angle(p0);   | 
| 
6377
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6378 "Geos.xs.cc"  | 
| 
6378
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6379
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6380
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6381
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6382
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6384
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6385
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_isAcute) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6386
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6387
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6388
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
6389
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p0, p1, p2");  | 
| 
6390
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6391
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6392
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	p0 = xs::in(aTHX_ ST(0));  | 
| 
6393
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6394
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate*	p1 = xs::in(aTHX_ ST(1));  | 
| 
6395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6396
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	p2 = xs::in(aTHX_ ST(2));  | 
| 
6397
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11 "./xsi/algorithm.xsi"  | 
| 
6399
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Angle::isAcute(*p0, *p1, *p2);  | 
| 
6400
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6401 "Geos.xs.cc"  | 
| 
6401
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6402
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6403
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6404
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6406
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6407
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6408
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_isObtuse) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6409
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6410
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6411
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
6412
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p0, p1, p2");  | 
| 
6413
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6414
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6415
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p0 = xs::in(aTHX_ ST(0));  | 
| 
6416
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6417
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p1 = xs::in(aTHX_ ST(1));  | 
| 
6418
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6419
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p2 = xs::in(aTHX_ ST(2));  | 
| 
6420
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6421
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 15 "./xsi/algorithm.xsi"  | 
| 
6422
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Angle::isObtuse(p0, p1, p2);  | 
| 
6423
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6424 "Geos.xs.cc"  | 
| 
6424
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6425
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6426
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6427
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6428
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6429
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6430
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6431
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_angleBetween) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6432
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6433
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6434
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
6435
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "tip1, tail, tip2");  | 
| 
6436
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6437
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6438
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6439
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	tip1 = xs::in(aTHX_ ST(0));  | 
| 
6440
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6441
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	tail = xs::in(aTHX_ ST(1));  | 
| 
6442
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6443
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	tip2 = xs::in(aTHX_ ST(2));  | 
| 
6444
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 19 "./xsi/algorithm.xsi"  | 
| 
6446
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Angle::angleBetween(tip1, tail, tip2);  | 
| 
6447
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6448 "Geos.xs.cc"  | 
| 
6448
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6449
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6450
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6451
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6452
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6453
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6454
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6455
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_angleBetweenOriented) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6456
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6457
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6458
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
6459
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "tip1, tail, tip2");  | 
| 
6460
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6461
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6462
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6463
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	tip1 = xs::in(aTHX_ ST(0));  | 
| 
6464
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6465
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	tail = xs::in(aTHX_ ST(1));  | 
| 
6466
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6467
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	tip2 = xs::in(aTHX_ ST(2));  | 
| 
6468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6469
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 23 "./xsi/algorithm.xsi"  | 
| 
6470
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Angle::angleBetweenOriented (tip1, tail, tip2);  | 
| 
6471
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6472 "Geos.xs.cc"  | 
| 
6472
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6473
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6474
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6475
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6476
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6477
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6478
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6479
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_interiorAngle) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6480
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6481
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6482
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
6483
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p0, p1, p2");  | 
| 
6484
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6485
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6486
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6487
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p0 = xs::in(aTHX_ ST(0));  | 
| 
6488
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6489
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p1 = xs::in(aTHX_ ST(1));  | 
| 
6490
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6491
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p2 = xs::in(aTHX_ ST(2));  | 
| 
6492
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6493
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 27 "./xsi/algorithm.xsi"  | 
| 
6494
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Angle::interiorAngle(p0, p1, p2);  | 
| 
6495
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6496 "Geos.xs.cc"  | 
| 
6496
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6497
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6498
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6499
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6500
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6501
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6502
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6503
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_getTurn) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6504
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6505
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6506
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6507
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "ang1, ang2");  | 
| 
6508
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6509
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
6510
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6511
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	ang1 = (double)SvNV(ST(0))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6512
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6513
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	ang2 = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6514
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6515
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 30 "./xsi/algorithm.xsi"  | 
| 
6516
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Angle::getTurn(ang1, ang2);   | 
| 
6517
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6518 "Geos.xs.cc"  | 
| 
6518
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6519
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6520
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6521
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6522
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6524
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6525
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_normalize) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6526
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6527
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6528
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6529
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "angle");  | 
| 
6530
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6532
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6533
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	angle = (double)SvNV(ST(0))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6534
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6535
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 32 "./xsi/algorithm.xsi"  | 
| 
6536
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Angle::normalize(angle);   | 
| 
6537
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6538 "Geos.xs.cc"  | 
| 
6538
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6539
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6540
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6541
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6542
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6543
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6544
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6545
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_normalizePositive) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6547
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6548
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6549
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "angle");  | 
| 
6550
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6551
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6552
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6553
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	angle = (double)SvNV(ST(0))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6554
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6555
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 34 "./xsi/algorithm.xsi"  | 
| 
6556
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Angle::normalizePositive(angle);   | 
| 
6557
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6558 "Geos.xs.cc"  | 
| 
6558
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6560
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6561
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6562
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6563
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6564
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6565
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_diff) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6567
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6568
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6569
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "ang1, ang2");  | 
| 
6570
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6571
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6572
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6573
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	ang1 = (double)SvNV(ST(0))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6574
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6575
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	ang2 = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6576
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6577
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 36 "./xsi/algorithm.xsi"  | 
| 
6578
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = Angle::diff(ang1, ang2);   | 
| 
6579
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6580 "Geos.xs.cc"  | 
| 
6580
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6582
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6583
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6584
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6585
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6586
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6587
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_centroid) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6588
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6589
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6590
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6591
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g");  | 
| 
6592
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6593
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
6594
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
6595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6596
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 39 "./xsi/algorithm.xsi"  | 
| 
6597
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
6598
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
6599
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (Centroid::getCentroid(g, c)) RETVAL = new Coordinate(c);  | 
| 
6600
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
6601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6602 "Geos.xs.cc"  | 
| 
6602
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
6603
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
6604
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
6605
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
6606
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
6607
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
6608
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6609
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6610
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6611
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6612
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6613
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6614
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_centroidArea) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6616
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6617
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6618
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "geoms");  | 
| 
6619
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6620
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
6621
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    geoms = ST(0);  | 
| 
6622
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!geoms && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6623
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6624
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 45 "./xsi/algorithm.xsi"  | 
| 
6625
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
6626
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate result;  | 
| 
6627
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     CentroidArea acc;  | 
| 
6628
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(size_t i = 0; i < geoms.size(); ++i) {  | 
| 
6629
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto item = geoms.at(i);  | 
| 
6630
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (item.is_array_ref()) {  | 
| 
6631
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto seq = Helper::convert_coords(Array(item));  | 
| 
6632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             acc.add(&seq);  | 
| 
6633
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
6634
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
6635
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             acc.add(&xs::in(item));  | 
| 
6636
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
6637
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6638
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (acc.getCentroid(result)) RETVAL = new Coordinate(result);  | 
| 
6639
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
6640
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6641 "Geos.xs.cc"  | 
| 
6641
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
6642
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
6643
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
6644
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
6645
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
6646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
6647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6648
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6649
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6650
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6651
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6652
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6653
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_centroidLine) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6654
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6655
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6656
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6657
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "geoms");  | 
| 
6658
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6659
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
6660
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    geoms = ST(0);  | 
| 
6661
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!geoms && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6662
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6663
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 63 "./xsi/algorithm.xsi"  | 
| 
6664
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
6665
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate result;  | 
| 
6666
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     CentroidLine acc;  | 
| 
6667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(size_t i = 0; i < geoms.size(); ++i) {  | 
| 
6668
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto item = geoms.at(i);  | 
| 
6669
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (item.is_array_ref()) {  | 
| 
6670
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto seq = Helper::convert_coords(Array(item));  | 
| 
6671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             acc.add(&seq);  | 
| 
6672
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
6673
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
6674
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             acc.add(&xs::in(item));  | 
| 
6675
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
6676
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6677
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (acc.getCentroid(result)) RETVAL = new Coordinate(result);  | 
| 
6678
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
6679
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6680 "Geos.xs.cc"  | 
| 
6680
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
6681
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
6682
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
6683
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
6684
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
6685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
6686
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6687
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6688
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6689
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6690
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6691
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6692
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_centroidPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6693
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6694
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6695
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6696
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "geoms");  | 
| 
6697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6698
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
6699
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    geoms = ST(0);  | 
| 
6700
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!geoms && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6701
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6702
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 80 "./xsi/algorithm.xsi"  | 
| 
6703
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
6704
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate result;  | 
| 
6705
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     CentroidPoint acc;  | 
| 
6706
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(size_t i = 0; i < geoms.size(); ++i) {  | 
| 
6707
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Object item = Object(geoms.at(i));  | 
| 
6708
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!item) throw ("invalid argument");  | 
| 
6709
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (item.stash().name() == "Geo::Geos::Coordinate") {  | 
| 
6710
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             acc.add(&xs::in(item));  | 
| 
6711
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
6712
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else acc.add(&xs::in(item));  | 
| 
6713
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6714
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (acc.getCentroid(result)) RETVAL = new Coordinate(result);  | 
| 
6715
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
6716
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6717 "Geos.xs.cc"  | 
| 
6717
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
6718
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
6719
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
6720
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
6721
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
6722
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
6723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6724
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6725
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6726
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6727
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6728
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6729
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_isPointInRing) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6731
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6732
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6733
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, ring");  | 
| 
6734
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6735
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6736
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(0));  | 
| 
6737
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6738
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    ring = ST(1);  | 
| 
6739
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!ring && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6740
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6741
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 95 "./xsi/algorithm.xsi"  | 
| 
6742
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(ring);  | 
| 
6743
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::isPointInRing(p, &seq);  | 
| 
6744
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6745 "Geos.xs.cc"  | 
| 
6745
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6746
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6747
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6748
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6749
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6750
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6751
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6752
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_locatePointInRing) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6753
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6754
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6755
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6756
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, ring");  | 
| 
6757
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6758
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
6759
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6760
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(0));  | 
| 
6761
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6762
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    ring = ST(1);  | 
| 
6763
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!ring && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6764
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 100 "./xsi/algorithm.xsi"  | 
| 
6766
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(ring);  | 
| 
6767
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::locatePointInRing(p, seq);  | 
| 
6768
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6769 "Geos.xs.cc"  | 
| 
6769
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6770
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6771
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6772
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6773
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6774
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6775
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6776
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_isOnLine) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6778
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6779
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
6780
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, line");  | 
| 
6781
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6782
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6783
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(0));  | 
| 
6784
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6785
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    line = ST(1);  | 
| 
6786
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!line && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6787
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6788
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 105 "./xsi/algorithm.xsi"  | 
| 
6789
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(line);  | 
| 
6790
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::isPointInRing(p, &seq);  | 
| 
6791
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6792 "Geos.xs.cc"  | 
| 
6792
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6793
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6794
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6795
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6796
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6797
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6798
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6799
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_isCCW) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6800
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6801
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6802
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6803
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "ring");  | 
| 
6804
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6805
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
6806
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    ring = ST(0);  | 
| 
6807
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!ring && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6808
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6809
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 110 "./xsi/algorithm.xsi"  | 
| 
6810
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(ring);  | 
| 
6811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::isCCW(&seq);  | 
| 
6812
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6813 "Geos.xs.cc"  | 
| 
6813
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
6814
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6815
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6816
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6818
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6819
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6820
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_computeOrientation) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6821
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6822
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6823
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
6824
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p1, p2, q");  | 
| 
6825
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
6827
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6828
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p1 = xs::in(aTHX_ ST(0));  | 
| 
6829
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6830
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p2 = xs::in(aTHX_ ST(1));  | 
| 
6831
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6832
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	q = xs::in(aTHX_ ST(2));  | 
| 
6833
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 115 "./xsi/algorithm.xsi"  | 
| 
6835
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::computeOrientation(p1, p2, q);  | 
| 
6836
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6837 "Geos.xs.cc"  | 
| 
6837
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6838
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6839
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6840
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6842
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6843
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6844
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_distancePointLine) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6845
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6846
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6847
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
6848
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, A, B");  | 
| 
6849
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6851
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6852
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(0));  | 
| 
6853
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6854
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	A = xs::in(aTHX_ ST(1));  | 
| 
6855
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6856
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	B = xs::in(aTHX_ ST(2));  | 
| 
6857
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6858
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 119 "./xsi/algorithm.xsi"  | 
| 
6859
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::distancePointLine(p, A, B);  | 
| 
6860
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6861 "Geos.xs.cc"  | 
| 
6861
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6863
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6864
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6865
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6866
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6867
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6868
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_distancePointLinePerpendicular) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6869
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6870
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6871
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
6872
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, A, B");  | 
| 
6873
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6875
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6876
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(0));  | 
| 
6877
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6878
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	A = xs::in(aTHX_ ST(1));  | 
| 
6879
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6880
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	B = xs::in(aTHX_ ST(2));  | 
| 
6881
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 123 "./xsi/algorithm.xsi"  | 
| 
6883
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::distancePointLinePerpendicular(p, A, B);  | 
| 
6884
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6885 "Geos.xs.cc"  | 
| 
6885
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6886
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6887
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6888
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6889
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6890
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6891
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6892
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_distanceLineLine) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6894
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6895
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 4)  | 
| 
6896
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "A, B, C, D");  | 
| 
6897
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6898
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6899
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6900
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	A = xs::in(aTHX_ ST(0));  | 
| 
6901
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6902
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	B = xs::in(aTHX_ ST(1));  | 
| 
6903
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6904
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	C = xs::in(aTHX_ ST(2));  | 
| 
6905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6906
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	D = xs::in(aTHX_ ST(3));  | 
| 
6907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6908
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 127 "./xsi/algorithm.xsi"  | 
| 
6909
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::distanceLineLine(A, B, C, D);  | 
| 
6910
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6911 "Geos.xs.cc"  | 
| 
6911
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6912
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6913
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6914
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6915
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6916
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6918
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_signedArea) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6920
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6921
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6922
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "ring");  | 
| 
6923
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6924
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6925
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6926
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    ring = ST(0);  | 
| 
6927
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!ring && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6928
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6929
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 131 "./xsi/algorithm.xsi"  | 
| 
6930
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(ring);  | 
| 
6931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::signedArea(&seq);  | 
| 
6932
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6933 "Geos.xs.cc"  | 
| 
6933
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6934
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6935
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6936
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6937
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6938
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6939
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6940
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_length) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6941
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6942
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6943
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
6944
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "pts");  | 
| 
6945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6946
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
6947
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6948
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    pts = ST(0);  | 
| 
6949
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!pts && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6950
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6951
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 136 "./xsi/algorithm.xsi"  | 
| 
6952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(pts);  | 
| 
6953
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::signedArea(&seq);  | 
| 
6954
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6955 "Geos.xs.cc"  | 
| 
6955
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6956
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6957
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6958
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6959
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6960
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6961
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6962
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_orientationIndex) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6963
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6964
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6965
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
6966
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p1, p2, q");  | 
| 
6967
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6968
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
6969
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6970
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p1 = xs::in(aTHX_ ST(0));  | 
| 
6971
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6972
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p2 = xs::in(aTHX_ ST(1));  | 
| 
6973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6974
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	q = xs::in(aTHX_ ST(2));  | 
| 
6975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6976
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 141 "./xsi/algorithm.xsi"  | 
| 
6977
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CGAlgorithms::computeOrientation(p1, p2, q);  | 
| 
6978
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6979 "Geos.xs.cc"  | 
| 
6979
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6980
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
6981
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
6982
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
6983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6984
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
6986
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_getIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
6987
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
6988
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
6989
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 4)  | 
| 
6990
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p00, p01, p10, p11");  | 
| 
6991
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
6992
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
6993
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p00 = xs::in(aTHX_ ST(0));  | 
| 
6994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6995
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p01 = xs::in(aTHX_ ST(1));  | 
| 
6996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6997
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p10 = xs::in(aTHX_ ST(2));  | 
| 
6998
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
6999
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p11 = xs::in(aTHX_ ST(3));  | 
| 
7000
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7001
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 145 "./xsi/algorithm.xsi"  | 
| 
7002
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7003
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     //auto& c = CentralEndpointIntersector::getIntersection(p00, p01, p10, p11);  | 
| 
7004
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     // ^ buggy implementation in 3.6.3, as it returns dangling reference;  | 
| 
7005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     CentralEndpointIntersector intor(p00, p01, p10, p11);  | 
| 
7006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto& c = intor.getIntersection();  | 
| 
7007
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
7008
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7009 "Geos.xs.cc"  | 
| 
7009
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7010
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7011
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7012
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7013
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7014
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7015
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7016
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7017
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7018
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7019
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7020
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7021
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_convexHull) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7022
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7023
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7024
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7025
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "newGeometry");  | 
| 
7026
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7027
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
7028
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	newGeometry = xs::in(aTHX_ ST(0));  | 
| 
7029
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7030
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 153 "./xsi/algorithm.xsi"  | 
| 
7031
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto ch = ConvexHull(&newGeometry);  | 
| 
7032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(ch.getConvexHull());  | 
| 
7033
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7034 "Geos.xs.cc"  | 
| 
7034
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7035
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7036
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
7037
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
7038
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7039
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
7040
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7041
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7042
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
7043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
7044
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
7045
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
7046
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
7047
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7048
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7049
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7050
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7052
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7053
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7054
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7056
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7057
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_interiorPointArea) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7059
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7060
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7061
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g");  | 
| 
7062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
7064
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
7065
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 158 "./xsi/algorithm.xsi"  | 
| 
7067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7068
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     InteriorPointArea ip(&g);  | 
| 
7069
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
7070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (ip.getInteriorPoint(c)) RETVAL = new Coordinate(c);  | 
| 
7071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
7072
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7073 "Geos.xs.cc"  | 
| 
7073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7074
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7075
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7076
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7077
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7078
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7079
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7080
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7081
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7082
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7084
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7085
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_interiorPointLine) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7086
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7087
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7088
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7089
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g");  | 
| 
7090
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7091
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
7092
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
7093
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7094
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 165 "./xsi/algorithm.xsi"  | 
| 
7095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     InteriorPointLine ip(&g);  | 
| 
7097
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
7098
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (ip.getInteriorPoint(c)) RETVAL = new Coordinate(c);  | 
| 
7099
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
7100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7101 "Geos.xs.cc"  | 
| 
7101
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7102
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7103
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7104
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7105
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7106
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7108
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7109
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7110
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7112
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7113
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_interiorPointPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7114
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7115
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7116
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7117
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g");  | 
| 
7118
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
7120
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
7121
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7122
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 172 "./xsi/algorithm.xsi"  | 
| 
7123
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     InteriorPointPoint ip(&g);  | 
| 
7125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
7126
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (ip.getInteriorPoint(c)) RETVAL = new Coordinate(c);  | 
| 
7127
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
7128
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7129 "Geos.xs.cc"  | 
| 
7129
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7130
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7131
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7132
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7133
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7134
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7136
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7137
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7138
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7140
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7141
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_locate) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7142
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7143
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7144
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
7145
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, geom");  | 
| 
7146
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7147
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
7148
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7149
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(0));  | 
| 
7150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7151
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
7152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7153
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 179 "./xsi/algorithm.xsi"  | 
| 
7154
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PointLocator pl;  | 
| 
7155
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = pl.locate(p, &geom);  | 
| 
7156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7157 "Geos.xs.cc"  | 
| 
7157
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7159
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7160
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7161
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7162
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7163
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7164
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_intersects) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7166
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7167
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
7168
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, geom");  | 
| 
7169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7170
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
7171
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(0));  | 
| 
7172
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7173
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
7174
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7175
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 184 "./xsi/algorithm.xsi"  | 
| 
7176
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PointLocator pl;  | 
| 
7177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = pl.intersects(p, &geom);  | 
| 
7178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7179 "Geos.xs.cc"  | 
| 
7179
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
7180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7181
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7182
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7184
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7185
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7186
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_signOfDet2x2) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7188
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7189
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 4)  | 
| 
7190
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "x1, y1, x2, y2");  | 
| 
7191
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
7193
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7194
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	x1 = (double)SvNV(ST(0))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7195
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7196
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	y1 = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7197
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7198
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	x2 = (double)SvNV(ST(2))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7199
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7200
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	y2 = (double)SvNV(ST(3))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7201
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7202
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 189 "./xsi/algorithm.xsi"  | 
| 
7203
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = RobustDeterminant::signOfDet2x2(x1, y1, x2, y2);  | 
| 
7204
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7205 "Geos.xs.cc"  | 
| 
7205
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7207
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7208
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7209
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7210
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7212
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_locateIndexedPointInArea) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7214
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7215
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
7216
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, geom");  | 
| 
7217
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
7219
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7220
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(0));  | 
| 
7221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7222
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
7223
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7224
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 193 "./xsi/algorithm.xsi"  | 
| 
7225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     locate::IndexedPointInAreaLocator locator(geom);  | 
| 
7226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = locator.locate(&p);  | 
| 
7227
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7228 "Geos.xs.cc"  | 
| 
7228
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7229
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7230
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7231
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7232
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7234
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7235
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm_locateSimplePointInArea) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7236
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7237
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7238
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
7239
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, geom");  | 
| 
7240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
7242
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7243
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p = xs::in(aTHX_ ST(0));  | 
| 
7244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7245
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	geom = xs::in(aTHX_ ST(1));  | 
| 
7246
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7247
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 198 "./xsi/algorithm.xsi"  | 
| 
7248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     locate::SimplePointInAreaLocator locator(&geom);  | 
| 
7249
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = locator.locate(&p);  | 
| 
7250
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7251 "Geos.xs.cc"  | 
| 
7251
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7252
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7253
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7254
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/algorithm.xsi' */  | 
| 
7258
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7259
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7260
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/algorithm/HCoordinate.xsi' from 'Geos.xs' */  | 
| 
7261
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7262
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7263
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7264
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__HCoordinate_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7265
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7266
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7267
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 5)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7268
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, arg1, arg2= NULL, arg3= NULL, arg4= NULL");  | 
| 
7269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7270
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	HCoordinate *	RETVAL;  | 
| 
7271
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg1 = ST(1)  | 
| 
7272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2;  | 
| 
7274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
7275
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg4;  | 
| 
7276
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7277
 | 
5
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
7278
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = NULL;  | 
| 
7279
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7280
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg2 = ST(2)  | 
| 
7281
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7282
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7283
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7284
 | 
5
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
7285
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
7286
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7287
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
7288
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7289
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7290
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7291
 | 
5
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 5)  | 
| 
7292
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = NULL;  | 
| 
7293
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7294
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = ST(4)  | 
| 
7295
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7296
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7297
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/algorithm/HCoordinate.xsi"  | 
| 
7298
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7299
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg2) {  | 
| 
7300
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto c = xs::in(arg1);  | 
| 
7301
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = new HCoordinate(*c);  | 
| 
7302
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7303
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if(!arg3) {  | 
| 
7304
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Object obj1 {arg1}, obj2{arg2};  | 
| 
7305
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!obj1) throw("wrong argument");  | 
| 
7306
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!obj2) throw("wrong argument");  | 
| 
7307
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (obj1.stash().name() == "Geo::Geos::Algorithm::HCoordinate") {  | 
| 
7308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& c1 = xs::in(obj1);  | 
| 
7309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& c2 = xs::in(obj1);  | 
| 
7310
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = new HCoordinate(c1, c2);  | 
| 
7311
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
7312
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else {  | 
| 
7313
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& c1 = xs::in(obj1);  | 
| 
7314
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             auto& c2 = xs::in(obj1);  | 
| 
7315
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             RETVAL = new HCoordinate(c1, c2);  | 
| 
7316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
7317
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7318
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if(!arg4) {  | 
| 
7319
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg1) throw("undef not allowed");  | 
| 
7320
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg2) throw("undef not allowed");  | 
| 
7321
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg3) throw("undef not allowed");  | 
| 
7322
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = new HCoordinate(Simple(arg1), Simple(arg2), Simple(arg3));  | 
| 
7323
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7324
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
7325
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c1 = xs::in(arg1);  | 
| 
7326
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c2 = xs::in(arg2);  | 
| 
7327
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c3 = xs::in(arg3);  | 
| 
7328
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c4 = xs::in(arg4);  | 
| 
7329
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = new HCoordinate(c1, c2, c3, c4);  | 
| 
7330
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7331
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7332 "Geos.xs.cc"  | 
| 
7332
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7333
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7334
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7335
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7336
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7338
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7339
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7340
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7341
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7343
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7344
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__HCoordinate_x) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7346
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7347
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dXSI32;  | 
| 
7348
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7349
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newval= NULL");  | 
| 
7350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7351
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
7352
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7353
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	HCoordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	newval;  | 
| 
7356
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7357
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
7358
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = NULL;  | 
| 
7359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7360
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = ST(1)  | 
| 
7361
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7362
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 40 "./xsi/algorithm/HCoordinate.xsi"  | 
| 
7364
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     double* val;  | 
| 
7365
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     switch (ix) {  | 
| 
7366
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 0:  val = &THIS->x; break;  | 
| 
7367
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 1:  val = &THIS->y; break;  | 
| 
7368
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         default: val = &THIS->w; break;  | 
| 
7369
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7370
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (newval) {  | 
| 
7371
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         *val = SvNV(newval);  | 
| 
7372
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7373
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = *val;  | 
| 
7374
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7375 "Geos.xs.cc"  | 
| 
7375
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7376
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7377
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7378
 | 
8
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7379
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7381
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7382
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__HCoordinate_getCoordinate) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7384
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7385
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7386
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
7387
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7388
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
7389
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	HCoordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7390
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7391
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 53 "./xsi/algorithm/HCoordinate.xsi"  | 
| 
7392
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7393
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
7394
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->getCoordinate(c);  | 
| 
7395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
7396
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7397 "Geos.xs.cc"  | 
| 
7397
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7399
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7400
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7401
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7402
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7403
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7404
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7405
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7406
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7407
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7408
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7409
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__HCoordinate_intersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7410
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7411
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7412
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 4)  | 
| 
7413
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p1, p2, q1, q2");  | 
| 
7414
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7415
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
7416
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p1 = xs::in(aTHX_ ST(0));  | 
| 
7417
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7418
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p2 = xs::in(aTHX_ ST(1));  | 
| 
7419
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7420
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	q1 = xs::in(aTHX_ ST(2));  | 
| 
7421
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7422
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	q2 = xs::in(aTHX_ ST(3));  | 
| 
7423
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7424
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 60 "./xsi/algorithm/HCoordinate.xsi"  | 
| 
7425
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7426
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Coordinate c;  | 
| 
7427
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     HCoordinate::intersection(p1, p2, q1, q2, c);  | 
| 
7428
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(c);  | 
| 
7429
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7430 "Geos.xs.cc"  | 
| 
7430
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7432
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7433
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7434
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7435
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7436
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7437
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7438
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7439
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7440
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7441
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7442
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__HCoordinate_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7443
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7444
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7445
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
7446
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
7447
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7448
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
7449
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7450
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	HCoordinate*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7451
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7452
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 66 "./xsi/algorithm/HCoordinate.xsi"  | 
| 
7453
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::ostringstream out;  | 
| 
7454
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     out << *THIS;  | 
| 
7455
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = out.str();  | 
| 
7456
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7457 "Geos.xs.cc"  | 
| 
7457
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7458
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7459
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7460
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7461
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7462
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7463
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7464
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__HCoordinate_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7465
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7466
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
7468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7469
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
7470
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7471
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 71 "./xsi/algorithm/HCoordinate.xsi"  | 
| 
7472
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
7473
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7474 "Geos.xs.cc"  | 
| 
7474
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7475
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7476
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7477
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7478
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7479
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7480
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/algorithm/HCoordinate.xsi' */  | 
| 
7481
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7483
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/algorithm/MinimumDiameter.xsi' from 'Geos.xs' */  | 
| 
7484
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7485
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7486
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7487
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__MinimumDiameter_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7488
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7489
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7490
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7491
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, g, hint= NULL");  | 
| 
7492
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7493
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MinimumDiameter *	RETVAL;  | 
| 
7494
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(1));  | 
| 
7495
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7496
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	hint;  | 
| 
7497
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7498
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
7499
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    hint = NULL;  | 
| 
7500
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7501
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    hint = ST(2)  | 
| 
7502
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7504
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/algorithm/MinimumDiameter.xsi"  | 
| 
7505
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7506
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!hint) {  | 
| 
7507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         bool convex = SvTRUE(hint);  | 
| 
7508
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = new MinimumDiameter(&g, convex);  | 
| 
7509
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7510
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else RETVAL = new MinimumDiameter(&g);  | 
| 
7511
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7512 "Geos.xs.cc"  | 
| 
7512
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7513
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7514
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7515
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7516
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7517
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7518
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7519
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7520
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7521
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7522
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7524
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__MinimumDiameter_getMinimumRectangle) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7525
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7526
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7527
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7528
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "obj");  | 
| 
7529
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7530
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
7531
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Object    obj = ST(0);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7532
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!obj && SvOK(ST(0))) throw "arg is not a blessed reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7533
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7534
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 13 "./xsi/algorithm/MinimumDiameter.xsi"  | 
| 
7535
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Geometry* r;  | 
| 
7536
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (obj.stash().name() == "Geo::Geos::Algorithm::MinimumDiameter") {  | 
| 
7537
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& self = xs::in(obj);  | 
| 
7538
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         r = self.getMinimumRectangle();  | 
| 
7539
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7540
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
7541
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& g = xs::in(obj);  | 
| 
7542
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         r = MinimumDiameter::getMinimumRectangle(&g);  | 
| 
7543
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7544
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(r);  | 
| 
7545
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7546 "Geos.xs.cc"  | 
| 
7546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7547
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7548
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
7549
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
7550
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7551
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
7552
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7553
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7554
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
7555
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
7556
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
7557
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
7558
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
7559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7560
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7561
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7562
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7563
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7564
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7565
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7567
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7568
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7569
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__MinimumDiameter_getMinimumDiameter) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7570
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7571
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7572
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7573
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g");  | 
| 
7574
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7575
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
7576
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
7577
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7578
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 26 "./xsi/algorithm/MinimumDiameter.xsi"  | 
| 
7579
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(MinimumDiameter::getMinimumDiameter(&g));  | 
| 
7580
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7581 "Geos.xs.cc"  | 
| 
7581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7582
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7583
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
7584
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
7585
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7586
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
7587
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7588
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7589
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
7590
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
7591
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
7592
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
7593
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
7594
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7595
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7596
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7597
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7598
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7599
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7600
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7602
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7603
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7604
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__MinimumDiameter_getLength) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7605
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7606
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7607
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7608
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
7609
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7610
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
7611
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7612
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MinimumDiameter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7613
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7614
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 29 "./xsi/algorithm/MinimumDiameter.xsi"  | 
| 
7615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getLength();  | 
| 
7616
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7617 "Geos.xs.cc"  | 
| 
7617
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7618
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7619
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7620
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7621
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7622
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7623
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7624
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__MinimumDiameter_getWidthCoordinate) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7625
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7626
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7627
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7628
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
7629
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7630
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
7631
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MinimumDiameter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7633
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 32 "./xsi/algorithm/MinimumDiameter.xsi"  | 
| 
7634
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7635
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(* (THIS->getWidthCoordinate()));  | 
| 
7636
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7637 "Geos.xs.cc"  | 
| 
7637
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7638
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7639
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7640
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7641
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7642
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7643
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7644
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7645
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7648
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7649
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__MinimumDiameter_getSupportingSegment) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7650
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7651
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7652
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7653
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
7654
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7655
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineString *	RETVAL;  | 
| 
7656
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MinimumDiameter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7657
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7658
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 36 "./xsi/algorithm/MinimumDiameter.xsi"  | 
| 
7659
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7660
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = dyn_cast(THIS->getSupportingSegment());  | 
| 
7661
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7662 "Geos.xs.cc"  | 
| 
7662
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7663
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7664
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7665
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7666
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7668
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7669
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7670
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7672
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7673
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7674
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__MinimumDiameter_getDiameter) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7675
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7676
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7677
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7678
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
7679
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7680
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineString *	RETVAL;  | 
| 
7681
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MinimumDiameter*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7682
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7683
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 40 "./xsi/algorithm/MinimumDiameter.xsi"  | 
| 
7684
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
7685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = dyn_cast(THIS->getDiameter());  | 
| 
7686
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7687 "Geos.xs.cc"  | 
| 
7687
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7688
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7689
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
7690
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7691
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7692
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7693
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7694
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7695
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7696
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7698
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7699
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__MinimumDiameter_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7701
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7702
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
7703
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7704
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
7705
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7706
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 44 "./xsi/algorithm/MinimumDiameter.xsi"  | 
| 
7707
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
7708
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7709 "Geos.xs.cc"  | 
| 
7709
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7710
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7711
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7712
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7713
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7714
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7715
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/algorithm/MinimumDiameter.xsi' */  | 
| 
7716
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7717
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7718
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/algorithm/LineIntersector.xsi' from 'Geos.xs' */  | 
| 
7719
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7720
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7721
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7722
 | 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7724
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7725
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7726
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, precisionModel= NULL");  | 
| 
7727
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7728
 | 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
7729
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	precisionModel;  | 
| 
7730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7731
 | 
12
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
7732
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    precisionModel = NULL;  | 
| 
7733
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7734
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    precisionModel = ST(1)  | 
| 
7735
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7736
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7737
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
7738
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PrecisionModel* pm = precisionModel ? xs::in(precisionModel) : NULL;  | 
| 
7739
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out(new LineIntersector(pm));  | 
| 
7740
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (pm) wrapped.payload_attach(precisionModel, &payload_marker);  | 
| 
7741
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
7742
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7743 "Geos.xs.cc"  | 
| 
7743
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
7744
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
7745
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
7746
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
7747
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7748
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
7749
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7750
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7751
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
7752
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
7753
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
7754
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
7755
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
7756
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7757
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
7758
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
7759
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7760
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7761
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7762
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7763
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7764
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7766
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_interpolateZ) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7767
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7768
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7769
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
7770
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, p0, p1");  | 
| 
7771
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7772
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
7773
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7774
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	p = xs::in(aTHX_ ST(0));  | 
| 
7775
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7776
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	p0 = xs::in(aTHX_ ST(1));  | 
| 
7777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7778
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	p1 = xs::in(aTHX_ ST(2));  | 
| 
7779
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7780
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
7781
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = LineIntersector::interpolateZ(*p, *p0, *p1);   | 
| 
7782
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7783 "Geos.xs.cc"  | 
| 
7783
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7784
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7785
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7786
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7787
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7788
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7789
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7790
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_computeEdgeDistance) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7791
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7792
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7793
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
7794
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "p, p0, p1");  | 
| 
7795
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7796
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
7797
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7798
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	p = xs::in(aTHX_ ST(0));  | 
| 
7799
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7800
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	p0 = xs::in(aTHX_ ST(1));  | 
| 
7801
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7802
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	p1 = xs::in(aTHX_ ST(2));  | 
| 
7803
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7804
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 13 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
7805
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = LineIntersector::computeEdgeDistance(*p, *p0, *p1);   | 
| 
7806
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7807 "Geos.xs.cc"  | 
| 
7807
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7808
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7809
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7810
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7812
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7813
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7814
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_isSameSignAndNonZero) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7815
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7816
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7817
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
7818
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "a, b");  | 
| 
7819
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7820
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
7821
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	a = (double)SvNV(ST(0))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7822
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7823
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	b = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7824
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7825
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 15 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
7826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = LineIntersector::isSameSignAndNonZero(a, b);   | 
| 
7827
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7828 "Geos.xs.cc"  | 
| 
7828
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
7829
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7830
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7831
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7832
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7833
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7835
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_hasIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7836
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7837
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7838
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7839
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "arg0, p1= NULL, p2= NULL");  | 
| 
7840
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
7842
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Object    arg0 = ST(0);  | 
| 
7843
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg0 && SvOK(ST(0))) throw "arg is not a blessed reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7844
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7845
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	p1;  | 
| 
7846
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	p2;  | 
| 
7847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7848
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
7849
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    p1 = NULL;  | 
| 
7850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7851
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    p1 = xs::in(aTHX_ ST(1));  | 
| 
7852
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7853
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7854
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7855
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
7856
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    p2 = NULL;  | 
| 
7857
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7858
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    p2 = xs::in(aTHX_ ST(2));  | 
| 
7859
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7860
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7861
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 18 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
7862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (p1 == NULL) RETVAL = xs::in(arg0).hasIntersection();  | 
| 
7863
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
7864
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& p0 = xs::in(arg0);  | 
| 
7865
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!p1) throw("undef not allowed");  | 
| 
7866
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!p2) throw("undef not allowed");  | 
| 
7867
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = LineIntersector::hasIntersection(p0, *p1, *p2);  | 
| 
7868
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7869
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7870 "Geos.xs.cc"  | 
| 
7870
 | 
6
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
7871
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7872
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7873
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7876
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7877
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_isInteriorIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7878
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7879
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7880
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7881
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg= NULL");  | 
| 
7882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7883
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
7884
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7885
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7886
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg;  | 
| 
7887
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7888
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
7889
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg = NULL;  | 
| 
7890
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7891
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg = ST(1)  | 
| 
7892
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7894
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 29 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
7895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if(!arg) RETVAL = THIS->isInteriorIntersection();  | 
| 
7896
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
7897
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         int inputLineIndex = SvIV(arg);  | 
| 
7898
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isInteriorIntersection(inputLineIndex);  | 
| 
7899
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7900
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7901 "Geos.xs.cc"  | 
| 
7901
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
7902
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7903
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7904
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7908
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_setPrecisionModel) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7909
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7910
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7911
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
7912
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, pm");  | 
| 
7913
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
7914
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
7915
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7916
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7918
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	pm = ST(1)  | 
| 
7919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7920
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 37 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
7921
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PrecisionModel& newPM = xs::in(pm);  | 
| 
7922
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->setPrecisionModel(&newPM);  | 
| 
7923
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me {ST(0)};  | 
| 
7924
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (me.payload_exists(&payload_marker)) {  | 
| 
7925
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         me.payload_detach(&payload_marker);  | 
| 
7926
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7927
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     me.payload_attach(SvRV(pm), &payload_marker);  | 
| 
7928
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7929 "Geos.xs.cc"  | 
| 
7929
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
7930
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
7931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7932
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7933
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7934
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7935
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7936
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_computeIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7937
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7938
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7939
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 4 || items > 5)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7940
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, p1, p2, p3, p4arg= NULL");  | 
| 
7941
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
7942
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
7943
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7944
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7946
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p1 = xs::in(aTHX_ ST(1));  | 
| 
7947
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7948
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p2 = xs::in(aTHX_ ST(2));  | 
| 
7949
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7950
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p3 = xs::in(aTHX_ ST(3));  | 
| 
7951
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	p4arg;  | 
| 
7953
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7954
 | 
5
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 5)  | 
| 
7955
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    p4arg = NULL;  | 
| 
7956
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
7957
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    p4arg = ST(4)  | 
| 
7958
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7959
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
7960
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 47 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
7961
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!p4arg) THIS->computeIntersection(p1, p2, p3);  | 
| 
7962
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
7963
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& p4 = xs::in(p4arg);  | 
| 
7964
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->computeIntersection(p1, p2, p3, p4);  | 
| 
7965
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7966
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7967 "Geos.xs.cc"  | 
| 
7967
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
7968
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
7969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7970
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7971
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7972
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7974
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7976
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7977
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
7978
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
7979
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
7980
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
7981
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7982
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
7984
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 54 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
7985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->toString();  | 
| 
7986
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7987 "Geos.xs.cc"  | 
| 
7987
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7988
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
7989
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
7990
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
7991
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7992
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7993
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
7994
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_getIntersectionNum) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
7995
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
7996
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
7997
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
7998
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
7999
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8000
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8001
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8002
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8003
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8004
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 56 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
8005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getIntersectionNum();  | 
| 
8006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8007 "Geos.xs.cc"  | 
| 
8007
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8008
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8009
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8010
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8011
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8012
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8014
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_isProper) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8015
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8016
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8017
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8018
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
8019
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8020
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
8021
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8022
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8023
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 58 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
8024
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isProper();  | 
| 
8025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8026 "Geos.xs.cc"  | 
| 
8026
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
8027
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8028
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8029
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8030
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8031
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8033
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_getIndexAlongSegment) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8034
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8035
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8036
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
8037
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, segmentIndex, intIndex");  | 
| 
8038
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8039
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8040
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8041
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8042
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8043
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	segmentIndex = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8044
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8045
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	intIndex = (int)SvIV(ST(2))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8046
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8047
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 60 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
8048
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getIndexAlongSegment(segmentIndex, intIndex);  | 
| 
8049
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8050 "Geos.xs.cc"  | 
| 
8050
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8052
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8053
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8054
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8056
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8057
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_getEdgeDistance) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8059
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8060
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
8061
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, geomIndex, intIndex");  | 
| 
8062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
8064
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8065
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8067
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	geomIndex = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8068
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8069
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	intIndex = (int)SvIV(ST(2))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 62 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
8072
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getEdgeDistance(geomIndex, intIndex);  | 
| 
8073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8074 "Geos.xs.cc"  | 
| 
8074
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8075
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8076
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8077
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8078
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8079
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8080
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8081
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_getIntersectionAlongSegment) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8082
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8083
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8084
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
8085
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, segmentIndex, intIndex");  | 
| 
8086
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8087
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
8088
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8089
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8090
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	segmentIndex = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8091
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8092
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	intIndex = (int)SvIV(ST(2))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8093
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8094
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 65 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
8095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
8096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(THIS->getIntersectionAlongSegment(segmentIndex, intIndex));  | 
| 
8097
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8098 "Geos.xs.cc"  | 
| 
8098
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
8099
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
8100
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
8101
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
8102
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
8103
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8104
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8105
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8106
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8110
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Algorithm__LineIntersector_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8112
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8113
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
8114
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8115
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8116
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8117
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 68 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
8118
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
8119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8120 "Geos.xs.cc"  | 
| 
8120
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8121
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8122
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8123
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8126
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/algorithm/LineIntersector.xsi' */  | 
| 
8127
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8128
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8129
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding.xsi' from 'Geos.xs' */  | 
| 
8130
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8131
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8133
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding_compareOrientedCoordinateArray) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8134
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8135
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8136
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8137
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "pts1, pts2");  | 
| 
8138
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8140
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8141
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    pts1 = ST(0);  | 
| 
8142
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!pts1 && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8143
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8144
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    pts2 = ST(1);  | 
| 
8145
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!pts2 && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8146
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8147
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding.xsi"  | 
| 
8148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq1 = Helper::convert_coords(pts1);  | 
| 
8149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq2 = Helper::convert_coords(pts2);  | 
| 
8150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     geos::noding::OrientedCoordinateArray oca{seq1};  | 
| 
8151
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = oca.compareTo(seq2);  | 
| 
8152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8153 "Geos.xs.cc"  | 
| 
8153
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8154
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8155
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8156
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8157
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8159
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8160
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding_octant) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8161
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8162
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8163
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8164
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "arg1, arg2");  | 
| 
8165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8166
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8167
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8168
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv    arg1 = ST(0)  | 
| 
8169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8170
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2 = ST(1)  | 
| 
8171
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8172
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/noding.xsi"  | 
| 
8173
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (arg1.is_object_ref() && Object(arg1).stash().name() == "Geo::Geos::Coordinate") {  | 
| 
8174
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c1 = xs::in(arg1);  | 
| 
8175
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c2 = xs::in(arg2);  | 
| 
8176
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = Octant::octant(&c1, &c2);  | 
| 
8177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     } else {  | 
| 
8178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg1) throw("undef not allowed");  | 
| 
8179
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg2) throw("undef not allowed");  | 
| 
8180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         double dx = SvNV(arg1);  | 
| 
8181
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         double dy = SvNV(arg2);  | 
| 
8182
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = Octant::octant(dx, dy);  | 
| 
8183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8184
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8185 "Geos.xs.cc"  | 
| 
8185
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8186
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8187
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8188
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8189
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8190
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8191
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8192
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding_checkNodingValid) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8193
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8194
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8195
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8196
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "segmentStrigns");  | 
| 
8197
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
8198
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
8199
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8200
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    segmentStrigns = ST(0);  | 
| 
8201
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!segmentStrigns && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8202
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8203
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 26 "./xsi/noding.xsi"  | 
| 
8204
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::vector v;  | 
| 
8205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     v.reserve(segmentStrigns.size());  | 
| 
8206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8207
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for (auto it: segmentStrigns) {  | 
| 
8208
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         SegmentString& ss = xs::in(it);  | 
| 
8209
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         v.push_back(&ss);  | 
| 
8210
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     NodingValidator nv(v);  | 
| 
8212
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     nv.checkValid();  | 
| 
8213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8214 "Geos.xs.cc"  | 
| 
8214
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
8215
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
8216
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8217
 | 
1
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8221
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding_fastCheckNodingValid) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8222
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8223
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8224
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8225
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "segmentStrigns");  | 
| 
8226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8227
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
8228
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8229
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    segmentStrigns = ST(0);  | 
| 
 
 | 
 
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8230
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!segmentStrigns && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8231
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8232
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 38 "./xsi/noding.xsi"  | 
| 
8233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::vector v;  | 
| 
8234
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     v.reserve(segmentStrigns.size());  | 
| 
8235
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8236
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for (auto it: segmentStrigns) {  | 
| 
8237
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         SegmentString& ss = xs::in(it);  | 
| 
8238
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         v.push_back(&ss);  | 
| 
8239
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     FastNodingValidator fnv{v};  | 
| 
8241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8242
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (GIMME_V == G_VOID) {  | 
| 
8243
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         fnv.checkValid();  | 
| 
8244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSRETURN_UNDEF;  | 
| 
8245
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8246
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
8247
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (fnv.isValid()) XSRETURN_UNDEF;  | 
| 
8248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         else RETVAL = fnv.getErrorMessage();  | 
| 
8249
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8250
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8251 "Geos.xs.cc"  | 
| 
8251
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8252
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8253
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8254
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8258
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding_compareSegmentPoints) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8259
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8260
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8261
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
8262
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "octant, p1, p2");  | 
| 
8263
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8265
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8266
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	octant = (int)SvIV(ST(0))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8267
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8268
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p1 = xs::in(aTHX_ ST(1));  | 
| 
8269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8270
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	p2 = xs::in(aTHX_ ST(2));  | 
| 
8271
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 58 "./xsi/noding.xsi"  | 
| 
8273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = SegmentPointComparator::compare(octant, p1, p2);  | 
| 
8274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8275 "Geos.xs.cc"  | 
| 
8275
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8276
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8277
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8278
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8279
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8280
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8281
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8282
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding_extractSegmentStrings) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8283
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8284
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8285
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8286
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g");  | 
| 
8287
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8288
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
8289
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
8290
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8291
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 62 "./xsi/noding.xsi"  | 
| 
8292
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SegmentString::ConstVect v;  | 
| 
8293
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     geos::noding::SegmentStringUtil::extractSegmentStrings(&g, v);  | 
| 
8294
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8295
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Array result = xs::Array::create(v.size());  | 
| 
8296
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto ss: v) {  | 
| 
8297
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto it = xs::out(const_cast(ss));  | 
| 
8298
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         result.push(it);  | 
| 
8299
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     };  | 
| 
8300
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = result;  | 
| 
8301
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8302 "Geos.xs.cc"  | 
| 
8302
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
8303
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
8304
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
8305
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
8306
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
8307
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
8308
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
8309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8310
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8311
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8312
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8313
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8314
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8315
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8316
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding_intersects) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8317
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8318
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8319
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8320
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "baseSegmentStrings, segmentStrings, intDetector= NULL");  | 
| 
8321
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8322
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
8323
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    baseSegmentStrings = ST(0);  | 
| 
8324
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!baseSegmentStrings && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8325
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8326
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    segmentStrings = ST(1);  | 
| 
8327
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!segmentStrings && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8328
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8329
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	intDetector;  | 
| 
8330
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8331
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
8332
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    intDetector = NULL;  | 
| 
8333
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
8334
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    intDetector = ST(2)  | 
| 
8335
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8336
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 74 "./xsi/noding.xsi"  | 
| 
8338
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SegmentString::ConstVect vb;  | 
| 
8339
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto it: baseSegmentStrings) vb.push_back(&xs::in(it));  | 
| 
8340
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8341
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SegmentString::ConstVect v;  | 
| 
8342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto it: segmentStrings) v.push_back(&xs::in(it));  | 
| 
8343
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8344
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     FastSegmentSetIntersectionFinder finder{&vb};  | 
| 
8345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!intDetector) RETVAL = finder.intersects(&v);  | 
| 
8346
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
8347
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& id = xs::in(intDetector);  | 
| 
8348
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = finder.intersects(&v, &id);  | 
| 
8349
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8351 "Geos.xs.cc"  | 
| 
8351
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
8352
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8353
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8354
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8356
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding.xsi' */  | 
| 
8358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8360
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/SegmentString.xsi' from 'Geos.xs' */  | 
| 
8361
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8362
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8364
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentString_size) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8365
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8366
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8367
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8368
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
8369
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8370
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	unsigned int	RETVAL;  | 
| 
8371
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8372
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8373
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8374
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/noding/SegmentString.xsi"  | 
| 
8375
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->size();  | 
| 
8376
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8377 "Geos.xs.cc"  | 
| 
8377
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHu((UV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8378
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8379
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8380
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8381
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8382
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8384
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentString_getCoordinate) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8385
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8386
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8387
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8388
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, i");  | 
| 
8389
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8390
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
8391
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8392
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8393
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	unsigned int	i = (unsigned int)SvUV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8394
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7 "./xsi/noding/SegmentString.xsi"  | 
| 
8396
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
8397
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(THIS->getCoordinate(i));  | 
| 
8398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8399 "Geos.xs.cc"  | 
| 
8399
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
8400
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
8401
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
8402
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
8403
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
8404
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8406
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8407
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8408
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8409
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8410
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8411
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentString_getCoordinates) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8412
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8413
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8414
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8415
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
8416
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8417
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
8418
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8419
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8420
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11 "./xsi/noding/SegmentString.xsi"  | 
| 
8421
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = THIS->getCoordinates();  | 
| 
8422
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::convert_copy(seq);  | 
| 
8423
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8424 "Geos.xs.cc"  | 
| 
8424
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
8425
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
8426
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
8427
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
8428
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
8429
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
8430
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
8431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8432
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8433
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8434
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8435
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8436
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8437
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8438
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentString_isClosed) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8439
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8440
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8441
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8442
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
8443
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8444
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
8445
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8446
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8447
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 15 "./xsi/noding/SegmentString.xsi"  | 
| 
8448
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isClosed();  | 
| 
8449
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8450 "Geos.xs.cc"  | 
| 
8450
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
8451
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8452
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8453
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8454
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8455
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8456
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8457
 | 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentString_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8458
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8459
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8460
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
8461
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
8462
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8463
 | 
24
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
8464
 | 
12
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8465
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8466
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 18 "./xsi/noding/SegmentString.xsi"  | 
| 
8468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::ostringstream out;  | 
| 
8469
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     out << *THIS;  | 
| 
8470
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = out.str();  | 
| 
8471
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8472 "Geos.xs.cc"  | 
| 
8472
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8473
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8474
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8475
 | 
12
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8476
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8477
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8478
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/SegmentString.xsi' */  | 
| 
8479
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8480
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8481
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/SegmentNode.xsi' from 'Geos.xs' */  | 
| 
8482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8483
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8484
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8485
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentNode_isInterior) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8486
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8487
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8488
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8489
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
8490
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8491
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
8492
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentNode*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8493
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8494
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/noding/SegmentNode.xsi"  | 
| 
8495
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isInterior();  | 
| 
8496
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8497 "Geos.xs.cc"  | 
| 
8497
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
8498
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8499
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8500
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8501
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8502
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8504
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentNode_isEndPoint) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8505
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8506
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8507
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8508
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, maxSegmentIndex");  | 
| 
8509
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8510
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
8511
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentNode*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8512
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8513
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	unsigned int	maxSegmentIndex = (unsigned int)SvUV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8514
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8515
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/noding/SegmentNode.xsi"  | 
| 
8516
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isEndPoint(maxSegmentIndex);  | 
| 
8517
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8518 "Geos.xs.cc"  | 
| 
8518
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
8519
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8520
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8521
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8522
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8524
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8525
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentNode_compareTo) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8526
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8527
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8528
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8529
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, other");  | 
| 
8530
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8532
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8533
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentNode*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8534
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8535
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentNode&	other = xs::in(aTHX_ ST(1));  | 
| 
8536
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8537
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8 "./xsi/noding/SegmentNode.xsi"  | 
| 
8538
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->compareTo(other);  | 
| 
8539
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8540 "Geos.xs.cc"  | 
| 
8540
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8541
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8542
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8543
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8544
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8545
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8547
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentNode_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8548
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8549
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8550
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
8551
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
8552
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8553
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
8554
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8555
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentNode*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8556
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8557
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11 "./xsi/noding/SegmentNode.xsi"  | 
| 
8558
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::ostringstream out;  | 
| 
8559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     out << *THIS;  | 
| 
8560
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = out.str();  | 
| 
8561
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8562 "Geos.xs.cc"  | 
| 
8562
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8563
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8564
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8565
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8567
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8568
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8569
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentNode_coord) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8570
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8571
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8572
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8573
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
8574
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8575
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
8576
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentNode*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8577
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8578
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 17 "./xsi/noding/SegmentNode.xsi"  | 
| 
8579
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
8580
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(THIS->coord);  | 
| 
8581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8582 "Geos.xs.cc"  | 
| 
8582
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
8583
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
8584
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
8585
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
8586
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
8587
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8588
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8589
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8590
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8591
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8592
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8593
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8594
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentNode_segmentIndex) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8596
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8597
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8598
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
8599
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8600
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	unsigned int	RETVAL;  | 
| 
8601
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8602
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentNode*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8603
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8604
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 20 "./xsi/noding/SegmentNode.xsi"  | 
| 
8605
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  RETVAL = THIS->segmentIndex;   | 
| 
8606
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8607 "Geos.xs.cc"  | 
| 
8607
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHu((UV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8608
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8609
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8610
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8611
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8612
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8613
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/SegmentNode.xsi' */  | 
| 
8614
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8616
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/NodedSegmentString.xsi' from 'Geos.xs' */  | 
| 
8617
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8618
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8619
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8620
 | 
30
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__NodedSegmentString_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8621
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8622
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8623
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8624
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, coords");  | 
| 
8625
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8626
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	NodedSegmentString *	RETVAL;  | 
| 
8627
 | 
30
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    coords = ST(1);  | 
| 
8628
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!coords && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8629
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8630
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/NodedSegmentString.xsi"  | 
| 
8631
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
8632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(coords);  | 
| 
8633
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto v = new NodedSegmentString(seq.clone(), NULL);  | 
| 
8634
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = v;  | 
| 
8635
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8636 "Geos.xs.cc"  | 
| 
8636
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
8637
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
8638
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
8639
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
8640
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
8641
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8642
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8643
 | 
15
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8644
 | 
15
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8645
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8648
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__NodedSegmentString_addIntersectionNode) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8649
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8650
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8651
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
8652
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, c, segmentIndex");  | 
| 
8653
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8654
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
8655
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	NodedSegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8656
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8657
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate&	c = xs::in(aTHX_ ST(1));  | 
| 
8658
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8659
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::size_t	segmentIndex = xs::in(aTHX_ ST(2));  | 
| 
8660
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8661
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11 "./xsi/noding/NodedSegmentString.xsi"  | 
| 
8662
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto* node = THIS->addIntersectionNode(&c, segmentIndex);  | 
| 
8663
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Sv wrapped = xs::out(node);  | 
| 
8664
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object obj{ST(0)};  | 
| 
8665
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(obj.detach(), &payload_marker);  | 
| 
8666
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped;  | 
| 
8667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8668 "Geos.xs.cc"  | 
| 
8668
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
8669
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
8670
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
8671
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
8672
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8673
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
8674
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8675
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8676
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
8677
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
8678
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
8679
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
8680
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
8681
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8682
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
8683
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
8684
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8686
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8687
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8688
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8689
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8690
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8691
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__NodedSegmentString_getSegmentOctant) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8692
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8693
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8694
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8695
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, index");  | 
| 
8696
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8698
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8699
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	NodedSegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8701
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	unsigned int	index = (unsigned int)SvUV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8702
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8703
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 18 "./xsi/noding/NodedSegmentString.xsi"  | 
| 
8704
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getSegmentOctant(index);  | 
| 
8705
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8706 "Geos.xs.cc"  | 
| 
8706
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8707
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8708
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8709
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8710
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8711
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8712
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8713
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__NodedSegmentString_addIntersections) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8714
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8715
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8716
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 4)  | 
| 
8717
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, li, segmentIndex, geomIndex");  | 
| 
8718
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
8719
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
8720
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8721
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	NodedSegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8722
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8723
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineIntersector&	li = xs::in(aTHX_ ST(1));  | 
| 
8724
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8725
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	unsigned int	segmentIndex = (unsigned int)SvUV(ST(2))  | 
| 
8726
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8727
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	geomIndex = (int)SvIV(ST(3))  | 
| 
8728
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8729
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 21 "./xsi/noding/NodedSegmentString.xsi"  | 
| 
8730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->addIntersections(&li, segmentIndex, geomIndex);  | 
| 
8731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8732 "Geos.xs.cc"  | 
| 
8732
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
8733
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
8734
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8735
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8736
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8737
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8738
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8739
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__NodedSegmentString_addIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8740
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8741
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8742
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 3 || items > 5)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8743
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1, segmentIndex, arg3= NULL, arg4= NULL");  | 
| 
8744
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
8745
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
8746
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8747
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	NodedSegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8748
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8749
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Object    arg1 = ST(1);  | 
| 
8750
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1 && SvOK(ST(1))) throw "arg is not a blessed reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8751
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8752
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	unsigned int	segmentIndex = (unsigned int)SvUV(ST(2))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8753
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8754
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
8755
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg4;  | 
| 
8756
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8757
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
8758
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
8759
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
8760
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
8761
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8762
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8763
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8764
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 5)  | 
| 
8765
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = NULL;  | 
| 
8766
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
8767
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = ST(4)  | 
| 
8768
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8769
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8770
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 25 "./xsi/noding/NodedSegmentString.xsi"  | 
| 
8771
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg3) {  | 
| 
8772
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c = xs::in(arg1);  | 
| 
8773
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->addIntersection(c, segmentIndex);  | 
| 
8774
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8775
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
8776
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& li = xs::in(arg1);  | 
| 
8777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!arg3) throw("missing mandatory argument");  | 
| 
8778
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!arg4) throw("missing mandatory argument");  | 
| 
8779
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->addIntersection(&li, segmentIndex, SvIV(arg3), SvIV(arg4));  | 
| 
8780
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8781
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8782 "Geos.xs.cc"  | 
| 
8782
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
8783
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
8784
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8785
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8786
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8787
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8788
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8789
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__NodedSegmentString_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8790
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8791
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8792
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
8793
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8794
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8795
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8796
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 37 "./xsi/noding/NodedSegmentString.xsi"  | 
| 
8797
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
8798
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8799 "Geos.xs.cc"  | 
| 
8799
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8800
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8801
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8802
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8803
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8804
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8805
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/NodedSegmentString.xsi' */  | 
| 
8806
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8807
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8808
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/BasicSegmentString.xsi' from 'Geos.xs' */  | 
| 
8809
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8810
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8812
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__BasicSegmentString_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8813
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8814
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8815
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8816
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, coords");  | 
| 
8817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8818
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicSegmentString *	RETVAL;  | 
| 
8819
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    coords = ST(1);  | 
| 
8820
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!coords && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8821
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8822
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/noding/BasicSegmentString.xsi"  | 
| 
8823
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
8824
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(coords);  | 
| 
8825
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto deep_clone = seq.clone();  | 
| 
8826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new BasicSegmentString(deep_clone, NULL);  | 
| 
8827
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8828 "Geos.xs.cc"  | 
| 
8828
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
8829
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
8830
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
8831
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
8832
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
8833
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8835
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8836
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8837
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8838
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8839
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8840
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__BasicSegmentString_DESTROY) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8842
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8843
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8844
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
8845
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
8846
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
8847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8848
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicSegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8849
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/noding/BasicSegmentString.xsi"  | 
| 
8851
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     delete THIS->getCoordinates();  | 
| 
8852
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         xs::Typemap().destroy(aTHX_ THIS, SvRV(ST(0)));  | 
| 
8853
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8854 "Geos.xs.cc"  | 
| 
8854
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
8855
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
8856
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8857
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8858
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8859
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8860
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8861
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__BasicSegmentString_getSegmentOctant) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8863
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8864
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8865
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, index");  | 
| 
8866
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8867
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8868
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8869
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	BasicSegmentString*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8870
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8871
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	unsigned int	index = (unsigned int)SvUV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8872
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8873
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 15 "./xsi/noding/BasicSegmentString.xsi"  | 
| 
8874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getSegmentOctant(index);  | 
| 
8875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8876 "Geos.xs.cc"  | 
| 
8876
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8877
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8878
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8879
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8880
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8881
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8883
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__BasicSegmentString_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8884
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8885
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8886
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
8887
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8888
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
8889
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8890
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 17 "./xsi/noding/BasicSegmentString.xsi"  | 
| 
8891
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
8892
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8893 "Geos.xs.cc"  | 
| 
8893
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8894
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8895
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8896
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8897
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8898
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8899
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/BasicSegmentString.xsi' */  | 
| 
8900
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8901
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8902
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/SegmentIntersector.xsi' from 'Geos.xs' */  | 
| 
8903
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8904
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8906
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersector_processIntersections) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8908
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8909
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 5)  | 
| 
8910
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, e0, segIndex0, e1, segIndex1");  | 
| 
8911
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
8912
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
8913
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8914
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8915
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8916
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentString&	e0 = xs::in(aTHX_ ST(1));  | 
| 
8917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8918
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	segIndex0 = (int)SvIV(ST(2))  | 
| 
8919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8920
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentString&	e1 = xs::in(aTHX_ ST(3));  | 
| 
8921
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8922
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	segIndex1 = (int)SvIV(ST(4))  | 
| 
8923
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8924
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/noding/SegmentIntersector.xsi"  | 
| 
8925
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->processIntersections(&e0, segIndex0, &e1, segIndex1);  | 
| 
8926
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8927 "Geos.xs.cc"  | 
| 
8927
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
8928
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
8929
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8930
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8932
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8933
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8934
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersector_isDone) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8935
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8936
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8937
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
8938
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
8939
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8940
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
8941
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentIntersector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8942
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8943
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9 "./xsi/noding/SegmentIntersector.xsi"  | 
| 
8944
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isDone();  | 
| 
8945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8946 "Geos.xs.cc"  | 
| 
8946
 | 
7
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
8947
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8948
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8949
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8950
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8951
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/SegmentIntersector.xsi' */  | 
| 
8953
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8954
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8955
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/SegmentIntersectionDetector.xsi' from 'Geos.xs' */  | 
| 
8956
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8957
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8958
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8959
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersectionDetector_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8960
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8961
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
8962
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
8963
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, liObj");  | 
| 
8964
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
8965
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
8966
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	liObj = ST(1)  | 
| 
8967
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
8968
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
8969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     LineIntersector& li = xs::in(liObj);  | 
| 
8970
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Sv wrapped = xs::out<>(new SegmentIntersectionDetector(&li));  | 
| 
8971
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(SvRV(liObj), &payload_marker);  | 
| 
8972
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped;  | 
| 
8973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 8974 "Geos.xs.cc"  | 
| 
8974
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
8975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
8976
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
8977
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
8978
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8979
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
8980
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8981
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8982
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
8983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
8984
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
8985
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
8986
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
8987
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8988
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
8989
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
8990
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
8991
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
8992
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
8993
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
8994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8995
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
8997
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersectionDetector_hasIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
8998
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
8999
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9000
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9001
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9002
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9003
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
9004
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentIntersectionDetector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
9007
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hasIntersection();  | 
| 
9008
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9009 "Geos.xs.cc"  | 
| 
9009
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
9010
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9011
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9012
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9014
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9015
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9016
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersectionDetector_hasProperIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9017
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9018
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9019
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9020
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9021
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9022
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
9023
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentIntersectionDetector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9024
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
9026
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hasProperIntersection();  | 
| 
9027
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9028 "Geos.xs.cc"  | 
| 
9028
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
9029
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9030
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9031
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9033
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9034
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9035
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersectionDetector_hasNonProperIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9036
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9037
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9038
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9039
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9040
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9041
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
9042
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentIntersectionDetector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9044
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 16 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
9045
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hasNonProperIntersection();  | 
| 
9046
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9047 "Geos.xs.cc"  | 
| 
9047
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
9048
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9049
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9050
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9052
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9053
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9054
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersectionDetector_setFindProper) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9056
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9057
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
9058
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, findProper");  | 
| 
9059
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
9060
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
9061
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9062
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentIntersectionDetector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9064
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	findProper = (bool)SvTRUE(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9065
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 18 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
9067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setFindProper(findProper);  | 
| 
9068
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9069 "Geos.xs.cc"  | 
| 
9069
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
9070
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
9071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9072
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9074
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9075
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9076
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersectionDetector_setFindAllIntersectionTypes) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9077
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9078
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9079
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
9080
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, findAllTypes");  | 
| 
9081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
9082
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
9083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9084
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentIntersectionDetector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9086
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	findAllTypes = (bool)SvTRUE(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9087
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9088
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 20 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
9089
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setFindAllIntersectionTypes(findAllTypes);  | 
| 
9090
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9091 "Geos.xs.cc"  | 
| 
9091
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
9092
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
9093
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9094
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9097
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9098
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersectionDetector_getIntersectionSegments) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9099
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9100
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9101
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9102
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9103
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9104
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	xs::Array	RETVAL;  | 
| 
9105
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentIntersectionDetector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9106
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 23 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
9108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::convert_copy(THIS->getIntersectionSegments());  | 
| 
9109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9110 "Geos.xs.cc"  | 
| 
9110
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9112
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9113
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9114
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9115
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9116
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9117
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9118
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9119
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9120
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9121
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9122
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9123
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9124
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersectionDetector_getIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9126
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9127
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9128
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9129
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9130
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
9131
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SegmentIntersectionDetector*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9133
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 27 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
9134
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
9135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto c = THIS->getIntersection();  | 
| 
9136
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (c) RETVAL = new Coordinate(*c);  | 
| 
9137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else XSRETURN_UNDEF;  | 
| 
9138
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9139 "Geos.xs.cc"  | 
| 
9139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9140
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9141
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
9142
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9143
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9146
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9147
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9151
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SegmentIntersectionDetector_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9153
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9154
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
9155
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
9157
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 33 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
9159
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
9160
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9161 "Geos.xs.cc"  | 
| 
9161
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9162
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9163
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9164
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9165
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9166
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9167
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/SegmentIntersectionDetector.xsi' */  | 
| 
9168
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9170
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/SingleInteriorIntersectionFinder.xsi' from 'Geos.xs' */  | 
| 
9171
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9172
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9173
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9174
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9175
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9176
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9177
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
9178
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, liObj");  | 
| 
9179
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9180
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
9181
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	liObj = ST(1)  | 
| 
9182
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/SingleInteriorIntersectionFinder.xsi"  | 
| 
9184
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto& li = xs::in(liObj);  | 
| 
9185
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Sv wrapped = xs::out<>(new SingleInteriorIntersectionFinder(li));  | 
| 
9186
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(SvRV(liObj), &payload_marker);  | 
| 
9187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped;  | 
| 
9188
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9189 "Geos.xs.cc"  | 
| 
9189
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9190
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9191
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9192
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9193
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9194
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
9195
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9196
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9197
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
9198
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
9199
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9200
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
9201
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
9202
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9203
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9204
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9207
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9208
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9209
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9210
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9212
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_hasIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9214
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9215
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9216
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9217
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
9219
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SingleInteriorIntersectionFinder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/noding/SingleInteriorIntersectionFinder.xsi"  | 
| 
9222
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hasIntersection();  | 
| 
9223
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9224 "Geos.xs.cc"  | 
| 
9224
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
9225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9226
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9227
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9228
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9229
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9230
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9231
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_getInteriorIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9232
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9233
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9234
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9235
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9236
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9237
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
9238
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SingleInteriorIntersectionFinder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9239
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 15 "./xsi/noding/SingleInteriorIntersectionFinder.xsi"  | 
| 
9241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
9242
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(THIS->getInteriorIntersection());  | 
| 
9243
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9244 "Geos.xs.cc"  | 
| 
9244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9245
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9246
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
9247
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9248
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9249
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9250
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9251
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9252
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9253
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9254
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9256
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_getIntersectionSegments) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9258
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9259
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9260
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9261
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9262
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	xs::Array	RETVAL;  | 
| 
9263
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SingleInteriorIntersectionFinder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9265
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 19 "./xsi/noding/SingleInteriorIntersectionFinder.xsi"  | 
| 
9266
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto& vector = THIS->getIntersectionSegments();  | 
| 
9267
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto r = xs::Array::create(vector.size());  | 
| 
9268
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto& c: vector) {  | 
| 
9269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto copy = xs::out(new Coordinate(c));  | 
| 
9270
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         r.push(copy);  | 
| 
9271
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = r;  | 
| 
9273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9274 "Geos.xs.cc"  | 
| 
9274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9275
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9276
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9277
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9278
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9279
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9280
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9281
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9282
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9283
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9284
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9285
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9286
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9287
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9288
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9289
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9290
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9291
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
9292
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9293
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
9294
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9295
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 29 "./xsi/noding/SingleInteriorIntersectionFinder.xsi"  | 
| 
9296
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
9297
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9298 "Geos.xs.cc"  | 
| 
9298
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9299
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9300
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9301
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9302
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9303
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9304
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/SingleInteriorIntersectionFinder.xsi' */  | 
| 
9305
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9306
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9307
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/IntersectionAdder.xsi' from 'Geos.xs' */  | 
| 
9308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9310
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9311
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionAdder_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9312
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9313
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9314
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
9315
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, liObj");  | 
| 
9316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9317
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
9318
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	liObj = ST(1)  | 
| 
9319
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9320
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/IntersectionAdder.xsi"  | 
| 
9321
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     LineIntersector& li = xs::in(liObj);  | 
| 
9322
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out<>(new IntersectionAdder(li));  | 
| 
9323
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(SvRV(liObj), &payload_marker);  | 
| 
9324
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
9325
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9326 "Geos.xs.cc"  | 
| 
9326
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9327
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9328
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9329
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9330
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9331
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
9332
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9333
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9334
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
9335
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
9336
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9337
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
9338
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
9339
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9340
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9341
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9343
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9344
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9345
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9346
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9347
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9348
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9349
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionAdder_getLineIntersector) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9351
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9352
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9353
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9355
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
9356
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionAdder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/noding/IntersectionAdder.xsi"  | 
| 
9359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
9360
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker);  | 
| 
9361
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object li{payload.obj};  | 
| 
9362
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = li.ref();  | 
| 
9363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9364 "Geos.xs.cc"  | 
| 
9364
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9365
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9366
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9367
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9368
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9369
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
9370
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9371
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9372
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
9373
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
9374
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9375
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
9376
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
9377
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9378
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9379
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9381
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9382
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9383
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9384
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9385
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9386
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9387
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionAdder_hasIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9388
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9389
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9390
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9391
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9392
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9393
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
9394
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionAdder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9396
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 18 "./xsi/noding/IntersectionAdder.xsi"  | 
| 
9397
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hasIntersection();  | 
| 
9398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9399 "Geos.xs.cc"  | 
| 
9399
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
9400
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9401
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9402
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9403
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9404
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9406
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionAdder_hasProperIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9407
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9408
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9409
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9410
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9411
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9412
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
9413
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionAdder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9414
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9415
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 20 "./xsi/noding/IntersectionAdder.xsi"  | 
| 
9416
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hasProperIntersection();  | 
| 
9417
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9418 "Geos.xs.cc"  | 
| 
9418
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
9419
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9420
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9421
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9422
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9423
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9424
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9425
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionAdder_hasProperInteriorIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9426
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9427
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9428
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9429
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9430
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
9432
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionAdder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9433
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9434
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 22 "./xsi/noding/IntersectionAdder.xsi"  | 
| 
9435
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hasProperInteriorIntersection();  | 
| 
9436
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9437 "Geos.xs.cc"  | 
| 
9437
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
9438
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9439
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9440
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9441
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9442
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9443
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9444
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionAdder_hasInteriorIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9446
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9447
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9448
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9449
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9450
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
9451
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionAdder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9452
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9453
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 24 "./xsi/noding/IntersectionAdder.xsi"  | 
| 
9454
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->hasInteriorIntersection();  | 
| 
9455
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9456 "Geos.xs.cc"  | 
| 
9456
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
9457
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9458
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9459
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9460
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9461
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9462
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9463
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionAdder_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9464
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9465
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9466
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
9467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
9469
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9470
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 26 "./xsi/noding/IntersectionAdder.xsi"  | 
| 
9471
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
9472
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9473 "Geos.xs.cc"  | 
| 
9473
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9474
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9475
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9476
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9477
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9478
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9479
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/IntersectionAdder.xsi' */  | 
| 
9480
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9481
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/IntersectionFinderAdder.xsi' from 'Geos.xs' */  | 
| 
9483
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9484
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9485
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9486
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionFinderAdder_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9487
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9488
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9489
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
9490
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, liObj, coords");  | 
| 
9491
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9492
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
9493
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	liObj = ST(1)  | 
| 
9494
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9495
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    coords = ST(2);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9496
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!coords && SvOK(ST(2))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9497
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9498
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/IntersectionFinderAdder.xsi"  | 
| 
9499
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     LineIntersector& li = xs::in(liObj);  | 
| 
9500
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto* payload = new IntersectionFinderAdder_payload{SvRV(liObj), {}};  | 
| 
9501
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9502
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto* v = &payload->coords;  | 
| 
9503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     v->reserve(coords.size());  | 
| 
9504
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto it: coords) {  | 
| 
9505
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Coordinate& c = xs::in(it);  | 
| 
9506
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         v->emplace_back(c);  | 
| 
9507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9508
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9509
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out<>(new IntersectionFinderAdder(li, *v));  | 
| 
9510
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(payload, &payload_marker_IntersectionFinderAdder);  | 
| 
9511
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9512
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
9513
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9514 "Geos.xs.cc"  | 
| 
9514
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9515
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9516
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9517
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9518
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9519
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
9520
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9521
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9522
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
9523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
9524
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9525
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
9526
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
9527
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9528
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9529
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9530
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9532
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9533
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9534
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9535
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9536
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9537
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionFinderAdder_getInteriorIntersections) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9538
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9539
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9540
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9541
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9542
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9543
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	xs::Array	RETVAL;  | 
| 
9544
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionFinderAdder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9545
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 22 "./xsi/noding/IntersectionFinderAdder.xsi"  | 
| 
9547
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
9548
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker_IntersectionFinderAdder);  | 
| 
9549
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto* real_payload = static_cast(payload.ptr);  | 
| 
9550
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto* v = &real_payload->coords;  | 
| 
9551
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9552
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto result = xs::Array::create(v->size());  | 
| 
9553
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto& c: *v) {  | 
| 
9554
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         result.push(xs::out(new Coordinate(c)));  | 
| 
9555
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9556
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = result;  | 
| 
9557
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9558 "Geos.xs.cc"  | 
| 
9558
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9560
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9561
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9562
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9563
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9564
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9565
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9567
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9568
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9569
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9570
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9571
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9572
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IntersectionFinderAdder_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9573
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9574
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9575
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
9576
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9577
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
9578
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9579
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 34 "./xsi/noding/IntersectionFinderAdder.xsi"  | 
| 
9580
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
9581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9582 "Geos.xs.cc"  | 
| 
9582
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9583
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9584
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9585
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9586
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9587
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9588
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/IntersectionFinderAdder.xsi' */  | 
| 
9589
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9590
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9591
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/Noder.xsi' from 'Geos.xs' */  | 
| 
9592
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9593
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9594
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9595
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__Noder_computeNodes) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9596
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9597
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9598
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
9599
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, segStrings");  | 
| 
9600
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
9601
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
9602
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9603
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Noder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9604
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9605
 | 
10
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    segStrings = ST(1);  | 
| 
9606
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!segStrings && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9607
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9608
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/Noder.xsi"  | 
| 
9609
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto segments = Noder_payload::vector_t();  | 
| 
9610
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     segments.reserve(segStrings.size());  | 
| 
9611
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9612
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto it: segStrings) {  | 
| 
9613
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         SegmentString& ss = xs::in(it);  | 
| 
9614
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         segments.push_back(&ss);  | 
| 
9615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9616
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9617
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = new Noder_payload();  | 
| 
9618
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     payload->array_ref = xs::Ref::create(segStrings);  | 
| 
9619
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     payload->segments = std::move(segments);  | 
| 
9620
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9621
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9622
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object self{ST(0)};  | 
| 
9623
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     self.payload_attach(payload, &payload_marker_Noder);  | 
| 
9624
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9625
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->computeNodes(&payload->segments);  | 
| 
9626
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9627 "Geos.xs.cc"  | 
| 
9627
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
9628
 | 
10
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
9629
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9630
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9631
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9633
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9634
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__Noder_getNodedSubstrings) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9635
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9636
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9637
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9638
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9639
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9640
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
9641
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Noder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9642
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9643
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 25 "./xsi/noding/Noder.xsi"  | 
| 
9644
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto items = THIS->getNodedSubstrings();  | 
| 
9645
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!items) XSRETURN_UNDEF;  | 
| 
9646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
9647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         xs::Array result = xs::Array::create(items->size());  | 
| 
9648
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         for(auto it: *items) {  | 
| 
9649
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             result.push(xs::out(it));  | 
| 
9650
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
9651
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         delete items;  | 
| 
9652
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = xs::Ref::create(result);  | 
| 
9653
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9654
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9655 "Geos.xs.cc"  | 
| 
9655
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9656
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9657
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9658
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9659
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9660
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
9661
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9662
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9663
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
9664
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
9665
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9666
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
9667
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
9668
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9669
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9670
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9672
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9673
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9674
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9675
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9676
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9677
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/Noder.xsi' */  | 
| 
9678
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9679
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9680
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/IteratedNoder.xsi' from 'Geos.xs' */  | 
| 
9681
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9682
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9683
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9684
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IteratedNoder_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9686
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9687
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
9688
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, precisionModel");  | 
| 
9689
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9690
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
9691
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	precisionModel = ST(1)  | 
| 
9692
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9693
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/IteratedNoder.xsi"  | 
| 
9694
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PrecisionModel& pm = xs::in(precisionModel);  | 
| 
9695
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out(new IteratedNoder(&pm));  | 
| 
9696
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(precisionModel, &payload_marker);  | 
| 
9697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
9698
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9699 "Geos.xs.cc"  | 
| 
9699
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9701
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9702
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9703
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9704
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
9705
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9706
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9707
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
9708
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
9709
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9710
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
9711
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
9712
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9713
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9714
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9715
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9716
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9717
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9718
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9719
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9720
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9721
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9722
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IteratedNoder_setMaximumIterations) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9724
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9725
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
9726
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, n");  | 
| 
9727
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
9728
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
9729
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9730
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IteratedNoder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9732
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	n = (int)SvIV(ST(1))  | 
| 
9733
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9734
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11 "./xsi/noding/IteratedNoder.xsi"  | 
| 
9735
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setMaximumIterations(n);  | 
| 
9736
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9737 "Geos.xs.cc"  | 
| 
9737
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
9738
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
9739
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9740
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9741
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9742
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9743
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9744
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__IteratedNoder_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9745
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9746
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9747
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
9748
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9749
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
9750
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9751
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 13 "./xsi/noding/IteratedNoder.xsi"  | 
| 
9752
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
9753
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9754 "Geos.xs.cc"  | 
| 
9754
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9755
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9756
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9757
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9758
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9759
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9760
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/IteratedNoder.xsi' */  | 
| 
9761
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9762
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9763
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/ScaledNoder.xsi' from 'Geos.xs' */  | 
| 
9764
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9766
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9767
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__ScaledNoder_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9768
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9769
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9770
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 3 || items > 5)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9771
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, noder, nScaleFactor, nOffsetX= 0.0, nOffsetY= 0.0");  | 
| 
9772
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9773
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
9774
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	noder = ST(1)  | 
| 
9775
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9776
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	nScaleFactor = (double)SvNV(ST(2))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9778
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	nOffsetX;  | 
| 
9779
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	nOffsetY;  | 
| 
9780
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9781
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
9782
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nOffsetX = 0.0;  | 
| 
9783
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
9784
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nOffsetX = (double)SvNV(ST(3))  | 
| 
9785
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9786
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9787
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9788
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 5)  | 
| 
9789
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nOffsetY = 0.0;  | 
| 
9790
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
9791
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nOffsetY = (double)SvNV(ST(4))  | 
| 
9792
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9793
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9794
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/ScaledNoder.xsi"  | 
| 
9795
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Noder& n = xs::in(noder);  | 
| 
9796
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out<>(new ScaledNoder(n, nScaleFactor, nOffsetX, nOffsetY));  | 
| 
9797
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(SvRV(noder), &payload_marker);  | 
| 
9798
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
9799
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9800 "Geos.xs.cc"  | 
| 
9800
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9801
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9802
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9803
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9804
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9805
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
9806
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9807
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9808
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
9809
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
9810
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9811
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
9812
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
9813
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9814
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9815
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9816
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9818
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9819
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9820
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9821
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9822
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9823
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__ScaledNoder_isIntegerPrecision) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9824
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9825
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9826
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
9827
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
9828
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9829
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
9830
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ScaledNoder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9831
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9832
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11 "./xsi/noding/ScaledNoder.xsi"  | 
| 
9833
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->isIntegerPrecision();  | 
| 
9834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9835 "Geos.xs.cc"  | 
| 
9835
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
9836
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9837
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9838
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9839
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9840
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9842
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__ScaledNoder_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9843
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9844
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9845
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
9846
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
9848
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9849
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 13 "./xsi/noding/ScaledNoder.xsi"  | 
| 
9850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
9851
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9852 "Geos.xs.cc"  | 
| 
9852
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9853
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9854
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9855
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9856
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9857
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9858
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/ScaledNoder.xsi' */  | 
| 
9859
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9860
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9861
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/SinglePassNoder.xsi' from 'Geos.xs' */  | 
| 
9862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9863
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9864
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9865
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SinglePassNoder_setSegmentIntersector) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9866
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9867
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9868
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9869
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newSegInt= NULL");  | 
| 
9870
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
9871
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
9872
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9873
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SinglePassNoder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV *	newSegInt;  | 
| 
9876
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9877
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
9878
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newSegInt = NULL;  | 
| 
9879
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
9880
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newSegInt = ST(1)  | 
| 
9881
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9883
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/SinglePassNoder.xsi"  | 
| 
9884
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object self{ST(0)};  | 
| 
9885
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9886
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SegmentIntersector* si = newSegInt ? xs::in(newSegInt) : NULL;  | 
| 
9887
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (si) {  | 
| 
9888
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         self.payload_attach(SvRV(newSegInt), &payload_marker);  | 
| 
9889
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9890
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else if (self.payload_exists(&payload_marker)) {  | 
| 
9891
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         self.payload_detach(&payload_marker);  | 
| 
9892
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9894
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->setSegmentIntersector(si);  | 
| 
9895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9896 "Geos.xs.cc"  | 
| 
9896
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
9897
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
9898
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9899
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9900
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9901
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9902
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9903
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SinglePassNoder_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9904
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9905
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
9907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9908
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
9909
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9910
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 19 "./xsi/noding/SinglePassNoder.xsi"  | 
| 
9911
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
9912
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9913 "Geos.xs.cc"  | 
| 
9913
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9914
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9915
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9916
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9918
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/SinglePassNoder.xsi' */  | 
| 
9920
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9921
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9922
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/SimpleNoder.xsi' from 'Geos.xs' */  | 
| 
9923
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9924
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9925
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9926
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SimpleNoder_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9927
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9928
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9929
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9930
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, newSegInt= NULL");  | 
| 
9931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9932
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
9933
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV *	newSegInt;  | 
| 
9934
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9935
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
9936
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newSegInt = NULL;  | 
| 
9937
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
9938
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newSegInt = ST(1)  | 
| 
9939
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
9940
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9941
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/SimpleNoder.xsi"  | 
| 
9942
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SegmentIntersector* si = newSegInt ? xs::in(newSegInt) : NULL;  | 
| 
9943
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object self{xs::out(new SimpleNoder(si))};  | 
| 
9944
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (si) {  | 
| 
9945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         self.payload_attach(SvRV(newSegInt), &payload_marker);  | 
| 
9946
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9947
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = self.ref();  | 
| 
9948
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9949 "Geos.xs.cc"  | 
| 
9949
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
9950
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
9951
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
9952
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
9953
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9954
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
9955
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9956
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9957
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
9958
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
9959
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
9960
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
9961
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
9962
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9963
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
9964
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
9965
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
9966
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9967
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9968
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9970
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9971
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9972
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SimpleNoder_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9974
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
9976
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
9977
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
9978
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9979
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/noding/SimpleNoder.xsi"  | 
| 
9980
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
9981
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9982 "Geos.xs.cc"  | 
| 
9982
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
9984
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
9985
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
9986
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9987
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9988
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/SimpleNoder.xsi' */  | 
| 
9989
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9990
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9991
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/noding/SimpleSnapRounder.xsi' from 'Geos.xs' */  | 
| 
9992
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9993
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
9995
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SimpleSnapRounder_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
9996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
9997
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
9998
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
9999
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, precisionModel");  | 
| 
10000
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10001
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
10002
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	precisionModel = ST(1)  | 
| 
10003
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10004
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/noding/SimpleSnapRounder.xsi"  | 
| 
10005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto& pm = xs::in(precisionModel);  | 
| 
10006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out(new SimpleSnapRounder(pm));  | 
| 
10007
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(precisionModel, &payload_marker);  | 
| 
10008
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
10009
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10010 "Geos.xs.cc"  | 
| 
10010
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10011
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10012
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10013
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10014
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10015
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
10016
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10017
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10018
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
10019
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
10020
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10021
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
10022
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
10023
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10024
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10025
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10026
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10027
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10028
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10029
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10030
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10031
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10033
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SimpleSnapRounder_computeVertexSnaps) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10034
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10035
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10036
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
10037
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, edges");  | 
| 
10038
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
10039
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
10040
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10041
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SimpleSnapRounder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10042
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10043
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    edges = ST(1);  | 
| 
10044
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!edges && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10045
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10046
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/noding/SimpleSnapRounder.xsi"  | 
| 
10047
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::vector v;  | 
| 
10048
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     v.reserve(edges.size());  | 
| 
10049
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10050
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto it: edges) {  | 
| 
10051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& ss = xs::in(it);  | 
| 
10052
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         v.push_back(&ss);  | 
| 
10053
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10054
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->computeVertexSnaps(v);  | 
| 
10055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10056 "Geos.xs.cc"  | 
| 
10056
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
10057
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
10058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10059
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10060
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10061
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10063
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Noding__SimpleSnapRounder_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10064
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10065
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
10067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10068
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
10069
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 23 "./xsi/noding/SimpleSnapRounder.xsi"  | 
| 
10071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
10072
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10073 "Geos.xs.cc"  | 
| 
10073
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10074
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10075
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10076
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10077
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10078
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10079
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/noding/SimpleSnapRounder.xsi' */  | 
| 
10080
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10082
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/index/MonotoneChain.xsi' from 'Geos.xs' */  | 
| 
10083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10084
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10086
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10087
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10088
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10089
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 4)  | 
| 
10090
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, pts, start, end");  | 
| 
10091
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10092
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
10093
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    pts = ST(1);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10094
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!pts && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10095
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10096
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::size_t	start = xs::in(aTHX_ ST(2));  | 
| 
10097
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10098
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::size_t	end = xs::in(aTHX_ ST(3));  | 
| 
10099
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/index/MonotoneChain.xsi"  | 
| 
10101
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(pts);  | 
| 
10102
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq_ptr = seq.clone();  | 
| 
10103
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = new MonotoneChain_payload();  | 
| 
10104
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     payload->seq.reset(seq_ptr);  | 
| 
10105
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10106
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out<>(new MonotoneChain(*seq_ptr, start, end, NULL));  | 
| 
10107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(payload, &payload_marker_MonotoneChain);  | 
| 
10108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
10110
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10111 "Geos.xs.cc"  | 
| 
10111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10112
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10113
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10114
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10115
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10116
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
10117
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10118
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
10120
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
10121
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10122
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
10123
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
10124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10125
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10126
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10127
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10128
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10129
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10130
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10131
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10133
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10134
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_getChains) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10136
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10137
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10138
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "pts");  | 
| 
10139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10140
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
10141
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    pts = ST(0);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10142
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!pts && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10143
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 17 "./xsi/index/MonotoneChain.xsi"  | 
| 
10145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = Helper::convert_coords(pts);  | 
| 
10146
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::vector v;  | 
| 
10147
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     MonotoneChainBuilder::getChains(&seq, NULL, v);  | 
| 
10148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Array result = Array::create(v.size());  | 
| 
10150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto mc: v) {  | 
| 
10151
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         result.push(xs::out(mc));  | 
| 
10152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10153
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = result;  | 
| 
10154
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10155 "Geos.xs.cc"  | 
| 
10155
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10156
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10157
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10158
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10159
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10160
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10161
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10162
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10163
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10164
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10165
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10166
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10167
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10168
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10169
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_getEnvelope) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10170
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10171
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10172
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10173
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
10174
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10175
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope *	RETVAL;  | 
| 
10176
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChain*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 29 "./xsi/index/MonotoneChain.xsi"  | 
| 
10179
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
10180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Envelope(THIS->getEnvelope());  | 
| 
10181
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10182 "Geos.xs.cc"  | 
| 
10182
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10184
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
10185
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10186
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10188
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10189
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10190
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10191
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10193
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10194
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_getStartIndex) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10195
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10196
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10197
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10198
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
10199
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10200
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	size_t	RETVAL;  | 
| 
10201
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10202
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChain*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10203
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10204
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 32 "./xsi/index/MonotoneChain.xsi"  | 
| 
10205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getStartIndex();  | 
| 
10206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10207 "Geos.xs.cc"  | 
| 
10207
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHu((UV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10208
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10209
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10210
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10212
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10214
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_getEndIndex) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10215
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10216
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10217
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10218
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
10219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	size_t	RETVAL;  | 
| 
10221
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10222
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChain*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10223
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10224
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 34 "./xsi/index/MonotoneChain.xsi"  | 
| 
10225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getEndIndex();  | 
| 
10226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10227 "Geos.xs.cc"  | 
| 
10227
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHu((UV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10228
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10229
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10230
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10231
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10232
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10234
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_getLineSegment) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10235
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10236
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10237
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
10238
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, index");  | 
| 
10239
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	LineSegment *	RETVAL;  | 
| 
10241
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChain*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10242
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10243
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::size_t	index = xs::in(aTHX_ ST(1));  | 
| 
10244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10245
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 37 "./xsi/index/MonotoneChain.xsi"  | 
| 
10246
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
10247
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     LineSegment ls;  | 
| 
10248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->getLineSegment(index, ls);  | 
| 
10249
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new LineSegment(ls);  | 
| 
10250
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10251 "Geos.xs.cc"  | 
| 
10251
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10252
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10253
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
10254
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10255
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10258
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10259
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10260
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10261
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10262
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10263
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_getCoordinates) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10265
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10266
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10267
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
10268
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10269
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
10270
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChain*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10271
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 43 "./xsi/index/MonotoneChain.xsi"  | 
| 
10273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto smart_ptr = THIS->getCoordinates();  | 
| 
10274
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::convert_copy(smart_ptr.get());  | 
| 
10275
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10276 "Geos.xs.cc"  | 
| 
10276
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10277
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10278
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10279
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10280
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10281
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10282
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10283
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10284
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10285
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10286
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10287
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10288
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10289
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10290
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_computeOverlaps) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10291
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10292
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10293
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
10294
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, mc, mco");  | 
| 
10295
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
10296
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
10297
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10298
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChain*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10299
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10300
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChain &	mc = xs::in(aTHX_ ST(1));  | 
| 
10301
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10302
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChainOverlapAction &	mco = xs::in(aTHX_ ST(2));  | 
| 
10303
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10304
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 48 "./xsi/index/MonotoneChain.xsi"  | 
| 
10305
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->computeOverlaps(&mc, &mco);  | 
| 
10306
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10307 "Geos.xs.cc"  | 
| 
10307
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
10308
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
10309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10310
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10311
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10312
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10313
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10314
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_setId) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10315
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10316
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10317
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
10318
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, nId");  | 
| 
10319
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
10320
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
10321
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10322
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChain*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10323
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10324
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	nId = (int)SvIV(ST(1))  | 
| 
10325
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10326
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 51 "./xsi/index/MonotoneChain.xsi"  | 
| 
10327
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setId(nId);  | 
| 
10328
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10329 "Geos.xs.cc"  | 
| 
10329
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
10330
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
10331
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10332
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10333
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10334
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10335
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10336
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChain_getId) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10338
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10339
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10340
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
10341
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
10343
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10344
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChain*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10346
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 53 "./xsi/index/MonotoneChain.xsi"  | 
| 
10347
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getId();  | 
| 
10348
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10349 "Geos.xs.cc"  | 
| 
10349
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10351
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10352
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10353
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/index/MonotoneChain.xsi' */  | 
| 
10356
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/index/MonotoneChainOverlapAction.xsi' from 'Geos.xs' */  | 
| 
10359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10360
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10361
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10362
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChainOverlapAction_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10364
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10365
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10366
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*");  | 
| 
10367
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10368
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChainOverlapAction *	RETVAL;  | 
| 
10369
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 4 "./xsi/index/MonotoneChainOverlapAction.xsi"  | 
| 
10370
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
10371
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new MonotoneChainOverlapAction();  | 
| 
10372
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10373 "Geos.xs.cc"  | 
| 
10373
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10374
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10375
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
10376
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10377
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10378
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10379
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10380
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10381
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10382
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10384
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10385
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChainOverlapAction_overlap) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10386
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10387
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10388
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 3 || items > 5)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10389
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, arg1, arg2, arg3= NULL, arg4= NULL");  | 
| 
10390
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
10391
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
10392
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10393
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChainOverlapAction*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10394
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10395
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Object    arg1 = ST(1);  | 
| 
10396
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg1 && SvOK(ST(1))) throw "arg is not a blessed reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10397
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10398
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg2 = ST(2)  | 
| 
10399
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10400
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg3;  | 
| 
10401
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg4;  | 
| 
10402
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10403
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
10404
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = NULL;  | 
| 
10405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
10406
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg3 = ST(3)  | 
| 
10407
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10408
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10409
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10410
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 5)  | 
| 
10411
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = NULL;  | 
| 
10412
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
10413
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg4 = ST(4)  | 
| 
10414
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10415
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10416
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 7 "./xsi/index/MonotoneChainOverlapAction.xsi"  | 
| 
10417
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (arg1.stash().name() == "Geo::Geos::LineSegment") {  | 
| 
10418
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& ls1 = xs::in(arg1);  | 
| 
10419
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& ls2 = xs::in(arg2);  | 
| 
10420
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->overlap(ls1, ls2);  | 
| 
10421
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10422
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
10423
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg2) throw("undef not allowed");  | 
| 
10424
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if(!arg4) throw("undef not allowed");  | 
| 
10425
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& mc1 = xs::in(arg1);  | 
| 
10426
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& mc2 = xs::in(arg3);  | 
| 
10427
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         std::size_t start1 = SvUV(arg2);  | 
| 
10428
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         std::size_t start2 = SvUV(arg4);  | 
| 
10429
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->overlap(mc1, start1, mc2, start2);  | 
| 
10430
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10432 "Geos.xs.cc"  | 
| 
10432
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
10433
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
10434
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10435
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10436
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10437
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10438
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10439
 | 
8
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__MonotoneChainOverlapAction_tempEnv1) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10440
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10441
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10442
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dXSI32;  | 
| 
10443
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10444
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, newval= NULL");  | 
| 
10445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10446
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope *	RETVAL;  | 
| 
10447
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	MonotoneChainOverlapAction*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10448
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10449
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	newval;  | 
| 
10450
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10451
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
10452
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = NULL;  | 
| 
10453
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
10454
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    newval = ST(1)  | 
| 
10455
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10456
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10457
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 24 "./xsi/index/MonotoneChainOverlapAction.xsi"  | 
| 
10458
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
10459
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Envelope* val;  | 
| 
10460
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     switch (ix) {  | 
| 
10461
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 0:  val = &THIS->tempEnv1; break;  | 
| 
10462
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         default: val = &THIS->tempEnv2; break;  | 
| 
10463
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10464
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (newval) {  | 
| 
10465
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto e = xs::in(newval);  | 
| 
10466
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         *val = *e;  | 
| 
10467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10468
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Envelope(*val);  | 
| 
10469
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10470 "Geos.xs.cc"  | 
| 
10470
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10471
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10472
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
10473
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10474
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10475
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10476
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10477
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10478
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10479
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10480
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10481
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/index/MonotoneChainOverlapAction.xsi' */  | 
| 
10482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10483
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10484
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/index/SpatialIndex.xsi' from 'Geos.xs' */  | 
| 
10485
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10486
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10487
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10488
 | 
14
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__SpatialIndex_query) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10489
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10490
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10491
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10492
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, env, arg= NULL");  | 
| 
10493
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10494
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
10495
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SpatialIndex*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10496
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10497
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope&	env = xs::in(aTHX_ ST(1));  | 
| 
10498
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10499
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg;  | 
| 
10500
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10501
 | 
7
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
10502
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg = NULL;  | 
| 
10503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
10504
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    arg = ST(2)  | 
| 
10505
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10506
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/index/SpatialIndex.xsi"  | 
| 
10508
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me {ST(0)};  | 
| 
10509
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker_SVs_map);  | 
| 
10510
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto real_payload = static_cast(payload.ptr);  | 
| 
10511
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10512
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!arg) {  | 
| 
10513
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         std::vector v;  | 
| 
10514
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->query(&env, v);  | 
| 
10515
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = Helper::wrap_inc_SVs(&v, real_payload->map);  | 
| 
10516
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10517
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
10518
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         Sub visitor {arg};  | 
| 
10519
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         if (!visitor) throw "Unsupported argument";  | 
| 
10520
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         SubItemVisitor v{visitor, real_payload->map};  | 
| 
10521
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->query(&env, v);  | 
| 
10522
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSRETURN_UNDEF;  | 
| 
10523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10524
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10525 "Geos.xs.cc"  | 
| 
10525
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10526
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10527
 | 
5
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10528
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10529
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10530
 | 
5
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10531
 | 
7
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10532
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10533
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10534
 | 
7
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10535
 | 
7
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10536
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10537
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10538
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10539
 | 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__SpatialIndex_insert) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10540
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10541
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10542
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
10543
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, env, item");  | 
| 
10544
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
10545
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
10546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10547
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SpatialIndex*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10548
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10549
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope&	env = xs::in(aTHX_ ST(1));  | 
| 
10550
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10551
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	item = ST(2)  | 
| 
10552
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10553
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 24 "./xsi/index/SpatialIndex.xsi"  | 
| 
10554
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
10555
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10556
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker_SVs_map);  | 
| 
10557
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto real_payload = static_cast(payload.ptr);  | 
| 
10558
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SV* value = Helper::store_sv(item, real_payload->map);  | 
| 
10559
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->insert(&env, value);  | 
| 
10560
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10561 "Geos.xs.cc"  | 
| 
10561
 | 
16
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
10562
 | 
32
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
10563
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10564
 | 
16
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10565
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10567
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10568
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__SpatialIndex_remove) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10569
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10570
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10571
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
10572
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, env, item");  | 
| 
10573
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10574
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
10575
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SpatialIndex*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10576
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10577
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Envelope&	env = xs::in(aTHX_ ST(1));  | 
| 
10578
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10579
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV *	item = ST(2)  | 
| 
10580
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 33 "./xsi/index/SpatialIndex.xsi"  | 
| 
10582
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
10583
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker_SVs_map);  | 
| 
10584
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto real_payload = static_cast(payload.ptr);  | 
| 
10585
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10586
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SV* value = hv_delete_ent(real_payload->map, item, 0, 0);  | 
| 
10587
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!value) throw "value is n/a in hash";  | 
| 
10588
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10589
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     THIS->remove(&env, value);  | 
| 
10590
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10591 "Geos.xs.cc"  | 
| 
10591
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
10592
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10593
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10594
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10596
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10597
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/index/SpatialIndex.xsi' */  | 
| 
10598
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10599
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10600
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/index/Quadtree.xsi' from 'Geos.xs' */  | 
| 
10601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10602
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10603
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10604
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__Quadtree_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10605
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10606
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10607
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10608
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV");  | 
| 
10609
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10610
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
10611
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/index/Quadtree.xsi"  | 
| 
10612
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out(new quadtree::Quadtree());  | 
| 
10613
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = new SVs_map_payload();  | 
| 
10614
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(payload, &payload_marker_SVs_map);  | 
| 
10615
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10616
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
10617
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10618 "Geos.xs.cc"  | 
| 
10618
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10619
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10620
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10621
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10622
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10623
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
10624
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10625
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10626
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
10627
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
10628
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10629
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
10630
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
10631
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10632
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10633
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10634
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10635
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10636
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10637
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10638
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10639
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10640
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10641
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__Quadtree_depth) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10642
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10643
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10644
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10645
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
10646
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
10648
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10649
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	quadtree::Quadtree*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10650
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10651
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/index/Quadtree.xsi"  | 
| 
10652
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->depth();  | 
| 
10653
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10654 "Geos.xs.cc"  | 
| 
10654
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10655
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10656
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10657
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10658
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10659
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10660
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10661
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__Quadtree_size) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10662
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10663
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10664
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10665
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
10666
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
10668
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10669
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	quadtree::Quadtree*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10670
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10671
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/index/Quadtree.xsi"  | 
| 
10672
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->size();  | 
| 
10673
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10674 "Geos.xs.cc"  | 
| 
10674
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10675
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10676
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10677
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10678
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10679
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10680
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10681
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__Quadtree_queryAll) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10682
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10683
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10684
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10685
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
10686
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10687
 | 
12
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
10688
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	quadtree::Quadtree*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10689
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10690
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 17 "./xsi/index/Quadtree.xsi"  | 
| 
10691
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
10692
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker_SVs_map);  | 
| 
10693
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto real_payload = static_cast(payload.ptr);  | 
| 
10694
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10695
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     std::unique_ptr> holder {THIS->queryAll()};  | 
| 
10696
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::wrap_inc_SVs(holder.get(), real_payload->map);  | 
| 
10697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10698 "Geos.xs.cc"  | 
| 
10698
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10699
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10700
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10701
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10702
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10703
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10704
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10705
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10706
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10707
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10708
 | 
6
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10709
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10710
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10711
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10712
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__Quadtree_toString) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10713
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10714
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10715
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1)  | 
| 
10716
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, ...");  | 
| 
10717
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10718
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::string	RETVAL;  | 
| 
10719
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10720
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	quadtree::Quadtree*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10721
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10722
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 25 "./xsi/index/Quadtree.xsi"  | 
| 
10723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->toString();  | 
| 
10724
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10725 "Geos.xs.cc"  | 
| 
10725
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHp(RETVAL.data(), RETVAL.length());  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10726
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10727
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10728
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10729
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/index/Quadtree.xsi' */  | 
| 
10732
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10733
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10734
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/index/STRtree.xsi' from 'Geos.xs' */  | 
| 
10735
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10736
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10737
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10738
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Index__STRtree_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10739
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10740
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10741
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 1 || items > 2)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10742
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV, nodeCapacity= 10");  | 
| 
10743
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10744
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
10745
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	std::size_t	nodeCapacity;  | 
| 
10746
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10747
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 2)  | 
| 
10748
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nodeCapacity = 10;  | 
| 
10749
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
10750
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nodeCapacity = xs::in(aTHX_ ST(1));  | 
| 
10751
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10752
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10753
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/index/STRtree.xsi"  | 
| 
10754
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out(new strtree::STRtree(nodeCapacity));  | 
| 
10755
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = new SVs_map_payload();  | 
| 
10756
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(payload, &payload_marker_SVs_map);  | 
| 
10757
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10758
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
10759
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10760 "Geos.xs.cc"  | 
| 
10760
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10761
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10762
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10763
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10764
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10765
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
10766
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10767
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10768
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
10769
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
10770
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10771
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
10772
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
10773
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10774
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10775
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10776
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10777
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10778
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10779
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10780
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10781
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10782
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/index/STRtree.xsi' */  | 
| 
10783
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10784
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10785
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/precision.xsi' from 'Geos.xs' */  | 
| 
10786
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10787
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10788
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10789
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_signExpBits) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10790
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10791
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10792
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
10793
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "num");  | 
| 
10794
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10795
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int64	RETVAL;  | 
| 
10796
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int64	num = xs::in(aTHX_ ST(0));  | 
| 
10797
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10798
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/precision.xsi"  | 
| 
10799
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
10800
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CommonBits::signExpBits(num);  | 
| 
10801
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10802 "Geos.xs.cc"  | 
| 
10802
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10803
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10804
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
10805
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10806
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10807
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10808
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10809
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10810
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10812
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10813
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10814
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_numCommonMostSigMantissaBits) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10815
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10816
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10817
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
10818
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "num1, num2");  | 
| 
10819
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10820
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
10821
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10822
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int64	num1 = xs::in(aTHX_ ST(0));  | 
| 
10823
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10824
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int64	num2 = xs::in(aTHX_ ST(1));  | 
| 
10825
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 9 "./xsi/precision.xsi"  | 
| 
10827
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CommonBits::numCommonMostSigMantissaBits(num1, num2);  | 
| 
10828
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10829 "Geos.xs.cc"  | 
| 
10829
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10830
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10831
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10832
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10833
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10835
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10836
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_zeroLowerBits) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10837
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10838
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10839
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
10840
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "bits, nBits");  | 
| 
10841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10842
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int64	RETVAL;  | 
| 
10843
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int64	bits = xs::in(aTHX_ ST(0));  | 
| 
10844
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10845
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	nBits = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10846
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 13 "./xsi/precision.xsi"  | 
| 
10848
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
10849
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CommonBits::zeroLowerBits(bits, nBits);  | 
| 
10850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10851 "Geos.xs.cc"  | 
| 
10851
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10852
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10853
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
10854
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10855
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10856
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10857
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10858
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10859
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10860
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10861
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10863
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_getBit) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10864
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10865
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10866
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
10867
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "bits, i");  | 
| 
10868
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10869
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
10870
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10871
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int64	bits = xs::in(aTHX_ ST(0));  | 
| 
10872
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10873
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	i = (int)SvIV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 17 "./xsi/precision.xsi"  | 
| 
10876
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = CommonBits::getBit (bits, i);  | 
| 
10877
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10878 "Geos.xs.cc"  | 
| 
10878
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10879
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10880
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10881
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10883
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10884
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10885
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_commonIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10886
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10887
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10888
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10889
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1, nReturnToOriginalPrecision= false");  | 
| 
10890
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10891
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
10892
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
10893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10894
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
10895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10896
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	nReturnToOriginalPrecision;  | 
| 
10897
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10898
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
10899
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = false;  | 
| 
10900
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
10901
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = (bool)SvTRUE(ST(2))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10902
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10903
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10904
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 21 "./xsi/precision.xsi"  | 
| 
10905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(CommonBitsOp(nReturnToOriginalPrecision).intersection(&g0, &g1));  | 
| 
10906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10907 "Geos.xs.cc"  | 
| 
10907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10908
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10909
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10910
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10911
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10912
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
10913
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10914
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10915
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
10916
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
10917
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10918
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
10919
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
10920
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10921
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10922
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10923
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10924
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10925
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10926
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10927
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10928
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10929
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10930
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_commonUnion) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10932
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10933
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10934
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1, nReturnToOriginalPrecision= false");  | 
| 
10935
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10936
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
10937
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
10938
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10939
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
10940
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10941
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	nReturnToOriginalPrecision;  | 
| 
10942
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10943
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
10944
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = false;  | 
| 
10945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
10946
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = (bool)SvTRUE(ST(2))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10947
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10948
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10949
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 25 "./xsi/precision.xsi"  | 
| 
10950
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(CommonBitsOp(nReturnToOriginalPrecision).Union(&g0, &g1));  | 
| 
10951
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10952 "Geos.xs.cc"  | 
| 
10952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10953
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10954
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
10955
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
10956
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10957
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
10958
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10959
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10960
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
10961
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
10962
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
10963
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
10964
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
10965
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10966
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
10967
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
10968
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
10970
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
10971
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
10972
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10974
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10975
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_commonDifference) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
10976
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
10977
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
10978
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10979
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1, nReturnToOriginalPrecision= false");  | 
| 
10980
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
10981
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
10982
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
10983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10984
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
10985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10986
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	nReturnToOriginalPrecision;  | 
| 
10987
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10988
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
10989
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = false;  | 
| 
10990
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
10991
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = (bool)SvTRUE(ST(2))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
10992
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
10993
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
10994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 29 "./xsi/precision.xsi"  | 
| 
10995
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(CommonBitsOp(nReturnToOriginalPrecision).difference(&g0, &g1));  | 
| 
10996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10997 "Geos.xs.cc"  | 
| 
10997
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
10998
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
10999
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11000
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11001
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11002
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11003
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11004
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11007
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11008
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11009
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11010
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11011
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11012
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11014
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11015
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11016
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11017
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11018
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11019
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11020
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_commonSymDifference) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11021
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11022
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11023
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11024
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1, nReturnToOriginalPrecision= false");  | 
| 
11025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11026
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11027
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11028
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11029
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11030
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11031
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	nReturnToOriginalPrecision;  | 
| 
11032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11033
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
11034
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = false;  | 
| 
11035
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
11036
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = (bool)SvTRUE(ST(2))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11037
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11038
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11039
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 33 "./xsi/precision.xsi"  | 
| 
11040
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(CommonBitsOp(nReturnToOriginalPrecision).symDifference(&g0, &g1));  | 
| 
11041
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11042 "Geos.xs.cc"  | 
| 
11042
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11044
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11045
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11046
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11047
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11048
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11049
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11050
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11052
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11053
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11054
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11056
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11057
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11059
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11060
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11061
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11064
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11065
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_commonBuffer) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11067
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11068
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11069
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, distance, nReturnToOriginalPrecision= false");  | 
| 
11070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11071
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11072
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11074
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	distance = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11075
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11076
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	nReturnToOriginalPrecision;  | 
| 
11077
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11078
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
11079
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = false;  | 
| 
11080
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
11081
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    nReturnToOriginalPrecision = (bool)SvTRUE(ST(2))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11082
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11084
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 37 "./xsi/precision.xsi"  | 
| 
11085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(CommonBitsOp(nReturnToOriginalPrecision).buffer(&g0, distance));  | 
| 
11086
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11087 "Geos.xs.cc"  | 
| 
11087
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11088
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11089
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11090
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11091
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11092
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11093
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11094
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11097
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11098
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11099
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11101
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11102
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11103
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11104
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11105
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11106
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11110
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_enhancedIntersection) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11112
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11113
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11114
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1");  | 
| 
11115
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11116
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11117
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11118
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11119
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11120
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11121
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 41 "./xsi/precision.xsi"  | 
| 
11122
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(EnhancedPrecisionOp().intersection(&g0, &g1));  | 
| 
11123
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11124 "Geos.xs.cc"  | 
| 
11124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11125
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11126
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11127
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11128
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11129
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11130
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11131
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11133
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11134
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11135
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11136
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11137
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11138
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11139
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11140
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11141
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11142
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11143
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11146
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11147
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_enhancedUnion) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11149
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11150
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11151
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1");  | 
| 
11152
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11153
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11154
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11155
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11156
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11157
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 45 "./xsi/precision.xsi"  | 
| 
11159
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(EnhancedPrecisionOp().Union(&g0, &g1));  | 
| 
11160
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11161 "Geos.xs.cc"  | 
| 
11161
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11162
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11163
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11164
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11165
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11166
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11167
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11168
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11169
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11170
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11171
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11172
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11173
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11174
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11175
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11176
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11179
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11180
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11181
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11182
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11183
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11184
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_enhancedDifference) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11185
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11186
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11187
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11188
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1");  | 
| 
11189
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11190
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11191
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11193
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11194
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11195
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 49 "./xsi/precision.xsi"  | 
| 
11196
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(EnhancedPrecisionOp().difference(&g0, &g1));  | 
| 
11197
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11198 "Geos.xs.cc"  | 
| 
11198
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11199
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11200
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11201
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11202
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11203
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11204
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11205
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11207
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11208
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11209
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11210
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11212
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11213
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11214
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11215
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11216
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11217
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11221
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_enhancedSymDifference) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11222
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11223
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11224
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11225
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1");  | 
| 
11226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11227
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11228
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11229
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11230
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11231
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11232
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 53 "./xsi/precision.xsi"  | 
| 
11233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(EnhancedPrecisionOp().symDifference(&g0, &g1));  | 
| 
11234
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11235 "Geos.xs.cc"  | 
| 
11235
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11236
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11237
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11238
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11239
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11240
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11241
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11242
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11243
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11244
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11245
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11246
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11247
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11249
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11250
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11251
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11252
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11253
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11254
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11255
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11257
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11258
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_enhancedBuffer) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11259
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11260
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11261
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11262
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g, distance");  | 
| 
11263
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11264
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11265
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
11266
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11267
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	distance = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11268
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 57 "./xsi/precision.xsi"  | 
| 
11270
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(EnhancedPrecisionOp().buffer(&g, distance));  | 
| 
11271
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11272 "Geos.xs.cc"  | 
| 
11272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11273
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11274
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11275
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11276
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11277
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11278
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11279
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11280
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11281
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11282
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11283
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11284
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11285
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11286
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11287
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11288
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11289
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11290
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11291
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11292
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11293
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11294
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11295
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision_removeCommonBits) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11296
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11297
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11298
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dXSI32;  | 
| 
11299
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11300
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "target, sources");  | 
| 
11301
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11302
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Coordinate *	RETVAL;  | 
| 
11303
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	target = xs::in(aTHX_ ST(0));  | 
| 
11304
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11305
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    sources = ST(1);  | 
| 
11306
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!sources && SvOK(ST(1))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11307
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 61 "./xsi/precision.xsi"  | 
| 
11309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
11310
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     CommonBitsRemover cbr;  | 
| 
11311
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(const auto& it: sources) {  | 
| 
11312
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cbr.add(&xs::in(it));  | 
| 
11313
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11314
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11315
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     switch (ix) {  | 
| 
11316
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         case 0:  cbr.removeCommonBits(&target); break;  | 
| 
11317
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         default: cbr.addCommonBits(&target); break;  | 
| 
11318
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11319
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = new Coordinate(cbr.getCommonCoordinate());  | 
| 
11320
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11321 "Geos.xs.cc"  | 
| 
11321
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11322
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11323
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
11324
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11325
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11326
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11327
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11328
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11329
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11330
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11331
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11332
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/precision.xsi' */  | 
| 
11333
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11334
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11335
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/precision/GeometryPrecisionReducer.xsi' from 'Geos.xs' */  | 
| 
11336
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11338
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11339
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__GeometryPrecisionReducer_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11340
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11341
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11342
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11343
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, arg0");  | 
| 
11344
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11345
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11346
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg0 = ST(1)  | 
| 
11347
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11348
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/precision/GeometryPrecisionReducer.xsi"  | 
| 
11349
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     GeometryPrecisionReducer* self;  | 
| 
11350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object arg{arg0};  | 
| 
11351
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (arg.stash().name() == "Geo::Geos::PrecisionModel") {  | 
| 
11352
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         PrecisionModel& pm = xs::in(arg);  | 
| 
11353
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         self = new GeometryPrecisionReducer(pm);  | 
| 
11354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
11356
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         GeometryFactory& gf = xs::in(arg);  | 
| 
11357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         self = new GeometryPrecisionReducer(gf);  | 
| 
11358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out(self);  | 
| 
11360
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(SvRV(arg0), &payload_marker);  | 
| 
11361
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
11362
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11363 "Geos.xs.cc"  | 
| 
11363
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11364
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11365
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11366
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11367
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11368
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11369
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11370
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11371
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11372
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11373
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11374
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11375
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11376
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11377
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11378
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11379
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11380
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11381
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11382
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11383
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11384
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11385
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11386
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__GeometryPrecisionReducer_setRemoveCollapsedComponents) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11387
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11388
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11389
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11390
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, remove");  | 
| 
11391
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
11392
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
11393
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11394
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryPrecisionReducer*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11395
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11396
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	remove = (bool)SvTRUE(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11397
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11398
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 20 "./xsi/precision/GeometryPrecisionReducer.xsi"  | 
| 
11399
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setRemoveCollapsedComponents(remove);  | 
| 
11400
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11401 "Geos.xs.cc"  | 
| 
11401
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
11402
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
11403
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11404
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11405
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11406
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11407
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11408
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__GeometryPrecisionReducer_setPointwise) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11409
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11410
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11411
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11412
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, pointwise");  | 
| 
11413
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
11414
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
11415
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11416
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryPrecisionReducer*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11417
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11418
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	pointwise = (bool)SvTRUE(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11419
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11420
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 22 "./xsi/precision/GeometryPrecisionReducer.xsi"  | 
| 
11421
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setPointwise(pointwise);  | 
| 
11422
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11423 "Geos.xs.cc"  | 
| 
11423
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
11424
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
11425
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11426
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11427
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11428
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11429
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11430
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__GeometryPrecisionReducer_reduce) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11431
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11432
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11433
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11434
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, g");  | 
| 
11435
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11436
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11437
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	GeometryPrecisionReducer*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11438
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11439
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(1));  | 
| 
11440
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11441
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 25 "./xsi/precision/GeometryPrecisionReducer.xsi"  | 
| 
11442
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto ptr = THIS->reduce(g);  | 
| 
11443
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(ptr.release());  | 
| 
11444
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11445 "Geos.xs.cc"  | 
| 
11445
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11446
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11447
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11448
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11449
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11450
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11451
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11452
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11453
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11454
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11455
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11456
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11457
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11458
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11459
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11460
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11461
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11462
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11463
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11464
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11465
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11466
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11467
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11468
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__GeometryPrecisionReducer_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11469
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11470
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11471
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
11472
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11473
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
11474
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11475
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 29 "./xsi/precision/GeometryPrecisionReducer.xsi"  | 
| 
11476
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
11477
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11478 "Geos.xs.cc"  | 
| 
11478
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11479
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11480
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11481
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11482
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11483
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11484
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/precision/GeometryPrecisionReducer.xsi' */  | 
| 
11485
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11486
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11487
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/precision/SimpleGeometryPrecisionReducer.xsi' from 'Geos.xs' */  | 
| 
11488
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11489
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11490
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11491
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11492
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11493
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11494
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11495
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, arg");  | 
| 
11496
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11497
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11498
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	arg = ST(1)  | 
| 
11499
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11500
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/precision/SimpleGeometryPrecisionReducer.xsi"  | 
| 
11501
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PrecisionModel& pm = xs::in(arg);  | 
| 
11502
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto self = new SimpleGeometryPrecisionReducer(&pm);  | 
| 
11503
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out(self);  | 
| 
11504
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(SvRV(arg), &payload_marker);  | 
| 
11505
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
11506
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11507 "Geos.xs.cc"  | 
| 
11507
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11508
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11509
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11510
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11511
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11512
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11513
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11514
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11515
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11516
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11517
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11518
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11519
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11520
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11521
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11522
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11523
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11524
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11525
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11526
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11527
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11528
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11529
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11530
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_getPrecisionModel) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11531
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11532
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11533
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
11534
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
11535
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11536
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11537
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SimpleGeometryPrecisionReducer*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11538
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11539
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 13 "./xsi/precision/SimpleGeometryPrecisionReducer.xsi"  | 
| 
11540
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
11541
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker);  | 
| 
11542
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object obj { payload.obj };  | 
| 
11543
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = obj.ref();  | 
| 
11544
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11545 "Geos.xs.cc"  | 
| 
11545
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11546
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11547
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11548
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11549
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11550
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11551
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11552
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11553
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11554
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11555
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11556
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11557
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11558
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11559
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11560
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11561
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11562
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11563
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11564
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11565
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11566
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11567
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11568
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_setRemoveCollapsedComponents) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11569
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11570
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11571
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11572
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, nRemoveCollapsed");  | 
| 
11573
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(ax); /* -Wall */  | 
| 
11574
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     SP -= items;  | 
| 
11575
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11576
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SimpleGeometryPrecisionReducer*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11577
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11578
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	nRemoveCollapsed = (bool)SvTRUE(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11579
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11580
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 19 "./xsi/precision/SimpleGeometryPrecisionReducer.xsi"  | 
| 
11581
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         THIS->setRemoveCollapsedComponents(nRemoveCollapsed);  | 
| 
11582
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11583 "Geos.xs.cc"  | 
| 
11583
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	PUTBACK;  | 
| 
11584
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	return;  | 
| 
11585
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11586
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11587
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11588
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11589
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11590
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_getRemoveCollapsed) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11591
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11592
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11593
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
11594
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
11595
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11596
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
11597
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SimpleGeometryPrecisionReducer*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11598
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11599
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 21 "./xsi/precision/SimpleGeometryPrecisionReducer.xsi"  | 
| 
11600
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = THIS->getRemoveCollapsed();  | 
| 
11601
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11602 "Geos.xs.cc"  | 
| 
11602
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
11603
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11604
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11605
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11606
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11607
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11608
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11609
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_reduce) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11610
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11611
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11612
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11613
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS, g");  | 
| 
11614
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11615
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11616
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SimpleGeometryPrecisionReducer*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11617
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11618
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(1));  | 
| 
11619
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11620
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 24 "./xsi/precision/SimpleGeometryPrecisionReducer.xsi"  | 
| 
11621
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(THIS->reduce(&g));  | 
| 
11622
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11623 "Geos.xs.cc"  | 
| 
11623
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11624
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11625
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11626
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11627
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11628
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11629
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11630
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11631
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11632
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11633
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11634
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11635
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11636
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11637
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11638
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11639
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11640
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11641
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11642
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11643
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11644
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11645
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11646
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_CLONE_SKIP) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11647
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11648
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11649
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
11650
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11651
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	int	RETVAL;  | 
| 
11652
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11653
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 27 "./xsi/precision/SimpleGeometryPrecisionReducer.xsi"  | 
| 
11654
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
  PERL_UNUSED_VAR(items); RETVAL = 1;   | 
| 
11655
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11656 "Geos.xs.cc"  | 
| 
11656
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHi((IV)RETVAL);  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11657
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11658
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11659
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11660
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11661
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11662
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/precision/SimpleGeometryPrecisionReducer.xsi' */  | 
| 
11663
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11664
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11665
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/operation.xsi' from 'Geos.xs' */  | 
| 
11666
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11667
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11668
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11669
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_buffer) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11670
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11671
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11672
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 4)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11673
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g, distance, quadrantSegments= NULL, endCapStyle= NULL");  | 
| 
11674
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11675
 | 
6
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11676
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
11677
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11678
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	distance = (double)SvNV(ST(1))  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11679
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11680
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	quadrantSegments;  | 
| 
11681
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	endCapStyle;  | 
| 
11682
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11683
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
11684
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    quadrantSegments = NULL;  | 
| 
11685
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
11686
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    quadrantSegments = ST(2)  | 
| 
11687
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11688
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11689
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11690
 | 
3
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
11691
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    endCapStyle = NULL;  | 
| 
11692
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
11693
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    endCapStyle = ST(3)  | 
| 
11694
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11695
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11696
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/operation.xsi"  | 
| 
11697
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     int vQuadrantSegments = quadrantSegments ? SvIV(quadrantSegments) : (int)BufferParameters::DEFAULT_QUADRANT_SEGMENTS;  | 
| 
11698
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     int vEndCapStyle = endCapStyle? SvIV(endCapStyle) : (int)BufferParameters::CAP_ROUND;  | 
| 
11699
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Geometry* r = BufferOp::bufferOp(&g, distance, vQuadrantSegments, vEndCapStyle);  | 
| 
11700
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(r);  | 
| 
11701
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11702 "Geos.xs.cc"  | 
| 
11702
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11703
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11704
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11705
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11706
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11707
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11708
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11709
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11710
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11711
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11712
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11713
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11714
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11715
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11716
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11717
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11718
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11719
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11720
 | 
3
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11721
 | 
3
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11722
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11723
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11724
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11725
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_distance) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11726
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11727
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11728
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11729
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1");  | 
| 
11730
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11731
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	double	RETVAL;  | 
| 
11732
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	dXSTARG;  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11733
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11734
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11735
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11736
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11737
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/operation.xsi"  | 
| 
11738
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = DistanceOp::distance(&g0, &g1);  | 
| 
11739
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11740 "Geos.xs.cc"  | 
| 
11740
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	XSprePUSH; PUSHn((double)RETVAL);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11741
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11742
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11743
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11744
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11745
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11746
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11747
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_nearestPoints) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11748
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11749
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11750
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11751
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1");  | 
| 
11752
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11753
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
11754
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11755
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11756
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11757
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11758
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 16 "./xsi/operation.xsi"  | 
| 
11759
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Array r;  | 
| 
11760
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = DistanceOp::nearestPoints(&g0, &g1);  | 
| 
11761
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if(seq) {  | 
| 
11762
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto seq_ptr = std::unique_ptr(seq);  | 
| 
11763
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         r = Helper::convert_copy(seq);  | 
| 
11764
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11765
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = r;  | 
| 
11766
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11767 "Geos.xs.cc"  | 
| 
11767
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11768
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11769
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11770
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11771
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11772
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11773
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11774
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11775
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11776
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11777
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11778
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11779
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11780
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11781
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_closestPoints) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11782
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11783
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11784
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 2)  | 
| 
11785
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1");  | 
| 
11786
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11787
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
11788
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11789
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11790
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11791
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11792
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 26 "./xsi/operation.xsi"  | 
| 
11793
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Array r;  | 
| 
11794
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto seq = DistanceOp::closestPoints(&g0, &g1);  | 
| 
11795
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if(seq) {  | 
| 
11796
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto seq_ptr = std::unique_ptr(seq);  | 
| 
11797
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         r = Helper::convert_copy(seq);  | 
| 
11798
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11799
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = r;  | 
| 
11800
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11801 "Geos.xs.cc"  | 
| 
11801
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11802
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11803
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11804
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11805
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11806
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11807
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11808
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11809
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11810
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11811
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11812
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11813
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11814
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11815
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_overlayOp) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11816
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11817
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11818
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 3)  | 
| 
11819
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1, opCode");  | 
| 
11820
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11821
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11822
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11823
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11824
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11825
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11826
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	uint	opCode = xs::in(aTHX_ ST(2));  | 
| 
11827
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11828
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 36 "./xsi/operation.xsi"  | 
| 
11829
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (opCode > 4) throw "wrong opCode";  | 
| 
11830
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     OverlayOp::OpCode code = static_cast(opCode);  | 
| 
11831
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Geometry* g = OverlayOp::overlayOp(&g0, &g1, code);  | 
| 
11832
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(g);  | 
| 
11833
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11834 "Geos.xs.cc"  | 
| 
11834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11835
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11836
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11837
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11838
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11839
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
11840
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11841
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11842
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
11843
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
11844
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11845
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
11846
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
11847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11848
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11849
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11851
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11852
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11853
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11854
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11855
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11856
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11857
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_isValid) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11858
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11859
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11860
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
11861
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "obj");  | 
| 
11862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11863
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
11864
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Object    obj = ST(0);  | 
| 
11865
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!obj && SvOK(ST(0))) throw "arg is not a blessed reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11866
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11867
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 43 "./xsi/operation.xsi"  | 
| 
11868
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (obj.stash().name() == "Geo::Geos::Coordinate") {  | 
| 
11869
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& c = xs::in(obj);  | 
| 
11870
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = IsValidOp::isValid(c);  | 
| 
11871
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11872
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
11873
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& g = xs::in(obj);  | 
| 
11874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = IsValidOp::isValid(g);  | 
| 
11875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11876
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11877 "Geos.xs.cc"  | 
| 
11877
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
11878
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11879
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11880
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11881
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11883
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11884
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_relate) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11885
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11886
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11887
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 2 || items > 3)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11888
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g0, g1, boundaryNodeRule= NULL");  | 
| 
11889
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11890
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	IntersectionMatrix *	RETVAL;  | 
| 
11891
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g0 = xs::in(aTHX_ ST(0));  | 
| 
11892
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11893
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g1 = xs::in(aTHX_ ST(1));  | 
| 
11894
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	boundaryNodeRule;  | 
| 
11896
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11897
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 3)  | 
| 
11898
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    boundaryNodeRule = NULL;  | 
| 
11899
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
11900
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    boundaryNodeRule = ST(2)  | 
| 
11901
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11902
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11903
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 54 "./xsi/operation.xsi"  | 
| 
11904
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::Sv PROTO; PERL_UNUSED_VAR(PROTO);  | 
| 
11905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!boundaryNodeRule) RETVAL = RelateOp::relate(&g0, &g1);  | 
| 
11906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
11907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         const BoundaryNodeRule* rule;  | 
| 
11908
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto rule_id = SvIV(boundaryNodeRule);  | 
| 
11909
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         switch(rule_id) {  | 
| 
11910
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             case 0: rule = &BoundaryNodeRule::getBoundaryRuleMod2(); break;  | 
| 
11911
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             case 1: rule = &BoundaryNodeRule::getBoundaryEndPoint(); break;  | 
| 
11912
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             case 2: rule = &BoundaryNodeRule::getBoundaryMultivalentEndPoint(); break;  | 
| 
11913
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             case 3: rule = &BoundaryNodeRule::getBoundaryMonovalentEndPoint(); break;  | 
| 
11914
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             case 4: rule = &BoundaryNodeRule::getBoundaryOGCSFS(); break;  | 
| 
11915
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
             default: throw("Wrong boundaryNodeRule");  | 
| 
11916
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         }  | 
| 
11917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         RETVAL = RelateOp::relate(&g0, &g1, *rule);  | 
| 
11918
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11920 "Geos.xs.cc"  | 
| 
11920
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11921
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11922
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = xs::out(aTHX_ RETVAL, PROTO).detach();  | 
| 
11923
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11924
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11925
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11926
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11927
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11928
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11929
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11930
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11932
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_mergeLines) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11933
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11934
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11935
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
11936
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "in");  | 
| 
11937
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11938
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array	RETVAL;  | 
| 
11939
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Array    in = ST(0);  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11940
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!in && SvOK(ST(0))) throw "arg is not a 'Array' reference"  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11941
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11942
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 71 "./xsi/operation.xsi"  | 
| 
11943
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     LineMerger lm;  | 
| 
11944
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(auto it: in) {  | 
| 
11946
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         lm.add(&xs::in(it));  | 
| 
11947
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11948
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11949
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto v = lm.getMergedLineStrings();  | 
| 
11950
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Array out = Array::create(v->size());  | 
| 
11951
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     for(LineString* it: *v) {  | 
| 
11952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto wrapped = xs::out(it);  | 
| 
11953
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         out.push(wrapped);  | 
| 
11954
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11955
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL  = out;  | 
| 
11956
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     delete v;  | 
| 
11957
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11958 "Geos.xs.cc"  | 
| 
11958
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
11959
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
11960
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
11961
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
11962
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
11963
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
11964
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
11965
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
11966
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11967
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11968
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11970
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11971
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11972
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_isSequenced) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11974
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11975
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
11976
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g");  | 
| 
11977
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11978
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	bool	RETVAL;  | 
| 
11979
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
11980
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
11981
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 88 "./xsi/operation.xsi"  | 
| 
11982
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = LineSequencer::isSequenced(&g);  | 
| 
11983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 11984 "Geos.xs.cc"  | 
| 
11984
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	ST(0) = boolSV(RETVAL);  | 
| 
11985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
11986
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
11987
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
11988
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11989
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11990
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
11991
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Operation_sequence) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
11992
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
11993
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
11994
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
11995
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "g");  | 
| 
11996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
11997
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
11998
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Geometry&	g = xs::in(aTHX_ ST(0));  | 
| 
11999
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12000
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 92 "./xsi/operation.xsi"  | 
| 
12001
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(LineSequencer::sequence(g));  | 
| 
12002
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12003 "Geos.xs.cc"  | 
| 
12003
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
12004
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
12005
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
12006
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
12007
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12008
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
12009
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12010
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12011
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
12012
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
12013
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
12014
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
12015
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
12016
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12017
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
12018
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
12019
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12020
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12021
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
12022
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
12023
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12024
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/operation.xsi' */  | 
| 
12026
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12027
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12028
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/triangulate/DelaunayTriangulationBuilder.xsi' from 'Geos.xs' */  | 
| 
12029
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12030
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12031
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12032
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangulate__DelaunayTriangulationBuilder_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
12033
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
12034
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
12035
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 3 || items > 4)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12036
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, geometry_factory, sites, tolerance= NULL");  | 
| 
12037
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12038
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
12039
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	geometry_factory = ST(1)  | 
| 
12040
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12041
 | 
4
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv    sites = ST(2)  | 
| 
12042
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	tolerance;  | 
| 
12044
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12045
 | 
2
 | 
  
100
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
12046
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    tolerance = NULL;  | 
| 
12047
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
12048
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    tolerance = ST(3)  | 
| 
12049
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12050
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/triangulate/DelaunayTriangulationBuilder.xsi"  | 
| 
12052
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto builder = std::unique_ptr(new DelaunayTriangulationBuilder());  | 
| 
12053
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     GeometryFactory* factory = xs::in(geometry_factory);  | 
| 
12054
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (sites.is_array_ref()) {  | 
| 
12056
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto seq = std::unique_ptr(Helper::convert_copy(*factory, sites, 2));  | 
| 
12057
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         builder->setSites(*seq);  | 
| 
12058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12059
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
12060
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& g = xs::in(sites);  | 
| 
12061
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         builder->setSites(g);  | 
| 
12062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12064
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (tolerance) {  | 
| 
12065
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         builder->setTolerance(Simple(tolerance));  | 
| 
12066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12068
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out(builder.release());  | 
| 
12069
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(SvRV(geometry_factory), &payload_marker);  | 
| 
12070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
12071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12072 "Geos.xs.cc"  | 
| 
12072
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
12073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
12074
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
12075
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
12076
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12077
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
12078
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12079
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12080
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
12081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
12082
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
12083
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
12084
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
12085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12086
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
12087
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
12088
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12089
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12090
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
12091
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
12092
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12093
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12094
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12095
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangulate__DelaunayTriangulationBuilder_getEdges) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
12096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
12097
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
12098
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
12099
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
12100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12101
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
12102
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	DelaunayTriangulationBuilder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12103
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12104
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 27 "./xsi/triangulate/DelaunayTriangulationBuilder.xsi"  | 
| 
12105
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
12106
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker);  | 
| 
12107
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     GeometryFactory* factory = xs::in(payload.obj);  | 
| 
12108
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto edges = THIS->getEdges(*factory);  | 
| 
12109
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(edges.release());  | 
| 
12110
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12111 "Geos.xs.cc"  | 
| 
12111
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
12112
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
12113
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
12114
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
12115
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12116
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
12117
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12118
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12119
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
12120
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
12121
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
12122
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
12123
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
12124
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12125
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
12126
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
12127
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12128
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12129
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
12130
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
12131
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12132
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12133
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12134
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangulate__DelaunayTriangulationBuilder_getTriangles) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
12135
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
12136
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
12137
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
12138
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
12139
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12140
 | 
4
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
12141
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	DelaunayTriangulationBuilder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12142
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12143
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 35 "./xsi/triangulate/DelaunayTriangulationBuilder.xsi"  | 
| 
12144
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
12145
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker);  | 
| 
12146
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     GeometryFactory* factory = xs::in(payload.obj);  | 
| 
12147
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto edges = THIS->getTriangles(*factory);  | 
| 
12148
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(edges.release());  | 
| 
12149
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12150 "Geos.xs.cc"  | 
| 
12150
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
12151
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
12152
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
12153
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
12154
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12155
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
12156
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12157
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12158
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
12159
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
12160
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
12161
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
12162
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
12163
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12164
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
12165
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
12166
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12167
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12168
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
12169
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
12170
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12171
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12172
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/triangulate/DelaunayTriangulationBuilder.xsi' */  | 
| 
12173
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12174
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12175
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE:  Including 'xsi/triangulate/VoronoiDiagramBuilder.xsi' from 'Geos.xs' */  | 
| 
12176
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12177
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12178
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12179
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangulate__VoronoiDiagramBuilder_new) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
12180
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
12181
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
12182
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items < 3 || items > 5)  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12183
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "SV*, geometry_factory, sites, tolerance= NULL, env= NULL");  | 
| 
12184
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12185
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
12186
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	geometry_factory = ST(1)  | 
| 
12187
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12188
 | 
2
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv    sites = ST(2)  | 
| 
12189
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12190
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	tolerance;  | 
| 
12191
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	SV*	env;  | 
| 
12192
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12193
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 4)  | 
| 
12194
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    tolerance = NULL;  | 
| 
12195
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
12196
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    tolerance = ST(3)  | 
| 
12197
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12198
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12199
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12200
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	if (items < 5)  | 
| 
12201
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    env = NULL;  | 
| 
12202
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	else {  | 
| 
12203
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    env = ST(4)  | 
| 
12204
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12205
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12206
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 5 "./xsi/triangulate/VoronoiDiagramBuilder.xsi"  | 
| 
12207
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto builder = std::unique_ptr(new VoronoiDiagramBuilder());  | 
| 
12208
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     GeometryFactory* factory = xs::in(geometry_factory);  | 
| 
12209
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12210
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (sites.is_array_ref()) {  | 
| 
12211
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto seq = std::unique_ptr(Helper::convert_copy(*factory, sites, 2));  | 
| 
12212
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         builder->setSites(*seq);  | 
| 
12213
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12214
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else {  | 
| 
12215
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto& g = xs::in(sites);  | 
| 
12216
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         builder->setSites(g);  | 
| 
12217
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12218
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12219
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (tolerance) {  | 
| 
12220
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         builder->setTolerance(Simple(tolerance));  | 
| 
12221
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12222
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12223
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (env) {  | 
| 
12224
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         auto envelope = xs::in(env);  | 
| 
12225
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         builder->setClipEnvelope(envelope);  | 
| 
12226
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12227
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12228
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object wrapped = xs::out(builder.release());  | 
| 
12229
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     wrapped.payload_attach(SvRV(geometry_factory), &payload_marker);  | 
| 
12230
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = wrapped.ref();  | 
| 
12231
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12232 "Geos.xs.cc"  | 
| 
12232
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
12233
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
12234
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
12235
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
12236
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12237
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
12238
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12239
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12240
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
12241
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
12242
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
12243
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
12244
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
12245
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12246
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
12247
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
12248
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12249
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12250
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
12251
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
12252
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12253
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12254
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12255
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangulate__VoronoiDiagramBuilder_getDiagramEdges) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
12256
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
12257
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
12258
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
12259
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
12260
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12261
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
12262
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	VoronoiDiagramBuilder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12263
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12264
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 32 "./xsi/triangulate/VoronoiDiagramBuilder.xsi"  | 
| 
12265
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
12266
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker);  | 
| 
12267
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     GeometryFactory* factory = xs::in(payload.obj);  | 
| 
12268
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto edges = THIS->getDiagramEdges(*factory);  | 
| 
12269
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(edges.release());  | 
| 
12270
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12271 "Geos.xs.cc"  | 
| 
12271
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
12272
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
12273
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
12274
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
12275
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12276
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
12277
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12278
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12279
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
12280
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
12281
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
12282
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
12283
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
12284
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12285
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
12286
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
12287
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12288
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12289
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
12290
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
12291
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12292
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12293
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12294
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EUPXS(XS_Geo__Geos__Triangulate__VoronoiDiagramBuilder_getDiagram) { xs::throw_guard(aTHX_ cv, [=]()   | 
| 
12295
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
12296
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
12297
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (items != 1)  | 
| 
12298
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
        croak_xs_usage(cv,  "THIS");  | 
| 
12299
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12300
 | 
2
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	Sv	RETVAL;  | 
| 
12301
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	VoronoiDiagramBuilder*	THIS = xs::in(aTHX_ ST(0)); if (!SvOK(ST(0))) throw "undef not allowed as THIS";  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12302
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 ;  | 
| 
12303
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 40 "./xsi/triangulate/VoronoiDiagramBuilder.xsi"  | 
| 
12304
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Object me{ST(0)};  | 
| 
12305
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto payload = me.payload(&payload_marker);  | 
| 
12306
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     GeometryFactory* factory = xs::in(payload.obj);  | 
| 
12307
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto edges = THIS->getDiagram(*factory);  | 
| 
12308
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVAL = Helper::uplift(edges.release());  | 
| 
12309
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12310 "Geos.xs.cc"  | 
| 
12310
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	{  | 
| 
12311
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    SV * RETVALSV;  | 
| 
12312
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     RETVALSV = NULL;  | 
| 
12313
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (!RETVAL) XSRETURN_UNDEF;  | 
| 
12314
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (RETVAL.is_scalar()) RETVALSV = RETVAL.detach();  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12315
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     else switch (RETVAL.type()) {  | 
| 
12316
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVAV: XSRETURN(xs::Array(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12317
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVHV: XSRETURN(xs::Hash(RETVAL.get()).push_on_stack(MARK));  | 
| 
 
 | 
 
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12318
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVCV:  | 
| 
12319
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    case SVt_PVIO:  | 
| 
12320
 | 
  
0
  
 | 
  
  0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		RETVALSV = newRV_noinc(RETVAL.detach());  | 
| 
12321
 | 
  
0
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 		break;  | 
| 
12322
 | 
0
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    default: throw "unknown type of Sv to return";  | 
| 
12323
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12324
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    RETVALSV = sv_2mortal(RETVALSV);  | 
| 
12325
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	    ST(0) = RETVALSV;  | 
| 
12326
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 	}  | 
| 
12327
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12328
 | 
1
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN(1);  | 
| 
12329
 | 
1
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
12330
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12331
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12332
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 /* INCLUDE: Returning to 'Geos.xs' from 'xsi/triangulate/VoronoiDiagramBuilder.xsi' */  | 
| 
12333
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12334
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #ifdef __cplusplus  | 
| 
12335
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 extern "C"  | 
| 
12336
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
12337
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12338
 | 
92
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 XS_EXTERNAL(boot_Geo__Geos) { xs::throw_guard(aTHX_ cv, [=]() mutable  | 
| 
12339
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 {  | 
| 
12340
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #if PERL_VERSION_LE(5, 21, 5)  | 
| 
12341
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSARGS;  | 
| 
12342
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #else  | 
| 
12343
 | 
46
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     dVAR; dXSBOOTARGSXSAPIVERCHK;  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12344
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
12345
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #if (PERL_REVISION == 5 && PERL_VERSION < 9)  | 
| 
12346
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     char* file = __FILE__;  | 
| 
12347
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #else  | 
| 
12348
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     const char* file = __FILE__;  | 
| 
12349
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
12350
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12351
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(file);  | 
| 
12352
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12353
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(cv); /* -W */  | 
| 
12354
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     PERL_UNUSED_VAR(items); /* -W */  | 
| 
12355
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #if PERL_VERSION_LE(5, 21, 5)  | 
| 
12356
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XS_VERSION_BOOTCHECK;  | 
| 
12357
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  ifdef XS_APIVERSION_BOOTCHECK  | 
| 
12358
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XS_APIVERSION_BOOTCHECK;  | 
| 
12359
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  endif  | 
| 
12360
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
12361
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12362
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::getNull", XS_Geo__Geos__Coordinate_getNull);  | 
| 
12363
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::new", XS_Geo__Geos__Coordinate_new);  | 
| 
12364
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Coordinate::x", XS_Geo__Geos__Coordinate_x);  | 
| 
12365
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 0;  | 
| 
12366
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Coordinate::y", XS_Geo__Geos__Coordinate_x);  | 
| 
12367
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 1;  | 
| 
12368
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Coordinate::z", XS_Geo__Geos__Coordinate_x);  | 
| 
12369
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 2;  | 
| 
12370
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::setNull", XS_Geo__Geos__Coordinate_setNull);  | 
| 
12371
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::isNull", XS_Geo__Geos__Coordinate_isNull);  | 
| 
12372
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::equals", XS_Geo__Geos__Coordinate_equals);  | 
| 
12373
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::equals2D", XS_Geo__Geos__Coordinate_equals2D);  | 
| 
12374
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::equals3D", XS_Geo__Geos__Coordinate_equals3D);  | 
| 
12375
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::compareTo", XS_Geo__Geos__Coordinate_compareTo);  | 
| 
12376
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::eq", XS_Geo__Geos__Coordinate_eq);  | 
| 
12377
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::toString", XS_Geo__Geos__Coordinate_toString);  | 
| 
12378
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::distance", XS_Geo__Geos__Coordinate_distance);  | 
| 
12379
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::hashCode", XS_Geo__Geos__Coordinate_hashCode);  | 
| 
12380
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Coordinate::CLONE_SKIP", XS_Geo__Geos__Coordinate_CLONE_SKIP);  | 
| 
12381
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Dimension::toDimensionSymbol", XS_Geo__Geos__Dimension_toDimensionSymbol);  | 
| 
12382
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Dimension::toDimensionValue", XS_Geo__Geos__Dimension_toDimensionValue);  | 
| 
12383
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::new", XS_Geo__Geos__Envelope_new);  | 
| 
12384
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::init", XS_Geo__Geos__Envelope_init);  | 
| 
12385
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::setToNull", XS_Geo__Geos__Envelope_setToNull);  | 
| 
12386
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::getArea", XS_Geo__Geos__Envelope_getArea);  | 
| 
12387
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::getMaxY", XS_Geo__Geos__Envelope_getMaxY);  | 
| 
12388
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::getMaxX", XS_Geo__Geos__Envelope_getMaxX);  | 
| 
12389
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::getMinY", XS_Geo__Geos__Envelope_getMinY);  | 
| 
12390
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::getMinX", XS_Geo__Geos__Envelope_getMinX);  | 
| 
12391
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::getWidth", XS_Geo__Geos__Envelope_getWidth);  | 
| 
12392
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::getHeight", XS_Geo__Geos__Envelope_getHeight);  | 
| 
12393
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::isNull", XS_Geo__Geos__Envelope_isNull);  | 
| 
12394
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::hashCode", XS_Geo__Geos__Envelope_hashCode);  | 
| 
12395
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::toString", XS_Geo__Geos__Envelope_toString);  | 
| 
12396
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::eq", XS_Geo__Geos__Envelope_eq);  | 
| 
12397
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::centre", XS_Geo__Geos__Envelope_centre);  | 
| 
12398
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::contains", XS_Geo__Geos__Envelope_contains);  | 
| 
12399
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::covers", XS_Geo__Geos__Envelope_covers);  | 
| 
12400
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::intersects", XS_Geo__Geos__Envelope_intersects);  | 
| 
12401
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::expandToInclude", XS_Geo__Geos__Envelope_expandToInclude);  | 
| 
12402
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::distance", XS_Geo__Geos__Envelope_distance);  | 
| 
12403
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::translate", XS_Geo__Geos__Envelope_translate);  | 
| 
12404
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::expandBy", XS_Geo__Geos__Envelope_expandBy);  | 
| 
12405
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::intersection", XS_Geo__Geos__Envelope_intersection);  | 
| 
12406
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Envelope::CLONE_SKIP", XS_Geo__Geos__Envelope_CLONE_SKIP);  | 
| 
12407
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::new", XS_Geo__Geos__PrecisionModel_new);  | 
| 
12408
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::getScale", XS_Geo__Geos__PrecisionModel_getScale);  | 
| 
12409
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::getOffsetX", XS_Geo__Geos__PrecisionModel_getOffsetX);  | 
| 
12410
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::getOffsetY", XS_Geo__Geos__PrecisionModel_getOffsetY);  | 
| 
12411
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::isFloating", XS_Geo__Geos__PrecisionModel_isFloating);  | 
| 
12412
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::getMaximumSignificantDigits", XS_Geo__Geos__PrecisionModel_getMaximumSignificantDigits);  | 
| 
12413
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::getType", XS_Geo__Geos__PrecisionModel_getType);  | 
| 
12414
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::makePrecise", XS_Geo__Geos__PrecisionModel_makePrecise);  | 
| 
12415
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::toString", XS_Geo__Geos__PrecisionModel_toString);  | 
| 
12416
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::PrecisionModel::compareTo", XS_Geo__Geos__PrecisionModel_compareTo);  | 
| 
12417
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::new", XS_Geo__Geos__IntersectionMatrix_new);  | 
| 
12418
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::matches", XS_Geo__Geos__IntersectionMatrix_matches);  | 
| 
12419
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::add", XS_Geo__Geos__IntersectionMatrix_add);  | 
| 
12420
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::set", XS_Geo__Geos__IntersectionMatrix_set);  | 
| 
12421
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::setAtLeast", XS_Geo__Geos__IntersectionMatrix_setAtLeast);  | 
| 
12422
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::setAll", XS_Geo__Geos__IntersectionMatrix_setAll);  | 
| 
12423
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::setAtLeastIfValid", XS_Geo__Geos__IntersectionMatrix_setAtLeastIfValid);  | 
| 
12424
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::get", XS_Geo__Geos__IntersectionMatrix_get);  | 
| 
12425
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isDisjoint", XS_Geo__Geos__IntersectionMatrix_isDisjoint);  | 
| 
12426
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isIntersects", XS_Geo__Geos__IntersectionMatrix_isIntersects);  | 
| 
12427
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isWithin", XS_Geo__Geos__IntersectionMatrix_isWithin);  | 
| 
12428
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isContains", XS_Geo__Geos__IntersectionMatrix_isContains);  | 
| 
12429
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isCovers", XS_Geo__Geos__IntersectionMatrix_isCovers);  | 
| 
12430
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isCoveredBy", XS_Geo__Geos__IntersectionMatrix_isCoveredBy);  | 
| 
12431
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isTouches", XS_Geo__Geos__IntersectionMatrix_isTouches);  | 
| 
12432
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isCrosses", XS_Geo__Geos__IntersectionMatrix_isCrosses);  | 
| 
12433
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isEquals", XS_Geo__Geos__IntersectionMatrix_isEquals);  | 
| 
12434
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::isOverlaps", XS_Geo__Geos__IntersectionMatrix_isOverlaps);  | 
| 
12435
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::transpose", XS_Geo__Geos__IntersectionMatrix_transpose);  | 
| 
12436
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::toString", XS_Geo__Geos__IntersectionMatrix_toString);  | 
| 
12437
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::IntersectionMatrix::CLONE_SKIP", XS_Geo__Geos__IntersectionMatrix_CLONE_SKIP);  | 
| 
12438
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangle::new", XS_Geo__Geos__Triangle_new);  | 
| 
12439
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Triangle::p0", XS_Geo__Geos__Triangle_p0);  | 
| 
12440
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 0;  | 
| 
12441
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Triangle::p1", XS_Geo__Geos__Triangle_p0);  | 
| 
12442
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 1;  | 
| 
12443
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Triangle::p2", XS_Geo__Geos__Triangle_p0);  | 
| 
12444
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 2;  | 
| 
12445
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangle::inCentre", XS_Geo__Geos__Triangle_inCentre);  | 
| 
12446
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangle::circumcentre", XS_Geo__Geos__Triangle_circumcentre);  | 
| 
12447
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Triangle::isInCircleNonRobust", XS_Geo__Geos__Triangle_isInCircleNonRobust);  | 
| 
12448
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 0;  | 
| 
12449
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Triangle::isInCircleNormalized", XS_Geo__Geos__Triangle_isInCircleNonRobust);  | 
| 
12450
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 1;  | 
| 
12451
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Triangle::isInCircleRobust", XS_Geo__Geos__Triangle_isInCircleNonRobust);  | 
| 
12452
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 2;  | 
| 
12453
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangle::CLONE_SKIP", XS_Geo__Geos__Triangle_CLONE_SKIP);  | 
| 
12454
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::new", XS_Geo__Geos__LineSegment_new);  | 
| 
12455
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::getLength", XS_Geo__Geos__LineSegment_getLength);  | 
| 
12456
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::isHorizontal", XS_Geo__Geos__LineSegment_isHorizontal);  | 
| 
12457
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::isVertical", XS_Geo__Geos__LineSegment_isVertical);  | 
| 
12458
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::setCoordinates", XS_Geo__Geos__LineSegment_setCoordinates);  | 
| 
12459
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::orientationIndex", XS_Geo__Geos__LineSegment_orientationIndex);  | 
| 
12460
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::reverse", XS_Geo__Geos__LineSegment_reverse);  | 
| 
12461
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::normalize", XS_Geo__Geos__LineSegment_normalize);  | 
| 
12462
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::angle", XS_Geo__Geos__LineSegment_angle);  | 
| 
12463
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::midPoint", XS_Geo__Geos__LineSegment_midPoint);  | 
| 
12464
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::distance", XS_Geo__Geos__LineSegment_distance);  | 
| 
12465
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::distancePerpendicular", XS_Geo__Geos__LineSegment_distancePerpendicular);  | 
| 
12466
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::pointAlong", XS_Geo__Geos__LineSegment_pointAlong);  | 
| 
12467
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::pointAlongOffset", XS_Geo__Geos__LineSegment_pointAlongOffset);  | 
| 
12468
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::projectionFactor", XS_Geo__Geos__LineSegment_projectionFactor);  | 
| 
12469
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::segmentFraction", XS_Geo__Geos__LineSegment_segmentFraction);  | 
| 
12470
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::project", XS_Geo__Geos__LineSegment_project);  | 
| 
12471
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::closestPoint", XS_Geo__Geos__LineSegment_closestPoint);  | 
| 
12472
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::compareTo", XS_Geo__Geos__LineSegment_compareTo);  | 
| 
12473
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::equalsTopo", XS_Geo__Geos__LineSegment_equalsTopo);  | 
| 
12474
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::closestPoints", XS_Geo__Geos__LineSegment_closestPoints);  | 
| 
12475
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::intersection", XS_Geo__Geos__LineSegment_intersection);  | 
| 
12476
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::lineIntersection", XS_Geo__Geos__LineSegment_lineIntersection);  | 
| 
12477
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::toGeometry", XS_Geo__Geos__LineSegment_toGeometry);  | 
| 
12478
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::toString", XS_Geo__Geos__LineSegment_toString);  | 
| 
12479
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::LineSegment::p0", XS_Geo__Geos__LineSegment_p0);  | 
| 
12480
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 0;  | 
| 
12481
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::LineSegment::p1", XS_Geo__Geos__LineSegment_p0);  | 
| 
12482
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 1;  | 
| 
12483
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineSegment::CLONE_SKIP", XS_Geo__Geos__LineSegment_CLONE_SKIP);  | 
| 
12484
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::create", XS_Geo__Geos__GeometryFactory_create);  | 
| 
12485
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::getPrecisionModel", XS_Geo__Geos__GeometryFactory_getPrecisionModel);  | 
| 
12486
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::getSRID", XS_Geo__Geos__GeometryFactory_getSRID);  | 
| 
12487
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::createGeometryCollection", XS_Geo__Geos__GeometryFactory_createGeometryCollection);  | 
| 
12488
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::createPoint", XS_Geo__Geos__GeometryFactory_createPoint);  | 
| 
12489
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::createMultiPoint", XS_Geo__Geos__GeometryFactory_createMultiPoint);  | 
| 
12490
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::createLineString", XS_Geo__Geos__GeometryFactory_createLineString);  | 
| 
12491
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::createMultiLineString", XS_Geo__Geos__GeometryFactory_createMultiLineString);  | 
| 
12492
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::createLinearRing", XS_Geo__Geos__GeometryFactory_createLinearRing);  | 
| 
12493
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::createPolygon", XS_Geo__Geos__GeometryFactory_createPolygon);  | 
| 
12494
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::createMultiPolygon", XS_Geo__Geos__GeometryFactory_createMultiPolygon);  | 
| 
12495
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::toGeometry", XS_Geo__Geos__GeometryFactory_toGeometry);  | 
| 
12496
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::createEmptyGeometry", XS_Geo__Geos__GeometryFactory_createEmptyGeometry);  | 
| 
12497
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryFactory::CLONE_SKIP", XS_Geo__Geos__GeometryFactory_CLONE_SKIP);  | 
| 
12498
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getSRID", XS_Geo__Geos__Geometry_getSRID);  | 
| 
12499
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::setSRID", XS_Geo__Geos__Geometry_setSRID);  | 
| 
12500
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::isEmpty", XS_Geo__Geos__Geometry_isEmpty);  | 
| 
12501
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::isSimple", XS_Geo__Geos__Geometry_isSimple);  | 
| 
12502
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::isRectangle", XS_Geo__Geos__Geometry_isRectangle);  | 
| 
12503
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::isValid", XS_Geo__Geos__Geometry_isValid);  | 
| 
12504
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getNumPoints", XS_Geo__Geos__Geometry_getNumPoints);  | 
| 
12505
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getDimension", XS_Geo__Geos__Geometry_getDimension);  | 
| 
12506
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getCoordinateDimension", XS_Geo__Geos__Geometry_getCoordinateDimension);  | 
| 
12507
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getBoundaryDimension", XS_Geo__Geos__Geometry_getBoundaryDimension);  | 
| 
12508
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getNumGeometries", XS_Geo__Geos__Geometry_getNumGeometries);  | 
| 
12509
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::reverse", XS_Geo__Geos__Geometry_reverse);  | 
| 
12510
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getGeometryN", XS_Geo__Geos__Geometry_getGeometryN);  | 
| 
12511
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getCoordinate", XS_Geo__Geos__Geometry_getCoordinate);  | 
| 
12512
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getGeometryType", XS_Geo__Geos__Geometry_getGeometryType);  | 
| 
12513
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getGeometryTypeId", XS_Geo__Geos__Geometry_getGeometryTypeId);  | 
| 
12514
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::toString", XS_Geo__Geos__Geometry_toString);  | 
| 
12515
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::toText", XS_Geo__Geos__Geometry_toText);  | 
| 
12516
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::equalsExact", XS_Geo__Geos__Geometry_equalsExact);  | 
| 
12517
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::equals", XS_Geo__Geos__Geometry_equals);  | 
| 
12518
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::compareTo", XS_Geo__Geos__Geometry_compareTo);  | 
| 
12519
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getBoundary", XS_Geo__Geos__Geometry_getBoundary);  | 
| 
12520
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getArea", XS_Geo__Geos__Geometry_getArea);  | 
| 
12521
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getLength", XS_Geo__Geos__Geometry_getLength);  | 
| 
12522
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::distance", XS_Geo__Geos__Geometry_distance);  | 
| 
12523
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::isWithinDistance", XS_Geo__Geos__Geometry_isWithinDistance);  | 
| 
12524
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getCentroid", XS_Geo__Geos__Geometry_getCentroid);  | 
| 
12525
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getInteriorPoint", XS_Geo__Geos__Geometry_getInteriorPoint);  | 
| 
12526
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::symDifference", XS_Geo__Geos__Geometry_symDifference);  | 
| 
12527
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::difference", XS_Geo__Geos__Geometry_difference);  | 
| 
12528
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::Union", XS_Geo__Geos__Geometry_Union);  | 
| 
12529
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::intersection", XS_Geo__Geos__Geometry_intersection);  | 
| 
12530
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::convexHull", XS_Geo__Geos__Geometry_convexHull);  | 
| 
12531
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::buffer", XS_Geo__Geos__Geometry_buffer);  | 
| 
12532
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::coveredBy", XS_Geo__Geos__Geometry_coveredBy);  | 
| 
12533
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::covers", XS_Geo__Geos__Geometry_covers);  | 
| 
12534
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::overlaps", XS_Geo__Geos__Geometry_overlaps);  | 
| 
12535
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::contains", XS_Geo__Geos__Geometry_contains);  | 
| 
12536
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::within", XS_Geo__Geos__Geometry_within);  | 
| 
12537
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::crosses", XS_Geo__Geos__Geometry_crosses);  | 
| 
12538
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::intersects", XS_Geo__Geos__Geometry_intersects);  | 
| 
12539
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::touches", XS_Geo__Geos__Geometry_touches);  | 
| 
12540
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::disjoint", XS_Geo__Geos__Geometry_disjoint);  | 
| 
12541
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getEnvelope", XS_Geo__Geos__Geometry_getEnvelope);  | 
| 
12542
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::clone", XS_Geo__Geos__Geometry_clone);  | 
| 
12543
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getPrecisionModel", XS_Geo__Geos__Geometry_getPrecisionModel);  | 
| 
12544
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::getCoordinates", XS_Geo__Geos__Geometry_getCoordinates);  | 
| 
12545
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::relate", XS_Geo__Geos__Geometry_relate);  | 
| 
12546
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::normalize", XS_Geo__Geos__Geometry_normalize);  | 
| 
12547
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::CLONE_SKIP", XS_Geo__Geos__Geometry_CLONE_SKIP);  | 
| 
12548
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Geometry::HOOK_CLONE", XS_Geo__Geos__Geometry_HOOK_CLONE);  | 
| 
12549
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::GeometryCollection::CLONE_SKIP", XS_Geo__Geos__GeometryCollection_CLONE_SKIP);  | 
| 
12550
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Point::getX", XS_Geo__Geos__Point_getX);  | 
| 
12551
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Point::getY", XS_Geo__Geos__Point_getY);  | 
| 
12552
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Point::reverse", XS_Geo__Geos__Point_reverse);  | 
| 
12553
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::MultiPoint::CLONE_SKIP", XS_Geo__Geos__MultiPoint_CLONE_SKIP);  | 
| 
12554
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineString::getPointN", XS_Geo__Geos__LineString_getPointN);  | 
| 
12555
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineString::getStartPoint", XS_Geo__Geos__LineString_getStartPoint);  | 
| 
12556
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineString::getEndPoint", XS_Geo__Geos__LineString_getEndPoint);  | 
| 
12557
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineString::isClosed", XS_Geo__Geos__LineString_isClosed);  | 
| 
12558
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LineString::isRing", XS_Geo__Geos__LineString_isRing);  | 
| 
12559
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::MultiLineString::isClosed", XS_Geo__Geos__MultiLineString_isClosed);  | 
| 
12560
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::LinearRing::reverse", XS_Geo__Geos__LinearRing_reverse);  | 
| 
12561
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Polygon::getExteriorRing", XS_Geo__Geos__Polygon_getExteriorRing);  | 
| 
12562
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Polygon::getInteriorRingN", XS_Geo__Geos__Polygon_getInteriorRingN);  | 
| 
12563
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Polygon::getNumInteriorRing", XS_Geo__Geos__Polygon_getNumInteriorRing);  | 
| 
12564
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Polygon::tesselate", XS_Geo__Geos__Polygon_tesselate);  | 
| 
12565
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Polygon::CLONE_SKIP", XS_Geo__Geos__Polygon_CLONE_SKIP);  | 
| 
12566
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::MultiPolygon::CLONE_SKIP", XS_Geo__Geos__MultiPolygon_CLONE_SKIP);  | 
| 
12567
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBConstants::CLONE_SKIP", XS_Geo__Geos__WKBConstants_CLONE_SKIP);  | 
| 
12568
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::new", XS_Geo__Geos__WKBWriter_new);  | 
| 
12569
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::getOutputDimension", XS_Geo__Geos__WKBWriter_getOutputDimension);  | 
| 
12570
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::setOutputDimension", XS_Geo__Geos__WKBWriter_setOutputDimension);  | 
| 
12571
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::getByteOrder", XS_Geo__Geos__WKBWriter_getByteOrder);  | 
| 
12572
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::setByteOrder", XS_Geo__Geos__WKBWriter_setByteOrder);  | 
| 
12573
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::getIncludeSRID", XS_Geo__Geos__WKBWriter_getIncludeSRID);  | 
| 
12574
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::setIncludeSRID", XS_Geo__Geos__WKBWriter_setIncludeSRID);  | 
| 
12575
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::write", XS_Geo__Geos__WKBWriter_write);  | 
| 
12576
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::writeHEX", XS_Geo__Geos__WKBWriter_writeHEX);  | 
| 
12577
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBWriter::CLONE_SKIP", XS_Geo__Geos__WKBWriter_CLONE_SKIP);  | 
| 
12578
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBReader::read", XS_Geo__Geos__WKBReader_read);  | 
| 
12579
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKBReader::readHEX", XS_Geo__Geos__WKBReader_readHEX);  | 
| 
12580
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKTWriter::new", XS_Geo__Geos__WKTWriter_new);  | 
| 
12581
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKTWriter::setTrim", XS_Geo__Geos__WKTWriter_setTrim);  | 
| 
12582
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKTWriter::setRoundingPrecision", XS_Geo__Geos__WKTWriter_setRoundingPrecision);  | 
| 
12583
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKTWriter::write", XS_Geo__Geos__WKTWriter_write);  | 
| 
12584
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKTWriter::CLONE_SKIP", XS_Geo__Geos__WKTWriter_CLONE_SKIP);  | 
| 
12585
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::WKTReader::read", XS_Geo__Geos__WKTReader_read);  | 
| 
12586
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::getGeometry", XS_Geo__Geos__Prep__Geometry_getGeometry);  | 
| 
12587
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::contains", XS_Geo__Geos__Prep__Geometry_contains);  | 
| 
12588
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::containsProperly", XS_Geo__Geos__Prep__Geometry_containsProperly);  | 
| 
12589
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::coveredBy", XS_Geo__Geos__Prep__Geometry_coveredBy);  | 
| 
12590
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::covers", XS_Geo__Geos__Prep__Geometry_covers);  | 
| 
12591
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::crosses", XS_Geo__Geos__Prep__Geometry_crosses);  | 
| 
12592
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::disjoint", XS_Geo__Geos__Prep__Geometry_disjoint);  | 
| 
12593
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::intersects", XS_Geo__Geos__Prep__Geometry_intersects);  | 
| 
12594
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::overlaps", XS_Geo__Geos__Prep__Geometry_overlaps);  | 
| 
12595
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::touches", XS_Geo__Geos__Prep__Geometry_touches);  | 
| 
12596
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::within", XS_Geo__Geos__Prep__Geometry_within);  | 
| 
12597
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::toString", XS_Geo__Geos__Prep__Geometry_toString);  | 
| 
12598
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::Geometry::CLONE_SKIP", XS_Geo__Geos__Prep__Geometry_CLONE_SKIP);  | 
| 
12599
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Prep::GeometryFactory::prepare", XS_Geo__Geos__Prep__GeometryFactory_prepare);  | 
| 
12600
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::toDegrees", XS_Geo__Geos__Algorithm_toDegrees);  | 
| 
12601
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::toRadians", XS_Geo__Geos__Algorithm_toRadians);  | 
| 
12602
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::angle", XS_Geo__Geos__Algorithm_angle);  | 
| 
12603
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::isAcute", XS_Geo__Geos__Algorithm_isAcute);  | 
| 
12604
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::isObtuse", XS_Geo__Geos__Algorithm_isObtuse);  | 
| 
12605
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::angleBetween", XS_Geo__Geos__Algorithm_angleBetween);  | 
| 
12606
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::angleBetweenOriented", XS_Geo__Geos__Algorithm_angleBetweenOriented);  | 
| 
12607
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::interiorAngle", XS_Geo__Geos__Algorithm_interiorAngle);  | 
| 
12608
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::getTurn", XS_Geo__Geos__Algorithm_getTurn);  | 
| 
12609
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::normalize", XS_Geo__Geos__Algorithm_normalize);  | 
| 
12610
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::normalizePositive", XS_Geo__Geos__Algorithm_normalizePositive);  | 
| 
12611
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::diff", XS_Geo__Geos__Algorithm_diff);  | 
| 
12612
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::centroid", XS_Geo__Geos__Algorithm_centroid);  | 
| 
12613
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::centroidArea", XS_Geo__Geos__Algorithm_centroidArea);  | 
| 
12614
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::centroidLine", XS_Geo__Geos__Algorithm_centroidLine);  | 
| 
12615
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::centroidPoint", XS_Geo__Geos__Algorithm_centroidPoint);  | 
| 
12616
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::isPointInRing", XS_Geo__Geos__Algorithm_isPointInRing);  | 
| 
12617
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::locatePointInRing", XS_Geo__Geos__Algorithm_locatePointInRing);  | 
| 
12618
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::isOnLine", XS_Geo__Geos__Algorithm_isOnLine);  | 
| 
12619
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::isCCW", XS_Geo__Geos__Algorithm_isCCW);  | 
| 
12620
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::computeOrientation", XS_Geo__Geos__Algorithm_computeOrientation);  | 
| 
12621
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::distancePointLine", XS_Geo__Geos__Algorithm_distancePointLine);  | 
| 
12622
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::distancePointLinePerpendicular", XS_Geo__Geos__Algorithm_distancePointLinePerpendicular);  | 
| 
12623
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::distanceLineLine", XS_Geo__Geos__Algorithm_distanceLineLine);  | 
| 
12624
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::signedArea", XS_Geo__Geos__Algorithm_signedArea);  | 
| 
12625
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::length", XS_Geo__Geos__Algorithm_length);  | 
| 
12626
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::orientationIndex", XS_Geo__Geos__Algorithm_orientationIndex);  | 
| 
12627
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::getIntersection", XS_Geo__Geos__Algorithm_getIntersection);  | 
| 
12628
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::convexHull", XS_Geo__Geos__Algorithm_convexHull);  | 
| 
12629
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::interiorPointArea", XS_Geo__Geos__Algorithm_interiorPointArea);  | 
| 
12630
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::interiorPointLine", XS_Geo__Geos__Algorithm_interiorPointLine);  | 
| 
12631
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::interiorPointPoint", XS_Geo__Geos__Algorithm_interiorPointPoint);  | 
| 
12632
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::locate", XS_Geo__Geos__Algorithm_locate);  | 
| 
12633
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::intersects", XS_Geo__Geos__Algorithm_intersects);  | 
| 
12634
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::signOfDet2x2", XS_Geo__Geos__Algorithm_signOfDet2x2);  | 
| 
12635
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::locateIndexedPointInArea", XS_Geo__Geos__Algorithm_locateIndexedPointInArea);  | 
| 
12636
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::locateSimplePointInArea", XS_Geo__Geos__Algorithm_locateSimplePointInArea);  | 
| 
12637
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::HCoordinate::new", XS_Geo__Geos__Algorithm__HCoordinate_new);  | 
| 
12638
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Algorithm::HCoordinate::w", XS_Geo__Geos__Algorithm__HCoordinate_x);  | 
| 
12639
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 2;  | 
| 
12640
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Algorithm::HCoordinate::x", XS_Geo__Geos__Algorithm__HCoordinate_x);  | 
| 
12641
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 0;  | 
| 
12642
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Algorithm::HCoordinate::y", XS_Geo__Geos__Algorithm__HCoordinate_x);  | 
| 
12643
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 1;  | 
| 
12644
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::HCoordinate::getCoordinate", XS_Geo__Geos__Algorithm__HCoordinate_getCoordinate);  | 
| 
12645
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::HCoordinate::intersection", XS_Geo__Geos__Algorithm__HCoordinate_intersection);  | 
| 
12646
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::HCoordinate::toString", XS_Geo__Geos__Algorithm__HCoordinate_toString);  | 
| 
12647
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::HCoordinate::CLONE_SKIP", XS_Geo__Geos__Algorithm__HCoordinate_CLONE_SKIP);  | 
| 
12648
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::MinimumDiameter::new", XS_Geo__Geos__Algorithm__MinimumDiameter_new);  | 
| 
12649
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::MinimumDiameter::getMinimumRectangle", XS_Geo__Geos__Algorithm__MinimumDiameter_getMinimumRectangle);  | 
| 
12650
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::MinimumDiameter::getMinimumDiameter", XS_Geo__Geos__Algorithm__MinimumDiameter_getMinimumDiameter);  | 
| 
12651
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::MinimumDiameter::getLength", XS_Geo__Geos__Algorithm__MinimumDiameter_getLength);  | 
| 
12652
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::MinimumDiameter::getWidthCoordinate", XS_Geo__Geos__Algorithm__MinimumDiameter_getWidthCoordinate);  | 
| 
12653
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::MinimumDiameter::getSupportingSegment", XS_Geo__Geos__Algorithm__MinimumDiameter_getSupportingSegment);  | 
| 
12654
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::MinimumDiameter::getDiameter", XS_Geo__Geos__Algorithm__MinimumDiameter_getDiameter);  | 
| 
12655
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::MinimumDiameter::CLONE_SKIP", XS_Geo__Geos__Algorithm__MinimumDiameter_CLONE_SKIP);  | 
| 
12656
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::new", XS_Geo__Geos__Algorithm__LineIntersector_new);  | 
| 
12657
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::interpolateZ", XS_Geo__Geos__Algorithm__LineIntersector_interpolateZ);  | 
| 
12658
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::computeEdgeDistance", XS_Geo__Geos__Algorithm__LineIntersector_computeEdgeDistance);  | 
| 
12659
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::isSameSignAndNonZero", XS_Geo__Geos__Algorithm__LineIntersector_isSameSignAndNonZero);  | 
| 
12660
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::hasIntersection", XS_Geo__Geos__Algorithm__LineIntersector_hasIntersection);  | 
| 
12661
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::isInteriorIntersection", XS_Geo__Geos__Algorithm__LineIntersector_isInteriorIntersection);  | 
| 
12662
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::setPrecisionModel", XS_Geo__Geos__Algorithm__LineIntersector_setPrecisionModel);  | 
| 
12663
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::computeIntersection", XS_Geo__Geos__Algorithm__LineIntersector_computeIntersection);  | 
| 
12664
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::toString", XS_Geo__Geos__Algorithm__LineIntersector_toString);  | 
| 
12665
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::getIntersectionNum", XS_Geo__Geos__Algorithm__LineIntersector_getIntersectionNum);  | 
| 
12666
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::isProper", XS_Geo__Geos__Algorithm__LineIntersector_isProper);  | 
| 
12667
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::getIndexAlongSegment", XS_Geo__Geos__Algorithm__LineIntersector_getIndexAlongSegment);  | 
| 
12668
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::getEdgeDistance", XS_Geo__Geos__Algorithm__LineIntersector_getEdgeDistance);  | 
| 
12669
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::getIntersectionAlongSegment", XS_Geo__Geos__Algorithm__LineIntersector_getIntersectionAlongSegment);  | 
| 
12670
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Algorithm::LineIntersector::CLONE_SKIP", XS_Geo__Geos__Algorithm__LineIntersector_CLONE_SKIP);  | 
| 
12671
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::compareOrientedCoordinateArray", XS_Geo__Geos__Noding_compareOrientedCoordinateArray);  | 
| 
12672
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::octant", XS_Geo__Geos__Noding_octant);  | 
| 
12673
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::checkNodingValid", XS_Geo__Geos__Noding_checkNodingValid);  | 
| 
12674
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::fastCheckNodingValid", XS_Geo__Geos__Noding_fastCheckNodingValid);  | 
| 
12675
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::compareSegmentPoints", XS_Geo__Geos__Noding_compareSegmentPoints);  | 
| 
12676
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::extractSegmentStrings", XS_Geo__Geos__Noding_extractSegmentStrings);  | 
| 
12677
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::intersects", XS_Geo__Geos__Noding_intersects);  | 
| 
12678
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentString::size", XS_Geo__Geos__Noding__SegmentString_size);  | 
| 
12679
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentString::getCoordinate", XS_Geo__Geos__Noding__SegmentString_getCoordinate);  | 
| 
12680
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentString::getCoordinates", XS_Geo__Geos__Noding__SegmentString_getCoordinates);  | 
| 
12681
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentString::isClosed", XS_Geo__Geos__Noding__SegmentString_isClosed);  | 
| 
12682
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentString::toString", XS_Geo__Geos__Noding__SegmentString_toString);  | 
| 
12683
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentNode::isInterior", XS_Geo__Geos__Noding__SegmentNode_isInterior);  | 
| 
12684
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentNode::isEndPoint", XS_Geo__Geos__Noding__SegmentNode_isEndPoint);  | 
| 
12685
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentNode::compareTo", XS_Geo__Geos__Noding__SegmentNode_compareTo);  | 
| 
12686
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentNode::toString", XS_Geo__Geos__Noding__SegmentNode_toString);  | 
| 
12687
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentNode::coord", XS_Geo__Geos__Noding__SegmentNode_coord);  | 
| 
12688
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentNode::segmentIndex", XS_Geo__Geos__Noding__SegmentNode_segmentIndex);  | 
| 
12689
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::NodedSegmentString::new", XS_Geo__Geos__Noding__NodedSegmentString_new);  | 
| 
12690
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::NodedSegmentString::addIntersectionNode", XS_Geo__Geos__Noding__NodedSegmentString_addIntersectionNode);  | 
| 
12691
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::NodedSegmentString::getSegmentOctant", XS_Geo__Geos__Noding__NodedSegmentString_getSegmentOctant);  | 
| 
12692
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::NodedSegmentString::addIntersections", XS_Geo__Geos__Noding__NodedSegmentString_addIntersections);  | 
| 
12693
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::NodedSegmentString::addIntersection", XS_Geo__Geos__Noding__NodedSegmentString_addIntersection);  | 
| 
12694
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::NodedSegmentString::CLONE_SKIP", XS_Geo__Geos__Noding__NodedSegmentString_CLONE_SKIP);  | 
| 
12695
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::BasicSegmentString::new", XS_Geo__Geos__Noding__BasicSegmentString_new);  | 
| 
12696
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::BasicSegmentString::DESTROY", XS_Geo__Geos__Noding__BasicSegmentString_DESTROY);  | 
| 
12697
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::BasicSegmentString::getSegmentOctant", XS_Geo__Geos__Noding__BasicSegmentString_getSegmentOctant);  | 
| 
12698
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::BasicSegmentString::CLONE_SKIP", XS_Geo__Geos__Noding__BasicSegmentString_CLONE_SKIP);  | 
| 
12699
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersector::processIntersections", XS_Geo__Geos__Noding__SegmentIntersector_processIntersections);  | 
| 
12700
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersector::isDone", XS_Geo__Geos__Noding__SegmentIntersector_isDone);  | 
| 
12701
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersectionDetector::new", XS_Geo__Geos__Noding__SegmentIntersectionDetector_new);  | 
| 
12702
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersectionDetector::hasIntersection", XS_Geo__Geos__Noding__SegmentIntersectionDetector_hasIntersection);  | 
| 
12703
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersectionDetector::hasProperIntersection", XS_Geo__Geos__Noding__SegmentIntersectionDetector_hasProperIntersection);  | 
| 
12704
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersectionDetector::hasNonProperIntersection", XS_Geo__Geos__Noding__SegmentIntersectionDetector_hasNonProperIntersection);  | 
| 
12705
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersectionDetector::setFindProper", XS_Geo__Geos__Noding__SegmentIntersectionDetector_setFindProper);  | 
| 
12706
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersectionDetector::setFindAllIntersectionTypes", XS_Geo__Geos__Noding__SegmentIntersectionDetector_setFindAllIntersectionTypes);  | 
| 
12707
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersectionDetector::getIntersectionSegments", XS_Geo__Geos__Noding__SegmentIntersectionDetector_getIntersectionSegments);  | 
| 
12708
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersectionDetector::getIntersection", XS_Geo__Geos__Noding__SegmentIntersectionDetector_getIntersection);  | 
| 
12709
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SegmentIntersectionDetector::CLONE_SKIP", XS_Geo__Geos__Noding__SegmentIntersectionDetector_CLONE_SKIP);  | 
| 
12710
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SingleInteriorIntersectionFinder::new", XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_new);  | 
| 
12711
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SingleInteriorIntersectionFinder::hasIntersection", XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_hasIntersection);  | 
| 
12712
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SingleInteriorIntersectionFinder::getInteriorIntersection", XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_getInteriorIntersection);  | 
| 
12713
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SingleInteriorIntersectionFinder::getIntersectionSegments", XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_getIntersectionSegments);  | 
| 
12714
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SingleInteriorIntersectionFinder::CLONE_SKIP", XS_Geo__Geos__Noding__SingleInteriorIntersectionFinder_CLONE_SKIP);  | 
| 
12715
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionAdder::new", XS_Geo__Geos__Noding__IntersectionAdder_new);  | 
| 
12716
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionAdder::getLineIntersector", XS_Geo__Geos__Noding__IntersectionAdder_getLineIntersector);  | 
| 
12717
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionAdder::hasIntersection", XS_Geo__Geos__Noding__IntersectionAdder_hasIntersection);  | 
| 
12718
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionAdder::hasProperIntersection", XS_Geo__Geos__Noding__IntersectionAdder_hasProperIntersection);  | 
| 
12719
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionAdder::hasProperInteriorIntersection", XS_Geo__Geos__Noding__IntersectionAdder_hasProperInteriorIntersection);  | 
| 
12720
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionAdder::hasInteriorIntersection", XS_Geo__Geos__Noding__IntersectionAdder_hasInteriorIntersection);  | 
| 
12721
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionAdder::CLONE_SKIP", XS_Geo__Geos__Noding__IntersectionAdder_CLONE_SKIP);  | 
| 
12722
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionFinderAdder::new", XS_Geo__Geos__Noding__IntersectionFinderAdder_new);  | 
| 
12723
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionFinderAdder::getInteriorIntersections", XS_Geo__Geos__Noding__IntersectionFinderAdder_getInteriorIntersections);  | 
| 
12724
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IntersectionFinderAdder::CLONE_SKIP", XS_Geo__Geos__Noding__IntersectionFinderAdder_CLONE_SKIP);  | 
| 
12725
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::Noder::computeNodes", XS_Geo__Geos__Noding__Noder_computeNodes);  | 
| 
12726
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::Noder::getNodedSubstrings", XS_Geo__Geos__Noding__Noder_getNodedSubstrings);  | 
| 
12727
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IteratedNoder::new", XS_Geo__Geos__Noding__IteratedNoder_new);  | 
| 
12728
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IteratedNoder::setMaximumIterations", XS_Geo__Geos__Noding__IteratedNoder_setMaximumIterations);  | 
| 
12729
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::IteratedNoder::CLONE_SKIP", XS_Geo__Geos__Noding__IteratedNoder_CLONE_SKIP);  | 
| 
12730
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::ScaledNoder::new", XS_Geo__Geos__Noding__ScaledNoder_new);  | 
| 
12731
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::ScaledNoder::isIntegerPrecision", XS_Geo__Geos__Noding__ScaledNoder_isIntegerPrecision);  | 
| 
12732
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::ScaledNoder::CLONE_SKIP", XS_Geo__Geos__Noding__ScaledNoder_CLONE_SKIP);  | 
| 
12733
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SinglePassNoder::setSegmentIntersector", XS_Geo__Geos__Noding__SinglePassNoder_setSegmentIntersector);  | 
| 
12734
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SinglePassNoder::CLONE_SKIP", XS_Geo__Geos__Noding__SinglePassNoder_CLONE_SKIP);  | 
| 
12735
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SimpleNoder::new", XS_Geo__Geos__Noding__SimpleNoder_new);  | 
| 
12736
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SimpleNoder::CLONE_SKIP", XS_Geo__Geos__Noding__SimpleNoder_CLONE_SKIP);  | 
| 
12737
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SimpleSnapRounder::new", XS_Geo__Geos__Noding__SimpleSnapRounder_new);  | 
| 
12738
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SimpleSnapRounder::computeVertexSnaps", XS_Geo__Geos__Noding__SimpleSnapRounder_computeVertexSnaps);  | 
| 
12739
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Noding::SimpleSnapRounder::CLONE_SKIP", XS_Geo__Geos__Noding__SimpleSnapRounder_CLONE_SKIP);  | 
| 
12740
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::new", XS_Geo__Geos__Index__MonotoneChain_new);  | 
| 
12741
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::getChains", XS_Geo__Geos__Index__MonotoneChain_getChains);  | 
| 
12742
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::getEnvelope", XS_Geo__Geos__Index__MonotoneChain_getEnvelope);  | 
| 
12743
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::getStartIndex", XS_Geo__Geos__Index__MonotoneChain_getStartIndex);  | 
| 
12744
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::getEndIndex", XS_Geo__Geos__Index__MonotoneChain_getEndIndex);  | 
| 
12745
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::getLineSegment", XS_Geo__Geos__Index__MonotoneChain_getLineSegment);  | 
| 
12746
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::getCoordinates", XS_Geo__Geos__Index__MonotoneChain_getCoordinates);  | 
| 
12747
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::computeOverlaps", XS_Geo__Geos__Index__MonotoneChain_computeOverlaps);  | 
| 
12748
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::setId", XS_Geo__Geos__Index__MonotoneChain_setId);  | 
| 
12749
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChain::getId", XS_Geo__Geos__Index__MonotoneChain_getId);  | 
| 
12750
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChainOverlapAction::new", XS_Geo__Geos__Index__MonotoneChainOverlapAction_new);  | 
| 
12751
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::MonotoneChainOverlapAction::overlap", XS_Geo__Geos__Index__MonotoneChainOverlapAction_overlap);  | 
| 
12752
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Index::MonotoneChainOverlapAction::tempEnv1", XS_Geo__Geos__Index__MonotoneChainOverlapAction_tempEnv1);  | 
| 
12753
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 0;  | 
| 
12754
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Index::MonotoneChainOverlapAction::tempEnv2", XS_Geo__Geos__Index__MonotoneChainOverlapAction_tempEnv1);  | 
| 
12755
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 1;  | 
| 
12756
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::SpatialIndex::query", XS_Geo__Geos__Index__SpatialIndex_query);  | 
| 
12757
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::SpatialIndex::insert", XS_Geo__Geos__Index__SpatialIndex_insert);  | 
| 
12758
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::SpatialIndex::remove", XS_Geo__Geos__Index__SpatialIndex_remove);  | 
| 
12759
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::Quadtree::new", XS_Geo__Geos__Index__Quadtree_new);  | 
| 
12760
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::Quadtree::depth", XS_Geo__Geos__Index__Quadtree_depth);  | 
| 
12761
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::Quadtree::size", XS_Geo__Geos__Index__Quadtree_size);  | 
| 
12762
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::Quadtree::queryAll", XS_Geo__Geos__Index__Quadtree_queryAll);  | 
| 
12763
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::Quadtree::toString", XS_Geo__Geos__Index__Quadtree_toString);  | 
| 
12764
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Index::STRtree::new", XS_Geo__Geos__Index__STRtree_new);  | 
| 
12765
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::signExpBits", XS_Geo__Geos__Precision_signExpBits);  | 
| 
12766
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::numCommonMostSigMantissaBits", XS_Geo__Geos__Precision_numCommonMostSigMantissaBits);  | 
| 
12767
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::zeroLowerBits", XS_Geo__Geos__Precision_zeroLowerBits);  | 
| 
12768
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::getBit", XS_Geo__Geos__Precision_getBit);  | 
| 
12769
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::commonIntersection", XS_Geo__Geos__Precision_commonIntersection);  | 
| 
12770
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::commonUnion", XS_Geo__Geos__Precision_commonUnion);  | 
| 
12771
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::commonDifference", XS_Geo__Geos__Precision_commonDifference);  | 
| 
12772
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::commonSymDifference", XS_Geo__Geos__Precision_commonSymDifference);  | 
| 
12773
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::commonBuffer", XS_Geo__Geos__Precision_commonBuffer);  | 
| 
12774
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::enhancedIntersection", XS_Geo__Geos__Precision_enhancedIntersection);  | 
| 
12775
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::enhancedUnion", XS_Geo__Geos__Precision_enhancedUnion);  | 
| 
12776
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::enhancedDifference", XS_Geo__Geos__Precision_enhancedDifference);  | 
| 
12777
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::enhancedSymDifference", XS_Geo__Geos__Precision_enhancedSymDifference);  | 
| 
12778
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::enhancedBuffer", XS_Geo__Geos__Precision_enhancedBuffer);  | 
| 
12779
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Precision::addCommonBits", XS_Geo__Geos__Precision_removeCommonBits);  | 
| 
12780
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 1;  | 
| 
12781
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         cv = newXS_deffile("Geo::Geos::Precision::removeCommonBits", XS_Geo__Geos__Precision_removeCommonBits);  | 
| 
12782
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         XSANY.any_i32 = 0;  | 
| 
12783
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::GeometryPrecisionReducer::new", XS_Geo__Geos__Precision__GeometryPrecisionReducer_new);  | 
| 
12784
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::GeometryPrecisionReducer::setRemoveCollapsedComponents", XS_Geo__Geos__Precision__GeometryPrecisionReducer_setRemoveCollapsedComponents);  | 
| 
12785
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::GeometryPrecisionReducer::setPointwise", XS_Geo__Geos__Precision__GeometryPrecisionReducer_setPointwise);  | 
| 
12786
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::GeometryPrecisionReducer::reduce", XS_Geo__Geos__Precision__GeometryPrecisionReducer_reduce);  | 
| 
12787
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::GeometryPrecisionReducer::CLONE_SKIP", XS_Geo__Geos__Precision__GeometryPrecisionReducer_CLONE_SKIP);  | 
| 
12788
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::SimpleGeometryPrecisionReducer::new", XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_new);  | 
| 
12789
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::SimpleGeometryPrecisionReducer::getPrecisionModel", XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_getPrecisionModel);  | 
| 
12790
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::SimpleGeometryPrecisionReducer::setRemoveCollapsedComponents", XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_setRemoveCollapsedComponents);  | 
| 
12791
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::SimpleGeometryPrecisionReducer::getRemoveCollapsed", XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_getRemoveCollapsed);  | 
| 
12792
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::SimpleGeometryPrecisionReducer::reduce", XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_reduce);  | 
| 
12793
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Precision::SimpleGeometryPrecisionReducer::CLONE_SKIP", XS_Geo__Geos__Precision__SimpleGeometryPrecisionReducer_CLONE_SKIP);  | 
| 
12794
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::buffer", XS_Geo__Geos__Operation_buffer);  | 
| 
12795
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::distance", XS_Geo__Geos__Operation_distance);  | 
| 
12796
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::nearestPoints", XS_Geo__Geos__Operation_nearestPoints);  | 
| 
12797
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::closestPoints", XS_Geo__Geos__Operation_closestPoints);  | 
| 
12798
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::overlayOp", XS_Geo__Geos__Operation_overlayOp);  | 
| 
12799
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::isValid", XS_Geo__Geos__Operation_isValid);  | 
| 
12800
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::relate", XS_Geo__Geos__Operation_relate);  | 
| 
12801
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::mergeLines", XS_Geo__Geos__Operation_mergeLines);  | 
| 
12802
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::isSequenced", XS_Geo__Geos__Operation_isSequenced);  | 
| 
12803
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Operation::sequence", XS_Geo__Geos__Operation_sequence);  | 
| 
12804
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangulate::DelaunayTriangulationBuilder::new", XS_Geo__Geos__Triangulate__DelaunayTriangulationBuilder_new);  | 
| 
12805
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangulate::DelaunayTriangulationBuilder::getEdges", XS_Geo__Geos__Triangulate__DelaunayTriangulationBuilder_getEdges);  | 
| 
12806
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangulate::DelaunayTriangulationBuilder::getTriangles", XS_Geo__Geos__Triangulate__DelaunayTriangulationBuilder_getTriangles);  | 
| 
12807
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangulate::VoronoiDiagramBuilder::new", XS_Geo__Geos__Triangulate__VoronoiDiagramBuilder_new);  | 
| 
12808
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangulate::VoronoiDiagramBuilder::getDiagramEdges", XS_Geo__Geos__Triangulate__VoronoiDiagramBuilder_getDiagramEdges);  | 
| 
12809
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         newXS_deffile("Geo::Geos::Triangulate::VoronoiDiagramBuilder::getDiagram", XS_Geo__Geos__Triangulate__VoronoiDiagramBuilder_getDiagram);  | 
| 
12810
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12811
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     /* Initialisation Section */  | 
| 
12812
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12813
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/Dimension.xsi"  | 
| 
12814
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12815
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto this_stash = Stash("Geo::Geos::Dimension");  | 
| 
12816
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::create_constants(this_stash, {  | 
| 
12817
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_DONTCARE", Dimension::DimensionType::DONTCARE},  | 
| 
12818
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_True", Dimension::DimensionType::True},  | 
| 
12819
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_False", Dimension::DimensionType::False},  | 
| 
12820
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_P", Dimension::DimensionType::P},  | 
| 
12821
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_L", Dimension::DimensionType::L},  | 
| 
12822
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_A", Dimension::DimensionType::A}  | 
| 
12823
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     });  | 
| 
12824
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(this_stash);  | 
| 
12825
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12826
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12827
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 42 "./xsi/PrecisionModel.xsi"  | 
| 
12828
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12829
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto this_stash = Stash("Geo::Geos::PrecisionModel");  | 
| 
12830
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::create_constants(this_stash, {  | 
| 
12831
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_FIXED",              PrecisionModel::Type::FIXED},  | 
| 
12832
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_FLOATING",           PrecisionModel::Type::FLOATING},  | 
| 
12833
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_FLOATING_SINGLE",    PrecisionModel::Type::FLOATING_SINGLE}  | 
| 
12834
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     });  | 
| 
12835
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(this_stash);  | 
| 
12836
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12837
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12838
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 42 "./xsi/Triangle.xsi"  | 
| 
12839
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12840
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(Stash("Geo::Geos::Triangle"));  | 
| 
12841
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12842
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12843
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 123 "./xsi/GeometryFactory.xsi"  | 
| 
12844
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12845
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(Stash("Geo::Geos::GeometryFactory"));  | 
| 
12846
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12847
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12848
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 139 "./xsi/Geometry.xsi"  | 
| 
12849
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12850
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto this_stash = Stash("Geo::Geos::Geometry");  | 
| 
12851
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::create_constants(this_stash, {  | 
| 
12852
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_GEOS_POINT",              GeometryTypeId::GEOS_POINT},  | 
| 
12853
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_GEOS_LINESTRING",         GeometryTypeId::GEOS_LINESTRING},  | 
| 
12854
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_GEOS_LINEARRING",         GeometryTypeId::GEOS_LINEARRING},  | 
| 
12855
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_GEOS_POLYGON",            GeometryTypeId::GEOS_POLYGON},  | 
| 
12856
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_GEOS_MULTIPOINT",         GeometryTypeId::GEOS_MULTIPOINT},  | 
| 
12857
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_GEOS_MULTILINESTRING",    GeometryTypeId::GEOS_MULTILINESTRING},  | 
| 
12858
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_GEOS_MULTIPOLYGON",       GeometryTypeId::GEOS_MULTIPOLYGON},  | 
| 
12859
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_GEOS_GEOMETRYCOLLECTION", GeometryTypeId::GEOS_GEOMETRYCOLLECTION},  | 
| 
12860
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12861
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_CAP_ROUND",  geos::operation::buffer::BufferParameters::CAP_ROUND},  | 
| 
12862
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_CAP_FLAT",   geos::operation::buffer::BufferParameters::CAP_FLAT},  | 
| 
12863
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_CAP_SQUARE", geos::operation::buffer::BufferParameters::CAP_SQUARE}  | 
| 
12864
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     });  | 
| 
12865
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(this_stash);  | 
| 
12866
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12867
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::GeometryCollection").inherit("Geo::Geos::Geometry");  | 
| 
12868
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12869
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Puntal", GV_ADD).mark_as_loaded("Geo::Geos");  | 
| 
12870
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Puntal").inherit("Geo::Geos::Geometry");  | 
| 
12871
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12872
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Lineal", GV_ADD).mark_as_loaded("Geo::Geos");  | 
| 
12873
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Lineal").inherit("Geo::Geos::Geometry");  | 
| 
12874
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12875
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Polygonal", GV_ADD).mark_as_loaded("Geo::Geos");  | 
| 
12876
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Polygonal").inherit("Geo::Geos::Geometry");  | 
| 
12877
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12878
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12879
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/GeometryCollection.xsi"  | 
| 
12880
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12881
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::GeometryCollection").inherit("Geo::Geos::Geometry");  | 
| 
12882
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12883
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12884
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 10 "./xsi/Point.xsi"  | 
| 
12885
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12886
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Point").inherit("Geo::Geos::Puntal");  | 
| 
12887
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12888
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12889
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/MultiPoint.xsi"  | 
| 
12890
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12891
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::MultiPoint").inherit("Geo::Geos::Puntal");  | 
| 
12892
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::MultiPoint").inherit("Geo::Geos::GeometryCollection");  | 
| 
12893
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12894
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12895
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 14 "./xsi/LineString.xsi"  | 
| 
12896
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12897
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::LineString").inherit("Geo::Geos::Lineal");  | 
| 
12898
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12899
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12900
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/MultiLineString.xsi"  | 
| 
12901
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12902
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::MultiLineString").inherit("Geo::Geos::Lineal");  | 
| 
12903
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::MultiLineString").inherit("Geo::Geos::GeometryCollection");  | 
| 
12904
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12905
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12906
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/LinearRing.xsi"  | 
| 
12907
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12908
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::LinearRing").inherit("Geo::Geos::LineString");  | 
| 
12909
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12910
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12911
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 23 "./xsi/Polygon.xsi"  | 
| 
12912
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12913
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Polygon").inherit("Geo::Geos::Polygonal");  | 
| 
12914
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12915
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12916
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/MultiPolygon.xsi"  | 
| 
12917
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12918
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::MultiPolygon").inherit("Geo::Geos::Polygonal");  | 
| 
12919
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::MultiPolygon").inherit("Geo::Geos::GeometryCollection");  | 
| 
12920
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12921
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12922
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 6 "./xsi/WKBConstants.xsi"  | 
| 
12923
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12924
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto this_stash = Stash("Geo::Geos::WKBConstants");  | 
| 
12925
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::create_constants(this_stash, {  | 
| 
12926
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         //{"TYPE_BYTEORDER_BE", WKBConstants::wkbXDR},  | 
| 
12927
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         //{"TYPE_BYTEORDER_LE", WKBConstants::wkbNDR},  | 
| 
12928
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_BYTEORDER_BE", 0},  | 
| 
12929
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_BYTEORDER_LE", 1},  | 
| 
12930
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12931
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_WKB_POINT",              WKBConstants::wkbPoint},  | 
| 
12932
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_WKB_LINESTRING",         WKBConstants::wkbLineString},  | 
| 
12933
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_WKB_POLYGON",            WKBConstants::wkbPolygon},  | 
| 
12934
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_WKB_MULTIPOINT",         WKBConstants::wkbMultiPoint},  | 
| 
12935
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_WKB_MULTILINESTRING",    WKBConstants::wkbMultiLineString},  | 
| 
12936
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_WKB_MULTIPOLYGON",       WKBConstants::wkbMultiPolygon},  | 
| 
12937
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_WKB_GEOMETRYCOLLECTION", WKBConstants::wkbGeometryCollection}  | 
| 
12938
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     });  | 
| 
12939
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(this_stash);  | 
| 
12940
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12941
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12942
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 202 "./xsi/algorithm.xsi"  | 
| 
12943
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12944
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto this_stash = Stash("Geo::Geos::Algorithm");  | 
| 
12945
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::create_constants(this_stash, {  | 
| 
12946
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_TURN_CLOCKWISE",        CGAlgorithms::CLOCKWISE},  | 
| 
12947
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_TURN_COLLINEAR",        CGAlgorithms::COLLINEAR},  | 
| 
12948
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_TURN_COUNTERCLOCKWISE", CGAlgorithms::COUNTERCLOCKWISE},  | 
| 
12949
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12950
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_ORIENT_RIGHT",    CGAlgorithms::RIGHT},  | 
| 
12951
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_ORIENT_LEFT" ,    CGAlgorithms::LEFT},  | 
| 
12952
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_ORIENT_STRAIGHT", CGAlgorithms::STRAIGHT}  | 
| 
12953
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     });  | 
| 
12954
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(this_stash);  | 
| 
12955
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12956
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12957
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 73 "./xsi/algorithm/HCoordinate.xsi"  | 
| 
12958
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12959
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(Stash("Geo::Geos::Algorithm::HCoordinate"));  | 
| 
12960
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12961
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12962
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 46 "./xsi/algorithm/MinimumDiameter.xsi"  | 
| 
12963
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12964
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(Stash("Geo::Geos::Algorithm::MinimumDiameter"));  | 
| 
12965
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12966
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12967
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 70 "./xsi/algorithm/LineIntersector.xsi"  | 
| 
12968
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12969
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto this_stash = Stash("Geo::Geos::Algorithm::LineIntersector");  | 
| 
12970
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::create_constants(this_stash, {  | 
| 
12971
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_NO_INTERSECTION",        LineIntersector::NO_INTERSECTION},  | 
| 
12972
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_POINT_INTERSECTION",     LineIntersector::POINT_INTERSECTION},  | 
| 
12973
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_COLLINEAR_INTERSECTION", LineIntersector::COLLINEAR_INTERSECTION}  | 
| 
12974
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     });  | 
| 
12975
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(this_stash);  | 
| 
12976
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12977
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12978
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 88 "./xsi/noding.xsi"  | 
| 
12979
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12980
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(Stash("Geo::Geos::Noding"));  | 
| 
12981
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12982
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12983
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 39 "./xsi/noding/NodedSegmentString.xsi"  | 
| 
12984
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12985
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::NodedSegmentString").inherit("Geo::Geos::Noding::SegmentString");  | 
| 
12986
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12987
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12988
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 19 "./xsi/noding/BasicSegmentString.xsi"  | 
| 
12989
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12990
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::BasicSegmentString").inherit("Geo::Geos::Noding::SegmentString");  | 
| 
12991
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12992
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12993
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 35 "./xsi/noding/SegmentIntersectionDetector.xsi"  | 
| 
12994
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
12995
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::SegmentIntersectionDetector").inherit("Geo::Geos::Noding::SegmentIntersector");  | 
| 
12996
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
12997
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
12998
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 31 "./xsi/noding/SingleInteriorIntersectionFinder.xsi"  | 
| 
12999
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13000
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::SingleInteriorIntersectionFinder").inherit("Geo::Geos::Noding::SegmentIntersector");  | 
| 
13001
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13002
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13003
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 28 "./xsi/noding/IntersectionAdder.xsi"  | 
| 
13004
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13005
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::IntersectionAdder").inherit("Geo::Geos::Noding::SegmentIntersector");  | 
| 
13006
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13007
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13008
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 36 "./xsi/noding/IntersectionFinderAdder.xsi"  | 
| 
13009
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13010
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     payload_marker_IntersectionFinderAdder.svt_free = payload_marker_IntersectionFinderAdder_free;  | 
| 
13011
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::IntersectionFinderAdder").inherit("Geo::Geos::Noding::SegmentIntersector");  | 
| 
13012
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13013
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13014
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 37 "./xsi/noding/Noder.xsi"  | 
| 
13015
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13016
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     payload_marker_Noder.svt_free = payload_marker_Noder_free;  | 
| 
13017
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13018
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13019
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 15 "./xsi/noding/IteratedNoder.xsi"  | 
| 
13020
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13021
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::IteratedNoder").inherit("Geo::Geos::Noding::Noder");  | 
| 
13022
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13023
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13024
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 15 "./xsi/noding/ScaledNoder.xsi"  | 
| 
13025
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13026
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::ScaledNoder").inherit("Geo::Geos::Noding::Noder");  | 
| 
13027
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13028
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13029
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 21 "./xsi/noding/SinglePassNoder.xsi"  | 
| 
13030
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13031
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::SinglePassNoder").inherit("Geo::Geos::Noding::Noder");  | 
| 
13032
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13033
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13034
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 16 "./xsi/noding/SimpleNoder.xsi"  | 
| 
13035
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13036
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::SimpleNoder").inherit("Geo::Geos::Noding::SinglePassNoder");  | 
| 
13037
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13038
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13039
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 25 "./xsi/noding/SimpleSnapRounder.xsi"  | 
| 
13040
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13041
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Noding::SimpleSnapRounder").inherit("Geo::Geos::Noding::Noder");  | 
| 
13042
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13043
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13044
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 55 "./xsi/index/MonotoneChain.xsi"  | 
| 
13045
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13046
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(Stash("Geo::Geos::Index::MonotoneChain"));  | 
| 
13047
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     payload_marker_MonotoneChain.svt_free = payload_marker_MonotoneChain_free;  | 
| 
13048
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13049
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13050
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 43 "./xsi/index/SpatialIndex.xsi"  | 
| 
13051
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13052
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     payload_marker_SVs_map.svt_free = payload_marker_SVs_map_free;  | 
| 
13053
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13054
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13055
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 27 "./xsi/index/Quadtree.xsi"  | 
| 
13056
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13057
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Index::Quadtree").inherit("Geo::Geos::Index::SpatialIndex");  | 
| 
13058
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13059
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13060
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 12 "./xsi/index/STRtree.xsi"  | 
| 
13061
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13062
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Stash("Geo::Geos::Index::STRtree").inherit("Geo::Geos::Index::SpatialIndex");  | 
| 
13063
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13064
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13065
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 73 "./xsi/precision.xsi"  | 
| 
13066
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13067
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(Stash("Geo::Geos::Precision"));  | 
| 
13068
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13069
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13070
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 95 "./xsi/operation.xsi"  | 
| 
13071
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     {  | 
| 
13072
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     auto this_stash = Stash("Geo::Geos::Operation");  | 
| 
13073
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::create_constants(this_stash, {  | 
| 
13074
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_OP_INTERSECTION",         OverlayOp::OpCode::opINTERSECTION},  | 
| 
13075
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_OP_UNION",                OverlayOp::OpCode::opUNION},  | 
| 
13076
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_OP_DIFFERENCE",           OverlayOp::OpCode::opDIFFERENCE},  | 
| 
13077
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_OP_SYMDIFFERENCE",        OverlayOp::OpCode::opSYMDIFFERENCE},  | 
| 
13078
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13079
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_BOUNDARY_NODE_RULE_MOD2",            0},  | 
| 
13080
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_BOUNDARY_ENDPOINT",                  1},  | 
| 
13081
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_BOUNDARY_MULTIVALENT_ENDPOINT",      2},  | 
| 
13082
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_BOUNDARY_MONOVALENT_ENDPOINT",       3},  | 
| 
13083
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         {"TYPE_BOUNDARY_OGCSFS",                    4}  | 
| 
13084
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     });  | 
| 
13085
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     xs::exp::autoexport(this_stash);  | 
| 
13086
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     }  | 
| 
13087
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13088
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #line 13089 "Geos.xs.cc"  | 
| 
13089
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13090
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     /* End of Initialisation Section */  | 
| 
13091
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13092
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #if PERL_VERSION_LE(5, 21, 5)  | 
| 
13093
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  if PERL_VERSION_GE(5, 9, 0)  | 
| 
13094
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     if (PL_unitcheckav)  | 
| 
13095
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
         call_list(PL_scopestack_ix, PL_unitcheckav);  | 
| 
13096
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #  endif  | 
| 
13097
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     XSRETURN_YES;  | 
| 
13098
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #else  | 
| 
13099
 | 
46
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
     Perl_xs_boot_epilog(aTHX_ ax);  | 
| 
13100
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 #endif  | 
| 
13101
 | 
276
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 }); }  | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
 
 | 
 
 | 
  
 50
  
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    | 
| 
13102
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
 
 | 
    |