librtree 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c35526142564e94d93f091e405467f2ee2df3d294b1a4b8e3a87db66f1229043
4
- data.tar.gz: dffb928767c821a14460f21d06fc1c90e41a7a17a94a8e700fac0c409d65ca59
3
+ metadata.gz: 97e18073b1466bdc07ddba6d4b06cfa850c3531240920ab4bd391a1896def24f
4
+ data.tar.gz: 0a57abcf15c8dd21e3ec7ee26fdb2f5d98ae8ec06838297eb00b05f5ebaae70d
5
5
  SHA512:
6
- metadata.gz: 0447a6e59546922ed8d227e0f3589aae7771243c4e16c24ae46cde5075dae4b1f7be2b1a8526d58adc6c3db379719201fcf370f1251e82773f488046ab66caff
7
- data.tar.gz: 8ed4fd4e3982a4bfbffac9a53f92ae6dfd497ac4e684110d72591e7ec500a4ee2629a5b3a17dad5cc404383eb7aaccf333d7d15a8aeaa943d858a3e973a35d13
6
+ metadata.gz: e633393e0fc75958fae7ee302a0a1e51e42ce41f86ec887da9c41bf74c2bb1657b4c06d4e690939c83945092ba4531901050f537bef6c48c73ddeea28a272a69
7
+ data.tar.gz: 25b6456ab526e41afd095157c96715118cdadbb9a15c2c863197fda329a61f5d6f8adda1e78aeb8733f8e74d54faf4bba193103e81aff3db7bfebcc8e54c2052
data/CHANGELOG.md CHANGED
@@ -1,7 +1,12 @@
1
1
  Changelog
2
2
  ---------
3
3
 
4
- ### 1.0.2, pending
4
+ ### 1.0.3, 16-10-2023
5
+
6
+ - Update to librtree 1.3.0
7
+ - Remove workaround for "optional argument to #exit!" issue
8
+
9
+ ### 1.0.2, 06-04-2023
5
10
 
6
11
  - The `#serialise` method raises if the read from pipe returns
7
12
  nil (which it might), so the method (and other methods which
@@ -26,7 +31,7 @@ Changelog
26
31
 
27
32
  - Tidying
28
33
  - Fix warning "undefining the allocator of T_DATA class" on
29
- Ruby 3,2
34
+ Ruby 3.2
30
35
  - No functional changes
31
36
 
32
37
  ### 0.9.0, 07-11-2021
data/README.md CHANGED
@@ -54,12 +54,12 @@ this.
54
54
  If using [rbenv][4], then first set a local version of Ruby to use,
55
55
  then install the gems into your local cache
56
56
 
57
- rbenv local 2.7.0
57
+ rbenv local 3.2.0
58
58
  bundle install
59
59
 
60
- The repository's `.gitignore` ignores **rbenv**'s `.ruby-version`
61
- file, since we don't want to mandate a particular Ruby version
62
- for the package.
60
+ The repository's `.gitignore` ignores **rbenv**'s `.ruby-version` file,
61
+ since we don't want to mandate a particular Ruby version for the package
62
+ (although 3.0 is the minimal version for development at present).
63
63
 
64
64
  If not using **rbenv** then just
65
65
 
@@ -2,7 +2,8 @@
2
2
  #include "config.h"
3
3
  #endif
4
4
 
5
- #include "rtree/branch.h"
5
+ #include "branch.h"
6
+ #include "state.h"
6
7
 
7
8
  #include <stddef.h>
8
9
  #include <stdalign.h>
@@ -0,0 +1,97 @@
1
+ /*
2
+ branch.h
3
+ Copyright (c) J.J. Green 2023
4
+ */
5
+
6
+ #ifndef BRANCH_H
7
+ #define BRANCH_H
8
+
9
+ #include <stdlib.h>
10
+
11
+ #include "rtree/branch.h"
12
+
13
+ #include "rect.h"
14
+ #include "rtree/types.h"
15
+ #include "rtree/state.h"
16
+ #include "rtree/node.h"
17
+
18
+ /*
19
+ The union is either a pointer to the child-node in the tree, or
20
+ if we are at level zero, the id payload. The latter may as well
21
+ be the size of a pointer.
22
+
23
+ The rect is big enough to hold 2 * dims floats, understood to be
24
+ [x0, y0, ..., x1, y1, ...] corresponding to the (hyper-)rectangle
25
+ x0 < x < x1, y0 < y < y1, ..., this must be at the end of the
26
+ struct (since variable).
27
+
28
+ For the sake of SSE, we would like the rect member to be 16-byte
29
+ aligned, and this could be done with
30
+
31
+ rtree_coord_t alignas(16) rect[];
32
+
33
+ but this would force the size of branch_t to be a multiple of 16,
34
+ so for the dimension 2 case with rtree_coord_t a float increases
35
+ branch size from 24 to 32 bytes, essentially increasing the size
36
+ of the tree by 20%. So we don't do that, and use non-aligned
37
+ variants for SSE load/save (apparently on recent CPUs the penalty
38
+ is pretty small).
39
+ */
40
+
41
+ struct branch_t
42
+ {
43
+ union {
44
+ node_t *child;
45
+ rtree_id_t id;
46
+ };
47
+ rtree_coord_t rect[];
48
+ };
49
+
50
+ size_t branch_sizeof(size_t);
51
+ int branch_init(const state_t*, branch_t*);
52
+ branch_t* branch_copy(const state_t*, const branch_t*, branch_t*);
53
+
54
+ /* inline accessors */
55
+
56
+ inline void branch_set_child(branch_t *branch, node_t *child)
57
+ {
58
+ branch->child = child;
59
+ }
60
+
61
+ inline const node_t* branch_get_child(const branch_t *branch)
62
+ {
63
+ return branch->child;
64
+ }
65
+
66
+ inline node_t* branch_get_child_mutable(branch_t *branch)
67
+ {
68
+ return branch->child;
69
+ }
70
+
71
+ inline void branch_set_id(branch_t *branch, rtree_id_t id)
72
+ {
73
+ branch->id = id;
74
+ }
75
+
76
+ inline rtree_id_t branch_get_id(const branch_t *branch)
77
+ {
78
+ return branch->id;
79
+ }
80
+
81
+ inline void branch_set_rect(const state_t *state, branch_t *branch,
82
+ const rtree_coord_t *rect)
83
+ {
84
+ rect_copy(state, rect, branch->rect);
85
+ }
86
+
87
+ inline const rtree_coord_t* branch_get_rect(const branch_t *branch)
88
+ {
89
+ return branch->rect;
90
+ }
91
+
92
+ inline rtree_coord_t* branch_get_rect_mutable(branch_t *branch)
93
+ {
94
+ return branch->rect;
95
+ }
96
+
97
+ #endif
@@ -11,7 +11,7 @@
11
11
  #include "config.h"
12
12
  #endif
13
13
 
14
- #include "rtree/branches.h"
14
+ #include "branches.h"
15
15
 
16
16
  extern branch_t* branches_get(const state_t*, void*, size_t);
17
17
  extern void branches_set(const state_t*, void*, size_t, const branch_t*);
@@ -1,10 +1,10 @@
1
1
  /*
2
- rtree/branches.h
2
+ branches.h
3
3
  Copyright (c) J.J. Green 2020
4
4
  */
5
5
 
6
- #ifndef RTREE_BRANCHES_H
7
- #define RTREE_BRANCHES_H
6
+ #ifndef BRANCHES_H
7
+ #define BRANCHES_H
8
8
 
9
9
  #ifdef __cplusplus
10
10
  extern "C" {
@@ -14,9 +14,9 @@ extern "C" {
14
14
  #include <errno.h>
15
15
  #include <string.h>
16
16
 
17
- #include <rtree/state.h>
18
- #include <rtree/branch.h>
19
- #include <rtree/error.h>
17
+ #include "state.h"
18
+ #include "rtree/branch.h"
19
+ #include "rtree/error.h"
20
20
 
21
21
  inline branch_t* branches_get(const state_t *state, void *buffer, size_t i)
22
22
  {
data/ext/rtree/lib/bsrt.c CHANGED
@@ -4,8 +4,11 @@
4
4
 
5
5
  #include "bsrt.h"
6
6
 
7
+ #include "node.h"
8
+ #include "branch.h"
9
+ #include "branches.h"
10
+
7
11
  #include "rtree/error.h"
8
- #include "rtree/branches.h"
9
12
 
10
13
  #include <errno.h>
11
14
  #include <string.h>
@@ -129,28 +132,18 @@ static int write_rect(const state_t *state,
129
132
 
130
133
  for (size_t i = 0 ; i < n ; i++)
131
134
  {
132
- /*
133
- The type-punning to/from char* here is legal (the standard
134
- makes an explicit exception), but cppcheck warns anyway, so
135
- we suppress those warnings
136
- */
137
-
138
135
  char p[k];
139
136
 
140
- /* cppcheck-suppress invalidPointerCast */
141
137
  *(rtree_coord_t*)p = rect[i];
142
138
 
143
139
  #if SIZEOF_RTREE_COORD_T == 4
144
- /* cppcheck-suppress invalidPointerCast */
145
140
  *(uint32_t*)p = htole32(*(uint32_t*)p);
146
141
  #elif SIZEOF_RTREE_COORD_T == 8
147
- /* cppcheck-suppress invalidPointerCast */
148
142
  *(uint64_t*)p = htole64(*(uint64_t*)p);
149
143
  #else
150
144
  #error rtree_coord_t size not handled
151
145
  #endif
152
146
 
153
- /* cppcheck-suppress invalidPointerCast */
154
147
  buffer[i] = *(rtree_coord_t*)p;
155
148
  }
156
149
 
@@ -321,7 +314,7 @@ static int read_v1_header(FILE *stream, uint16_t v[5])
321
314
  return 0;
322
315
  }
323
316
 
324
- static bool read_v1_state_consistent(uint16_t v[5], const state_t *state)
317
+ static bool read_v1_state_consistent(const uint16_t v[5], const state_t *state)
325
318
  {
326
319
  return
327
320
  (v[0] == state_dims(state)) &&
@@ -360,8 +353,6 @@ static int read_v1_rect(FILE *stream,
360
353
  #error rtree_coord_t size not handled
361
354
  #endif
362
355
 
363
- /* cppcheck-suppress invalidPointerCast */
364
-
365
356
  rect[i] = *(rtree_coord_t*)p;
366
357
  }
367
358
 
@@ -592,7 +583,7 @@ static int read_v2_header(FILE *stream, uint16_t v[6])
592
583
  return 0;
593
584
  }
594
585
 
595
- static bool read_v2_state_consistent(uint16_t v[6], const state_t *state)
586
+ static bool read_v2_state_consistent(const uint16_t v[6], const state_t *state)
596
587
  {
597
588
  return
598
589
  (v[0] == state_dims(state)) &&
data/ext/rtree/lib/bsrt.h CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  #include <stdio.h>
10
10
 
11
- #include <rtree.h>
11
+ #include "rtree.h"
12
12
 
13
13
  int bsrt_rtree_write(const rtree_t*, FILE*);
14
14
  rtree_t* bsrt_rtree_read(FILE*);
data/ext/rtree/lib/csv.c CHANGED
@@ -3,6 +3,7 @@
3
3
  #endif
4
4
 
5
5
  #include "csv.h"
6
+ #include "state.h"
6
7
 
7
8
  #include "rtree/error.h"
8
9
  #include "rtree/types.h"
data/ext/rtree/lib/csv.h CHANGED
@@ -8,8 +8,8 @@
8
8
 
9
9
  #include <stdio.h>
10
10
 
11
- #include <rtree.h>
12
- #include <rtree/state.h>
11
+ #include "rtree.h"
12
+ #include "rtree/state.h"
13
13
 
14
14
  rtree_t* csv_rtree_read(FILE*, size_t, state_flags_t);
15
15
 
data/ext/rtree/lib/json.c CHANGED
@@ -4,9 +4,11 @@
4
4
 
5
5
  #include "json.h"
6
6
  #include "bounds.h"
7
+ #include "node.h"
8
+ #include "branch.h"
9
+ #include "branches.h"
7
10
 
8
11
  #include "rtree/error.h"
9
- #include "rtree/branches.h"
10
12
 
11
13
  #include <errno.h>
12
14
 
data/ext/rtree/lib/json.h CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  #include <stdio.h>
10
10
 
11
- #include <rtree.h>
11
+ #include "rtree.h"
12
12
 
13
13
  int json_rtree_write(const rtree_t*, FILE*);
14
14
  rtree_t* json_rtree_read(FILE*);
data/ext/rtree/lib/node.c CHANGED
@@ -2,11 +2,13 @@
2
2
  #include "config.h"
3
3
  #endif
4
4
 
5
- #include "rtree/node.h"
6
- #include "rtree/branches.h"
7
- #include "rtree/rect.h"
5
+ #include "node.h"
6
+
8
7
  #include "rtree/error.h"
9
8
 
9
+ #include "branch.h"
10
+ #include "branches.h"
11
+ #include "rect.h"
10
12
  #include "split.h"
11
13
 
12
14
  #include <stdbool.h>
@@ -307,23 +309,27 @@ node_t* node_add_branch(const state_t *state, node_t *node, branch_t *branch)
307
309
  Pick a branch. Pick the one that will need the smallest increase
308
310
  in volume to accomodate the new (hyper-)rectangle. This will result
309
311
  in the least total volume for the covering rectangles in the current
310
- node. In case of a tie, pick the one which was smaller before, to
311
- get the best resolution when searching.
312
+ node.
313
+
314
+ This is expensive but does not show up directly in the profile since
315
+ it is only called once so obviously inlined.
312
316
  */
313
317
 
314
318
  static int node_pick_branch(const state_t *state,
315
- node_t *node, const rtree_coord_t *rect,
319
+ node_t *node,
320
+ const rtree_coord_t *rect,
316
321
  size_t *index)
317
322
  {
318
- const size_t
319
- dims = state_dims(state);
320
- size_t
321
- index_min = SIZE_MAX;
322
- rtree_coord_t
323
- dvol_min = INFINITY,
324
- vol_min = INFINITY;
325
323
 
326
- for (size_t i = 0 ; i < node_count(node) ; i++)
324
+ const size_t dims = state_dims(state);
325
+ assert(dims > 0);
326
+ rtree_coord_t rect2[2 * dims];
327
+
328
+ const size_t n = node_count(node);
329
+ assert(n > 0);
330
+ rtree_coord_t dvol[n];
331
+
332
+ for (size_t i = 0 ; i < n ; i++)
327
333
  {
328
334
  branch_t *branch;
329
335
 
@@ -331,34 +337,29 @@ static int node_pick_branch(const state_t *state,
331
337
  return RTREE_ERR_GETBRANCH;
332
338
 
333
339
  const rtree_coord_t *rect1 = branch_get_rect(branch);
334
- rtree_coord_t rect2[2 * dims];
335
340
  rect_combine(state, rect, rect1, rect2);
336
341
 
337
342
  rtree_coord_t
338
343
  vol1 = rect_spherical_volume(state, rect1),
339
- vol2 = rect_spherical_volume(state, rect2),
340
- dvol = vol2 - vol1;
344
+ vol2 = rect_spherical_volume(state, rect2);
341
345
 
342
- if ((dvol < dvol_min) || ((dvol == dvol_min) && (vol1 < vol_min)))
346
+ dvol[i] = vol2 - vol1;
347
+ }
348
+
349
+ rtree_coord_t dvol_min = dvol[0];
350
+ size_t index_min = 0;
351
+
352
+ for (size_t i = 1 ; i < n ; i++)
353
+ {
354
+ rtree_coord_t dvol_i = dvol[i];
355
+
356
+ if (dvol_i < dvol_min)
343
357
  {
358
+ dvol_min = dvol_i;
344
359
  index_min = i;
345
- vol_min = vol1;
346
- dvol_min = dvol;
347
360
  }
348
361
  }
349
362
 
350
- /*
351
- This can only happen if no branches are assigned in the above
352
- block, on the first call of it, dvol_min == DBL_MAX, so either
353
- the first case is called, or dvol == DBL_MAX, but dvol is equal
354
- to vol2 - vol1, and vol1, vol2 are non-negative, so vol2 must
355
- be DBL_MAX and vol1 zero, in particular vol1 < vol_min (DBL_MAX),
356
- so the second condition is met.
357
- */
358
-
359
- if (index_min == SIZE_MAX)
360
- return RTREE_ERR_PICKBRANCH;
361
-
362
363
  *index = index_min;
363
364
 
364
365
  return RTREE_OK;
@@ -0,0 +1,84 @@
1
+ /*
2
+ node.h
3
+ Copyright (c) J.J. Green 2023
4
+ */
5
+
6
+ #ifndef NODE_H
7
+ #define NODE_H
8
+
9
+ #include <stdint.h>
10
+ #include <stdbool.h>
11
+ #include <stddef.h>
12
+
13
+ typedef uint16_t node_level_t;
14
+ typedef uint16_t node_count_t;
15
+ typedef uint16_t node_height_t;
16
+
17
+ #define NODE_LEVEL_MAX UINT16_MAX
18
+ #define NODE_COUNT_MAX UINT16_MAX
19
+
20
+ #include "rtree/node.h"
21
+
22
+ #include "rtree/types.h"
23
+ #include "rtree/state.h"
24
+ #include "rtree/branch.h"
25
+
26
+ struct node_t
27
+ {
28
+ node_level_t level;
29
+ node_count_t count;
30
+ char branches[];
31
+ };
32
+
33
+ typedef int (nbe_cb_t)(const state_t*, const branch_t*, void*);
34
+
35
+ int node_init(const state_t*, node_t*);
36
+ node_t* node_new(const state_t*);
37
+ void node_destroy(const state_t*, node_t*);
38
+ node_t* node_clone(const state_t*, const node_t*);
39
+ int node_branch_each(const state_t*, const node_t*, nbe_cb_t*, void*);
40
+ int node_branch_each_level(const state_t*, const node_t*, node_level_t,
41
+ nbe_cb_t*, void*);
42
+ size_t node_num_branch(size_t, size_t);
43
+ int node_detach_branch(const state_t*, node_t*, size_t);
44
+ node_t* node_add_branch(const state_t*, node_t*, branch_t*);
45
+ int node_envelope(const state_t*, const node_t*, rtree_coord_t*);
46
+ node_t* node_add_rect(const state_t*, rtree_id_t, rtree_coord_t*,
47
+ node_t*, node_level_t);
48
+ int node_update(const state_t*, const node_t*, rtree_update_t*, void*);
49
+ bool node_identical(const state_t*, const node_t*, const node_t*);
50
+ node_height_t node_height(const state_t*, const node_t*);
51
+ size_t node_bytes(const state_t*, const node_t*);
52
+ bool node_nonempty(const state_t*, const node_t*);
53
+
54
+ inline node_count_t node_count(const node_t *node)
55
+ {
56
+ return node->count;
57
+ }
58
+
59
+ inline void node_count_increment(node_t *node)
60
+ {
61
+ node->count++;
62
+ }
63
+
64
+ inline void node_count_decrement(node_t *node)
65
+ {
66
+ node->count--;
67
+ }
68
+
69
+ inline node_level_t node_level(const node_t *node)
70
+ {
71
+ return node->level;
72
+ }
73
+
74
+ inline void node_set_level(node_t *node, node_level_t level)
75
+ {
76
+ node->level = level;
77
+ }
78
+
79
+ inline void* node_get_branches(node_t *node)
80
+ {
81
+ return node->branches;
82
+ }
83
+
84
+ #endif
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "rtree/package.h"
7
7
 
8
- const char rtree_package_version[] = "1.1.4";
8
+ const char rtree_package_version[] = "1.2.0";
9
9
  const char rtree_package_name[] = "librtree";
10
10
  const char rtree_package_url[] = "https://gitlab.com/jjg/librtree";
11
11
  const char rtree_package_bugreport[] = "j.j.green@gmx.co.uk";
@@ -3,6 +3,11 @@
3
3
  #endif
4
4
 
5
5
  #include "rtree/postscript.h"
6
+
7
+ #include "node.h"
8
+ #include "branch.h"
9
+ #include "state.h"
10
+
6
11
  #include "rtree/package.h"
7
12
  #include "rtree/error.h"
8
13
 
@@ -32,7 +37,7 @@ typedef struct {
32
37
  typedef struct {
33
38
  const state_t *state;
34
39
  const node_t *root;
35
- const style_t *style;
40
+ const postscript_style_t *style;
36
41
  page_t page;
37
42
  } ps_t;
38
43
 
@@ -45,7 +50,7 @@ static bool clamped(float value)
45
50
  return (value >= 0.0) && (value <= 1.0);
46
51
  }
47
52
 
48
- static int psr_colour(json_t *json, colour_t *colour)
53
+ static int psr_colour(json_t *json, postscript_colour_t *colour)
49
54
  {
50
55
  json_t *json_colour;
51
56
 
@@ -127,7 +132,7 @@ static int psr_colour(json_t *json, colour_t *colour)
127
132
  return 1;
128
133
  }
129
134
 
130
- static int psr_style_level(json_t *json, style_level_t *style_level)
135
+ static int psr_style_level(json_t *json, postscript_style_level_t *style_level)
131
136
  {
132
137
  if (! json_is_object(json))
133
138
  return 1;
@@ -169,7 +174,7 @@ static int psr_style_level(json_t *json, style_level_t *style_level)
169
174
  return 0;
170
175
  }
171
176
 
172
- static style_t* psr_style(json_t *json)
177
+ static postscript_style_t* psr_style(json_t *json)
173
178
  {
174
179
  if (! json_is_array(json))
175
180
  return NULL;
@@ -179,16 +184,16 @@ static style_t* psr_style(json_t *json)
179
184
  if (n == 0)
180
185
  return NULL;
181
186
 
182
- style_level_t *array;
187
+ postscript_style_level_t *array;
183
188
 
184
- if ((array = calloc(n, sizeof(style_level_t))) != NULL)
189
+ if ((array = calloc(n, sizeof(postscript_style_level_t))) != NULL)
185
190
  {
186
191
  size_t i;
187
192
  json_t *json_style;
188
193
 
189
194
  json_array_foreach(json, i, json_style)
190
195
  {
191
- style_level_t *style_level = array + i;
196
+ postscript_style_level_t *style_level = array + i;
192
197
 
193
198
  if (psr_style_level(json_style, style_level) != 0)
194
199
  {
@@ -197,9 +202,9 @@ static style_t* psr_style(json_t *json)
197
202
  }
198
203
  }
199
204
 
200
- style_t *style;
205
+ postscript_style_t *style;
201
206
 
202
- if ((style = malloc(sizeof(style_t))) != NULL)
207
+ if ((style = malloc(sizeof(postscript_style_t))) != NULL)
203
208
  {
204
209
  style->n = n;
205
210
  style->array = array;
@@ -212,14 +217,14 @@ static style_t* psr_style(json_t *json)
212
217
  return NULL;
213
218
  }
214
219
 
215
- style_t* postscript_style_read(FILE *stream)
220
+ postscript_style_t* postscript_style_read(FILE *stream)
216
221
  {
217
222
  const size_t flags = JSON_REJECT_DUPLICATES;
218
223
  json_t *json;
219
224
 
220
225
  if ((json = json_loadf(stream, flags, NULL)) != NULL)
221
226
  {
222
- style_t *style = psr_style(json);
227
+ postscript_style_t *style = psr_style(json);
223
228
  json_decref(json);
224
229
  return style;
225
230
  }
@@ -231,7 +236,7 @@ style_t* postscript_style_read(FILE *stream)
231
236
 
232
237
  #pragma GCC diagnostic push
233
238
  #pragma GCC diagnostic ignored "-Wunused-parameter"
234
- style_t* postscript_style_read(FILE *stream)
239
+ postscript_style_t* postscript_style_read(FILE *stream)
235
240
  {
236
241
  errno = ENOSYS;
237
242
  return NULL;
@@ -240,7 +245,7 @@ style_t* postscript_style_read(FILE *stream)
240
245
 
241
246
  #endif
242
247
 
243
- void postscript_style_destroy(style_t *style)
248
+ void postscript_style_destroy(postscript_style_t *style)
244
249
  {
245
250
  if (style != NULL)
246
251
  free(style->array);
@@ -473,7 +478,7 @@ int postscript_write(const state_t *state,
473
478
  if (i >= ps.style->n)
474
479
  break;
475
480
 
476
- style_level_t style_level = ps.style->array[i];
481
+ postscript_style_level_t style_level = ps.style->array[i];
477
482
  node_level_t level = max_level - i;
478
483
 
479
484
  switch (style_level.fill.colour.model)
data/ext/rtree/lib/rect.c CHANGED
@@ -2,7 +2,9 @@
2
2
  #include "config.h"
3
3
  #endif
4
4
 
5
- #include "rtree/rect.h"
5
+ #include "rect.h"
6
+ #include "state.h"
7
+
6
8
  #include "rtree/error.h"
7
9
 
8
10
  #ifdef HAVE_TGMATH_H
@@ -1,20 +1,16 @@
1
1
  /*
2
- rtree/rect.h
2
+ rect.h
3
3
  Copyright (c) J.J. Green 2019
4
4
  */
5
5
 
6
- #ifndef RTREE_RECT_H
7
- #define RTREE_RECT_H
8
-
9
- #ifdef __cplusplus
10
- extern "C" {
11
- #endif
6
+ #ifndef RECT_H
7
+ #define RECT_H
12
8
 
13
9
  #include <stdlib.h>
14
10
  #include <stdbool.h>
15
11
 
16
- #include <rtree/state.h>
17
- #include <rtree/types.h>
12
+ #include "rtree/state.h"
13
+ #include "rtree/types.h"
18
14
 
19
15
  int rect_init(const state_t*, rtree_coord_t*);
20
16
 
@@ -31,8 +27,4 @@ bool rect_identical(const state_t*, const rtree_coord_t*, const rtree_coord_t*);
31
27
  int rects_alloc(const state_t*, size_t, rtree_coord_t**);
32
28
  void rects_free(size_t, rtree_coord_t**);
33
29
 
34
- #ifdef __cplusplus
35
- }
36
- #endif
37
-
38
30
  #endif