1#ifndef SQL_GIS_GEOMETRIES_CS_H_INCLUDED
2#define SQL_GIS_GEOMETRIES_CS_H_INCLUDED
76 std::vector<Cartesian_point, Malloc_allocator<Cartesian_point>>
m_points;
94 bool empty()
const override;
130 std::vector<Geographic_point, Malloc_allocator<Geographic_point>>
m_points;
148 bool empty()
const override;
274 std::vector<Cartesian_linearring, Malloc_allocator<Cartesian_linearring>>
287 bool empty()
const override;
307 std::size_t
size()
const override;
327 std::vector<Geographic_linearring, Malloc_allocator<Geographic_linearring>>
340 bool empty()
const override;
360 std::size_t
size()
const override;
403 if (!g->is_empty())
return false;
413 bool empty()
const override;
466 if (!g->is_empty())
return false;
476 bool empty()
const override;
503 std::vector<Cartesian_point, Malloc_allocator<Cartesian_point>>
m_points;
520 if (!pt.is_empty())
return false;
527 bool empty()
const override;
554 std::vector<Geographic_point, Malloc_allocator<Geographic_point>>
m_points;
570 if (!pt.is_empty())
return false;
577 bool empty()
const override;
604 std::vector<Cartesian_linestring, Malloc_allocator<Cartesian_linestring>>
622 if (!ls.is_empty())
return false;
629 bool empty()
const override;
663 std::vector<Geographic_linestring, Malloc_allocator<Geographic_linestring>>
681 if (!ls.is_empty())
return false;
688 bool empty()
const override;
722 std::vector<Cartesian_polygon, Malloc_allocator<Cartesian_polygon>>
740 if (!py.is_empty())
return false;
747 bool empty()
const override;
776 std::vector<Geographic_polygon, Malloc_allocator<Geographic_polygon>>
794 if (!py.is_empty())
return false;
801 bool empty()
const override;
Malloc_allocator is a C++ STL memory allocator based on my_malloc/my_free.
Definition: malloc_allocator.h:62
A Cartesian 2d geometry collection.
Definition: geometries_cs.h:374
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:336
decltype(m_geometries) ::const_iterator const_iterator
Definition: geometries_cs.h:381
~Cartesian_geometrycollection() override
Definition: geometries_cs.h:392
Geometry & front() override
Returns the first geometry of the collection.
Definition: geometries_cs.h:424
Cartesian_geometrycollection()
Definition: geometries_cs.h:383
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:415
iterator end() noexcept
Definition: geometries_cs.h:421
const Geometry & front() const override
Definition: geometries_cs.h:425
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:414
iterator begin() noexcept
Definition: geometries_cs.h:418
const_iterator begin() const noexcept
Definition: geometries_cs.h:419
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:401
const_iterator end() const noexcept
Definition: geometries_cs.h:422
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:325
Cartesian_geometrycollection(Cartesian_geometrycollection &&gc) noexcept
Definition: geometries_cs.h:387
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:397
Cartesian_geometrycollection * clone() const override
Clone pattern to easily duplicate a Geometrycollection.
Definition: geometries_cs.h:431
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:428
std::vector< Geometry *, Malloc_allocator< Geometry * > > m_geometries
List of geometries in the collection.
Definition: geometries_cs.h:377
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:406
decltype(m_geometries) ::iterator iterator
Definition: geometries_cs.h:380
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:416
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:407
Geometry & operator[](std::size_t i) override
Definition: geometries_cs.h:427
A Cartesian 2d linear ring.
Definition: geometries_cs.h:176
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:183
void push_back(const gis::Point &pt) override
Adds a point to the end of the linestring.
Definition: geometries_cs.h:184
const Cartesian_point & front() const override
Definition: geometries_cs.h:209
void pop_front() override
Removes a point from the front of the linestring.
Definition: geometries_cs.h:190
Cartesian_point & front() override
Returns the first point of the linestring.
Definition: geometries_cs.h:208
Cartesian_point & back() override
Returns the last point of the linestring.
Definition: geometries_cs.h:203
const Cartesian_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:216
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:179
Cartesian_linestring * clone() const override
This implementation of clone() uses a broader return type than other implementations.
Definition: geometries_cs.h:199
void clear() noexcept override
Removes all points from the linestring.
Definition: geometries_cs.h:193
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:131
Geometry_type type() const override
Gets the geometry type of the object.
Definition: geometries_cs.h:178
std::size_t size() const override
Returns the size of (number of points in) the linestring.
Definition: geometries_cs.h:192
bool empty() const override
Checks if the linestring is empty.
Definition: geometries_cs.h:191
void push_back(gis::Point &&pt) override
Definition: geometries_cs.h:187
const Cartesian_point & back() const override
Definition: geometries_cs.h:204
Cartesian_point & operator[](std::size_t i) override
Definition: geometries_cs.h:213
A Cartesian 2d linestring.
Definition: geometries_cs.h:70
bool empty() const override
Checks if the linestring is empty.
Definition: geometries.cc:99
iterator begin() noexcept
Definition: geometries_cs.h:106
std::vector< Cartesian_point, Malloc_allocator< Cartesian_point > > m_points
String of points constituting the linestring.
Definition: geometries_cs.h:76
iterator end() noexcept
Definition: geometries_cs.h:109
void clear() noexcept override
Removes all points from the linestring.
Definition: geometries_cs.h:97
Cartesian_linestring()
Definition: geometries_cs.h:83
const_iterator begin() const noexcept
Definition: geometries_cs.h:107
Cartesian_point & back() override
Returns the last point of the linestring.
Definition: geometries_cs.h:103
std::size_t size() const override
Returns the size of (number of points in) the linestring.
Definition: geometries_cs.h:95
void pop_front() override
Removes a point from the front of the linestring.
Definition: geometries_cs.h:93
void push_back(const Point &pt) override
Adds a point to the end of the linestring.
Definition: geometries.cc:89
decltype(m_points) ::iterator iterator
Definition: geometries_cs.h:80
Cartesian_point & operator[](std::size_t i) override
Definition: geometries_cs.h:115
const Cartesian_point & front() const override
Definition: geometries_cs.h:113
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:63
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:87
Cartesian_point & front() override
Returns the first point of the linestring.
Definition: geometries_cs.h:112
Cartesian_linestring * clone() const override
Definition: geometries_cs.h:99
const Cartesian_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:116
const_iterator end() const noexcept
Definition: geometries_cs.h:110
const Cartesian_point & back() const override
Definition: geometries_cs.h:104
decltype(m_points) ::const_iterator const_iterator
Definition: geometries_cs.h:81
decltype(m_points) ::value_type value_type
Definition: geometries_cs.h:79
void resize(std::size_t count)
Definition: geometries_cs.h:96
A Cartesian 2d multilinestring.
Definition: geometries_cs.h:601
const_iterator begin() const noexcept
Definition: geometries_cs.h:638
Cartesian_linestring & front() override
Returns the first linestring of the Multilinestring.
Definition: geometries_cs.h:643
const_iterator end() const noexcept
Definition: geometries_cs.h:641
decltype(m_linestrings) ::value_type value_type
Definition: geometries_cs.h:608
std::vector< Cartesian_linestring, Malloc_allocator< Cartesian_linestring > > m_linestrings
List of linestrings in the collection.
Definition: geometries_cs.h:605
decltype(m_linestrings) ::iterator iterator
Definition: geometries_cs.h:609
Cartesian_multilinestring * clone() const override
Clone pattern to easily duplicate a Multilinestring.
Definition: geometries_cs.h:654
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:630
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:620
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:626
Cartesian_multilinestring()
Definition: geometries_cs.h:612
Cartesian_linestring & operator[](std::size_t i) override
Definition: geometries_cs.h:648
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:599
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:588
Cartesian_linestring & back()
Definition: geometries_cs.h:634
const Cartesian_linestring & front() const override
Definition: geometries_cs.h:644
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:609
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:616
iterator begin() noexcept
Definition: geometries_cs.h:637
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:632
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:651
iterator end() noexcept
Definition: geometries_cs.h:640
decltype(m_linestrings) ::const_iterator const_iterator
Definition: geometries_cs.h:610
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:631
const Cartesian_linestring & back() const
Definition: geometries_cs.h:635
A Cartesian 2d multipoint.
Definition: geometries_cs.h:500
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:514
const_iterator begin() const noexcept
Definition: geometries_cs.h:533
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:524
const Cartesian_point & front() const override
Definition: geometries_cs.h:539
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:530
Cartesian_point & front() override
Returns the first point of the Multipoint.
Definition: geometries_cs.h:538
Cartesian_multipoint * clone() const override
Clone pattern to easily duplicate a Multipoint.
Definition: geometries_cs.h:545
const Cartesian_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:542
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:555
decltype(m_points) ::iterator iterator
Definition: geometries_cs.h:507
decltype(m_points) ::value_type value_type
Definition: geometries_cs.h:506
decltype(m_points) ::const_iterator const_iterator
Definition: geometries_cs.h:508
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:545
Cartesian_point & operator[](std::size_t i) override
Definition: geometries_cs.h:541
iterator begin() noexcept
Definition: geometries_cs.h:532
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:535
iterator end() noexcept
Definition: geometries_cs.h:535
std::vector< Cartesian_point, Malloc_allocator< Cartesian_point > > m_points
List of points in the collection.
Definition: geometries_cs.h:503
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:518
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:529
Cartesian_multipoint()
Definition: geometries_cs.h:510
const_iterator end() const noexcept
Definition: geometries_cs.h:536
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:528
A Cartesian 2d multipolygon.
Definition: geometries_cs.h:719
Cartesian_multipolygon * clone() const override
Clone pattern to easily duplicate a Multipolygon.
Definition: geometries_cs.h:767
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:734
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:738
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:653
const_iterator begin() const noexcept
Definition: geometries_cs.h:753
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:749
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:750
decltype(m_polygons) ::const_iterator const_iterator
Definition: geometries_cs.h:728
iterator begin() noexcept
Definition: geometries_cs.h:752
decltype(m_polygons) ::iterator iterator
Definition: geometries_cs.h:727
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:764
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:748
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:744
decltype(m_polygons) ::value_type value_type
Definition: geometries_cs.h:726
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:663
Cartesian_multipolygon()
Definition: geometries_cs.h:730
const Cartesian_polygon & front() const override
Definition: geometries_cs.h:759
iterator end() noexcept
Definition: geometries_cs.h:755
std::vector< Cartesian_polygon, Malloc_allocator< Cartesian_polygon > > m_polygons
List of polygons in the collection.
Definition: geometries_cs.h:723
const_iterator end() const noexcept
Definition: geometries_cs.h:756
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:643
Cartesian_polygon & front() override
Returns the first polygon of the Multipolygon.
Definition: geometries_cs.h:758
Cartesian_polygon & operator[](std::size_t i) override
Definition: geometries_cs.h:761
A Cartesian 2d point.
Definition: geometries_cs.h:46
Cartesian_point()=default
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:50
Cartesian_point * clone() const override
Definition: geometries_cs.h:53
Cartesian_point(double x, double y)
Definition: geometries_cs.h:49
A Cartesian 2d polygon.
Definition: geometries_cs.h:268
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:315
Cartesian_polygon()
Definition: geometries_cs.h:278
Cartesian_polygon * clone() const override
Definition: geometries_cs.h:289
std::vector< Cartesian_linearring, Malloc_allocator< Cartesian_linearring > > m_interior_rings
Interior rings (holes).
Definition: geometries_cs.h:275
std::size_t size() const override
Returns the size of the polygon.
Definition: geometries.cc:189
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:281
void push_back(const Linearring &lr) override
Adds a linear ring to the polygon.
Definition: geometries.cc:169
Cartesian_linearring & cartesian_exterior_ring() const
Get the exterior ring.
Definition: geometries.cc:209
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:159
Cartesian_linearring m_exterior_ring
Exterior ring.
Definition: geometries_cs.h:271
bool empty() const override
Checks if the polygon is empty.
Definition: geometries.cc:185
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:195
A geographic (ellipsoidal) 2d geometry collection.
Definition: geometries_cs.h:437
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:450
const_iterator begin() const noexcept
Definition: geometries_cs.h:482
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:491
decltype(m_geometries) ::iterator iterator
Definition: geometries_cs.h:443
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:460
const_iterator end() const noexcept
Definition: geometries_cs.h:485
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:464
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:461
Geographic_geometrycollection()
Definition: geometries_cs.h:446
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:478
Geometry & operator[](std::size_t i) override
Definition: geometries_cs.h:490
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:479
const Geometry & front() const override
Definition: geometries_cs.h:488
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:470
Geographic_geometrycollection * clone() const override
Clone pattern to easily duplicate a Geometrycollection.
Definition: geometries_cs.h:494
Geographic_geometrycollection(Geographic_geometrycollection &&gc) noexcept
Definition: geometries_cs.h:450
~Geographic_geometrycollection() override
Definition: geometries_cs.h:455
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:477
iterator begin() noexcept
Definition: geometries_cs.h:481
std::vector< Geometry *, Malloc_allocator< Geometry * > > m_geometries
List of geometries in the collection.
Definition: geometries_cs.h:440
decltype(m_geometries) ::const_iterator const_iterator
Definition: geometries_cs.h:444
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:531
Geometry & front() override
Returns the first geometry of the collection.
Definition: geometries_cs.h:487
iterator end() noexcept
Definition: geometries_cs.h:484
A geographic (ellipsoidal) 2d linear ring.
Definition: geometries_cs.h:222
void push_back(const gis::Point &pt) override
Adds a point to the end of the linestring.
Definition: geometries_cs.h:230
bool empty() const override
Checks if the linestring is empty.
Definition: geometries_cs.h:237
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:141
Geographic_linestring * clone() const override
This implementation of clone() uses a broader return type than other implementations.
Definition: geometries_cs.h:245
Geographic_point & back() override
Returns the last point of the linestring.
Definition: geometries_cs.h:249
const Geographic_point & front() const override
Definition: geometries_cs.h:255
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:229
Geographic_point & front() override
Returns the first point of the linestring.
Definition: geometries_cs.h:254
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:225
const Geographic_point & back() const override
Definition: geometries_cs.h:250
Geometry_type type() const override
Gets the geometry type of the object.
Definition: geometries_cs.h:224
void clear() noexcept override
Removes all points from the linestring.
Definition: geometries_cs.h:239
void push_back(gis::Point &&pt) override
Definition: geometries_cs.h:233
std::size_t size() const override
Returns the size of (number of points in) the linestring.
Definition: geometries_cs.h:238
void pop_front() override
Removes a point from the front of the linestring.
Definition: geometries_cs.h:236
const Geographic_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:262
Geographic_point & operator[](std::size_t i) override
Definition: geometries_cs.h:259
A geographic (ellipsoidal) 2d linestring.
Definition: geometries_cs.h:124
Geographic_point & operator[](std::size_t i) override
Definition: geometries_cs.h:169
bool empty() const override
Checks if the linestring is empty.
Definition: geometries.cc:121
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:101
const_iterator begin() const noexcept
Definition: geometries_cs.h:161
void push_back(const Point &pt) override
Adds a point to the end of the linestring.
Definition: geometries.cc:111
const Geographic_point & back() const override
Definition: geometries_cs.h:158
std::size_t size() const override
Returns the size of (number of points in) the linestring.
Definition: geometries_cs.h:149
void clear() noexcept override
Removes all points from the linestring.
Definition: geometries_cs.h:151
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:141
Geographic_linestring()
Definition: geometries_cs.h:137
Geographic_point & back() override
Returns the last point of the linestring.
Definition: geometries_cs.h:157
Geographic_point & front() override
Returns the first point of the linestring.
Definition: geometries_cs.h:166
decltype(m_points) ::value_type value_type
Definition: geometries_cs.h:133
decltype(m_points) ::const_iterator const_iterator
Definition: geometries_cs.h:135
const_iterator end() const noexcept
Definition: geometries_cs.h:164
const Geographic_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:170
const Geographic_point & front() const override
Definition: geometries_cs.h:167
iterator end() noexcept
Definition: geometries_cs.h:163
Geographic_linestring * clone() const override
Definition: geometries_cs.h:153
decltype(m_points) ::iterator iterator
Definition: geometries_cs.h:134
iterator begin() noexcept
Definition: geometries_cs.h:160
void resize(std::size_t count)
Definition: geometries_cs.h:150
std::vector< Geographic_point, Malloc_allocator< Geographic_point > > m_points
String of points constituting the linestring.
Definition: geometries_cs.h:130
void pop_front() override
Removes a point from the front of the linestring.
Definition: geometries_cs.h:147
A geographic (ellipsoidal) 2d multilinestring.
Definition: geometries_cs.h:660
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:690
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:679
const_iterator end() const noexcept
Definition: geometries_cs.h:700
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:685
decltype(m_linestrings) ::iterator iterator
Definition: geometries_cs.h:668
const Geographic_linestring & front() const override
Definition: geometries_cs.h:703
decltype(m_linestrings) ::const_iterator const_iterator
Definition: geometries_cs.h:669
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:691
std::vector< Geographic_linestring, Malloc_allocator< Geographic_linestring > > m_linestrings
List of linestrings in the collection.
Definition: geometries_cs.h:664
Geographic_linestring & front() override
Returns the first linestring of the Multilinestring.
Definition: geometries_cs.h:702
Geographic_linestring & back()
Definition: geometries_cs.h:693
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:689
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:675
Geographic_linestring & operator[](std::size_t i) override
Definition: geometries_cs.h:707
Geographic_multilinestring * clone() const override
Clone pattern to easily duplicate a Multilinestring.
Definition: geometries_cs.h:713
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:611
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:622
Geographic_multilinestring()
Definition: geometries_cs.h:671
const Geographic_linestring & back() const
Definition: geometries_cs.h:694
decltype(m_linestrings) ::value_type value_type
Definition: geometries_cs.h:667
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:710
iterator end() noexcept
Definition: geometries_cs.h:699
iterator begin() noexcept
Definition: geometries_cs.h:696
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:632
const_iterator begin() const noexcept
Definition: geometries_cs.h:697
A geographic (ellipsoidal) 2d multipoint.
Definition: geometries_cs.h:551
iterator end() noexcept
Definition: geometries_cs.h:585
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:579
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:568
Geographic_point & front() override
Returns the first point of the Multipoint.
Definition: geometries_cs.h:588
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:564
const Geographic_point & front() const override
Definition: geometries_cs.h:589
Geographic_multipoint()
Definition: geometries_cs.h:561
Geographic_point & operator[](std::size_t i) override
Definition: geometries_cs.h:591
Geographic_multipoint * clone() const override
Clone pattern to easily duplicate a Multipoint.
Definition: geometries_cs.h:595
const Geographic_point & operator[](std::size_t i) const override
Definition: geometries_cs.h:592
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:557
iterator begin() noexcept
Definition: geometries_cs.h:582
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:580
decltype(m_points) ::value_type value_type
Definition: geometries_cs.h:557
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:574
const_iterator begin() const noexcept
Definition: geometries_cs.h:583
decltype(m_points) ::const_iterator const_iterator
Definition: geometries_cs.h:559
const_iterator end() const noexcept
Definition: geometries_cs.h:586
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:577
std::vector< Geographic_point, Malloc_allocator< Geographic_point > > m_points
List of points in the collection.
Definition: geometries_cs.h:554
decltype(m_points) ::iterator iterator
Definition: geometries_cs.h:558
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:567
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:578
A geographic (ellipsoidal) 2d multipolygon.
Definition: geometries_cs.h:773
Geographic_multipolygon()
Definition: geometries_cs.h:784
Geographic_polygon & operator[](std::size_t i) override
Definition: geometries_cs.h:817
decltype(m_polygons) ::value_type value_type
Definition: geometries_cs.h:780
void pop_front() override
Removes a geometry from the front of the collection.
Definition: geometries_cs.h:798
bool empty() const override
Checks if the collection is empty.
Definition: geometries.cc:685
Geographic_polygon & front() override
Returns the first polygon of the Multipolygon.
Definition: geometries_cs.h:812
void push_back(const Geometry &g) override
Adds a geometry to the collection.
Definition: geometries.cc:675
iterator end() noexcept
Definition: geometries_cs.h:809
const Geographic_polygon & front() const override
Definition: geometries_cs.h:813
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:788
decltype(m_polygons) ::const_iterator const_iterator
Definition: geometries_cs.h:782
const_iterator end() const noexcept
Definition: geometries_cs.h:810
std::size_t size() const override
Returns the size of the geometrycollection.
Definition: geometries_cs.h:802
Geographic_multipolygon * clone() const override
Clone pattern to easily duplicate a Multipolygon.
Definition: geometries_cs.h:823
iterator begin() noexcept
Definition: geometries_cs.h:806
const_iterator begin() const noexcept
Definition: geometries_cs.h:807
std::vector< Geographic_polygon, Malloc_allocator< Geographic_polygon > > m_polygons
List of polygons in the collection.
Definition: geometries_cs.h:777
const Geometry & operator[](std::size_t i) const override
Definition: geometries_cs.h:820
void resize(std::size_t count) override
Resizes the geometrycollection to contain a given number of elements.
Definition: geometries_cs.h:803
decltype(m_polygons) ::iterator iterator
Definition: geometries_cs.h:781
void clear() noexcept override
Removes all geometries from the geometrycollection.
Definition: geometries_cs.h:804
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries_cs.h:792
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:665
A geographic (ellipsoidal) 2d point.
Definition: geometries_cs.h:57
Geographic_point(double x, double y)
Definition: geometries_cs.h:60
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:61
Geographic_point()=default
Geographic_point * clone() const override
Definition: geometries_cs.h:64
A geographic (ellipsoidal) 2d polygon.
Definition: geometries_cs.h:321
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:254
Linearring & exterior_ring() override
Returns the exterior ring of the polygon.
Definition: geometries_cs.h:368
Coordinate_system coordinate_system() const override
Gets the coordinate system.
Definition: geometries_cs.h:334
Geographic_polygon * clone() const override
Definition: geometries_cs.h:342
bool accept(Geometry_visitor *v) override
Applies a hierarchical visitor to this geometry.
Definition: geometries.cc:199
std::size_t size() const override
Returns the size of the polygon.
Definition: geometries.cc:248
std::vector< Geographic_linearring, Malloc_allocator< Geographic_linearring > > m_interior_rings
Interior rings (holes).
Definition: geometries_cs.h:328
Geographic_polygon()
Definition: geometries_cs.h:331
Geographic_linearring m_exterior_ring
Exterior ring.
Definition: geometries_cs.h:324
bool empty() const override
Checks if the polygon is empty.
Definition: geometries.cc:244
void push_back(const Linearring &lr) override
Adds a linear ring to the polygon.
Definition: geometries.cc:228
Linearring & interior_ring(std::size_t n) override
Returns an interior ring of the polygon.
Definition: geometries.cc:258
Abstract visitor class to be used on class Geometry and descendants.
Definition: geometry_visitor.h:45
Abstract superclass for all geometric objects.
Definition: geometries.h:99
A collection of geometries.
Definition: geometries.h:409
A ring-shaped linestring.
Definition: geometries.h:319
A string of connected line segments.
Definition: geometries.h:255
bool is_empty() const override
Check if this is an empty geometry.
Definition: geometries.h:259
Geometry_type type() const override
Gets the geometry type of the object.
Definition: geometries.h:257
A collection of linestrings.
Definition: geometries.h:522
A collection of points.
Definition: geometries.h:483
A collection of polygons.
Definition: geometries.h:563
A 2d point.
Definition: geometries.h:149
double x() const
Gets the first coordinate value.
Definition: geometries.cc:45
double y() const
Gets the second coordinate value.
Definition: geometries.cc:47
A polygon consisting of an outer ring and zero or more interior rings defining holes in the polygon.
Definition: geometries.h:348
This file declares the geometry class hierarchy used by the server as the internal representation of ...
static int count
Definition: myisam_ftdump.cc:44
Coordinate_system
Types of coordinate systems.
Definition: geometries.h:68
@ 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:52
PSI_memory_key key_memory_Geometry_objects_data
Definition: psi_memory_key.cc:47
int n
Definition: xcom_base.cc:508