const-xs.inc
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:3k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. void
  2. constant(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.         }