librtree 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7dbcdf3078b84e506da1a5afb4e0f31db7490ef8b57860c3d670dae5422bb283
4
- data.tar.gz: 9c63a1227bbf656f12360acda82a0f7a7c369d27a25ae1352c906af769f5c2d3
3
+ metadata.gz: 97e18073b1466bdc07ddba6d4b06cfa850c3531240920ab4bd391a1896def24f
4
+ data.tar.gz: 0a57abcf15c8dd21e3ec7ee26fdb2f5d98ae8ec06838297eb00b05f5ebaae70d
5
5
  SHA512:
6
- metadata.gz: 6c54dae2e5b2e4601c6730fd7e3d50e7f87c5af3a067b7b9c2167c8f43c8c43d52429f7db18db17116cfc958f54587b7009ee92a69d59843048ca53b6b422878
7
- data.tar.gz: 1c9aa746ba96bd5413add8a1629a2c84da513e0ed5467d553a10dcfe6f2c776b15d9dd45afac3ff2a33b6cef40633bc7937bffceb0f877c7c03f30ac34bdd8eb
6
+ metadata.gz: e633393e0fc75958fae7ee302a0a1e51e42ce41f86ec887da9c41bf74c2bb1657b4c06d4e690939c83945092ba4531901050f537bef6c48c73ddeea28a272a69
7
+ data.tar.gz: 25b6456ab526e41afd095157c96715118cdadbb9a15c2c863197fda329a61f5d6f8adda1e78aeb8733f8e74d54faf4bba193103e81aff3db7bfebcc8e54c2052
data/CHANGELOG.md CHANGED
@@ -1,6 +1,19 @@
1
1
  Changelog
2
2
  ---------
3
3
 
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
10
+
11
+ - The `#serialise` method raises if the read from pipe returns
12
+ nil (which it might), so the method (and other methods which
13
+ call it to serialise) now return `String` or raise
14
+ - Added RBS static type signatures and infrastructure for static
15
+ type checking with **steep**
16
+
4
17
  ### 1.0.1, 16-03-2023
5
18
 
6
19
  - Update to 1.1.4 of embedded `librtree`
@@ -18,7 +31,7 @@ Changelog
18
31
 
19
32
  - Tidying
20
33
  - Fix warning "undefining the allocator of T_DATA class" on
21
- Ruby 3,2
34
+ Ruby 3.2
22
35
  - No functional changes
23
36
 
24
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
 
@@ -79,6 +79,7 @@ run the tests:
79
79
 
80
80
  bundle exec rake compile
81
81
  bundle exec rake spec
82
+ bundle exec steep check
82
83
 
83
84
 
84
85
  [1]: http://www.digip.org/jansson/
@@ -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