Wed, 13 May 2009 20:29:03 +0000
Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.
| 6678 | 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: | |
|
15894
765ec644ac47
Perl fixes for s/gaim/purple/. This hasn't really been tested yet.
Daniel Atallah <datallah@pidgin.im>
parents:
15435
diff
changeset
|
25 | sv = sv_2mortal(newSVpvf("%s is not a valid Purple::DebugLevel macro", s)); |
| 6678 | 26 | PUSHs(sv); |
| 27 | break; | |
| 28 | case PERL_constant_NOTDEF: | |
| 29 | sv = sv_2mortal(newSVpvf( | |
|
15894
765ec644ac47
Perl fixes for s/gaim/purple/. This hasn't really been tested yet.
Daniel Atallah <datallah@pidgin.im>
parents:
15435
diff
changeset
|
30 | "Your vendor has not defined Purple::DebugLevel macro %s, used", s)); |
| 6678 | 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( | |
|
15894
765ec644ac47
Perl fixes for s/gaim/purple/. This hasn't really been tested yet.
Daniel Atallah <datallah@pidgin.im>
parents:
15435
diff
changeset
|
85 | "Unexpected return type %d while processing Purple::DebugLevel macro %s, used", |
| 6678 | 86 | type, s)); |
| 87 | PUSHs(sv); | |
| 88 | } |