From efd32dfb6c52e28f3b158930b64f986ff8760409 Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Thu, 19 Feb 2015 09:56:27 +0000 Subject: Compress-Bzip2-2.22 --- fallback/const-c.inc | 308 ++++++++++++++++++++++++++++++++++++++++++++++++++ fallback/const-xs.inc | 88 +++++++++++++++ 2 files changed, 396 insertions(+) create mode 100644 fallback/const-c.inc create mode 100644 fallback/const-xs.inc (limited to 'fallback') diff --git a/fallback/const-c.inc b/fallback/const-c.inc new file mode 100644 index 0000000..f55f6f8 --- /dev/null +++ b/fallback/const-c.inc @@ -0,0 +1,308 @@ +#define PERL_constant_NOTFOUND 1 +#define PERL_constant_NOTDEF 2 +#define PERL_constant_ISIV 3 +#define PERL_constant_ISNO 4 +#define PERL_constant_ISNV 5 +#define PERL_constant_ISPV 6 +#define PERL_constant_ISPVN 7 +#define PERL_constant_ISSV 8 +#define PERL_constant_ISUNDEF 9 +#define PERL_constant_ISUV 10 +#define PERL_constant_ISYES 11 + +#ifndef NVTYPE +typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it. */ +#endif +#ifndef aTHX_ +#define aTHX_ /* 5.6 or later define this for threading support. */ +#endif +#ifndef pTHX_ +#define pTHX_ /* 5.6 or later define this for threading support. */ +#endif + +static int +constant_9 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + BZ_EXTERN BZ_FINISH BZ_RUN_OK */ + /* Offset 7 gives the best switch position. */ + switch (name[7]) { + case 'O': + if (memEQ(name, "BZ_RUN_OK", 9)) { + /* ^ */ +#ifdef BZ_RUN_OK + *iv_return = BZ_RUN_OK; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'S': + if (memEQ(name, "BZ_FINISH", 9)) { + /* ^ */ +#ifdef BZ_FINISH + *iv_return = BZ_FINISH; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant_13 (pTHX_ const char *name, IV *iv_return) { + /* When generated this function returned values for the list of names given + here. However, subsequent manual editing may have added or removed some. + BZ_DATA_ERROR BZ_MAX_UNUSED BZ_STREAM_END */ + /* Offset 5 gives the best switch position. */ + switch (name[5]) { + case 'R': + if (memEQ(name, "BZ_STREAM_END", 13)) { + /* ^ */ +#ifdef BZ_STREAM_END + *iv_return = BZ_STREAM_END; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'T': + if (memEQ(name, "BZ_DATA_ERROR", 13)) { + /* ^ */ +#ifdef BZ_DATA_ERROR + *iv_return = BZ_DATA_ERROR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'X': + if (memEQ(name, "BZ_MAX_UNUSED", 13)) { + /* ^ */ +#ifdef BZ_MAX_UNUSED + *iv_return = BZ_MAX_UNUSED; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + +static int +constant (pTHX_ const char *name, STRLEN len, IV *iv_return) { + /* Initially switch on the length of the name. */ + /* When generated this function returned values for the list of names given + in this section of perl code. Rather than manually editing these functions + to add or remove constants, which would result in this comment and section + of code becoming inaccurate, we recommend that you edit this section of + code, and use it to regenerate a new set of constant functions which you + then use to replace the originals. + + Regenerate these constant functions by feeding this entire source file to + perl -x + +#!/usr/local/bin/perl -w +use ExtUtils::Constant qw (constant_types C_constant XS_constant); + +my $types = {map {($_, 1)} qw(IV)}; +my @names = (qw(BZ_CONFIG_ERROR BZ_DATA_ERROR BZ_DATA_ERROR_MAGIC BZ_EXTERN + BZ_FINISH BZ_FINISH_OK BZ_FLUSH BZ_FLUSH_OK BZ_IO_ERROR + BZ_MAX_UNUSED BZ_MEM_ERROR BZ_OK BZ_OUTBUFF_FULL BZ_PARAM_ERROR + BZ_RUN BZ_RUN_OK BZ_SEQUENCE_ERROR BZ_STREAM_END + BZ_UNEXPECTED_EOF)); + +print constant_types(); # macro defs +foreach (C_constant ("Compress::Bzip2", 'constant', 'IV', $types, undef, 3, @names) ) { + print $_, "\n"; # C constant subs +} +print "#### XS Section:\n"; +print XS_constant ("Compress::Bzip2", $types); +__END__ + */ + + switch (len) { + case 5: + if (memEQ(name, "BZ_OK", 5)) { +#ifdef BZ_OK + *iv_return = BZ_OK; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 6: + if (memEQ(name, "BZ_RUN", 6)) { +#ifdef BZ_RUN + *iv_return = BZ_RUN; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 8: + if (memEQ(name, "BZ_FLUSH", 8)) { +#ifdef BZ_FLUSH + *iv_return = BZ_FLUSH; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 9: + return constant_9 (aTHX_ name, iv_return); + break; + case 11: + /* Names all of length 11. */ + /* BZ_FLUSH_OK BZ_IO_ERROR */ + /* Offset 3 gives the best switch position. */ + switch (name[3]) { + case 'F': + if (memEQ(name, "BZ_FLUSH_OK", 11)) { + /* ^ */ +#ifdef BZ_FLUSH_OK + *iv_return = BZ_FLUSH_OK; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'I': + if (memEQ(name, "BZ_IO_ERROR", 11)) { + /* ^ */ +#ifdef BZ_IO_ERROR + *iv_return = BZ_IO_ERROR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + break; + case 12: + /* Names all of length 12. */ + /* BZ_FINISH_OK BZ_MEM_ERROR */ + /* Offset 5 gives the best switch position. */ + switch (name[5]) { + case 'M': + if (memEQ(name, "BZ_MEM_ERROR", 12)) { + /* ^ */ +#ifdef BZ_MEM_ERROR + *iv_return = BZ_MEM_ERROR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'N': + if (memEQ(name, "BZ_FINISH_OK", 12)) { + /* ^ */ +#ifdef BZ_FINISH_OK + *iv_return = BZ_FINISH_OK; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + break; + case 13: + return constant_13 (aTHX_ name, iv_return); + break; + case 14: + if (memEQ(name, "BZ_PARAM_ERROR", 14)) { +#ifdef BZ_PARAM_ERROR + *iv_return = BZ_PARAM_ERROR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 15: + /* Names all of length 15. */ + /* BZ_CONFIG_ERROR BZ_OUTBUFF_FULL */ + /* Offset 8 gives the best switch position. */ + switch (name[8]) { + case 'F': + if (memEQ(name, "BZ_OUTBUFF_FULL", 15)) { + /* ^ */ +#ifdef BZ_OUTBUFF_FULL + *iv_return = BZ_OUTBUFF_FULL; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'G': + if (memEQ(name, "BZ_CONFIG_ERROR", 15)) { + /* ^ */ +#ifdef BZ_CONFIG_ERROR + *iv_return = BZ_CONFIG_ERROR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + break; + case 17: + /* Names all of length 17. */ + /* BZ_SEQUENCE_ERROR BZ_UNEXPECTED_EOF */ + /* Offset 12 gives the best switch position. */ + switch (name[12]) { + case 'D': + if (memEQ(name, "BZ_UNEXPECTED_EOF", 17)) { + /* ^ */ +#ifdef BZ_UNEXPECTED_EOF + *iv_return = BZ_UNEXPECTED_EOF; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + case 'E': + if (memEQ(name, "BZ_SEQUENCE_ERROR", 17)) { + /* ^ */ +#ifdef BZ_SEQUENCE_ERROR + *iv_return = BZ_SEQUENCE_ERROR; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + break; + case 19: + if (memEQ(name, "BZ_DATA_ERROR_MAGIC", 19)) { +#ifdef BZ_DATA_ERROR_MAGIC + *iv_return = BZ_DATA_ERROR_MAGIC; + return PERL_constant_ISIV; +#else + return PERL_constant_NOTDEF; +#endif + } + break; + } + return PERL_constant_NOTFOUND; +} + diff --git a/fallback/const-xs.inc b/fallback/const-xs.inc new file mode 100644 index 0000000..b19d898 --- /dev/null +++ b/fallback/const-xs.inc @@ -0,0 +1,88 @@ +void +constant(sv) + PREINIT: +#ifdef dXSTARG + dXSTARG; /* Faster if we have it. */ +#else + dTARGET; +#endif + STRLEN len; + int type; + IV iv; + /* NV nv; Uncomment this if you need to return NVs */ + /* const char *pv; Uncomment this if you need to return PVs */ + INPUT: + SV * sv; + const char * s = SvPV(sv, len); + PPCODE: + /* Change this to constant(aTHX_ s, len, &iv, &nv); + if you need to return both NVs and IVs */ + type = constant(aTHX_ s, len, &iv); + /* Return 1 or 2 items. First is error message, or undef if no error. + Second, if present, is found value */ + switch (type) { + case PERL_constant_NOTFOUND: + sv = sv_2mortal(newSVpvf("%s is not a valid Compress::Bzip2 macro", s)); + PUSHs(sv); + break; + case PERL_constant_NOTDEF: + sv = sv_2mortal(newSVpvf( + "Your vendor has not defined Compress::Bzip2 macro %s, used", s)); + PUSHs(sv); + break; + case PERL_constant_ISIV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHi(iv); + break; + /* Uncomment this if you need to return NOs + case PERL_constant_ISNO: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(&PL_sv_no); + break; */ + /* Uncomment this if you need to return NVs + case PERL_constant_ISNV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHn(nv); + break; */ + /* Uncomment this if you need to return PVs + case PERL_constant_ISPV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHp(pv, strlen(pv)); + break; */ + /* Uncomment this if you need to return PVNs + case PERL_constant_ISPVN: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHp(pv, iv); + break; */ + /* Uncomment this if you need to return SVs + case PERL_constant_ISSV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(sv); + break; */ + /* Uncomment this if you need to return UNDEFs + case PERL_constant_ISUNDEF: + break; */ + /* Uncomment this if you need to return UVs + case PERL_constant_ISUV: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHu((UV)iv); + break; */ + /* Uncomment this if you need to return YESs + case PERL_constant_ISYES: + EXTEND(SP, 1); + PUSHs(&PL_sv_undef); + PUSHs(&PL_sv_yes); + break; */ + default: + sv = sv_2mortal(newSVpvf( + "Unexpected return type %d while processing Compress::Bzip2 macro %s, used", + type, s)); + PUSHs(sv); + } -- cgit v1.2.1