1 #define PERL_constant_NOTFOUND 1 2 #define PERL_constant_NOTDEF 2 3 #define PERL_constant_ISIV 3 4 #define PERL_constant_ISNO 4 5 #define PERL_constant_ISNV 5 6 #define PERL_constant_ISPV 6 7 #define PERL_constant_ISPVN 7 8 #define PERL_constant_ISSV 8 9 #define PERL_constant_ISUNDEF 9 10 #define PERL_constant_ISUV 10 11 #define PERL_constant_ISYES 11 12 13 #ifndef NVTYPE 14 typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */ 15 #endif 16 #ifndef aTHX_ 17 #define aTHX_ /* 5.6 or later define this for threading support. */ 18 #endif 19 #ifndef pTHX_ 20 #define pTHX_ /* 5.6 or later define this for threading support. */ 21 #endif 22 23 static int 24 constant_7 (pTHX_ const char *name, IV *iv_return) { 25 /* When generated this function returned values for the list of names given 26 here. However, subsequent manual editing may have added or removed some. 27 OS_CODE Z_ASCII Z_BLOCK Z_ERRNO Z_FIXED */ 28 /* Offset 6 gives the best switch position. */ 29 switch (name[6]) { 30 case 'D': 31 if (memEQ(name, "Z_FIXE", 6)) { 32 /* D */ 33 #ifdef Z_FIXED 34 *iv_return = Z_FIXED; 35 return PERL_constant_ISIV; 36 #else 37 return PERL_constant_NOTDEF; 38 #endif 39 } 40 break; 41 case 'E': 42 if (memEQ(name, "OS_COD", 6)) { 43 /* E */ 44 #ifdef OS_CODE 45 *iv_return = OS_CODE; 46 return PERL_constant_ISIV; 47 #else 48 return PERL_constant_NOTDEF; 49 #endif 50 } 51 break; 52 case 'I': 53 if (memEQ(name, "Z_ASCI", 6)) { 54 /* I */ 55 #ifdef Z_ASCII 56 *iv_return = Z_ASCII; 57 return PERL_constant_ISIV; 58 #else 59 return PERL_constant_NOTDEF; 60 #endif 61 } 62 break; 63 case 'K': 64 if (memEQ(name, "Z_BLOC", 6)) { 65 /* K */ 66 #ifdef Z_BLOCK 67 *iv_return = Z_BLOCK; 68 return PERL_constant_ISIV; 69 #else 70 return PERL_constant_NOTDEF; 71 #endif 72 } 73 break; 74 case 'O': 75 if (memEQ(name, "Z_ERRN", 6)) { 76 /* O */ 77 #ifdef Z_ERRNO 78 *iv_return = Z_ERRNO; 79 return PERL_constant_ISIV; 80 #else 81 return PERL_constant_NOTDEF; 82 #endif 83 } 84 break; 85 } 86 return PERL_constant_NOTFOUND; 87 } 88 89 static int 90 constant_9 (pTHX_ const char *name, IV *iv_return) { 91 /* When generated this function returned values for the list of names given 92 here. However, subsequent manual editing may have added or removed some. 93 DEF_WBITS MAX_WBITS Z_UNKNOWN */ 94 /* Offset 2 gives the best switch position. */ 95 switch (name[2]) { 96 case 'F': 97 if (memEQ(name, "DEF_WBITS", 9)) { 98 /* ^ */ 99 #ifdef DEF_WBITS 100 *iv_return = DEF_WBITS; 101 return PERL_constant_ISIV; 102 #else 103 return PERL_constant_NOTDEF; 104 #endif 105 } 106 break; 107 case 'U': 108 if (memEQ(name, "Z_UNKNOWN", 9)) { 109 /* ^ */ 110 #ifdef Z_UNKNOWN 111 *iv_return = Z_UNKNOWN; 112 return PERL_constant_ISIV; 113 #else 114 return PERL_constant_NOTDEF; 115 #endif 116 } 117 break; 118 case 'X': 119 if (memEQ(name, "MAX_WBITS", 9)) { 120 /* ^ */ 121 #ifdef MAX_WBITS 122 *iv_return = MAX_WBITS; 123 return PERL_constant_ISIV; 124 #else 125 return PERL_constant_NOTDEF; 126 #endif 127 } 128 break; 129 } 130 return PERL_constant_NOTFOUND; 131 } 132 133 static int 134 constant_10 (pTHX_ const char *name, IV *iv_return) { 135 /* When generated this function returned values for the list of names given 136 here. However, subsequent manual editing may have added or removed some. 137 Z_DEFLATED Z_FILTERED Z_NO_FLUSH */ 138 /* Offset 7 gives the best switch position. */ 139 switch (name[7]) { 140 case 'R': 141 if (memEQ(name, "Z_FILTERED", 10)) { 142 /* ^ */ 143 #ifdef Z_FILTERED 144 *iv_return = Z_FILTERED; 145 return PERL_constant_ISIV; 146 #else 147 return PERL_constant_NOTDEF; 148 #endif 149 } 150 break; 151 case 'T': 152 if (memEQ(name, "Z_DEFLATED", 10)) { 153 /* ^ */ 154 #ifdef Z_DEFLATED 155 *iv_return = Z_DEFLATED; 156 return PERL_constant_ISIV; 157 #else 158 return PERL_constant_NOTDEF; 159 #endif 160 } 161 break; 162 case 'U': 163 if (memEQ(name, "Z_NO_FLUSH", 10)) { 164 /* ^ */ 165 #ifdef Z_NO_FLUSH 166 *iv_return = Z_NO_FLUSH; 167 return PERL_constant_ISIV; 168 #else 169 return PERL_constant_NOTDEF; 170 #endif 171 } 172 break; 173 } 174 return PERL_constant_NOTFOUND; 175 } 176 177 static int 178 constant_11 (pTHX_ const char *name, IV *iv_return) { 179 /* When generated this function returned values for the list of names given 180 here. However, subsequent manual editing may have added or removed some. 181 Z_BUF_ERROR Z_MEM_ERROR Z_NEED_DICT */ 182 /* Offset 4 gives the best switch position. */ 183 switch (name[4]) { 184 case 'E': 185 if (memEQ(name, "Z_NEED_DICT", 11)) { 186 /* ^ */ 187 #ifdef Z_NEED_DICT 188 *iv_return = Z_NEED_DICT; 189 return PERL_constant_ISIV; 190 #else 191 return PERL_constant_NOTDEF; 192 #endif 193 } 194 break; 195 case 'F': 196 if (memEQ(name, "Z_BUF_ERROR", 11)) { 197 /* ^ */ 198 #ifdef Z_BUF_ERROR 199 *iv_return = Z_BUF_ERROR; 200 return PERL_constant_ISIV; 201 #else 202 return PERL_constant_NOTDEF; 203 #endif 204 } 205 break; 206 case 'M': 207 if (memEQ(name, "Z_MEM_ERROR", 11)) { 208 /* ^ */ 209 #ifdef Z_MEM_ERROR 210 *iv_return = Z_MEM_ERROR; 211 return PERL_constant_ISIV; 212 #else 213 return PERL_constant_NOTDEF; 214 #endif 215 } 216 break; 217 } 218 return PERL_constant_NOTFOUND; 219 } 220 221 static int 222 constant_12 (pTHX_ const char *name, IV *iv_return, const char **pv_return) { 223 /* When generated this function returned values for the list of names given 224 here. However, subsequent manual editing may have added or removed some. 225 ZLIB_VERSION Z_BEST_SPEED Z_DATA_ERROR Z_FULL_FLUSH Z_STREAM_END 226 Z_SYNC_FLUSH */ 227 /* Offset 4 gives the best switch position. */ 228 switch (name[4]) { 229 case 'L': 230 if (memEQ(name, "Z_FULL_FLUSH", 12)) { 231 /* ^ */ 232 #ifdef Z_FULL_FLUSH 233 *iv_return = Z_FULL_FLUSH; 234 return PERL_constant_ISIV; 235 #else 236 return PERL_constant_NOTDEF; 237 #endif 238 } 239 break; 240 case 'N': 241 if (memEQ(name, "Z_SYNC_FLUSH", 12)) { 242 /* ^ */ 243 #ifdef Z_SYNC_FLUSH 244 *iv_return = Z_SYNC_FLUSH; 245 return PERL_constant_ISIV; 246 #else 247 return PERL_constant_NOTDEF; 248 #endif 249 } 250 break; 251 case 'R': 252 if (memEQ(name, "Z_STREAM_END", 12)) { 253 /* ^ */ 254 #ifdef Z_STREAM_END 255 *iv_return = Z_STREAM_END; 256 return PERL_constant_ISIV; 257 #else 258 return PERL_constant_NOTDEF; 259 #endif 260 } 261 break; 262 case 'S': 263 if (memEQ(name, "Z_BEST_SPEED", 12)) { 264 /* ^ */ 265 #ifdef Z_BEST_SPEED 266 *iv_return = Z_BEST_SPEED; 267 return PERL_constant_ISIV; 268 #else 269 return PERL_constant_NOTDEF; 270 #endif 271 } 272 break; 273 case 'T': 274 if (memEQ(name, "Z_DATA_ERROR", 12)) { 275 /* ^ */ 276 #ifdef Z_DATA_ERROR 277 *iv_return = Z_DATA_ERROR; 278 return PERL_constant_ISIV; 279 #else 280 return PERL_constant_NOTDEF; 281 #endif 282 } 283 break; 284 case '_': 285 if (memEQ(name, "ZLIB_VERSION", 12)) { 286 /* ^ */ 287 #ifdef ZLIB_VERSION 288 *pv_return = ZLIB_VERSION; 289 return PERL_constant_ISPV; 290 #else 291 return PERL_constant_NOTDEF; 292 #endif 293 } 294 break; 295 } 296 return PERL_constant_NOTFOUND; 297 } 298 299 static int 300 constant (pTHX_ const char *name, STRLEN len, IV *iv_return, const char **pv_return) { 301 /* Initially switch on the length of the name. */ 302 /* When generated this function returned values for the list of names given 303 in this section of perl code. Rather than manually editing these functions 304 to add or remove constants, which would result in this comment and section 305 of code becoming inaccurate, we recommend that you edit this section of 306 code, and use it to regenerate a new set of constant functions which you 307 then use to replace the originals. 308 309 Regenerate these constant functions by feeding this entire source file to 310 perl -x 311 312 #!/usr/bin/perl -w 313 use ExtUtils::Constant qw (constant_types C_constant XS_constant); 314 315 my $types = {map {($_, 1)} qw(IV PV)}; 316 my @names = (qw(DEF_WBITS MAX_MEM_LEVEL MAX_WBITS OS_CODE Z_ASCII 317 Z_BEST_COMPRESSION Z_BEST_SPEED Z_BINARY Z_BLOCK Z_BUF_ERROR 318 Z_DATA_ERROR Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY Z_DEFLATED 319 Z_ERRNO Z_FILTERED Z_FINISH Z_FIXED Z_FULL_FLUSH Z_HUFFMAN_ONLY 320 Z_MEM_ERROR Z_NEED_DICT Z_NO_COMPRESSION Z_NO_FLUSH Z_NULL Z_OK 321 Z_PARTIAL_FLUSH Z_RLE Z_STREAM_END Z_STREAM_ERROR Z_SYNC_FLUSH 322 Z_UNKNOWN Z_VERSION_ERROR), 323 {name=>"ZLIB_VERSION", type=>"PV"}); 324 325 print constant_types(); # macro defs 326 foreach (C_constant ("Zlib", 'constant', 'IV', $types, undef, 3, @names) ) { 327 print $_, "\n"; # C constant subs 328 } 329 print "#### XS Section:\n"; 330 print XS_constant ("Zlib", $types); 331 __END__ 332 */ 333 334 switch (len) { 335 case 4: 336 if (memEQ(name, "Z_OK", 4)) { 337 #ifdef Z_OK 338 *iv_return = Z_OK; 339 return PERL_constant_ISIV; 340 #else 341 return PERL_constant_NOTDEF; 342 #endif 343 } 344 break; 345 case 5: 346 if (memEQ(name, "Z_RLE", 5)) { 347 #ifdef Z_RLE 348 *iv_return = Z_RLE; 349 return PERL_constant_ISIV; 350 #else 351 return PERL_constant_NOTDEF; 352 #endif 353 } 354 break; 355 case 6: 356 if (memEQ(name, "Z_NULL", 6)) { 357 #ifdef Z_NULL 358 *iv_return = Z_NULL; 359 return PERL_constant_ISIV; 360 #else 361 return PERL_constant_NOTDEF; 362 #endif 363 } 364 break; 365 case 7: 366 return constant_7 (aTHX_ name, iv_return); 367 break; 368 case 8: 369 /* Names all of length 8. */ 370 /* Z_BINARY Z_FINISH */ 371 /* Offset 6 gives the best switch position. */ 372 switch (name[6]) { 373 case 'R': 374 if (memEQ(name, "Z_BINARY", 8)) { 375 /* ^ */ 376 #ifdef Z_BINARY 377 *iv_return = Z_BINARY; 378 return PERL_constant_ISIV; 379 #else 380 return PERL_constant_NOTDEF; 381 #endif 382 } 383 break; 384 case 'S': 385 if (memEQ(name, "Z_FINISH", 8)) { 386 /* ^ */ 387 #ifdef Z_FINISH 388 *iv_return = Z_FINISH; 389 return PERL_constant_ISIV; 390 #else 391 return PERL_constant_NOTDEF; 392 #endif 393 } 394 break; 395 } 396 break; 397 case 9: 398 return constant_9 (aTHX_ name, iv_return); 399 break; 400 case 10: 401 return constant_10 (aTHX_ name, iv_return); 402 break; 403 case 11: 404 return constant_11 (aTHX_ name, iv_return); 405 break; 406 case 12: 407 return constant_12 (aTHX_ name, iv_return, pv_return); 408 break; 409 case 13: 410 if (memEQ(name, "MAX_MEM_LEVEL", 13)) { 411 #ifdef MAX_MEM_LEVEL 412 *iv_return = MAX_MEM_LEVEL; 413 return PERL_constant_ISIV; 414 #else 415 return PERL_constant_NOTDEF; 416 #endif 417 } 418 break; 419 case 14: 420 /* Names all of length 14. */ 421 /* Z_HUFFMAN_ONLY Z_STREAM_ERROR */ 422 /* Offset 3 gives the best switch position. */ 423 switch (name[3]) { 424 case 'T': 425 if (memEQ(name, "Z_STREAM_ERROR", 14)) { 426 /* ^ */ 427 #ifdef Z_STREAM_ERROR 428 *iv_return = Z_STREAM_ERROR; 429 return PERL_constant_ISIV; 430 #else 431 return PERL_constant_NOTDEF; 432 #endif 433 } 434 break; 435 case 'U': 436 if (memEQ(name, "Z_HUFFMAN_ONLY", 14)) { 437 /* ^ */ 438 #ifdef Z_HUFFMAN_ONLY 439 *iv_return = Z_HUFFMAN_ONLY; 440 return PERL_constant_ISIV; 441 #else 442 return PERL_constant_NOTDEF; 443 #endif 444 } 445 break; 446 } 447 break; 448 case 15: 449 /* Names all of length 15. */ 450 /* Z_PARTIAL_FLUSH Z_VERSION_ERROR */ 451 /* Offset 5 gives the best switch position. */ 452 switch (name[5]) { 453 case 'S': 454 if (memEQ(name, "Z_VERSION_ERROR", 15)) { 455 /* ^ */ 456 #ifdef Z_VERSION_ERROR 457 *iv_return = Z_VERSION_ERROR; 458 return PERL_constant_ISIV; 459 #else 460 return PERL_constant_NOTDEF; 461 #endif 462 } 463 break; 464 case 'T': 465 if (memEQ(name, "Z_PARTIAL_FLUSH", 15)) { 466 /* ^ */ 467 #ifdef Z_PARTIAL_FLUSH 468 *iv_return = Z_PARTIAL_FLUSH; 469 return PERL_constant_ISIV; 470 #else 471 return PERL_constant_NOTDEF; 472 #endif 473 } 474 break; 475 } 476 break; 477 case 16: 478 if (memEQ(name, "Z_NO_COMPRESSION", 16)) { 479 #ifdef Z_NO_COMPRESSION 480 *iv_return = Z_NO_COMPRESSION; 481 return PERL_constant_ISIV; 482 #else 483 return PERL_constant_NOTDEF; 484 #endif 485 } 486 break; 487 case 18: 488 /* Names all of length 18. */ 489 /* Z_BEST_COMPRESSION Z_DEFAULT_STRATEGY */ 490 /* Offset 14 gives the best switch position. */ 491 switch (name[14]) { 492 case 'S': 493 if (memEQ(name, "Z_BEST_COMPRESSION", 18)) { 494 /* ^ */ 495 #ifdef Z_BEST_COMPRESSION 496 *iv_return = Z_BEST_COMPRESSION; 497 return PERL_constant_ISIV; 498 #else 499 return PERL_constant_NOTDEF; 500 #endif 501 } 502 break; 503 case 'T': 504 if (memEQ(name, "Z_DEFAULT_STRATEGY", 18)) { 505 /* ^ */ 506 #ifdef Z_DEFAULT_STRATEGY 507 *iv_return = Z_DEFAULT_STRATEGY; 508 return PERL_constant_ISIV; 509 #else 510 return PERL_constant_NOTDEF; 511 #endif 512 } 513 break; 514 } 515 break; 516 case 21: 517 if (memEQ(name, "Z_DEFAULT_COMPRESSION", 21)) { 518 #ifdef Z_DEFAULT_COMPRESSION 519 *iv_return = Z_DEFAULT_COMPRESSION; 520 return PERL_constant_ISIV; 521 #else 522 return PERL_constant_NOTDEF; 523 #endif 524 } 525 break; 526 } 527 return PERL_constant_NOTFOUND; 528 } 529 530