NCEPLIBS-g2c 2.2.0
Loading...
Searching...
No Matches
pdstemplates.c
Go to the documentation of this file.
1
43#include "grib2_int.h"
44
48struct pdstemplate
49{
50 g2int template_num;
51 g2int mappdslen;
52 g2int needext;
54};
55
59static const struct pdstemplate templatespds[G2C_MAX_PDS_TEMPLATE] =
60 {
63 {0, 15, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
66 {1, 18, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
69 {2, 17, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1}},
72 {3, 31, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 1, 1, 1, 1, -4, -4, 4, 4, 1, -1, 4, -1, 4}},
75 {4, 30, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 1, 1, 1, 1, -4, 4, 4, 1, -1, 4, -1, 4}},
78 {5, 22, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, -1, -4, -1, -4}},
81 {6, 16, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1}},
84 {7, 15, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
87 {8, 29, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
90 {9, 36, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, -1, -4, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
93 {10, 30, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
96 {11, 32, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
99 {12, 31, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
102 {13, 45, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 1, 1, 1, 1, -4, -4, 4, 4, 1, -1, 4, -1, 4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
105 {14, 44, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 1, 1, 1, 1, -4, 4, 4, 1, -1, 4, -1, 4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
108 {15, 18, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
110 {20, 19, 0, {1, 1, 1, 1, 1, -4, 4, 2, 4, 2, 1, 1, 1, 1, 1, 2, 1, 3, 2}},
112 {30, 5, 1, {1, 1, 1, 1, 1}},
114 {31, 5, 1, {1, 1, 1, 1, 1}},
117 {40, 16, 0, {1, 1, 2, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
120 {41, 19, 0, {1, 1, 2, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
124 {42, 30, 1, {1, 1, 2, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
128 {43, 33, 1, {1, 1, 2, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
130 {254, 3, 0, {1, 1, 4}},
133 {1000, 9, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4}},
136 {1001, 16, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 4, 1, 1, 1, 4, 1, 4}},
139 {1002, 15, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, 1, 1, 4, 4, 2}},
142 {1100, 15, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
145 {1101, 22, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 4, 1, 1, 1, 4, 1, 4}},
147 {32, 10, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1}},
150 {44, 21, 0, {1, 1, 2, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -2, 1, -1, -4, 1, -1, -4}},
154 {45, 24, 0, {1, 1, 2, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
158 {46, 35, 1, {1, 1, 2, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
162 {47, 38, 1, {1, 1, 1, 2, 1, -1, -4, -1, -4, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
166 {48, 26, 0, {1, 1, 2, 1, -1, -4, -1, -4, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
167
171 {50, 21, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 4, 4, 4, 4}},
172
176 {52, 15, 0, {1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4}},
177
180 {51, 16, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1}},
181
185 {91, 36, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, -1, -4, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
190 {33, 18, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, 2, 2, 2, -1, -4, 1, 1, 1}},
195 {34, 32, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, 2, 2, 2, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
200 {53, 19, 1, {1, 1, 1, 1, 4, 2, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
205 {54, 22, 1, {1, 1, 1, 1, 4, 2, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
211 {57, 7, 1, {1, 1, 2, 2, 2, 2, 1}},
216 {60, 24, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1}},
221 {61, 38, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
227 {35, 6, 1, {1, 1, 1, 1, 1, 1}},
232 {49, 29, 0, {1, 1, 2, 1, -1, -4, -1, -4, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
236 {55, 21, 0, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
241 {58, 7, 1, {1, 1, 2, 2, 2, 2, 1}},
245 {59, 24, 0, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
251 {62, 35, 1, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
256 {63, 38, 1, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
262 {67, 7, 1, {1, 1, 2, 2, 2, 2, 1}},
267 {68, 7, 1, {1, 1, 2, 2, 2, 2, 1}},
271 {70, 19, 0, {1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
275 {71, 21, 0, {1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
280 {72, 32, 1, {1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
284 {73, 34, 1, {1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
288 {76, 17, 0, {1, 1, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
292 {77, 20, 0, {1, 1, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
297 {78, 31, 1, {1, 1, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
302 {79, 34, 1, {1, 1, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
306 {80, 27, 0, {1, 1, 2, 1, 1, -1, -4, -1, -4, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
310 {81, 30, 0, {1, 1, 2, 1, 1, -1, -4, -1, -4, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
315 {82, 36, 1, {1, 1, 2, 1, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
319 {83, 40, 1, {1, 1, 1, 2, 1, 1, -1, -4, -1, -4, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 4, 1, 4}},
324 {84, 39, 1, {1, 1, 2, 1, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
328 {85, 38, 1, {1, 1, 2, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
331 {86, 17, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 2}},
335 {87, 31, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
338 {88, 24, 1, {1, 1, 1, 1, 1, 1, -1, -4, 1, -1, -4, 1, 1, 2, 1, 1, 1, 1, 1, 1, -4, 1, 1, 4}},
341 {89, 20, 0, {1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 2}},
345 {90, 34, 1, {1, 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 2, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
349 {92, 27, 1, {1, 1, 1, 1, 1, 1, -1, -4, 1, -1, -4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, -4, 1, 1, 4}},
352 {93, 27, 1, {1, 1, 2, 2, 1, 1, 1, 1, 1, -1, -4, 1, -1, -4, 1, 1, 2, 1, 1, 1, 1, 1, 1, -4, 1, 1, 4}},
356 {94, 30, 1, {1, 1, 2, 2, 1, 1, 1, 1, 1, -1, -4, 1, -1, -4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, -4, 1, 1, 4}},
360 {95, 28, 1, {1, 1, 1, 1, 1, 1, -1, -4, 1, -1, -4, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, -4, 1, 1, 4}},
364 {96, 31, 1, {1, 1, 1, 1, 1, 1, -1, -4, 1, -1, -4, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, -4, 1, 1, 4}},
368 {97, 31, 1, {1, 1, 2, 2, 1, 1, 1, 1, 1, -1, -4, 1, -1, -4, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, -4, 1, 1, 4}},
372 {98, 34, 1, {1, 1, 2, 2, 1, 1, 1, 1, 1, -1, -4, 1, -1, -4, 1, 1, 1, 1, 1, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, -4, 1, 1, 4}},
376 {99, 14, 1, {1, 1, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, -4, -1}},
380 {100, 17, 1, {1, 1, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, -4, 1, 1, 1, -1}},
384 {103, 20, 0, {1, 1, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
388 {104, 23, 0, {1, 1, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
391 {108, 20, 0, {1, 1, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
395 {109, 23, 0, {1, 1, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
399 {110, 34, 1, {1, 1, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
403 {111, 37, 1, {1, 1, 1, -1, -4, -1, -4, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
406 {113, 7, 1, {1, 1, 1, 2, 1, 1, 1}},
410 {114, 7, 1, {1, 1, 1, 2, 1, 1, 1}},
414 {115, 7, 1, {1, 1, 1, 2, 1, 1, 1}},
418 {116, 7, 1, {1, 1, 1, 2, 1, 1, 1}},
422 {117, 18, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 4, 4}},
426 {118, 32, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 4, 4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
430 {119, 24, 0, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 4, 1, 1, 1, -1, -4, -1, -4}},
434 {120, 38, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 4, 1, 1, 1, -1, -4, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
438 {121, 26, 1, {1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 4, 1, 1, 1, -1, -4, -1, -4, 1, 1}},
441 {124, 32, 0, {1, 1, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4}},
445 {125, 35, 0, {1, 1, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1}},
449 {126, 47, 1, {1, 1, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
453 {127, 50, 1, {1, 1, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, -4, 1, -1, -4, 1, -1, -4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1, 4}},
454};
455
468static g2int
470{
471 g2int j, getpdsindex = -1;
472
473 for (j = 0; j < G2C_MAX_PDS_TEMPLATE; j++)
474 {
475 if (number == templatespds[j].template_num)
476 {
477 getpdsindex = j;
478 return getpdsindex;
479 }
480 }
481
482 return getpdsindex;
483}
484
503gtemplate *
505{
506 g2int index;
507 gtemplate *new;
508
509 index = getpdsindex(number);
510
511 if (index != -1)
512 {
513 new = malloc(sizeof(gtemplate));
514 new->type = 4;
515 new->num = templatespds[index].template_num;
516 new->maplen = templatespds[index].mappdslen;
517 new->needext = templatespds[index].needext;
518 new->map = (g2int *)templatespds[index].mappds;
519 new->extlen = 0;
520 new->ext = NULL;
521 return new;
522 }
523 else
524 {
525 printf("getpdstemplate: PDS Template 4.%d not defined.\n", (int)number);
526 return NULL;
527 }
528
529 return NULL;
530}
531
552gtemplate *
554{
555 gtemplate *new;
556 g2int index, i, j, k, l;
557
558 index = getpdsindex(number);
559 if (index == -1)
560 return NULL;
561
562 new = getpdstemplate(number);
563
564 if (!new->needext)
565 return new;
566
567 if (number == 3)
568 {
569 new->extlen = list[26];
570 new->ext = malloc(sizeof(g2int) * new->extlen);
571 for (i = 0; i < new->extlen; i++)
572 {
573 new->ext[i] = 1;
574 }
575 }
576 else if (number == 4)
577 {
578 new->extlen = list[25];
579 new->ext = malloc(sizeof(g2int) * new->extlen);
580 for (i = 0; i < new->extlen; i++)
581 {
582 new->ext[i] = 1;
583 }
584 }
585 else if (number == 8)
586 {
587 if (list[21] > 1)
588 {
589 new->extlen = (list[21] - 1) * 6;
590 new->ext = malloc(sizeof(g2int) * new->extlen);
591 for (j = 2; j <= list[21]; j++)
592 {
593 l = (j - 2) * 6;
594 for (k = 0; k < 6; k++)
595 {
596 new->ext[l + k] = new->map[23 + k];
597 }
598 }
599 }
600 }
601 else if (number == 9)
602 {
603 if (list[28] > 1)
604 {
605 new->extlen = (list[28] - 1) * 6;
606 new->ext = malloc(sizeof(g2int) * new->extlen);
607 for (j = 2; j <= list[28]; j++)
608 {
609 l = (j - 2) * 6;
610 for (k = 0; k < 6; k++)
611 {
612 new->ext[l + k] = new->map[30 + k];
613 }
614 }
615 }
616 }
617 else if (number == 10)
618 {
619 if (list[22] > 1)
620 {
621 new->extlen = (list[22] - 1) * 6;
622 new->ext = (g2int *)malloc(sizeof(g2int) * new->extlen);
623 for (j = 2; j <= list[22]; j++)
624 {
625 l = (j - 2) * 6;
626 for (k = 0; k < 6; k++)
627 {
628 new->ext[l + k] = new->map[24 + k];
629 }
630 }
631 }
632 }
633 else if (number == 11)
634 {
635 if (list[24] > 1)
636 {
637 new->extlen = (list[24] - 1) * 6;
638 new->ext = malloc(sizeof(g2int) * new->extlen);
639 for (j = 2; j <= list[24]; j++)
640 {
641 l = (j - 2) * 6;
642 for (k = 0; k < 6; k++)
643 {
644 new->ext[l + k] = new->map[26 + k];
645 }
646 }
647 }
648 }
649 else if (number == 12)
650 {
651 if (list[23] > 1)
652 {
653 new->extlen = (list[23] - 1) * 6;
654 new->ext = malloc(sizeof(g2int) * new->extlen);
655 for (j = 2; j <= list[23]; j++)
656 {
657 l = (j - 2) * 6;
658 for (k = 0; k < 6; k++)
659 {
660 new->ext[l + k] = new->map[25 + k];
661 }
662 }
663 }
664 }
665 else if (number == 13)
666 {
667 new->extlen = ((list[37] - 1) * 6) + list[26];
668 new->ext = malloc(sizeof(g2int) * new->extlen);
669 if (list[37] > 1)
670 {
671 for (j = 2; j <= list[37]; j++)
672 {
673 l = (j - 2) * 6;
674 for (k = 0; k < 6; k++)
675 {
676 new->ext[l + k] = new->map[39 + k];
677 }
678 }
679 }
680 l = (list[37] - 1) * 6;
681 if (l < 0)
682 l = 0;
683 for (i = 0; i < list[26]; i++)
684 {
685 new->ext[l + i] = 1;
686 }
687 }
688 else if (number == 14)
689 {
690 new->extlen = ((list[36] - 1) * 6) + list[25];
691 new->ext = malloc(sizeof(g2int) * new->extlen);
692 if (list[36] > 1)
693 {
694 for (j = 2; j <= list[36]; j++)
695 {
696 l = (j - 2) * 6;
697 for (k = 0; k < 6; k++)
698 {
699 new->ext[l + k] = new->map[38 + k];
700 }
701 }
702 }
703 l = (list[36] - 1) * 6;
704 if (l < 0)
705 l = 0;
706 for (i = 0; i < list[25]; i++)
707 {
708 new->ext[l + i] = 1;
709 }
710 }
711 else if (number == 30)
712 {
713 new->extlen = list[4] * 5;
714 new->ext = malloc(sizeof(g2int) * new->extlen);
715 for (i = 0; i < list[4]; i++)
716 {
717 l = i * 5;
718 new->ext[l] = 2;
719 new->ext[l + 1] = 2;
720 new->ext[l + 2] = 1;
721 new->ext[l + 3] = 1;
722 new->ext[l + 4] = 4;
723 }
724 }
725 else if (number == 31)
726 {
727 new->extlen = list[4] * 5;
728 new->ext = malloc(sizeof(g2int) * new->extlen);
729 for (i = 0; i < list[4]; i++)
730 {
731 l = i * 5;
732 new->ext[l] = 2;
733 new->ext[l + 1] = 2;
734 new->ext[l + 2] = 2;
735 new->ext[l + 3] = 1;
736 new->ext[l + 4] = 4;
737 }
738 }
739 else if (number == 42)
740 {
741 if (list[22] > 1)
742 {
743 new->extlen = (list[22] - 1) * 6;
744 new->ext = malloc(sizeof(g2int) * new->extlen);
745 for (j = 2; j <= list[22]; j++)
746 {
747 l = (j - 2) * 6;
748 for (k = 0; k < 6; k++)
749 {
750 new->ext[l + k] = new->map[24 + k];
751 }
752 }
753 }
754 }
755 else if (number == 43)
756 {
757 if (list[25] > 1)
758 {
759 new->extlen = (list[25] - 1) * 6;
760 new->ext = malloc(sizeof(g2int) * new->extlen);
761 for (j = 2; j <= list[25]; j++)
762 {
763 l = (j - 2) * 6;
764 for (k = 0; k < 6; k++)
765 {
766 new->ext[l + k] = new->map[27 + k];
767 }
768 }
769 }
770 }
771 else if (number == 32)
772 {
773 new->extlen = list[9] * 5;
774 new->ext = malloc(sizeof(g2int) * new->extlen);
775 for (i = 0; i < list[9]; i++)
776 {
777 l = i * 5;
778 new->ext[l] = 2;
779 new->ext[l + 1] = 2;
780 new->ext[l + 2] = 2;
781 new->ext[l + 3] = -1;
782 new->ext[l + 4] = -4;
783 }
784 }
785 else if (number == 46)
786 {
787 if (list[27] > 1)
788 {
789 new->extlen = (list[27] - 1) * 6;
790 new->ext = malloc(sizeof(g2int) * new->extlen);
791 for (j = 2; j <= list[27]; j++)
792 {
793 l = (j - 2) * 6;
794 for (k = 0; k < 6; k++)
795 {
796 new->ext[l + k] = new->map[29 + k];
797 }
798 }
799 }
800 }
801 else if (number == 47)
802 {
803 if (list[30] > 1)
804 {
805 new->extlen = (list[30] - 1) * 6;
806 new->ext = malloc(sizeof(g2int) * new->extlen);
807 for (j = 2; j <= list[30]; j++)
808 {
809 l = (j - 2) * 6;
810 for (k = 0; k < 6; k++)
811 {
812 new->ext[l + k] = new->map[32 + k];
813 }
814 }
815 }
816 }
817 else if (number == 51)
818 {
819 new->extlen = list[15] * 6;
820 new->ext = malloc(sizeof(g2int) * new->extlen);
821 for (i = 0; i < list[15]; i++)
822 {
823 l = i * 6;
824 new->ext[l] = 1;
825 new->ext[l + 1] = 1;
826 new->ext[l + 2] = -1;
827 new->ext[l + 3] = -4;
828 new->ext[l + 4] = -1;
829 new->ext[l + 5] = -4;
830 }
831 }
832 else if (number == 33)
833 {
834 new->extlen = list[9];
835 new->ext = malloc(sizeof(g2int) * new->extlen);
836 for (i = 0; i < new->extlen; i++)
837 {
838 new->ext[i] = 1;
839 }
840 }
841 else if (number == 34)
842 {
843 new->extlen = ((list[24] - 1) * 6) + list[9];
844 new->ext = malloc(sizeof(g2int) * new->extlen);
845 if (list[24] > 1)
846 {
847 for (j = 2; j <= list[24]; j++)
848 {
849 l = (j - 2) * 6;
850 for (k = 0; k < 6; k++)
851 {
852 new->ext[l + k] = new->map[26 + k];
853 }
854 }
855 }
856 l = (list[24] - 1) * 6;
857 if (l < 0)
858 l = 0;
859 for (i = 0; i < list[9]; i++)
860 {
861 new->ext[l + i] = 1;
862 }
863 }
864 else if (number == 53)
865 {
866 new->extlen = list[3];
867 new->ext = malloc(sizeof(g2int) * new->extlen);
868 for (i = 0; i < new->extlen; i++)
869 {
870 new->ext[i] = 1;
871 }
872 }
873 else if (number == 54)
874 {
875 new->extlen = list[3];
876 new->ext = malloc(sizeof(g2int) * new->extlen);
877 for (i = 0; i < new->extlen; i++)
878 {
879 new->ext[i] = 1;
880 }
881 }
882 else if (number == 91)
883 {
884 new->extlen = ((list[28] - 1) * 6) + list[15];
885 new->ext = malloc(sizeof(g2int) * new->extlen);
886 if (list[28] > 1)
887 {
888 for (j = 2; j <= list[28]; j++)
889 {
890 l = (j - 2) * 6;
891 for (k = 0; k < 6; k++)
892 {
893 new->ext[l + k] = new->map[30 + k];
894 }
895 }
896 }
897 l = (list[29] - 1) * 6;
898 if (l < 0)
899 l = 0;
900 for (i = 0; i < list[15]; i++)
901 {
902 new->ext[l + i] = 1;
903 }
904 }
905 /* PDT 4.57 (10/07/2015) */
906 else if (number == 57)
907 {
908 new->extlen = list[6] * 15;
909 new->ext = malloc(sizeof(g2int) * new->extlen);
910 for (i = 0; i < list[6]; i++)
911 {
912 l = i * 15;
913 new->ext[l] = 1;
914 new->ext[l + 1] = -4;
915 new->ext[l + 2] = 1;
916 new->ext[l + 3] = 1;
917 new->ext[l + 4] = 1;
918 new->ext[l + 5] = 2;
919 new->ext[l + 6] = 1;
920 new->ext[l + 7] = 1;
921 new->ext[l + 8] = -4;
922 new->ext[l + 9] = 1;
923 new->ext[l + 10] = -1;
924 new->ext[l + 11] = -4;
925 new->ext[l + 12] = 1;
926 new->ext[l + 13] = -1;
927 new->ext[l + 14] = -4;
928 }
929 }
930 /* PDT 4.61 (10/07/2015) */
931 else if (number == 61)
932 {
933 if (list[30] > 1)
934 {
935 new->extlen = (list[30] - 1) * 6;
936 new->ext = malloc(sizeof(g2int) * new->extlen);
937 for (j = 2; j <= list[30]; j++)
938 {
939 l = (j - 2) * 6;
940 for (k = 0; k < 6; k++)
941 {
942 new->ext[l + k] = new->map[32 + k];
943 }
944 }
945 }
946 }
947 /* PDT 4.35 (10/07/2015) */
948 else if (number == 35)
949 {
950 new->extlen = list[5] * 5;
951 new->ext = malloc(sizeof(g2int) * new->extlen);
952 for (i = 0; i < list[5]; i++)
953 {
954 l = i * 5;
955 new->ext[l] = 2;
956 new->ext[l + 1] = 2;
957 new->ext[l + 2] = 2;
958 new->ext[l + 3] = 1;
959 new->ext[l + 4] = 4;
960 }
961 }
962 /* PDT 4.58 (12/04/2024) */
963 else if (number == 58)
964 {
965 k = list[6] * 2;
966 new->extlen = k + 16;
967 new->ext = malloc(sizeof(g2int) * new->extlen);
968 for (i = 0; i < list[6]; i++)
969 {
970 l = i * 2;
971 new->ext[l] = -1;
972 new->ext[l + 1] = -4;
973 }
974 new->ext[k] = 1;
975 new->ext[k + 1] = 1;
976 new->ext[k + 2] = 1;
977 new->ext[k + 3] = 2;
978 new->ext[k + 4] = 1;
979 new->ext[k + 5] = 1;
980 new->ext[k + 6] = -4;
981 new->ext[k + 7] = 1;
982 new->ext[k + 8] = -1;
983 new->ext[k + 9] = -4;
984 new->ext[k + 10] = 1;
985 new->ext[k + 11] = -1;
986 new->ext[k + 12] = -4;
987 new->ext[k + 13] = 1;
988 new->ext[k + 14] = 1;
989 new->ext[k + 15] = 1;
990 }
991 /* PDT 4.62 (12/04/2024) */
992 else if (number == 62)
993 {
994 if (list[27] > 1)
995 {
996 new->extlen = (list[27] - 1) * 6;
997 new->ext = malloc(sizeof(g2int) * new->extlen);
998 for (j = 2; j <= list[27]; j++)
999 {
1000 l = (j - 2) * 6;
1001 for (k = 0; k < 6; k++)
1002 {
1003 new->ext[l + k] = new->map[29 + k];
1004 }
1005 }
1006 }
1007 }
1008 /* PDT 4.63 (12/04/2024) */
1009 else if (number == 63)
1010 {
1011 if (list[30] > 1)
1012 {
1013 new->extlen = (list[30] - 1) * 6;
1014 new->ext = malloc(sizeof(g2int) * new->extlen);
1015 for (j = 2; j <= list[30]; j++)
1016 {
1017 l = (j - 2) * 6;
1018 for (k = 0; k < 6; k++)
1019 {
1020 new->ext[l + k] = new->map[32 + k];
1021 }
1022 }
1023 }
1024 }
1025 /* PDT 4.67 (12/04/2024) */
1026 else if (number == 67)
1027 {
1028 k = list[6] * 2;
1029 new->extlen = k + 27;
1030 new->ext = malloc(sizeof(g2int) * new->extlen);
1031 for (i = 0; i < list[6]; i++)
1032 {
1033 l = i * 2;
1034 new->ext[l] = -1;
1035 new->ext[l + 1] = -4;
1036 }
1037 new->ext[k] = 1;
1038 new->ext[k + 1] = 1;
1039 new->ext[k + 2] = 1;
1040 new->ext[k + 3] = 2;
1041 new->ext[k + 4] = 1;
1042 new->ext[k + 5] = 1;
1043 new->ext[k + 6] = -4;
1044 new->ext[k + 7] = 1;
1045 new->ext[k + 8] = -1;
1046 new->ext[k + 9] = -4;
1047 new->ext[k + 10] = 1;
1048 new->ext[k + 11] = -1;
1049 new->ext[k + 12] = -4;
1050 new->ext[k + 13] = 2;
1051 new->ext[k + 14] = 1;
1052 new->ext[k + 15] = 1;
1053 new->ext[k + 16] = 1;
1054 new->ext[k + 17] = 1;
1055 new->ext[k + 18] = 1;
1056 new->ext[k + 19] = 1;
1057 new->ext[k + 20] = 4;
1058 new->ext[k + 21] = 1;
1059 new->ext[k + 22] = 1;
1060 new->ext[k + 23] = 1;
1061 new->ext[k + 24] = 4;
1062 new->ext[k + 25] = 1;
1063 new->ext[k + 26] = 4;
1064 }
1065 /* PDT 4.68 (12/04/2024) */
1066 else if (number == 68)
1067 {
1068 k = list[6] * 2;
1069 new->extlen = k + 30;
1070 new->ext = malloc(sizeof(g2int) * new->extlen);
1071 for (i = 0; i < list[6]; i++)
1072 {
1073 l = i * 2;
1074 new->ext[l] = -1;
1075 new->ext[l + 1] = -4;
1076 }
1077 new->ext[k] = 1;
1078 new->ext[k + 1] = 1;
1079 new->ext[k + 2] = 1;
1080 new->ext[k + 3] = 2;
1081 new->ext[k + 4] = 1;
1082 new->ext[k + 5] = 1;
1083 new->ext[k + 6] = -4;
1084 new->ext[k + 7] = 1;
1085 new->ext[k + 8] = -1;
1086 new->ext[k + 9] = -4;
1087 new->ext[k + 10] = 1;
1088 new->ext[k + 11] = -1;
1089 new->ext[k + 12] = -4;
1090 new->ext[k + 13] = 1;
1091 new->ext[k + 14] = 1;
1092 new->ext[k + 15] = 1;
1093 new->ext[k + 16] = 2;
1094 new->ext[k + 17] = 1;
1095 new->ext[k + 18] = 1;
1096 new->ext[k + 19] = 1;
1097 new->ext[k + 20] = 1;
1098 new->ext[k + 21] = 1;
1099 new->ext[k + 22] = 1;
1100 new->ext[k + 23] = 2;
1101 new->ext[k + 24] = 1;
1102 new->ext[k + 25] = 1;
1103 new->ext[k + 26] = 1;
1104 new->ext[k + 27] = 4;
1105 new->ext[k + 28] = 1;
1106 new->ext[k + 29] = 4;
1107 }
1108 /* PDT 4.72 (12/04/2024) */
1109 else if (number == 72)
1110 {
1111 if (list[24] > 1)
1112 {
1113 new->extlen = (list[24] - 1) * 6;
1114 new->ext = malloc(sizeof(g2int) * new->extlen);
1115 for (j = 2; j <= list[24]; j++)
1116 {
1117 l = (j - 2) * 6;
1118 for (k = 0; k < 6; k++)
1119 {
1120 new->ext[l + k] = new->map[26 + k];
1121 }
1122 }
1123 }
1124 }
1125 /* PDT 4.73 (12/04/2024) */
1126 else if (number == 73)
1127 {
1128 if (list[27] > 1)
1129 {
1130 new->extlen = (list[27] - 1) * 6;
1131 new->ext = malloc(sizeof(g2int) * new->extlen);
1132 for (j = 2; j <= list[27]; j++)
1133 {
1134 l = (j - 2) * 6;
1135 for (k = 0; k < 6; k++)
1136 {
1137 new->ext[l + k] = new->map[29 + k];
1138 }
1139 }
1140 }
1141 }
1142 /* PDT 4.78 (12/04/2024) */
1143 else if (number == 78)
1144 {
1145 if (list[23] > 1)
1146 {
1147 new->extlen = (list[23] - 1) * 6;
1148 new->ext = malloc(sizeof(g2int) * new->extlen);
1149 for (j = 2; j <= list[23]; j++)
1150 {
1151 l = (j - 2) * 6;
1152 for (k = 0; k < 6; k++)
1153 {
1154 new->ext[l + k] = new->map[25 + k];
1155 }
1156 }
1157 }
1158 }
1159 /* PDT 4.79 (12/04/2024) */
1160 else if (number == 79)
1161 {
1162 if (list[26] > 1)
1163 {
1164 new->extlen = (list[26] - 1) * 6;
1165 new->ext = malloc(sizeof(g2int) * new->extlen);
1166 for (j = 2; j <= list[26]; j++)
1167 {
1168 l = (j - 2) * 6;
1169 for (k = 0; k < 6; k++)
1170 {
1171 new->ext[l + k] = new->map[28 + k];
1172 }
1173 }
1174 }
1175 }
1176 /* PDT 4.82 (12/04/2024) */
1177 else if (number == 82)
1178 {
1179 if (list[28] > 1)
1180 {
1181 new->extlen = (list[28] - 1) * 6;
1182 new->ext = malloc(sizeof(g2int) * new->extlen);
1183 for (j = 2; j <= list[28]; j++)
1184 {
1185 l = (j - 2) * 6;
1186 for (k = 0; k < 6; k++)
1187 {
1188 new->ext[l + k] = new->map[30 + k];
1189 }
1190 }
1191 }
1192 }
1193 /* PDT 4.83 (12/04/2024) */
1194 else if (number == 83)
1195 {
1196 if (list[31] > 1)
1197 {
1198 new->extlen = (list[31] - 1) * 6;
1199 new->ext = malloc(sizeof(g2int) * new->extlen);
1200 for (j = 2; j <= list[31]; j++)
1201 {
1202 l = (j - 2) * 6;
1203 for (k = 0; k < 6; k++)
1204 {
1205 new->ext[l + k] = new->map[34 + k];
1206 }
1207 }
1208 }
1209 }
1210 /* PDT 4.84 (12/04/2024) */
1211 else if (number == 84)
1212 {
1213 if (list[31] > 1)
1214 {
1215 new->extlen = (list[31] - 1) * 6;
1216 new->ext = malloc(sizeof(g2int) * new->extlen);
1217 for (j = 2; j <= list[31]; j++)
1218 {
1219 l = (j - 2) * 6;
1220 for (k = 0; k < 6; k++)
1221 {
1222 new->ext[l + k] = new->map[33 + k];
1223 }
1224 }
1225 }
1226 }
1227 /* PDT 4.85 (12/04/2024) */
1228 else if (number == 85)
1229 {
1230 if (list[30] > 1)
1231 {
1232 new->extlen = (list[30] - 1) * 6;
1233 new->ext = malloc(sizeof(g2int) * new->extlen);
1234 for (j = 2; j <= list[30]; j++)
1235 {
1236 l = (j - 2) * 6;
1237 for (k = 0; k < 6; k++)
1238 {
1239 new->ext[l + k] = new->map[32 + k];
1240 }
1241 }
1242 }
1243 }
1244 /* PDT 4.87 (12/04/2024) */
1245 else if (number == 87)
1246 {
1247 if (list[23] > 1)
1248 {
1249 new->extlen = (list[23] - 1) * 6;
1250 new->ext = malloc(sizeof(g2int) * new->extlen);
1251 for (j = 2; j <= list[23]; j++)
1252 {
1253 l = (j - 2) * 6;
1254 for (k = 0; k < 6; k++)
1255 {
1256 new->ext[l + k] = new->map[25 + k];
1257 }
1258 }
1259 }
1260 }
1261 /* PDT 4.88 (12/04/2024) */
1262 else if (number == 88)
1263 {
1264 if (list[12] > 1)
1265 {
1266 new->extlen = (list[12] - 1) * 11;
1267 new->ext = malloc(sizeof(g2int) * new->extlen);
1268 for (j = 2; j <= list[12]; j++)
1269 {
1270 l = (j - 2) * 11;
1271 for (k = 0; k < 11; k++)
1272 {
1273 new->ext[l + k] = new->map[13 + k];
1274 }
1275 }
1276 }
1277 }
1278 /* PDT 4.90 (12/04/2024) */
1279 else if (number == 90)
1280 {
1281 if (list[26] > 1)
1282 {
1283 new->extlen = (list[26] - 1) * 6;
1284 new->ext = malloc(sizeof(g2int) * new->extlen);
1285 for (j = 2; j <= list[26]; j++)
1286 {
1287 l = (j - 2) * 6;
1288 for (k = 0; k < 6; k++)
1289 {
1290 new->ext[l + k] = new->map[28 + k];
1291 }
1292 }
1293 }
1294 }
1295 /* PDT 4.92 (12/04/2024) */
1296 else if (number == 92)
1297 {
1298 if (list[15] > 1)
1299 {
1300 new->extlen = (list[15] - 1) * 11;
1301 new->ext = malloc(sizeof(g2int) * new->extlen);
1302 for (j = 2; j <= list[15]; j++)
1303 {
1304 l = (j - 2) * 11;
1305 for (k = 0; k < 11; k++)
1306 {
1307 new->ext[l + k] = new->map[16 + k];
1308 }
1309 }
1310 }
1311 }
1312 /* PDT 4.93 (12/04/2024) */
1313 else if (number == 93)
1314 {
1315 if (list[15] > 1)
1316 {
1317 new->extlen = (list[15] - 1) * 11;
1318 new->ext = malloc(sizeof(g2int) * new->extlen);
1319 for (j = 2; j <= list[15]; j++)
1320 {
1321 l = (j - 2) * 11;
1322 for (k = 0; k < 11; k++)
1323 {
1324 new->ext[l + k] = new->map[16 + k];
1325 }
1326 }
1327 }
1328 }
1329 /* PDT 4.94 (12/04/2024) */
1330 else if (number == 94)
1331 {
1332 if (list[18] > 1)
1333 {
1334 new->extlen = (list[18] - 1) * 11;
1335 new->ext = malloc(sizeof(g2int) * new->extlen);
1336 for (j = 2; j <= list[18]; j++)
1337 {
1338 l = (j - 2) * 11;
1339 for (k = 0; k < 11; k++)
1340 {
1341 new->ext[l + k] = new->map[19 + k];
1342 }
1343 }
1344 }
1345 }
1346 /* PDT 4.95 (12/04/2024) */
1347 else if (number == 95)
1348 {
1349 if (list[16] > 1)
1350 {
1351 new->extlen = (list[16] - 1) * 11;
1352 new->ext = malloc(sizeof(g2int) * new->extlen);
1353 for (j = 2; j <= list[16]; j++)
1354 {
1355 l = (j - 2) * 11;
1356 for (k = 0; k < 11; k++)
1357 {
1358 new->ext[l + k] = new->map[17 + k];
1359 }
1360 }
1361 }
1362 }
1363 /* PDT 4.96 (12/04/2024) */
1364 else if (number == 96)
1365 {
1366 if (list[19] > 1)
1367 {
1368 new->extlen = (list[19] - 1) * 11;
1369 new->ext = malloc(sizeof(g2int) * new->extlen);
1370 for (j = 2; j <= list[19]; j++)
1371 {
1372 l = (j - 2) * 11;
1373 for (k = 0; k < 11; k++)
1374 {
1375 new->ext[l + k] = new->map[20 + k];
1376 }
1377 }
1378 }
1379 }
1380 /* PDT 4.97 (12/04/2024) */
1381 else if (number == 97)
1382 {
1383 if (list[19] > 1)
1384 {
1385 new->extlen = (list[19] - 1) * 11;
1386 new->ext = malloc(sizeof(g2int) * new->extlen);
1387 for (j = 2; j <= list[19]; j++)
1388 {
1389 l = (j - 2) * 11;
1390 for (k = 0; k < 11; k++)
1391 {
1392 new->ext[l + k] = new->map[20 + k];
1393 }
1394 }
1395 }
1396 }
1397 /* PDT 4.98 (12/04/2024) */
1398 else if (number == 98)
1399 {
1400 if (list[22] > 1)
1401 {
1402 new->extlen = (list[22] - 1) * 11;
1403 new->ext = malloc(sizeof(g2int) * new->extlen);
1404 for (j = 2; j <= list[22]; j++)
1405 {
1406 l = (j - 2) * 11;
1407 for (k = 0; k < 11; k++)
1408 {
1409 new->ext[l + k] = new->map[23 + k];
1410 }
1411 }
1412 }
1413 }
1414 /* PDT 4.99 (12/04/2024) */
1415 else if (number == 99)
1416 {
1417 j = list[3];
1418 k = list[5];
1419 new->extlen = j + k + 1;
1420 new->ext = malloc(sizeof(g2int) * new->extlen);
1421 for (i = 0; i < j; i++)
1422 {
1423 new->ext[i] = -4;
1424 }
1425 new->ext[j] = -1;
1426 for (i = 0; i < k; i++)
1427 {
1428 new->ext[j + 1 + i] = -4;
1429 }
1430 }
1431 /* PDT 4.100 (12/04/2024) */
1432 else if (number == 100)
1433 {
1434 j = list[3];
1435 k = list[5];
1436 new->extlen = j + k + 1;
1437 new->ext = malloc(sizeof(g2int) * new->extlen);
1438 for (i = 0; i < j; i++)
1439 {
1440 new->ext[i] = -4;
1441 }
1442 new->ext[j] = -1;
1443 for (i = 0; i < k; i++)
1444 {
1445 new->ext[j + 1 + i] = -4;
1446 }
1447 }
1448 /* PDT 4.110 (12/04/2024) */
1449 else if (number == 110)
1450 {
1451 if (list[26] > 1)
1452 {
1453 new->extlen = (list[26] - 1) * 6;
1454 new->ext = malloc(sizeof(g2int) * new->extlen);
1455 for (j = 2; j <= list[26]; j++)
1456 {
1457 l = (j - 2) * 6;
1458 for (k = 0; k < 6; k++)
1459 {
1460 new->ext[l + k] = new->map[28 + k];
1461 }
1462 }
1463 }
1464 }
1465 /* PDT 4.111 (12/04/2024) */
1466 else if (number == 111)
1467 {
1468 if (list[29] > 1)
1469 {
1470 new->extlen = (list[29] - 1) * 6;
1471 new->ext = malloc(sizeof(g2int) * new->extlen);
1472 for (j = 2; j <= list[29]; j++)
1473 {
1474 l = (j - 2) * 6;
1475 for (k = 0; k < 6; k++)
1476 {
1477 new->ext[l + k] = new->map[31 + k];
1478 }
1479 }
1480 }
1481 }
1482 /* PDT 4.113 (12/04/2024) */
1483 else if (number == 113)
1484 {
1485 new->extlen = list[6] + 16;
1486 new->ext = malloc(sizeof(g2int) * new->extlen);
1487 for (i = 0; i < list[6]; i++)
1488 {
1489 new->ext[i] = 1;
1490 }
1491 l = list[6];
1492 new->ext[l] = 1;
1493 new->ext[l + 1] = 1;
1494 new->ext[l + 2] = 16;
1495 new->ext[l + 3] = 1;
1496 new->ext[l + 4] = 1;
1497 new->ext[l + 5] = 1;
1498 new->ext[l + 6] = 2;
1499 new->ext[l + 7] = 1;
1500 new->ext[l + 8] = 1;
1501 new->ext[l + 9] = -4;
1502 new->ext[l + 10] = 1;
1503 new->ext[l + 11] = -1;
1504 new->ext[l + 12] = -4;
1505 new->ext[l + 13] = 1;
1506 new->ext[l + 14] = -1;
1507 new->ext[l + 15] = -4;
1508 }
1509 /* PDT 4.114 (12/04/2024) */
1510 else if (number == 114)
1511 {
1512 new->extlen = list[6] + 30;
1513 new->ext = malloc(sizeof(g2int) * new->extlen);
1514 for (i = 0; i < list[6]; i++)
1515 {
1516 new->ext[i] = 1;
1517 }
1518 l = list[6];
1519 new->ext[l] = 1;
1520 new->ext[l + 1] = 1;
1521 new->ext[l + 2] = 16;
1522 new->ext[l + 3] = 1;
1523 new->ext[l + 4] = 1;
1524 new->ext[l + 5] = 1;
1525 new->ext[l + 6] = 2;
1526 new->ext[l + 7] = 1;
1527 new->ext[l + 8] = 1;
1528 new->ext[l + 9] = -4;
1529 new->ext[l + 10] = 1;
1530 new->ext[l + 11] = -1;
1531 new->ext[l + 12] = -4;
1532 new->ext[l + 13] = 1;
1533 new->ext[l + 14] = -1;
1534 new->ext[l + 15] = -4;
1535 new->ext[l + 16] = 2;
1536 new->ext[l + 17] = 1;
1537 new->ext[l + 18] = 1;
1538 new->ext[l + 19] = 1;
1539 new->ext[l + 20] = 1;
1540 new->ext[l + 21] = 1;
1541 new->ext[l + 22] = 1;
1542 new->ext[l + 23] = 4;
1543 new->ext[l + 24] = 1;
1544 new->ext[l + 25] = 1;
1545 new->ext[l + 26] = 1;
1546 new->ext[l + 27] = 4;
1547 new->ext[l + 28] = 1;
1548 new->ext[l + 29] = 4;
1549 }
1550 else if (number == 115)
1551 {
1552 new->extlen = list[6] + 19;
1553 new->ext = malloc(sizeof(g2int) * new->extlen);
1554 for (i = 0; i < list[6]; i++)
1555 {
1556 new->ext[i] = 1;
1557 }
1558 l = list[6];
1559 new->ext[l] = 1;
1560 new->ext[l + 1] = 1;
1561 new->ext[l + 2] = 16;
1562 new->ext[l + 3] = 1;
1563 new->ext[l + 4] = 1;
1564 new->ext[l + 5] = 1;
1565 new->ext[l + 6] = 2;
1566 new->ext[l + 7] = 1;
1567 new->ext[l + 8] = 1;
1568 new->ext[l + 9] = -4;
1569 new->ext[l + 10] = 1;
1570 new->ext[l + 11] = -1;
1571 new->ext[l + 12] = -4;
1572 new->ext[l + 13] = 1;
1573 new->ext[l + 14] = -1;
1574 new->ext[l + 15] = -4;
1575 new->ext[l + 16] = 1;
1576 new->ext[l + 17] = 4;
1577 new->ext[l + 18] = 4;
1578 }
1579 /* PDT 4.116 (12/04/2024) */
1580 else if (number == 116)
1581 {
1582 new->extlen = list[6] + 33;
1583 new->ext = malloc(sizeof(g2int) * new->extlen);
1584 for (i = 0; i < list[6]; i++)
1585 {
1586 new->ext[i] = 1;
1587 }
1588 l = list[6];
1589 new->ext[l] = 1;
1590 new->ext[l + 1] = 1;
1591 new->ext[l + 2] = 16;
1592 new->ext[l + 3] = 1;
1593 new->ext[l + 4] = 1;
1594 new->ext[l + 5] = 1;
1595 new->ext[l + 6] = 2;
1596 new->ext[l + 7] = 1;
1597 new->ext[l + 8] = 1;
1598 new->ext[l + 9] = -4;
1599 new->ext[l + 10] = 1;
1600 new->ext[l + 11] = -1;
1601 new->ext[l + 12] = -4;
1602 new->ext[l + 13] = 1;
1603 new->ext[l + 14] = -1;
1604 new->ext[l + 15] = -4;
1605 new->ext[l + 16] = 1;
1606 new->ext[l + 17] = 4;
1607 new->ext[l + 18] = 4;
1608 new->ext[l + 19] = 2;
1609 new->ext[l + 20] = 1;
1610 new->ext[l + 21] = 1;
1611 new->ext[l + 22] = 1;
1612 new->ext[l + 23] = 1;
1613 new->ext[l + 24] = 1;
1614 new->ext[l + 25] = 1;
1615 new->ext[l + 26] = 4;
1616 new->ext[l + 27] = 1;
1617 new->ext[l + 28] = 1;
1618 new->ext[l + 29] = 1;
1619 new->ext[l + 30] = 4;
1620 new->ext[l + 31] = 1;
1621 new->ext[l + 32] = 4;
1622 }
1623 /* PDT 4.118 (12/04/2024) */
1624 else if (number == 118)
1625 {
1626 if (list[24] > 1)
1627 {
1628 new->extlen = (list[24] - 1) * 6;
1629 new->ext = malloc(sizeof(g2int) * new->extlen);
1630 for (j = 2; j <= list[24]; j++)
1631 {
1632 l = (j - 2) * 6;
1633 for (k = 0; k < 6; k++)
1634 {
1635 new->ext[l + k] = new->map[26 + k];
1636 }
1637 }
1638 }
1639 }
1640 /* PDT 4.120 (12/04/2024) */
1641 else if (number == 120)
1642 {
1643 if (list[30] > 1)
1644 {
1645 new->extlen = (list[30] - 1) * 6;
1646 new->ext = malloc(sizeof(g2int) * new->extlen);
1647 for (j = 2; j <= list[30]; j++)
1648 {
1649 l = (j - 2) * 6;
1650 for (k = 0; k < 6; k++)
1651 {
1652 new->ext[l + k] = new->map[32 + k];
1653 }
1654 }
1655 }
1656 }
1657 /* PDT 4.121 (12/04/2024) */
1658 else if (number == 121)
1659 {
1660 new->extlen = list[25] * 9;
1661 new->ext = malloc(sizeof(g2int) * new->extlen);
1662 for (i = 0; i < list[25]; i++)
1663 {
1664 l = i * 9;
1665 new->ext[l] = -4;
1666 new->ext[l + 1] = 1;
1667 new->ext[l + 2] = 2;
1668 new->ext[l + 3] = 2;
1669 new->ext[l + 4] = 1;
1670 new->ext[l + 5] = 1;
1671 new->ext[l + 6] = 1;
1672 new->ext[l + 7] = 4;
1673 new->ext[l + 8] = 4;
1674 }
1675 }
1676 /* PDT 4.126 (12/04/2024) */
1677 else if (number == 126)
1678 {
1679 if (list[39] > 1)
1680 {
1681 new->extlen = (list[39] - 1) * 6;
1682 new->ext = malloc(sizeof(g2int) * new->extlen);
1683 for (j = 2; j <= list[39]; j++)
1684 {
1685 l = (j - 2) * 6;
1686 for (k = 0; k < 6; k++)
1687 {
1688 new->ext[l + k] = new->map[41 + k];
1689 }
1690 }
1691 }
1692 }
1693 /* PDT 4.127 (12/04/2024) */
1694 else if (number == 127)
1695 {
1696 if (list[42] > 1)
1697 {
1698 new->extlen = (list[42] - 1) * 6;
1699 new->ext = malloc(sizeof(g2int) * new->extlen);
1700 for (j = 2; j <= list[42]; j++)
1701 {
1702 l = (j - 2) * 6;
1703 for (k = 0; k < 6; k++)
1704 {
1705 new->ext[l + k] = new->map[44 + k];
1706 }
1707 }
1708 }
1709 }
1710 return new;
1711}
1712
1730int
1731g2c_get_pds_template_extension(int pds_template_num, int *template,
1732 int *extlen, int *ext)
1733{
1734 int j, t;
1735
1736 /* Check input. */
1737 if (!template)
1738 return G2C_EINVAL;
1739
1740 /* Look through the array of templates to find a matching one. */
1741 for (j = 0; j < G2C_MAX_PDS_TEMPLATE; j++)
1742 {
1743 if (pds_template_num == templatespds[j].template_num)
1744 {
1745 /* Is there an extension to this template? */
1746 if (templatespds[j].needext)
1747 {
1748 gtemplate *gt;
1749 g2int *template8;
1750 int e;
1751
1752 /* Copy template to g2int for extpdstemplate() function. */
1753 if (!(template8 = malloc(sizeof(g2int) * templatespds[j].mappdslen)))
1754 return G2C_ENOMEM;
1755 for (t = 0; t < templatespds[j].mappdslen; t++)
1756 template8[t] = template[t];
1757 if (!(gt = extpdstemplate(pds_template_num, template8)))
1758 return G2C_ENOTEMPLATE;
1759 free(template8);
1760 if (extlen)
1761 *extlen = gt->extlen;
1762 if (ext)
1763 for (e = 0; e < gt->extlen; e++)
1764 ext[e] = gt->ext[e];
1765 free(gt->ext);
1766 free(gt);
1767 }
1768 else
1769 {
1770 if (extlen)
1771 *extlen = 0;
1772 }
1773
1774 /* Done. */
1775 return G2C_NOERROR;
1776 }
1777 }
1778
1779 /* If we didn't find a template, return an error. */
1780 return G2C_ENOTEMPLATE;
1781}
1782
1805int
1806g2c_get_pds_template(int pds_template_num, int *maplen, int *map, int *needext)
1807{
1808 int j, m;
1809
1810 /* Look through the array of templates to find a matching one. */
1811 for (j = 0; j < G2C_MAX_PDS_TEMPLATE; j++)
1812 {
1813 if (pds_template_num == templatespds[j].template_num)
1814 {
1815 /* Copy maplen and map if the caller wants them. */
1816 if (maplen)
1817 *maplen = templatespds[j].mappdslen;
1818 if (map)
1819 for (m = 0; m < templatespds[j].mappdslen; m++)
1820 map[m] = templatespds[j].mappds[m];
1821 if (needext)
1822 *needext = templatespds[j].needext;
1823
1824 /* Done. */
1825 return G2C_NOERROR;
1826 }
1827 }
1828
1829 /* If we didn't find a template, return an error. */
1830 return G2C_ENOTEMPLATE;
1831}
1832
1847int
1848g2c_get_pdt_len(int pds_template_num, int *maplen)
1849{
1850 int j;
1851
1852 /* Look through the array of templates to find a matching one. */
1853 for (j = 0; j < G2C_MAX_PDS_TEMPLATE; j++)
1854 {
1855 if (pds_template_num == templatespds[j].template_num)
1856 {
1857 if (maplen)
1858 *maplen = templatespds[j].mappdslen;
1859
1860 return G2C_NOERROR;
1861 }
1862 }
1863
1864 /* If we didn't find a template, return an error. */
1865 return G2C_ENOTEMPLATE;
1866}
#define G2C_MAX_PDS_TEMPLATE
Maximum number of PDS templates.
Definition grib2.h:294
#define G2C_ENOTEMPLATE
Template not found.
Definition grib2.h:507
#define G2C_ENOMEM
Out of memory.
Definition grib2.h:495
#define G2C_EINVAL
Invalid input.
Definition grib2.h:491
#define G2C_MAX_PDS_TEMPLATE_MAPLEN
Maximum template map length.
Definition grib2.h:295
int64_t g2int
Long integer type.
Definition grib2.h:32
#define G2C_NOERROR
No error.
Definition grib2.h:486
Header file with internal function prototypes NCEPLIBS-g2c library.
g2int * ext
Number of octets of each entry in the extension part of the template.
Definition grib2_int.h:302
g2int extlen
Number of entries in the template extension.
Definition grib2_int.h:298
Struct for GRIB template, returned by getgridtemplate().
Definition grib2_int.h:278
int g2c_get_pdt_len(int pds_template_num, int *maplen)
Get initial length (number of entries) in static part of PDS template.
static g2int getpdsindex(g2int number)
This function returns the index of specified Product Definition Template in array templates.
int g2c_get_pds_template(int pds_template_num, int *maplen, int *map, int *needext)
Get PDS template information.
int g2c_get_pds_template_extension(int pds_template_num, int *template, int *extlen, int *ext)
Get pds template extension information.
gtemplate * extpdstemplate(g2int number, g2int *list)
This subroutine generates the remaining octet map for a given Product Definition Template,...
static const struct pdstemplate templatespds[G2C_MAX_PDS_TEMPLATE]
Data for struct for PDS template.
gtemplate * getpdstemplate(g2int number)
This subroutine returns PDS template information for a specified Product Definition Template.