just a simple XSLoader for now
[gitmo/Mouse.git] / Mouse.xs
CommitLineData
654a7eeb 1#define PERL_NO_GET_CONTEXT
2#include <EXTERN.h>
3#include <perl.h>
4#include <XSUB.h>
5#include "ppport.h"
6
7MODULE = Mouse PACKAGE = Mouse::Util
8
9PROTOTYPES: DISABLE
10
11BOOT:
12 NOOP;
13
14char *
15blessed(sv)
16 SV * sv
17PROTOTYPE: $
18CODE:
19{
20 if (SvMAGICAL(sv))
21 mg_get(sv);
22 if(!sv_isobject(sv)) {
23 XSRETURN_UNDEF;
24 }
25 RETVAL = (char*)sv_reftype(SvRV(sv),TRUE);
26}
27OUTPUT:
28 RETVAL
29
30char *
31reftype(sv)
32 SV * sv
33PROTOTYPE: $
34CODE:
35{
36 if (SvMAGICAL(sv))
37 mg_get(sv);
38 if(!SvROK(sv)) {
39 XSRETURN_UNDEF;
40 }
41 RETVAL = (char*)sv_reftype(SvRV(sv),FALSE);
42}
43OUTPUT:
44 RETVAL
45
46int
47looks_like_number(sv)
48 SV *sv
49PROTOTYPE: $
50CODE:
51#if (PERL_VERSION < 8) || (PERL_VERSION == 8 && PERL_SUBVERSION <5)
52 if (SvPOK(sv) || SvPOKp(sv)) {
53 RETVAL = looks_like_number(sv);
54 }
55 else {
56 RETVAL = SvFLAGS(sv) & (SVf_NOK|SVp_NOK|SVf_IOK|SVp_IOK);
57 }
58#else
59 RETVAL = looks_like_number(sv);
60#endif
61OUTPUT:
62 RETVAL
63
64void
65weaken(sv)
66 SV *sv
67PROTOTYPE: $
68CODE:
69#ifdef SvWEAKREF
70 sv_rvweaken(sv);
71#else
72 croak("weak references are not implemented in this release of perl");
73#endif
74