23#ifndef SPATIAL_INCLUDED
24#define SPATIAL_INCLUDED
66 point_xy(
double x_arg,
double y_arg) :
x(x_arg),
y(y_arg) {}
90 MBR(
const double xmin_arg,
const double ymin_arg,
const double xmax_arg,
91 const double ymax_arg)
105 void add_xy(
const char *px,
const char *py) {
180 assert(d >= 0 && d <= 2);
207 if (
p ==
nullptr)
return;
208 char *cp =
static_cast<char *
>(
p);
372 uint32 extra_point_space = 0)
const {
404 if (
no_data(nbytes))
return true;
432 uint32 extra_point_space = 0) {
475 String *wkb [[maybe_unused]]) {
482 const char *wkb [[maybe_unused]],
483 uint len [[maybe_unused]],
485 String *res [[maybe_unused]]) {
521 virtual int get_x(
double *x [[maybe_unused]])
const {
return -1; }
522 virtual int get_y(
double *y [[maybe_unused]])
const {
return -1; }
523 virtual int geom_length(
double *len [[maybe_unused]])
const {
return -1; }
524 virtual int is_closed(
int *closed [[maybe_unused]])
const {
return -1; }
577 bool *long_out_of_range,
578 bool *lat_out_of_range,
579 double *out_of_range_value) = 0;
585 uint32 data_len,
bool has_srid =
true);
587 bool has_srid =
true) {
593 bool init_stream =
true,
594 bool check_trailing =
true);
600 if (wkt->
reserve(len + 2, 512))
return true;
602 wkt->
append(
"GEOMETRYCOLLECTION");
617 m_ptr =
const_cast<void *
>(data);
622 m_ptr =
const_cast<void *
>(
static_cast<const void *
>(c->
data()));
671 assert(0xfff >=
flag);
691 uint32 offset,
bool bracket_pt =
false)
const;
754 "Flags are expected to line up exactly with an uint64.");
774 m_ptr =
const_cast<void *
>(ptr);
804 assert(dim > 0 && dim < 5);
1057 const char *
p =
static_cast<const char *
>(p0);
1064 char *
p =
static_cast<char *
>(p0);
1075 const char *
p =
static_cast<const char *
>(p0);
1087 char *
p =
static_cast<char *
>(p0);
1096 char *
p =
static_cast<char *
>(p0);
1104 char *
p =
static_cast<char *
>(p0);
1112 char *
p =
static_cast<char *
>(p0);
1162 bool get_mbr(
MBR *mbr, wkb_parser *wkb)
const override;
1180 bool *long_out_of_range,
1181 bool *lat_out_of_range,
1182 double *out_of_range_value)
override;
1213 void set_ptr(
void *ptr,
size_t len);
1218 template <std::
size_t K>
1221 ((
m_ptr !=
nullptr &&
1233 if (
m_ptr ==
nullptr)
return 0;
1243 template <std::
size_t K>
1244 void set(
double const &value) {
1250 if (
m_ptr ==
nullptr) {
1252 if (
m_ptr ==
nullptr) {
1266 bool x = get<0>(), px = pt.
get<0>();
1267 return x == px ? get<1>() < pt.
get<1>() : x < px;
1271 return (get<0>() == pt.
get<0>() && get<1>() == pt.
get<1>());
1279template <
typename T>
1305template <
typename T>
1385 bool operator!=(
const self &itr)
const {
return !(*
this == itr); }
1589 assert(itr.m_owner !=
NULL && itr.m_curidx >= 0 &&
1590 itr.m_curidx <
static_cast<index_type>(itr.m_owner->size()));
1591 return (*
m_owner)[itr.m_curidx];
1611 itr.m_curidx = newidx;
1661 :
base(idx, owner) {}
1685 this->
move_by(*
this, 1,
false);
1694 this->
move_by(*
this, 1,
false);
1703 this->
move_by(*
this, 1,
true);
1712 this->
move_by(*
this, 1,
true);
1748 this->
move_by(*
this, n,
false);
1773 this->
move_by(*
this, n,
true);
1831 this->
move_by(itr, offset,
false);
1832 assert(itr.m_owner !=
NULL && itr.m_curidx >= 0 &&
1833 itr.m_curidx <
static_cast<index_type>(this->m_owner->size()));
1834 return (*this->
m_owner)[itr.m_curidx];
1845template <
typename T>
1855template <
typename T>
1875template <
typename T>
1891template <
typename T>
1975 return *((
const T *)
p);
1992 const Geometry *
p = &((*m_geo_vect)[i]);
1993 return *((
const T *)
p);
2063 void set_ptr(
void *ptr,
size_t len);
2103 int is_closed(
int *closed)
const override;
2112 bool *long_out_of_range,
2113 bool *lat_out_of_range,
2114 double *out_of_range_value)
override;
2150 :
base(wkb, nbytes,
flags, srid, true) {
2192 bool *long_out_of_range,
2193 bool *lat_out_of_range,
2194 double *out_of_range_value)
override;
2246 void set_ptr(
void *ptr,
size_t len);
2299 bool *long_out_of_range,
2300 bool *lat_out_of_range,
2301 double *out_of_range_value)
override;
2334 int is_closed(
int *closed)
const override;
2339 bool *long_out_of_range,
2340 bool *lat_out_of_range,
2341 double *out_of_range_value)
override;
2377 bool *long_out_of_range,
2378 bool *lat_out_of_range,
2379 double *out_of_range_value)
override;
2391 :
base(ptr, nbytes,
flags, srid, true) {
2420 bool get_mbr(
MBR *mbr, wkb_parser *wkb)
const override;
2430 bool *long_out_of_range,
2431 bool *lat_out_of_range,
2432 double *out_of_range_value)
override;
2462 uint32 len,
bool has_hdr) = 0;
static mysql_service_status_t init()
Component initialization.
Definition: audit_api_message_emit.cc:570
Definition: spatial.h:461
Class_info(const char *name, int type_id, create_geom_t create_func)
Definition: spatial.cc:237
const LEX_CSTRING m_name
Definition: spatial.h:463
int m_type_id
Definition: spatial.h:464
create_geom_t m_create_func
Definition: spatial.h:465
Highest byte is stores byte order, dimension, nomem and geotype as follows: bo: byte order,...
Definition: spatial.h:731
uint64 nomem
Definition: spatial.h:746
uint64 zm
Definition: spatial.h:750
uint64 dim
Definition: spatial.h:745
uint64 bo
Definition: spatial.h:744
uint64 nbytes
Definition: spatial.h:748
uint64 props
Definition: spatial.h:749
uint64 unused
Definition: spatial.h:751
Flags_t(wkbType type, size_t len)
Definition: spatial.h:735
Flags_t()
Definition: spatial.h:733
uint64 geotype
Definition: spatial.h:747
Constant storage for WKB.
Definition: spatial.h:332
const char * m_data_end
Definition: spatial.h:335
uint32 length() const
Definition: spatial.h:348
wkb_container(const char *data, const char *data_end)
Definition: spatial.h:339
bool no_data(size_t data_amount) const
Check if there's enough data remaining as requested.
Definition: spatial.h:356
void set(const char *data, const char *data_end)
Definition: spatial.h:342
const char * m_data
Definition: spatial.h:334
const char * data() const
Definition: spatial.h:346
bool not_enough_points(uint32 expected_points, uint32 extra_point_space=0) const
Check if there're enough points remaining as requested.
Definition: spatial.h:371
const char * data_end() const
Definition: spatial.h:347
WKB parser, designed to traverse through WKB data from beginning of the buffer towards the end using ...
Definition: spatial.h:385
bool scan_wkb_header(wkb_header *header)
Definition: spatial.h:412
bool scan_non_zero_uint4(uint32 *number)
Definition: spatial.h:428
bool skip(size_t nbytes)
Definition: spatial.h:403
bool scan_n_points_and_check_data(uint32 *n_points, uint32 extra_point_space=0)
Definition: spatial.h:431
bool skip_coord()
Definition: spatial.h:409
wkb_parser(const char *data, const char *data_end)
Definition: spatial.h:395
void get_float8(double *x)
Definition: spatial.h:390
void scan_xy_unsafe(point_xy *p)
Definition: spatial.h:438
bool skip_wkb_header()
Definition: spatial.h:408
bool scan_xy(point_xy *p)
Definition: spatial.h:445
void skip_unsafe(size_t nbytes)
Definition: spatial.h:399
bool scan_coord(double *x)
Definition: spatial.h:450
bool scan_uint4(uint32 *number)
Definition: spatial.h:422
void get_uint4(uint32 *number)
Definition: spatial.h:387
Geometry vector class.
Definition: spatial.h:1876
Inplace_vector< T > base
Definition: spatial.h:1877
Geometry_vector()
Definition: spatial.h:1880
Definition: spatial.h:214
virtual bool get_data_as_wkt(String *txt, wkb_parser *wkb) const
Definition: spatial.h:489
static Geometry * create_from_wkb(THD *thd, Geometry_buffer *buffer, const char *wkb, uint32 len, String *res, bool init)
Read from 'wkb' (which contains WKB encoded in either endianess) the geometry data,...
Definition: spatial.cc:943
enum_coordinate_reference_system get_coordsys() const
Definition: spatial.h:515
void set_byte_order(Geometry::wkbByteOrder bo)
Definition: spatial.h:797
static String bad_geometry_data
Definition: spatial.h:323
bool polygon_is_wkb_form() const
In a polygon usable by boost geometry, the m_ptr points to the outer ring object, and m_inn_rings poi...
Definition: spatial.h:992
void set_ownmem(bool b)
Set whether this object has its own memory.
Definition: spatial.h:901
virtual uint32 get_data_size() const
Definition: spatial.h:471
Geometry(const void *ptr, size_t len, const Flags_t &flags, gis::srid_t srid)
Constructor used as BG adapter or by default constructors of children classes.
Definition: spatial.h:772
Geometry & operator=(const Geometry &rhs)
Assignment operator for Geometry class, assignment operators of children classes calls this to do gen...
Definition: spatial.cc:1229
enum_coordinate_reference_system
Definition: spatial.h:317
@ coord_first
Definition: spatial.h:318
@ coord_last
Definition: spatial.h:320
@ cartesian
Definition: spatial.h:319
bool as_wkt(String *wkt, wkb_parser *wkb) const
Definition: spatial.h:598
void * m_ptr
Pointer to the geometry's wkb data's 1st byte, right after its wkb header if any.
Definition: spatial.h:1040
char * get_cptr() const
Definition: spatial.h:789
static Class_info * ci_collection[wkb_last+1]
Definition: spatial.h:630
virtual bool init_from_wkt(Gis_read_stream *trs, String *wkb)
Definition: spatial.h:474
virtual void shallow_push(const Geometry *)
Definition: spatial.h:1021
bool is_components_no_overlapped() const
Definition: spatial.h:656
static bool is_valid_geotype(uint32 gtype)
Check if a given geometry type is a valid internal geometry type.
Definition: spatial.h:834
static Geometry * create_by_typeid(Geometry_buffer *buffer, int type_id)
Definition: spatial.cc:334
bool get_mbr_for_points(MBR *mbr, wkb_parser *wkb, uint offset) const
Get most bounding rectangle (mbr) for X points.
Definition: spatial.cc:1147
static Geometry * construct(Geometry_buffer *buffer, const String *str, bool has_srid=true)
Definition: spatial.h:586
wkbByteOrder
Definition: spatial.h:312
@ wkb_invalid
Definition: spatial.h:315
@ wkb_ndr
Definition: spatial.h:314
@ wkb_xdr
Definition: spatial.h:313
bool as_geometry(String *wkb, bool shallow_copy) const
Write this geometry's GEOMETRY byte string into specified buffer, the SRID will be written before the...
Definition: spatial.cc:523
Geometry * get_owner() const
Definition: spatial.h:793
Geometry *(* create_geom_t)(char *)
Callback which creates Geometry objects on top of a given placement.
Definition: spatial.h:459
bool has_out_of_line_components() const
If call Gis_wkb_vector<T>::resize() to add a component to X, the geometry may have a geometry not sto...
Definition: spatial.h:1009
Geometry()
Definition: spatial.h:756
virtual uint32 feature_dimension() const
Definition: spatial.h:516
void has_out_of_line_components(bool b)
Definition: spatial.h:1013
virtual int num_geometries(uint32 *num) const
Definition: spatial.h:529
bool create_point(String *result, wkb_parser *wkb) const
Create a point from data.
Definition: spatial.cc:1076
char get_dimension() const
Definition: spatial.h:914
static const uint32 MAX_GEOM_WKB_LENGTH
Definition: spatial.h:274
virtual bool get_mbr(MBR *mbr, wkb_parser *wkb) const
Definition: spatial.h:493
static const int MULTIPOLYGON_NO_OVERLAPPED_COMPS
Definition: spatial.h:270
virtual int geom_length(double *len) const
Definition: spatial.h:523
static bool is_valid_geotype(Geometry::wkbType gt)
Check if a given geometry type is a valid internal geometry type.
Definition: spatial.h:854
friend void parse_wkb_data(Geometry *geom, const char *p, size_t num_geoms)
Parse the wkb buffer to build the component vector m_geo_vect for geom.
Definition: spatial.cc:3861
gis::srid_t m_srid
Srid of this object.
Definition: spatial.h:1048
static bool is_valid_opengis_geotype(uint32 gtype)
Check if a given geometry type is a valid geometry type according to OpenGIS.
Definition: spatial.h:819
static Geometry * create_from_wkt(Geometry_buffer *buffer, Gis_read_stream *trs, String *wkt, bool init_stream=true, bool check_trailing=true)
Read wkt text from trs, and write little endian wkb encoding into 'wkt', and create a Geometry instan...
Definition: spatial.cc:436
uint16 get_props() const
Definition: spatial.h:675
virtual int get_x(double *x) const
Definition: spatial.h:521
void set_flags(const Flags_t &flags)
Definition: spatial.h:1053
virtual int is_closed(int *closed) const
Definition: spatial.h:524
bool as_wkt(String *wkt) const
Definition: spatial.h:608
static const int GEOM_LENGTH_VERIFIED
Definition: spatial.h:238
virtual int num_interior_ring(uint32 *n_int_rings) const
Definition: spatial.h:525
static Class_info * find_class(int type_id)
Definition: spatial.h:684
static const int POLYGON_INNER_RING
Definition: spatial.h:224
void set_length_verified(bool b) const
Definition: spatial.h:700
virtual bool validate_coordinate_range(double srs_angular_unit, bool *long_out_of_range, bool *lat_out_of_range, double *out_of_range_value)=0
Check that the coordinates of a geometry is within the valid range.
virtual int point_n(uint32 num, String *result) const
Definition: spatial.h:535
virtual int num_points(uint32 *n_points) const
Definition: spatial.h:528
void set_owner(Geometry *o)
Definition: spatial.h:795
Geometry * m_owner
The topmost (root) geometry object, whose m_ptr is the 1st byte of a wkb memory buffer.
Definition: spatial.h:1030
wkbType
Definition: spatial.h:291
@ wkb_multipolygon
Definition: spatial.h:299
@ wkb_multilinestring
Definition: spatial.h:298
@ wkb_point
Definition: spatial.h:294
@ wkb_polygon
Definition: spatial.h:296
@ wkb_invalid_type
Definition: spatial.h:292
@ wkb_geometrycollection
Definition: spatial.h:300
@ wkb_last
Definition: spatial.h:310
@ wkb_linestring
Definition: spatial.h:295
@ wkb_multipoint
Definition: spatial.h:297
@ wkb_polygon_inner_rings
Definition: spatial.h:309
@ wkb_first
Definition: spatial.h:293
bool envelope(String *result) const
Definition: spatial.cc:998
bool has_geom_header_space() const
Definition: spatial.h:644
bool dimension(uint32 *dim) const
Definition: spatial.h:508
static const int HAS_GEOM_HEADER_SPACE
Definition: spatial.h:261
virtual int interior_ring_n(uint32 num, String *result) const
Definition: spatial.h:539
bool is_polygon_ring() const
Definition: spatial.h:632
bool is_polygon_inner_ring() const
Definition: spatial.h:640
void set_srid(gis::srid_t id)
Definition: spatial.h:677
void set_ptr(const void *ptr)
Definition: spatial.h:944
Flags_t get_flags() const
Definition: spatial.h:1051
bool get_mbr(MBR *mbr)
Definition: spatial.h:497
void set_props(uint16 flag)
Definition: spatial.h:670
virtual uint init_from_wkb(THD *thd, const char *wkb, uint len, wkbByteOrder bo, String *res)
Definition: spatial.h:481
void set_dimension(char dim)
Definition: spatial.h:802
virtual bool reverse_coordinates()=0
Reverses the coordinates of a geometry.
uint32 get_ogc_geotype() const
Build an OGC standard type value from m_flags.zm and m_flags.geotype.
Definition: spatial.h:936
wkbType get_type() const
Definition: spatial.h:512
virtual int get_y(double *y) const
Definition: spatial.h:522
void * get_ptr() const
Definition: spatial.h:787
void polygon_is_wkb_form(bool b)
Definition: spatial.h:996
static const int POLYGON_OUTER_RING
Definition: spatial.h:223
gis::srid_t get_srid() const
Definition: spatial.h:679
virtual int geometry_n(uint32 num, String *result) const
Definition: spatial.h:543
virtual int exterior_ring(String *ring) const
Definition: spatial.h:534
bool get_ownmem() const
Returns whether this object has its own memory.
Definition: spatial.h:907
void set_bg_adapter(bool b) const
Set whether this object is a BG adapter.
Definition: spatial.h:962
Geometry::wkbByteOrder get_byte_order() const
Definition: spatial.h:909
Flags_t m_flags
Flags and meta information about this object.
Definition: spatial.h:1045
uchar * get_ucptr() const
Definition: spatial.h:791
virtual const Class_info * get_class_info() const
Definition: spatial.h:469
void has_geom_header_space(bool b)
Definition: spatial.h:649
bool is_polygon_outer_ring() const
Definition: spatial.h:636
static const int HAS_OUT_OF_LINE_COMPONENTS
Definition: spatial.h:244
virtual ~Geometry()
Definition: spatial.cc:1180
void append_points(String *txt, uint32 n_points, wkb_parser *wkb, uint32 offset, bool bracket_pt=false) const
Append N points from packed format to text Before calling this function, caller must have already che...
Definition: spatial.cc:1119
void set_geotype(Geometry::wkbType gt)
Definition: spatial.h:882
bool is_bg_adapter() const
Whether the Geometry object is created to be used by Boost Geometry or only by MySQL.
Definition: spatial.h:952
const void * normalize_ring_order()
In place normalize polygons' rings, making outer ring CCW and inner rings CW by reversing the ring's ...
Definition: spatial.cc:4135
virtual int start_point(String *point) const
Definition: spatial.h:532
void set_data_ptr(const wkb_container *c)
Definition: spatial.h:621
Geometry::wkbType get_geotype() const
Definition: spatial.h:916
void set_components_no_overlapped(bool b)
Definition: spatial.h:660
virtual void donate_data()
Definition: spatial.h:974
static bool is_well_formed(const char *from, size_t length, wkbType type, wkbByteOrder bo)
Verify that a string is a well-formed GEOMETRY string.
Definition: spatial.cc:755
virtual bool dimension(uint32 *dim, wkb_parser *wkb) const
Definition: spatial.h:501
void set_nbytes(size_t n) const
Definition: spatial.h:888
bool as_wkb(String *wkb, bool shallow_copy) const
Write this geometry's WKB byte string into specified buffer, the SRID is not written into the buffer.
Definition: spatial.cc:475
virtual int end_point(String *point) const
Definition: spatial.h:533
virtual int copy_points(String *result) const
Definition: spatial.h:530
void set_data_ptr(const void *data, size_t data_len)
Definition: spatial.h:616
void * get_data_ptr() const
Definition: spatial.h:625
static const int POLYGON_IN_WKB_FORM
Definition: spatial.h:251
static Geometry * construct(Geometry_buffer *buffer, const char *data, uint32 data_len, bool has_srid=true)
Construct a Geometry object using GEOMETRY byte string.
Definition: spatial.cc:361
bool is_length_verified() const
Definition: spatial.h:695
size_t get_nbytes() const
Definition: spatial.h:938
static const int IS_BOOST_GEOMETRY_ADAPTER
Definition: spatial.h:232
static const gis::srid_t default_srid
Definition: spatial.h:276
Definition: spatial.h:2399
const Class_info * get_class_info() const override
Definition: spatial.cc:3637
bool reverse_coordinates() override
Reverses the coordinates of a geometry.
Definition: spatial.cc:3565
static Geometry * scan_header_and_create(wkb_parser *wkb, Geometry_buffer *buffer)
Create a Geometry object from WKB.
Definition: spatial.cc:3101
int num_geometries(uint32 *num) const override
Definition: spatial.cc:3491
bool dimension(uint32 *dim, wkb_parser *wkb) const override
Definition: spatial.cc:3546
bool get_data_as_wkt(String *txt, wkb_parser *wkb) const override
Definition: spatial.cc:3436
bool get_mbr(MBR *mbr, wkb_parser *wkb) const override
Definition: spatial.cc:3461
Gis_geometry_collection()
Definition: spatial.h:2405
bool validate_coordinate_range(double srs_angular_unit, bool *long_out_of_range, bool *lat_out_of_range, double *out_of_range_value) override
Check that the coordinates of a geometry is within the valid range.
Definition: spatial.cc:3604
bool init_from_wkt(Gis_read_stream *trs, String *wkb) override
Definition: spatial.cc:3350
bool append_geometry(const Geometry *geo, String *gcbuf)
Append geometry into geometry collection which can be empty.
Definition: spatial.cc:3136
int geometry_n(uint32 num, String *result) const override
Definition: spatial.cc:3498
uint32 get_data_size() const override
Definition: spatial.cc:3303
uint32 feature_dimension() const override
Definition: spatial.h:2424
uint init_from_wkb(THD *thd, const char *wkb, uint len, wkbByteOrder bo, String *res) override
Definition: spatial.cc:3393
Definition: spatial.h:2089
Gis_line_string(const void *wkb, size_t len, const Flags_t &flags, gis::srid_t srid)
Definition: spatial.h:2125
int point_n(uint32 n, String *result) const override
Definition: spatial.cc:1633
Gis_wkb_vector< Gis_point > base_type
Definition: spatial.h:2118
int is_closed(int *closed) const override
Definition: spatial.cc:1589
bool get_mbr(MBR *mbr, wkb_parser *wkb) const override
Definition: spatial.cc:1566
uint init_from_wkb(THD *thd, const char *wkb, uint len, wkbByteOrder bo, String *res) override
Definition: spatial.cc:1514
bool init_from_wkt(Gis_read_stream *trs, String *wkb) override
Definition: spatial.cc:1472
Gis_line_string(const self &ls)=default
static const uint32 max_n_points
Definition: spatial.h:2091
uint32 feature_dimension() const override
Definition: spatial.h:2108
Gis_line_string & operator=(const Gis_line_string &)=default
bool get_data_as_wkt(String *txt, wkb_parser *wkb) const override
Definition: spatial.cc:1545
bool validate_coordinate_range(double srs_angular_unit, bool *long_out_of_range, bool *lat_out_of_range, double *out_of_range_value) override
Check that the coordinates of a geometry is within the valid range.
Definition: spatial.cc:1662
int num_points(uint32 *n_points) const override
Definition: spatial.cc:1613
Gis_line_string(bool is_bg_adapter=true)
Definition: spatial.h:2121
uint32 get_data_size() const override
Definition: spatial.cc:1450
bool reverse_coordinates() override
Reverses the coordinates of a geometry.
Definition: spatial.cc:1642
int end_point(String *point) const override
Definition: spatial.cc:1625
int geom_length(double *len) const override
Definition: spatial.cc:1570
const Class_info * get_class_info() const override
Definition: spatial.cc:1689
int start_point(String *point) const override
Definition: spatial.cc:1618
Definition: spatial.h:2323
int geom_length(double *len) const override
Definition: spatial.cc:2718
int geometry_n(uint32 num, String *result) const override
Definition: spatial.cc:2699
uint32 feature_dimension() const override
Definition: spatial.h:2335
const Class_info * get_class_info() const override
Definition: spatial.cc:2828
bool get_mbr(MBR *mbr, wkb_parser *wkb) const override
Definition: spatial.cc:2683
bool init_from_wkt(Gis_read_stream *trs, String *wkb) override
Definition: spatial.cc:2594
uint init_from_wkb(THD *thd, const char *wkb, uint len, wkbByteOrder bo, String *res) override
Definition: spatial.cc:2621
Gis_multi_line_string(const self &mls)=default
bool validate_coordinate_range(double srs_angular_unit, bool *long_out_of_range, bool *lat_out_of_range, double *out_of_range_value) override
Check that the coordinates of a geometry is within the valid range.
Definition: spatial.cc:2795
Gis_multi_line_string(const void *ptr, size_t nbytes, const Flags_t &, gis::srid_t srid)
Definition: spatial.h:2352
uint32 get_data_size() const override
Definition: spatial.cc:2568
int is_closed(int *closed) const override
Definition: spatial.cc:2741
bool get_data_as_wkt(String *txt, wkb_parser *wkb) const override
Definition: spatial.cc:2659
Gis_multi_line_string(bool is_bg_adapter=true)
Definition: spatial.h:2348
int num_geometries(uint32 *num) const override
Definition: spatial.cc:2694
bool reverse_coordinates() override
Reverses the coordinates of a geometry.
Definition: spatial.cc:2758
Gis_wkb_vector< Gis_line_string > base
Definition: spatial.h:2345
Definition: spatial.h:2280
int num_geometries(uint32 *num) const override
Definition: spatial.cc:2486
bool get_mbr(MBR *mbr, wkb_parser *wkb) const override
Definition: spatial.cc:2482
bool get_data_as_wkt(String *txt, wkb_parser *wkb) const override
Definition: spatial.cc:2464
bool init_from_wkt(Gis_read_stream *trs, String *wkb) override
Definition: spatial.cc:2394
Gis_multi_point(bool is_bg_adapter=true)
Definition: spatial.h:2308
bool reverse_coordinates() override
Reverses the coordinates of a geometry.
Definition: spatial.cc:2504
static const uint32 max_n_points
Definition: spatial.h:2282
uint32 get_data_size() const override
Definition: spatial.cc:2376
Gis_wkb_vector< Gis_point > base_type
Definition: spatial.h:2305
uint32 feature_dimension() const override
Definition: spatial.h:2295
const Class_info * get_class_info() const override
Definition: spatial.cc:2563
Gis_multi_point(const self &mpts)=default
bool validate_coordinate_range(double srs_angular_unit, bool *long_out_of_range, bool *lat_out_of_range, double *out_of_range_value) override
Check that the coordinates of a geometry is within the valid range.
Definition: spatial.cc:2530
uint init_from_wkb(THD *thd, const char *wkb, uint len, wkbByteOrder bo, String *res) override
Definition: spatial.cc:2437
int geometry_n(uint32 num, String *result) const override
Definition: spatial.cc:2491
Gis_multi_point(const void *ptr, size_t nbytes, const Flags_t &flags, gis::srid_t srid)
Definition: spatial.h:2312
Definition: spatial.h:2363
Gis_multi_polygon(const void *ptr, size_t nbytes, const Flags_t &flags, gis::srid_t srid)
Definition: spatial.h:2389
int num_geometries(uint32 *num) const override
Definition: spatial.cc:2976
uint32 get_data_size() const override
Definition: spatial.cc:2833
Gis_wkb_vector< Gis_polygon > base
Definition: spatial.h:2383
bool get_data_as_wkt(String *txt, wkb_parser *wkb) const override
Definition: spatial.cc:2927
uint32 feature_dimension() const override
Definition: spatial.h:2373
Gis_multi_polygon(const self &mpl)=default
int geometry_n(uint32 num, String *result) const override
Definition: spatial.cc:2981
bool get_mbr(MBR *mbr, wkb_parser *wkb) const override
Definition: spatial.cc:2959
bool reverse_coordinates() override
Reverses the coordinates of a geometry.
Definition: spatial.cc:3010
bool init_from_wkt(Gis_read_stream *trs, String *wkb) override
Definition: spatial.cc:2864
bool validate_coordinate_range(double srs_angular_unit, bool *long_out_of_range, bool *lat_out_of_range, double *out_of_range_value) override
Check that the coordinates of a geometry is within the valid range.
Definition: spatial.cc:3048
const Class_info * get_class_info() const override
Definition: spatial.cc:3082
Gis_multi_polygon(bool is_bg_adapter=true)
Definition: spatial.h:2385
uint init_from_wkb(THD *thd, const char *wkb, uint len, wkbByteOrder bo, String *res) override
Definition: spatial.cc:2890
Definition: spatial.h:1142
int get_y(double *y) const override
Definition: spatial.h:1172
Gis_point(bool is_bg_adapter=true)
Definition: spatial.h:1189
bool get_data_as_wkt(String *txt, wkb_parser *wkb) const override
Definition: spatial.cc:1392
Gis_point & operator=(const Gis_point &rhs)
Deep assignment from point 'p' to this object.
Definition: spatial.cc:1281
uint init_from_wkb(THD *thd, const char *wkb, uint len, wkbByteOrder bo, String *res) override
Definition: spatial.cc:1380
bool validate_coordinate_range(double srs_angular_unit, bool *long_out_of_range, bool *lat_out_of_range, double *out_of_range_value) override
Check that the coordinates of a geometry is within the valid range.
Definition: spatial.cc:1427
bool get_mbr(MBR *mbr, wkb_parser *wkb) const override
Definition: spatial.cc:1405
Gis_point(const void *ptr, size_t nbytes, const Flags_t &flags, gis::srid_t srid)
Default constructor, no initialization.
Definition: spatial.h:1196
bool operator<(const Gis_point &pt) const
Definition: spatial.h:1265
bool init_from_wkt(Gis_read_stream *trs, String *wkb, const bool parens)
Initialize from a partial WKT string (everything following "POINT").
Definition: spatial.cc:1356
const Class_info * get_class_info() const override
Definition: spatial.cc:1445
~Gis_point() override=default
int get_x(double *x) const override
Definition: spatial.h:1168
bool reverse_coordinates() override
Reverses the coordinates of a geometry.
Definition: spatial.cc:1413
int get_xy(point_xy *p) const
Definition: spatial.h:1164
bool operator!=(const Gis_point &pt) const
Definition: spatial.h:1274
double get() const
Get a coordinate.
Definition: spatial.h:1219
uint32 feature_dimension() const override
Definition: spatial.h:1176
Geometry base
Definition: spatial.h:1187
bool init_from_wkt(Gis_read_stream *trs, String *wkb) override
Definition: spatial.h:1156
void set_ptr(void *ptr, size_t len)
Shallow assignment, let this point object refer to the specified memory address as its WKB data,...
Definition: spatial.cc:1334
uint32 get_data_size() const override
Definition: spatial.cc:1348
bool operator==(const Gis_point &pt) const
Definition: spatial.h:1270
void set(double const &value)
Set a coordinate.
Definition: spatial.h:1244
Definition: spatial.h:2142
Gis_polygon_ring(const self &r)=default
bool set_ring_order(bool want_ccw)
Set the specified ring to counter-clockwise(CCW) or clockwise(CW) if it's not.
Definition: spatial.cc:1868
Gis_wkb_vector< Gis_point > base
Definition: spatial.h:2144
Gis_polygon_ring & operator=(const Gis_polygon_ring &)=default
~Gis_polygon_ring() override=default
Gis_polygon_ring()
Definition: spatial.h:2160
Gis_polygon_ring(const void *wkb, size_t nbytes, const Flags_t &flags, gis::srid_t srid)
Definition: spatial.h:2148
Definition: spatial.h:2177
uint init_from_wkb(THD *thd, const char *wkb, uint len, wkbByteOrder bo, String *res) override
Definition: spatial.cc:2085
bool validate_coordinate_range(double srs_angular_unit, bool *long_out_of_range, bool *lat_out_of_range, double *out_of_range_value) override
Check that the coordinates of a geometry is within the valid range.
Definition: spatial.cc:2229
const Class_info * get_class_info() const override
Definition: spatial.cc:2265
int interior_ring_n(uint32 num, String *result) const override
Definition: spatial.cc:2174
uint32 feature_dimension() const override
Definition: spatial.h:2188
inner_container_type * m_inn_rings
Definition: spatial.h:2273
int num_interior_ring(uint32 *n_int_rings) const override
Definition: spatial.cc:2167
bool get_mbr(MBR *mbr, wkb_parser *wkb) const override
Definition: spatial.cc:2139
void set_inner_rings(inner_container_type *inns) SUPPRESS_UBSAN
Definition: spatial.h:2268
void clear()
Clears outer and inner rings.
Definition: spatial.h:2222
bool get_data_as_wkt(String *txt, wkb_parser *wkb) const override
Definition: spatial.cc:2118
void set_ptr(void *ptr, size_t len)
Set WKB data to this object, the WKB data will be used read only.
Definition: spatial.cc:1816
Gis_polygon_ring ring_type
Definition: spatial.h:2198
void to_wkb_unparsed()
Make the polygon's data in a single buffer as WKB format.
Definition: spatial.cc:1843
ring_type & outer() const
Definition: spatial.h:2201
void donate_data() override
Definition: spatial.h:2253
inner_container_type * inner_rings() const SUPPRESS_UBSAN
Definition: spatial.h:2263
Gis_polygon(bool isbgadapter=true)
Definition: spatial.h:2235
Gis_polygon & operator=(const Gis_polygon &rhs)
Deep assignment from polygon 'o' to this object.
Definition: spatial.cc:1782
int exterior_ring(String *result) const override
Definition: spatial.cc:2150
uint32 get_data_size() const override
Definition: spatial.cc:2029
bool init_from_wkt(Gis_read_stream *trs, String *wkb) override
Definition: spatial.cc:2058
void make_rings()
Make outer ring and inner rings objects for this polygon if it doesn't have one yet.
Definition: spatial.cc:2012
~Gis_polygon() override
Definition: spatial.cc:1747
Gis_wkb_vector< ring_type > inner_container_type
Definition: spatial.h:2199
Gis_polygon(const void *wkb, size_t nbytes, const Flags_t &flags, gis::srid_t srid)
Definition: spatial.cc:1731
bool reverse_coordinates() override
Reverses the coordinates of a geometry.
Definition: spatial.cc:2199
inner_container_type & inners() const
Definition: spatial.h:2211
bool set_polygon_ring_order()
Set this polygon's outer ring to be CCW and inner rings to be CW.
Definition: spatial.cc:1988
Gis_wkb_vector_const_iterator is const_iterator class for Gis_wkb_vector, and base class of Gis_wkb_v...
Definition: spatial.h:1306
bool operator>=(const self &itr) const
Greater equal comparison operator.
Definition: spatial.h:1404
bool operator==(const self &itr) const
Equality comparison operator.
Definition: spatial.h:1377
void move_by(self &itr, difference_type n, bool back) const
Definition: spatial.h:1600
Gis_wkb_vector< T > owner_t
Definition: spatial.h:1309
~Gis_wkb_vector_const_iterator()=default
const self & operator=(const self &itr)
Assignment operator.
Definition: spatial.h:1483
value_type & reference
This is the return type for operator[].
Definition: spatial.h:1323
owner_t::size_type size_type
Definition: spatial.h:1320
const self & operator-=(difference_type n)
Move this iterator backward by n elements.
Definition: spatial.h:1528
self & operator++()
Pre-increment.
Definition: spatial.h:1435
self operator+(difference_type n) const
Iterator movement operator.
Definition: spatial.h:1495
Gis_wkb_vector_const_iterator(index_type idx, const owner_t *owner)
Definition: spatial.h:1347
std::random_access_iterator_tag iterator_category
Definition: spatial.h:1327
ptrdiff_t index_type
Definition: spatial.h:1310
self & operator--()
Pre-decrement.
Definition: spatial.h:1459
bool operator>(const self &itr) const
Greater comparison operator.
Definition: spatial.h:1410
index_type m_curidx
Current element's index, starting from 0.
Definition: spatial.h:1616
self operator++(int)
Post-increment.
Definition: spatial.h:1446
owner_t * m_owner
The owner container of this iteraotr.
Definition: spatial.h:1618
difference_type operator-(const self &itr) const
Iterator distance operator.
Definition: spatial.h:1543
self operator--(int)
Post-decrement.
Definition: spatial.h:1471
Gis_wkb_vector_const_iterator()
Definition: spatial.h:1342
difference_type distance_type
Definition: spatial.h:1319
const self & operator+=(difference_type n)
Move this iterator forward by n elements.
Definition: spatial.h:1505
T value_type
Definition: spatial.h:1317
bool operator<=(const self &itr) const
Less equal comparison operator.
Definition: spatial.h:1399
pointer operator->() const
Arrow operator.
Definition: spatial.h:1572
ptrdiff_t difference_type
Definition: spatial.h:1318
reference operator*() const
Dereference operator.
Definition: spatial.h:1560
bool operator<(const self &itr) const
Less than comparison operator.
Definition: spatial.h:1391
reference operator[](difference_type offset) const
Iterator index operator.
Definition: spatial.h:1585
self operator-(difference_type n) const
Iterator movement operator.
Definition: spatial.h:1517
value_type * pointer
Definition: spatial.h:1324
bool operator!=(const self &itr) const
Unequal compare, identical to !operator(==itr)
Definition: spatial.h:1385
Gis_wkb_vector_const_iterator(const self &vi)
Definition: spatial.h:1337
This class is the iterator class for Gis_wkb_vector, its instances can be used to mutate their refere...
Definition: spatial.h:1630
difference_type distance_type
Definition: spatial.h:1640
Gis_wkb_vector_iterator(const base &obj)
Definition: spatial.h:1658
Gis_wkb_vector_iterator(index_type idx, const owner_t *owner)
Definition: spatial.h:1660
ptrdiff_t index_type
Definition: spatial.h:1637
self operator-(difference_type n) const
Iterator movement operator.
Definition: spatial.h:1760
value_type & reference
Definition: spatial.h:1641
Gis_wkb_vector_iterator(const self &vi)
Definition: spatial.h:1654
const self & operator-=(difference_type n)
Move this iterator forward by n elements.
Definition: spatial.h:1772
value_type * pointer
Definition: spatial.h:1642
std::random_access_iterator_tag iterator_category
Definition: spatial.h:1644
reference operator*() const
Dereference operator.
Definition: spatial.h:1805
pointer operator->() const
Arrow operator.
Definition: spatial.h:1817
self operator++(int)
Post-increment.
Definition: spatial.h:1692
Gis_wkb_vector_const_iterator< T > base
Definition: spatial.h:1633
const self & operator+=(difference_type n)
Move this iterator backward by n elements.
Definition: spatial.h:1747
Gis_wkb_vector< T > owner_t
Definition: spatial.h:1634
Gis_wkb_vector_iterator()
Definition: spatial.h:1656
self operator+(difference_type n) const
Iterator movement operator.
Definition: spatial.h:1736
ptrdiff_t difference_type
Definition: spatial.h:1639
self & operator--()
Pre-decrement.
Definition: spatial.h:1702
const self & operator=(const self &itr)
Assignment operator.
Definition: spatial.h:1722
reference operator[](difference_type offset) const
Iterator index operator.
Definition: spatial.h:1829
self & operator++()
Pre-increment.
Definition: spatial.h:1684
self operator--(int)
Post-decrement.
Definition: spatial.h:1710
difference_type operator-(const self &itr) const
Iterator distance operator.
Definition: spatial.h:1788
~Gis_wkb_vector_iterator()=default
T value_type
Definition: spatial.h:1638
Gis_wkb_vector class template definition.
Definition: spatial.h:1892
const_iterator end() const
Create an open boundary iterator.
Definition: spatial.h:1951
size_t size_type
Definition: spatial.h:1902
iterator end()
Create an open boundary iterator.
Definition: spatial.h:1943
const_reference back() const
Definition: spatial.h:1968
void set_geo_vect(Geo_vector *ptr)
Definition: spatial.h:2049
iterator begin()
Definition: spatial.h:1923
T value_type
Definition: spatial.h:1899
const_iterator begin() const
Create a const iterator.
Definition: spatial.h:1934
ptrdiff_t index_type
Definition: spatial.h:1895
bool reverse_coordinates() override
Reverses the coordinates of a geometry.
Definition: spatial.h:2070
const_reference operator[](index_type i) const
Definition: spatial.h:1988
void reassemble()
Because of resize, a geometry's components may reside not in one chunk, some may in the m_ptr's chunk...
Definition: spatial.cc:4206
const T * const_pointer
Definition: spatial.h:1903
void shallow_push(const Geometry *g) override SUPPRESS_UBSAN
The copy constructors of Geometry classes always do deep copy, but when pushing a Geometry object int...
Definition: spatial.cc:4572
ptrdiff_t difference_type
Definition: spatial.h:1907
size_t get_nbytes_free() const
Get number of free bytes in the buffer held by m_ptr.
Definition: spatial.cc:4679
Gis_wkb_vector< Gis_point > Linestring
Definition: spatial.h:2080
size_t current_size() const
Returns payload number of bytes of the topmost geometry holding this geometry, i.e.
Definition: spatial.cc:4666
void donate_data() override
Definition: spatial.h:2056
void clear()
Update support We suppose updating a geometry can happen in the following ways:
Definition: spatial.cc:4641
reference back()
Definition: spatial.h:1978
bool validate_coordinate_range(double, bool *, bool *, double *) override
Check that the coordinates of a geometry is within the valid range.
Definition: spatial.h:2074
void clear_wkb_data()
Definition: spatial.h:2032
Gis_wkb_vector_iterator< T > iterator
Definition: spatial.h:1901
const T & const_reference
Definition: spatial.h:1904
self & operator=(const self &rhs)
Deep assignment from vector 'rhs' to this object.
Definition: spatial.cc:4495
Gis_wkb_vector_const_iterator< T > const_iterator
Definition: spatial.h:1900
Geo_vector * m_geo_vect
The geometry vector of this geometry object's components, each of which is an object of Geometry or i...
Definition: spatial.h:1916
size_type size() const
Get container size.
Definition: spatial.h:1961
T * pointer
Definition: spatial.h:1905
~Gis_wkb_vector() override
Definition: spatial.h:2010
void resize(size_t sz)
Definition: spatial.cc:4841
Geometry base
Definition: spatial.h:1896
bool empty() const
Definition: spatial.h:1966
Geo_vector * get_geo_vect(bool create_if_null=false)
Definition: spatial.h:2042
reference operator[](index_type i)
Definition: spatial.h:1996
void set_ptr(void *ptr, size_t len)
Definition: spatial.cc:4596
Geo_vector * get_geo_vect() const
Definition: spatial.h:2047
Gis_wkb_vector< Linestring > Multi_linestrings
Definition: spatial.h:2081
T & reference
Definition: spatial.h:1906
Geometry_vector< T > Geo_vector
Definition: spatial.h:1909
void push_back(const T &val)
Definition: spatial.cc:4702
Gis_wkb_vector()
Definition: spatial.h:2008
Utility container class to store elements stably and scalably.
Definition: inplace_vector.h:59
const objtype & back() const
STL std::vector::back interface.
Definition: inplace_vector.h:224
size_t size() const
STL std::vector::size interface.
Definition: inplace_vector.h:198
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:166
bool append(const String &s)
Definition: sql_string.cc:445
bool reserve(size_t space_needed)
Definition: sql_string.h:555
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:945
Definition: spatial.h:2446
virtual void on_wkb_end(const void *wkb)=0
Notified when scanner sees the end of a geometry WKB.
virtual void on_wkb_start(Geometry::wkbByteOrder bo, Geometry::wkbType geotype, const void *wkb, uint32 len, bool has_hdr)=0
Notified when scanner sees the start of a geometry WKB.
virtual bool continue_scan() const
Definition: spatial.h:2475
virtual ~WKB_scanner_event_handler()=default
The handler class is the interface for dynamically loadable storage engines.
Definition: handler.h:4157
Point with coordinates X and Y.
Definition: spatial.h:61
point_xy(double x_arg, double y_arg)
Definition: spatial.h:66
bool eq(point_xy p) const
Compare to another point.
Definition: spatial.h:72
double x
Definition: spatial.h:63
double distance(const point_xy &p) const
Distance to another point.
Definition: spatial.cc:218
double y
Definition: spatial.h:64
const char * p
Definition: ctype-mb.cc:1236
#define U
Definition: ctype-tis620.cc:74
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:221
static constexpr unsigned PSI_INSTRUMENT_ME
Definition: psi_bits.h:42
static int flags[50]
Definition: hp_test1.cc:39
static int flag
Definition: hp_test1.cc:39
Functions for reading and storing in machine-independent format.
void float8store(char *V, double M)
Definition: my_byteorder.h:202
double float8get(const char *M)
Definition: my_byteorder.h:198
void int4store(char *pT, uint32 A)
Definition: my_byteorder.h:172
uint32 uint4korr(const char *pT)
Definition: my_byteorder.h:144
Header for compiler-dependent features.
#define SUPPRESS_UBSAN
Definition: my_compiler.h:133
Some integer typedefs for easier portability.
unsigned char uchar
Definition: my_inttypes.h:51
uint64_t uint64
Definition: my_inttypes.h:68
uint16_t uint16
Definition: my_inttypes.h:64
uint32_t uint32
Definition: my_inttypes.h:66
#define UINT_MAX32
Definition: my_inttypes.h:78
void my_free(void *ptr)
Frees the memory pointed by the ptr.
Definition: my_memory.cc:80
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1055
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:75
bool intersection(const dd::Spatial_reference_system *srs, const Geometry *g1, const Geometry *g2, const char *func_name, std::unique_ptr< Geometry > *result) noexcept
Finds the intersection between two geometries.
Definition: intersection.cc:35
std::uint32_t srid_t
A spatial reference system ID (SRID).
Definition: srid.h:32
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:391
const mysql_service_registry_t * r
Definition: pfs_example_plugin_employee.cc:85
Performance schema instrumentation interface.
required string type
Definition: replication_group_member_actions.proto:33
wkbByteOrder
Definition: sp_defs.h:44
wkbType
Definition: sp_defs.h:34
const uint SRID_SIZE
Definition: spatial.h:50
const uint SIZEOF_STORED_DOUBLE
Definition: spatial.h:51
const uint WKB_HEADER_SIZE
Definition: spatial.h:53
Gis_polygon_ring * outer_ring(const Geometry *g)
Definition: spatial.h:2170
void * gis_wkb_realloc(void *p, size_t sz)
Definition: spatial.cc:63
void gis_wkb_free(void *p)
Definition: spatial.h:206
Geometry::wkbType get_wkb_geotype(const void *p0)
Get wkbType value from WKB, the WKB is always little endian, so need platform specific conversion.
Definition: spatial.h:1074
const uint GEOM_HEADER_SIZE
Definition: spatial.h:54
const uint GEOM_DIM
Definition: spatial.h:49
void set_byte_order(void *p0, Geometry::wkbByteOrder bo)
Definition: spatial.h:1063
const char * wkb_scanner(THD *thd, const char *wkb, uint32 *len, uint32 geotype, bool has_hdr, WKB_scanner_event_handler *handler)
Scan WKB byte string and notify WKB events by calling registered callbacks.
Definition: spatial.cc:839
const uint32 GET_SIZE_ERROR
Definition: spatial.h:56
void parse_wkb_data(Geometry *geom, const char *p, size_t num_geoms=0)
Parse the wkb buffer to build the component vector m_geo_vect for geom.
Definition: spatial.cc:3861
Geometry::wkbByteOrder get_byte_order(const void *p0)
Definition: spatial.h:1056
void * gis_wkb_alloc(size_t sz)
Definition: spatial.cc:55
bool polygon_is_packed(Geometry *plgn, Geometry *mplgn)
Check whether plgn is packed into its owner mplgn's WKB buffer.
Definition: spatial.cc:2346
void gis_wkb_raw_free(void *p)
Definition: spatial.h:212
void own_rings(Geometry *geo)
Definition: spatial.cc:2367
char * write_wkb_header(void *p0, Geometry::wkbType geotype)
Definition: spatial.h:1086
const uint POINT_DATA_SIZE
Definition: spatial.h:52
struct wkb_header_st wkb_header
char * write_geometry_header(void *p0, gis::srid_t srid, Geometry::wkbType geotype)
Definition: spatial.h:1102
Gis_wkb_vector_const_iterator< T > operator+(typename Gis_wkb_vector_const_iterator< T >::difference_type n, const Gis_wkb_vector_const_iterator< T > &itr)
Definition: spatial.h:1846
void * get_packed_ptr(const Geometry *geo, size_t *pnbytes)
Packup a polygon's outer ring and inner rings into a single chunk of memory as result.
Definition: spatial.cc:2279
void * gis_wkb_fixed_alloc(size_t sz)
Definition: spatial.h:202
Our own string classes, used pervasively throughout the executor.
case opt name
Definition: sslopt-case.h:32
Gis_polygon objects and Gis_wkb_vector<> objects are of same size, and Gis_point and Geometry objects...
Definition: spatial.h:2442
char data[sizeof(Gis_polygon)]
Definition: spatial.h:2443
double xmin
Definition: spatial.h:83
int covered_by(const MBR *mbr) const
Definition: spatial.h:137
MBR()
Definition: spatial.h:85
int equals(const MBR *mbr) const
Definition: spatial.h:117
int dimension() const
The dimension maps to an integer as:
Definition: spatial.h:157
MBR(const double xmin_arg, const double ymin_arg, const double xmax_arg, const double ymax_arg)
Definition: spatial.h:90
MBR(const point_xy &min, const point_xy &max)
Definition: spatial.h:94
int touches(const MBR *mbr) const
Definition: spatial.cc:80
int contains(const MBR *mbr) const
Definition: spatial.h:135
int overlaps(const MBR *mbr) const
Definition: spatial.h:173
void add_xy(point_xy p)
Definition: spatial.h:104
void add_xy(double x, double y)
Definition: spatial.h:97
void add_xy(const char *px, const char *py)
Definition: spatial.h:105
double ymax
Definition: spatial.h:83
int within(const MBR *mbr) const
Definition: spatial.cc:114
int covers(const MBR *mbr) const
Definition: spatial.h:143
bool inner_point(double x, double y) const
Definition: spatial.h:145
double xmax
Definition: spatial.h:83
double ymin
Definition: spatial.h:83
int intersects(const MBR *mbr) const
Definition: spatial.h:129
void add_mbr(const MBR *mbr)
Definition: spatial.h:110
int disjoint(const MBR *mbr) const
Definition: spatial.h:123
Definition: mysql_lex_string.h:39
size_t length
Definition: mysql_lex_string.h:41
#define NULL
Definition: types.h:54
unsigned int uint
Definition: uca-dump.cc:29
void q_append(const char c, String *str)
Definition: unsafe_string_append.h:34
void qs_append(const char *str_in, size_t len, String *str)
Definition: sql_string.cc:675
unsigned long id[MAX_DEAD]
Definition: xcom_base.cc:506
int n
Definition: xcom_base.cc:505