NCEPLIBS-g2c 2.1.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}
#define G2C_MAX_PDS_TEMPLATE
Maximum number of PDS templates.
Definition grib2.h:294
#define G2C_ENOTEMPLATE
Template not found.
Definition grib2.h:505
#define G2C_ENOMEM
Out of memory.
Definition grib2.h:493
#define G2C_EINVAL
Invalid input.
Definition grib2.h:489
#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:484
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
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.