summaryrefslogtreecommitdiff
path: root/fallback
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2015-02-19 09:56:27 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2015-02-19 09:56:27 +0000
commitefd32dfb6c52e28f3b158930b64f986ff8760409 (patch)
tree17be39ecfd6527a069cb179c025d0a8e0ee2cf4d /fallback
downloadCompress-Bzip2-tarball-master.tar.gz
Diffstat (limited to 'fallback')
-rw-r--r--fallback/const-c.inc308
-rw-r--r--fallback/const-xs.inc88
2 files changed, 396 insertions, 0 deletions
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);
+ }