19 #include <grass/gis.h>
20 #include <grass/Vect.h>
28 G_debug(3,
"dig_write_cidx_head()");
35 buf[0] = GV_CIDX_VER_MAJOR;
36 buf[1] = GV_CIDX_VER_MINOR;
37 buf[2] = GV_CIDX_EARLIEST_MAJOR;
38 buf[3] = GV_CIDX_EARLIEST_MINOR;
39 buf[4] = plus->cidx_port.byte_order;
52 for (i = 0; i < plus->n_cidx; i++) {
56 ci = &(plus->cidx[i]);
77 for (t = 0; t < ci->n_types; t++) {
94 G_debug(3,
"cidx %d offset: %ld", i, ci->offset);
105 unsigned char buf[5];
113 plus->cidx_Version_Major = buf[0];
114 plus->cidx_Version_Minor = buf[1];
115 plus->cidx_Back_Major = buf[2];
116 plus->cidx_Back_Minor = buf[3];
120 "Cidx header: file version %d.%d , supported from GRASS version %d.%d",
121 plus->cidx_Version_Major, plus->cidx_Version_Minor,
122 plus->cidx_Back_Major, plus->cidx_Back_Minor);
124 G_debug(3,
" byte order %d", byte_order);
127 if (plus->cidx_Version_Major > GV_CIDX_VER_MAJOR ||
128 plus->cidx_Version_Minor > GV_CIDX_VER_MINOR) {
131 if (plus->cidx_Back_Major > GV_CIDX_VER_MAJOR ||
132 plus->cidx_Back_Minor > GV_CIDX_VER_MINOR) {
135 (
"Category index format version %d.%d is not supported by this release."
136 " Try to rebuild topology or upgrade GRASS.",
137 plus->cidx_Version_Major, plus->cidx_Version_Minor);
142 (
"Your GRASS version does not fully support category index format %d.%d of the vector."
143 " Consider to rebuild topology or upgrade GRASS.",
144 plus->cidx_Version_Major, plus->cidx_Version_Minor);
153 G_debug(3,
" header size %ld", plus->cidx_head_size);
161 plus->a_cidx = plus->n_cidx;
163 (
struct Cat_index *)G_malloc(plus->a_cidx *
sizeof(
struct Cat_index));
165 for (i = 0; i < plus->n_cidx; i++) {
167 struct Cat_index *ci;
169 ci = &(plus->cidx[i]);
190 for (t = 0; t < ci->n_types; t++) {
208 if (
dig_fseek(fp, plus->cidx_head_size, SEEK_SET) == -1)
225 for (i = 0; i < plus->n_cidx; i++) {
227 struct Cat_index *ci;
229 ci = &(plus->cidx[i]);
233 for (j = 0; j < ci->n_cats; j++)
240 for (j = 0; j < ci->n_cats; j++)
263 G_debug(3,
"Cannot read cidx head");
268 plus->cidx_up_to_date = 1;
275 for (i = 0; i < plus->n_cidx; i++) {
277 struct Cat_index *ci;
279 ci = &(plus->cidx[i]);
280 ci->a_cats = ci->n_cats;
281 ci->cat = G_malloc(ci->a_cats * 3 *
sizeof(
int));
290 for (j = 0; j < ci->n_cats; j++)
295 plus->cidx_up_to_date = 1;