1void
2constant(sv)
3    PREINIT:
4#ifdef dXSTARG
5	dXSTARG; /* Faster if we have it.  */
6#else
7	dTARGET;
8#endif
9	STRLEN		len;
10        int		type;
11	IV		iv;
12	/* NV		nv;	Uncomment this if you need to return NVs */
13	/* const char	*pv;	Uncomment this if you need to return PVs */
14    INPUT:
15	SV *		sv;
16        const char *	s = SvPV(sv, len);
17    PPCODE:
18        /* Change this to constant(aTHX_ s, len, &iv, &nv);
19           if you need to return both NVs and IVs */
20	type = constant(aTHX_ s, len, &iv);
21      /* Return 1 or 2 items. First is error message, or undef if no error.
22           Second, if present, is found value */
23        switch (type) {
24        case PERL_constant_NOTFOUND:
25          sv = sv_2mortal(newSVpvf("%s is not a valid NetSNMP::TrapReceiver macro", s));
26          PUSHs(sv);
27          break;
28        case PERL_constant_NOTDEF:
29          sv = sv_2mortal(newSVpvf(
30	    "Your vendor has not defined NetSNMP::TrapReceiver macro %s, used", s));
31          PUSHs(sv);
32          break;
33        case PERL_constant_ISIV:
34          EXTEND(SP, 1);
35          PUSHs(&PL_sv_undef);
36          PUSHi(iv);
37          break;
38	/* Uncomment this if you need to return NOs
39        case PERL_constant_ISNO:
40          EXTEND(SP, 1);
41          PUSHs(&PL_sv_undef);
42          PUSHs(&PL_sv_no);
43          break; */
44	/* Uncomment this if you need to return NVs
45        case PERL_constant_ISNV:
46          EXTEND(SP, 1);
47          PUSHs(&PL_sv_undef);
48          PUSHn(nv);
49          break; */
50	/* Uncomment this if you need to return PVs
51        case PERL_constant_ISPV:
52          EXTEND(SP, 1);
53          PUSHs(&PL_sv_undef);
54          PUSHp(pv, strlen(pv));
55          break; */
56	/* Uncomment this if you need to return PVNs
57        case PERL_constant_ISPVN:
58          EXTEND(SP, 1);
59          PUSHs(&PL_sv_undef);
60          PUSHp(pv, iv);
61          break; */
62	/* Uncomment this if you need to return SVs
63        case PERL_constant_ISSV:
64          EXTEND(SP, 1);
65          PUSHs(&PL_sv_undef);
66          PUSHs(sv);
67          break; */
68	/* Uncomment this if you need to return UNDEFs
69        case PERL_constant_ISUNDEF:
70          break; */
71	/* Uncomment this if you need to return UVs
72        case PERL_constant_ISUV:
73          EXTEND(SP, 1);
74          PUSHs(&PL_sv_undef);
75          PUSHu((UV)iv);
76          break; */
77	/* Uncomment this if you need to return YESs
78        case PERL_constant_ISYES:
79          EXTEND(SP, 1);
80          PUSHs(&PL_sv_undef);
81          PUSHs(&PL_sv_yes);
82          break; */
83        default:
84          sv = sv_2mortal(newSVpvf(
85	    "Unexpected return type %d while processing NetSNMP::TrapReceiver macro %s, used",
86               type, s));
87          PUSHs(sv);
88        }
89