1#ifndef SQL_GIS_GEOMETRIES_CS_H_INCLUDED
2#define SQL_GIS_GEOMETRIES_CS_H_INCLUDED
77 std::vector<Cartesian_point, Malloc_allocator<Cartesian_point>>
m_points;
95 bool empty()
const override;
131 std::vector<Geographic_point, Malloc_allocator<Geographic_point>>
m_points;
149 bool empty()
const override;
275 std::vector<Cartesian_linearring, Malloc_allocator<Cartesian_linearring>>
288 bool empty()
const override;
308 std::size_t
size()
const override;
328 std::vector<Geographic_linearring, Malloc_allocator<Geographic_linearring>>
341 bool empty()
const override;
361 std::size_t
size()
const override;
404 if (!g->is_empty())
return false;
414 bool empty()
const override;
467 if (!g->is_empty())
return false;
477 bool empty()
const override;
504 std::vector<Cartesian_point, Malloc_allocator<Cartesian_point>>
m_points;
521 if (!pt.is_empty())
return false;
528 bool empty()
const override;
555 std::vector<Geographic_point, Malloc_allocator<Geographic_point>>
m_points;
571 if (!pt.is_empty())
return false;
578 bool empty()
const override;
605 std::vector<Cartesian_linestring, Malloc_allocator<Cartesian_linestring>>
623 if (!ls.is_empty())
return false;
630 bool empty()
const override;
664 std::vector<Geographic_linestring, Malloc_allocator<Geographic_linestring>>
682 if (!ls.is_empty())
return false;
689 bool empty()
const override;
723 std::vector<Cartesian_polygon, Malloc_allocator<Cartesian_polygon>>
741 if (!py.is_empty())
return false;
748 bool empty()
const override;
777 std::vector<Geographic_polygon, Malloc_allocator<Geographic_polygon>>
795 if (!py.is_empty())
return false;
802 bool empty()
const override;
Malloc_allocator is a C++ STL memory allocator based on my_malloc/my_free.
Definition: malloc_allocator.h:63
A Cartesian 2d geometry collection.
Definition: geometries_cs.h:375
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:337
decltype(m_geometries) ::const_iterator const_iterator
Definition: geometries_cs.h:382
~Cartesian_geometrycollection() override
Definition: geometries_cs.h:393
Geometry & front() override
Returns the first geometry of the collection.
Definition: geometries_cs.h:425
Cartesian_geometrycollection()
Definition: geometries_cs.h:384
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:416
iterator end() noexcept
Definition: geometries_cs.h:422
const Geometry & front() const override
Definition: geometries_cs.h:426
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:415
iterator begin() noexcept
Definition: geometries_cs.h:419
const_iterator begin() const noexcept
Definition: geometries_cs.h:420
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:402
const_iterator end() const noexcept
Definition: geometries_cs.h:423
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:326
Cartesian_geometrycollection(Cartesian_geometrycollection &&gc) noexcept
Definition: geometries_cs.h:388
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:398
Cartesian_geometrycollection * clone() const override
Clone pattern to easily duplicate a Geometrycollection.
Definition: geometries_cs.h:432
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:429
std::vector< Geometry *, Malloc_allocator< Geometry * > > m_geometries
List of geometries in the collection.
Definition: geometries_cs.h:378
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:407
decltype(m_geometries) ::iterator iterator
Definition: geometries_cs.h:381
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:417
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:408
Geometry & operator[](std::size_t i) override
Definition: geometries_cs.h:428
A Cartesian 2d linear ring.
Definition: geometries_cs.h:177
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:184
void push_back(const gis::Point &pt) override
Adds a point to the end of the linestring.
Definition: geometries_cs.h:185
const Cartesian_point & front() const override
Definition: geometries_cs.h:210
void pop_front() override
Removes a point from the front of the linestring.
Definition: geometries_cs.h:191
Cartesian_point & front() override
Returns the first point of the linestring.
Definition: geometries_cs.h:209
Cartesian_point & back() override
Returns the last point of the linestring.
Definition: geometries_cs.h:204
const Cartesian_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:217
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:180
Cartesian_linestring * clone() const override
This implementation of clone() uses a broader return type than other implementations.
Definition: geometries_cs.h:200
void clear() noexcept override
Removes all points from the linestring.
Definition: geometries_cs.h:194
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:132
Geometry_type type() const override
Gets the geometry type of the object.
Definition: geometries_cs.h:179
std::size_t size() const override
Returns the size of (number of points in) the linestring.
Definition: geometries_cs.h:193
bool empty() const override
Checks if the linestring is empty.
Definition: geometries_cs.h:192
void push_back(gis::Point &&pt) override
Definition: geometries_cs.h:188
const Cartesian_point & back() const override
Definition: geometries_cs.h:205
Cartesian_point & operator[](std::size_t i) override
Definition: geometries_cs.h:214
A Cartesian 2d linestring.
Definition: geometries_cs.h:71
bool empty() const override
Checks if the linestring is empty.
Definition: geometries.cc:100
iterator begin() noexcept
Definition: geometries_cs.h:107
std::vector< Cartesian_point, Malloc_allocator< Cartesian_point > > m_points
String of points constituting the linestring.
Definition: geometries_cs.h:77
iterator end() noexcept
Definition: geometries_cs.h:110
void clear() noexcept override
Removes all points from the linestring.
Definition: geometries_cs.h:98
Cartesian_linestring()
Definition: geometries_cs.h:84
const_iterator begin() const noexcept
Definition: geometries_cs.h:108
Cartesian_point & back() override
Returns the last point of the linestring.
Definition: geometries_cs.h:104
std::size_t size() const override
Returns the size of (number of points in) the linestring.
Definition: geometries_cs.h:96
void pop_front() override
Removes a point from the front of the linestring.
Definition: geometries_cs.h:94
void push_back(const Point &pt) override
Adds a point to the end of the linestring.
Definition: geometries.cc:90
decltype(m_points) ::iterator iterator
Definition: geometries_cs.h:81
Cartesian_point & operator[](std::size_t i) override
Definition: geometries_cs.h:116
const Cartesian_point & front() const override
Definition: geometries_cs.h:114
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:64
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:88
Cartesian_point & front() override
Returns the first point of the linestring.
Definition: geometries_cs.h:113
Cartesian_linestring * clone() const override
Definition: geometries_cs.h:100
const Cartesian_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:117
const_iterator end() const noexcept
Definition: geometries_cs.h:111
const Cartesian_point & back() const override
Definition: geometries_cs.h:105
decltype(m_points) ::const_iterator const_iterator
Definition: geometries_cs.h:82
decltype(m_points) ::value_type value_type
Definition: geometries_cs.h:80
void resize(std::size_t count)
Definition: geometries_cs.h:97
A Cartesian 2d multilinestring.
Definition: geometries_cs.h:602
const_iterator begin() const noexcept
Definition: geometries_cs.h:639
Cartesian_linestring & front() override
Returns the first linestring of the Multilinestring.
Definition: geometries_cs.h:644
const_iterator end() const noexcept
Definition: geometries_cs.h:642
decltype(m_linestrings) ::value_type value_type
Definition: geometries_cs.h:609
std::vector< Cartesian_linestring, Malloc_allocator< Cartesian_linestring > > m_linestrings
List of linestrings in the collection.
Definition: geometries_cs.h:606
decltype(m_linestrings) ::iterator iterator
Definition: geometries_cs.h:610
Cartesian_multilinestring * clone() const override
Clone pattern to easily duplicate a Multilinestring.
Definition: geometries_cs.h:655
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:631
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:621
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:627
Cartesian_multilinestring()
Definition: geometries_cs.h:613
Cartesian_linestring & operator[](std::size_t i) override
Definition: geometries_cs.h:649
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:600
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:589
Cartesian_linestring & back()
Definition: geometries_cs.h:635
const Cartesian_linestring & front() const override
Definition: geometries_cs.h:645
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:610
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:617
iterator begin() noexcept
Definition: geometries_cs.h:638
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:633
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:652
iterator end() noexcept
Definition: geometries_cs.h:641
decltype(m_linestrings) ::const_iterator const_iterator
Definition: geometries_cs.h:611
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:632
const Cartesian_linestring & back() const
Definition: geometries_cs.h:636
A Cartesian 2d multipoint.
Definition: geometries_cs.h:501
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:515
const_iterator begin() const noexcept
Definition: geometries_cs.h:534
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:525
const Cartesian_point & front() const override
Definition: geometries_cs.h:540
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:531
Cartesian_point & front() override
Returns the first point of the Multipoint.
Definition: geometries_cs.h:539
Cartesian_multipoint * clone() const override
Clone pattern to easily duplicate a Multipoint.
Definition: geometries_cs.h:546
const Cartesian_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:543
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:556
decltype(m_points) ::iterator iterator
Definition: geometries_cs.h:508
decltype(m_points) ::value_type value_type
Definition: geometries_cs.h:507
decltype(m_points) ::const_iterator const_iterator
Definition: geometries_cs.h:509
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:546
Cartesian_point & operator[](std::size_t i) override
Definition: geometries_cs.h:542
iterator begin() noexcept
Definition: geometries_cs.h:533
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:536
iterator end() noexcept
Definition: geometries_cs.h:536
std::vector< Cartesian_point, Malloc_allocator< Cartesian_point > > m_points
List of points in the collection.
Definition: geometries_cs.h:504
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:519
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:530
Cartesian_multipoint()
Definition: geometries_cs.h:511
const_iterator end() const noexcept
Definition: geometries_cs.h:537
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:529
A Cartesian 2d multipolygon.
Definition: geometries_cs.h:720
Cartesian_multipolygon * clone() const override
Clone pattern to easily duplicate a Multipolygon.
Definition: geometries_cs.h:768
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:735
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:739
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:654
const_iterator begin() const noexcept
Definition: geometries_cs.h:754
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:750
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:751
decltype(m_polygons) ::const_iterator const_iterator
Definition: geometries_cs.h:729
iterator begin() noexcept
Definition: geometries_cs.h:753
decltype(m_polygons) ::iterator iterator
Definition: geometries_cs.h:728
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:765
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:749
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:745
decltype(m_polygons) ::value_type value_type
Definition: geometries_cs.h:727
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:664
Cartesian_multipolygon()
Definition: geometries_cs.h:731
const Cartesian_polygon & front() const override
Definition: geometries_cs.h:760
iterator end() noexcept
Definition: geometries_cs.h:756
std::vector< Cartesian_polygon, Malloc_allocator< Cartesian_polygon > > m_polygons
List of polygons in the collection.
Definition: geometries_cs.h:724
const_iterator end() const noexcept
Definition: geometries_cs.h:757
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:644
Cartesian_polygon & front() override
Returns the first polygon of the Multipolygon.
Definition: geometries_cs.h:759
Cartesian_polygon & operator[](std::size_t i) override
Definition: geometries_cs.h:762
A Cartesian 2d point.
Definition: geometries_cs.h:47
Cartesian_point()=default
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:51
Cartesian_point * clone() const override
Definition: geometries_cs.h:54
Cartesian_point(double x, double y)
Definition: geometries_cs.h:50
A Cartesian 2d polygon.
Definition: geometries_cs.h:269
decltype(m_interior_rings) & interior_rings()
Get list of interior rings.
Linearring & exterior_ring() override
Returns the exterior ring of the polygon.
Definition: geometries_cs.h:316
Cartesian_polygon()
Definition: geometries_cs.h:279
Cartesian_polygon * clone() const override
Definition: geometries_cs.h:290
std::vector< Cartesian_linearring, Malloc_allocator< Cartesian_linearring > > m_interior_rings
Interior rings (holes).
Definition: geometries_cs.h:276
std::size_t size() const override
Returns the size of the polygon.
Definition: geometries.cc:190
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:282
void push_back(const Linearring &lr) override
Adds a linear ring to the polygon.
Definition: geometries.cc:170
Cartesian_linearring & cartesian_exterior_ring() const
Get the exterior ring.
Definition: geometries.cc:210
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:160
Cartesian_linearring m_exterior_ring
Exterior ring.
Definition: geometries_cs.h:272
bool empty() const override
Checks if the polygon is empty.
Definition: geometries.cc:186
decltype(m_interior_rings) const & const_interior_rings() const
Get list of interior rings.
Linearring & interior_ring(std::size_t n) override
Returns an interior ring of the polygon.
Definition: geometries.cc:196
A geographic (ellipsoidal) 2d geometry collection.
Definition: geometries_cs.h:438
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:451
const_iterator begin() const noexcept
Definition: geometries_cs.h:483
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:492
decltype(m_geometries) ::iterator iterator
Definition: geometries_cs.h:444
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:461
const_iterator end() const noexcept
Definition: geometries_cs.h:486
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:465
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:462
Geographic_geometrycollection()
Definition: geometries_cs.h:447
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:479
Geometry & operator[](std::size_t i) override
Definition: geometries_cs.h:491
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:480
const Geometry & front() const override
Definition: geometries_cs.h:489
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:471
Geographic_geometrycollection * clone() const override
Clone pattern to easily duplicate a Geometrycollection.
Definition: geometries_cs.h:495
Geographic_geometrycollection(Geographic_geometrycollection &&gc) noexcept
Definition: geometries_cs.h:451
~Geographic_geometrycollection() override
Definition: geometries_cs.h:456
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:478
iterator begin() noexcept
Definition: geometries_cs.h:482
std::vector< Geometry *, Malloc_allocator< Geometry * > > m_geometries
List of geometries in the collection.
Definition: geometries_cs.h:441
decltype(m_geometries) ::const_iterator const_iterator
Definition: geometries_cs.h:445
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:532
Geometry & front() override
Returns the first geometry of the collection.
Definition: geometries_cs.h:488
iterator end() noexcept
Definition: geometries_cs.h:485
A geographic (ellipsoidal) 2d linear ring.
Definition: geometries_cs.h:223
void push_back(const gis::Point &pt) override
Adds a point to the end of the linestring.
Definition: geometries_cs.h:231
bool empty() const override
Checks if the linestring is empty.
Definition: geometries_cs.h:238
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:142
Geographic_linestring * clone() const override
This implementation of clone() uses a broader return type than other implementations.
Definition: geometries_cs.h:246
Geographic_point & back() override
Returns the last point of the linestring.
Definition: geometries_cs.h:250
const Geographic_point & front() const override
Definition: geometries_cs.h:256
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:230
Geographic_point & front() override
Returns the first point of the linestring.
Definition: geometries_cs.h:255
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:226
const Geographic_point & back() const override
Definition: geometries_cs.h:251
Geometry_type type() const override
Gets the geometry type of the object.
Definition: geometries_cs.h:225
void clear() noexcept override
Removes all points from the linestring.
Definition: geometries_cs.h:240
void push_back(gis::Point &&pt) override
Definition: geometries_cs.h:234
std::size_t size() const override
Returns the size of (number of points in) the linestring.
Definition: geometries_cs.h:239
void pop_front() override
Removes a point from the front of the linestring.
Definition: geometries_cs.h:237
const Geographic_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:263
Geographic_point & operator[](std::size_t i) override
Definition: geometries_cs.h:260
A geographic (ellipsoidal) 2d linestring.
Definition: geometries_cs.h:125
Geographic_point & operator[](std::size_t i) override
Definition: geometries_cs.h:170
bool empty() const override
Checks if the linestring is empty.
Definition: geometries.cc:122
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:102
const_iterator begin() const noexcept
Definition: geometries_cs.h:162
void push_back(const Point &pt) override
Adds a point to the end of the linestring.
Definition: geometries.cc:112
const Geographic_point & back() const override
Definition: geometries_cs.h:159
std::size_t size() const override
Returns the size of (number of points in) the linestring.
Definition: geometries_cs.h:150
void clear() noexcept override
Removes all points from the linestring.
Definition: geometries_cs.h:152
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:142
Geographic_linestring()
Definition: geometries_cs.h:138
Geographic_point & back() override
Returns the last point of the linestring.
Definition: geometries_cs.h:158
Geographic_point & front() override
Returns the first point of the linestring.
Definition: geometries_cs.h:167
decltype(m_points) ::value_type value_type
Definition: geometries_cs.h:134
decltype(m_points) ::const_iterator const_iterator
Definition: geometries_cs.h:136
const_iterator end() const noexcept
Definition: geometries_cs.h:165
const Geographic_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:171
const Geographic_point & front() const override
Definition: geometries_cs.h:168
iterator end() noexcept
Definition: geometries_cs.h:164
Geographic_linestring * clone() const override
Definition: geometries_cs.h:154
decltype(m_points) ::iterator iterator
Definition: geometries_cs.h:135
iterator begin() noexcept
Definition: geometries_cs.h:161
void resize(std::size_t count)
Definition: geometries_cs.h:151
std::vector< Geographic_point, Malloc_allocator< Geographic_point > > m_points
String of points constituting the linestring.
Definition: geometries_cs.h:131
void pop_front() override
Removes a point from the front of the linestring.
Definition: geometries_cs.h:148
A geographic (ellipsoidal) 2d multilinestring.
Definition: geometries_cs.h:661
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:691
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:680
const_iterator end() const noexcept
Definition: geometries_cs.h:701
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:686
decltype(m_linestrings) ::iterator iterator
Definition: geometries_cs.h:669
const Geographic_linestring & front() const override
Definition: geometries_cs.h:704
decltype(m_linestrings) ::const_iterator const_iterator
Definition: geometries_cs.h:670
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:692
std::vector< Geographic_linestring, Malloc_allocator< Geographic_linestring > > m_linestrings
List of linestrings in the collection.
Definition: geometries_cs.h:665
Geographic_linestring & front() override
Returns the first linestring of the Multilinestring.
Definition: geometries_cs.h:703
Geographic_linestring & back()
Definition: geometries_cs.h:694
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:690
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:676
Geographic_linestring & operator[](std::size_t i) override
Definition: geometries_cs.h:708
Geographic_multilinestring * clone() const override
Clone pattern to easily duplicate a Multilinestring.
Definition: geometries_cs.h:714
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:612
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:623
Geographic_multilinestring()
Definition: geometries_cs.h:672
const Geographic_linestring & back() const
Definition: geometries_cs.h:695
decltype(m_linestrings) ::value_type value_type
Definition: geometries_cs.h:668
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:711
iterator end() noexcept
Definition: geometries_cs.h:700
iterator begin() noexcept
Definition: geometries_cs.h:697
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:633
const_iterator begin() const noexcept
Definition: geometries_cs.h:698
A geographic (ellipsoidal) 2d multipoint.
Definition: geometries_cs.h:552
iterator end() noexcept
Definition: geometries_cs.h:586
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:580
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:569
Geographic_point & front() override
Returns the first point of the Multipoint.
Definition: geometries_cs.h:589
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:565
const Geographic_point & front() const override
Definition: geometries_cs.h:590
Geographic_multipoint()
Definition: geometries_cs.h:562
Geographic_point & operator[](std::size_t i) override
Definition: geometries_cs.h:592
Geographic_multipoint * clone() const override
Clone pattern to easily duplicate a Multipoint.
Definition: geometries_cs.h:596
const Geographic_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:593
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:558
iterator begin() noexcept
Definition: geometries_cs.h:583
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:581
decltype(m_points) ::value_type value_type
Definition: geometries_cs.h:558
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:575
const_iterator begin() const noexcept
Definition: geometries_cs.h:584
decltype(m_points) ::const_iterator const_iterator
Definition: geometries_cs.h:560
const_iterator end() const noexcept
Definition: geometries_cs.h:587
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:578
std::vector< Geographic_point, Malloc_allocator< Geographic_point > > m_points
List of points in the collection.
Definition: geometries_cs.h:555
decltype(m_points) ::iterator iterator
Definition: geometries_cs.h:559
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:568
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:579
A geographic (ellipsoidal) 2d multipolygon.
Definition: geometries_cs.h:774
Geographic_multipolygon()
Definition: geometries_cs.h:785
Geographic_polygon & operator[](std::size_t i) override
Definition: geometries_cs.h:818
decltype(m_polygons) ::value_type value_type
Definition: geometries_cs.h:781
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:799
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:686
Geographic_polygon & front() override
Returns the first polygon of the Multipolygon.
Definition: geometries_cs.h:813
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:676
iterator end() noexcept
Definition: geometries_cs.h:810
const Geographic_polygon & front() const override
Definition: geometries_cs.h:814
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:789
decltype(m_polygons) ::const_iterator const_iterator
Definition: geometries_cs.h:783
const_iterator end() const noexcept
Definition: geometries_cs.h:811
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:803
Geographic_multipolygon * clone() const override
Clone pattern to easily duplicate a Multipolygon.
Definition: geometries_cs.h:824
iterator begin() noexcept
Definition: geometries_cs.h:807
const_iterator begin() const noexcept
Definition: geometries_cs.h:808
std::vector< Geographic_polygon, Malloc_allocator< Geographic_polygon > > m_polygons
List of polygons in the collection.
Definition: geometries_cs.h:778
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:821
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:804
decltype(m_polygons) ::iterator iterator
Definition: geometries_cs.h:782
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:805
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:793
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:666
A geographic (ellipsoidal) 2d point.
Definition: geometries_cs.h:58
Geographic_point(double x, double y)
Definition: geometries_cs.h:61
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:62
Geographic_point()=default
Geographic_point * clone() const override
Definition: geometries_cs.h:65
A geographic (ellipsoidal) 2d polygon.
Definition: geometries_cs.h:322
decltype(m_interior_rings) & interior_rings()
Get list of interior rings.
decltype(m_interior_rings) const & const_interior_rings() const
Get list of interior rings.
Geographic_linearring & geographic_exterior_ring() const
Get the exterior ring.
Definition: geometries.cc:255
Linearring & exterior_ring() override
Returns the exterior ring of the polygon.
Definition: geometries_cs.h:369
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:335
Geographic_polygon * clone() const override
Definition: geometries_cs.h:343
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:200
std::size_t size() const override
Returns the size of the polygon.
Definition: geometries.cc:249
std::vector< Geographic_linearring, Malloc_allocator< Geographic_linearring > > m_interior_rings
Interior rings (holes).
Definition: geometries_cs.h:329
Geographic_polygon()
Definition: geometries_cs.h:332
Geographic_linearring m_exterior_ring
Exterior ring.
Definition: geometries_cs.h:325
bool empty() const override
Checks if the polygon is empty.
Definition: geometries.cc:245
void push_back(const Linearring &lr) override
Adds a linear ring to the polygon.
Definition: geometries.cc:229
Linearring & interior_ring(std::size_t n) override
Returns an interior ring of the polygon.
Definition: geometries.cc:259
Abstract visitor class to be used on class Geometry and descendants.
Definition: geometry_visitor.h:46
Abstract superclass for all geometric objects.
Definition: geometries.h:100
A collection of geometries.
Definition: geometries.h:410
A ring-shaped linestring.
Definition: geometries.h:320
A string of connected line segments.
Definition: geometries.h:256
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries.h:260
Geometry_type type() const override
Gets the geometry type of the object.
Definition: geometries.h:258
A collection of linestrings.
Definition: geometries.h:523
A collection of points.
Definition: geometries.h:484
A collection of polygons.
Definition: geometries.h:564
A 2d point.
Definition: geometries.h:150
double x() const
Gets the first coordinate value.
Definition: geometries.cc:46
double y() const
Gets the second coordinate value.
Definition: geometries.cc:48
A polygon consisting of an outer ring and zero or more interior rings defining holes in the polygon.
Definition: geometries.h:349
This file declares the geometry class hierarchy used by the server as the internal representation of ...
static int count
Definition: myisam_ftdump.cc:45
Coordinate_system
Types of coordinate systems.
Definition: geometries.h:69
@ kCartesian
A Cartesian plane with the same unit in both directions.
@ kGeographic
An ellipsoidal system with longitude and latitude coordinates, both in the same unit.
Geometry_type
Types of geometry objects.
Definition: geometries.h:53
PSI_memory_key key_memory_Geometry_objects_data
Definition: psi_memory_key.cc:48
int n
Definition: xcom_base.cc:509