ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Convert-Scalar/Scalar.xs
(Generate patch)

Comparing Convert-Scalar/Scalar.xs (file contents):
Revision 1.4 by root, Mon Sep 23 03:42:02 2002 UTC vs.
Revision 1.9 by root, Fri Mar 7 10:33:46 2008 UTC

1#include "EXTERN.h" 1#include "EXTERN.h"
2#include "perl.h" 2#include "perl.h"
3#include "XSUB.h" 3#include "XSUB.h"
4 4
5#if PERL_VERSION < 7 5#define RETCOPY(sv) \
6# define is_utf8_string(s,l) (croak ("utf8_valid requires perl 5.7 or higher"), 0) 6 if (GIMME_V != G_VOID) \
7#endif 7 { \
8 dXSTARG; \
9 sv_setsv (TARG, (sv)); \
10 EXTEND (SP, 1); \
11 PUSHs (TARG); \
12 }
8 13
9MODULE = Convert::Scalar PACKAGE = Convert::Scalar 14MODULE = Convert::Scalar PACKAGE = Convert::Scalar
10 15
11int 16bool
12utf8(scalar,mode=0) 17utf8(scalar,mode=0)
13 SV * scalar 18 SV * scalar
14 SV * mode 19 SV * mode
15 PROTOTYPE: $;$ 20 PROTOTYPE: $;$
16 CODE: 21 CODE:
36 if (SvREADONLY (scalar)) 41 if (SvREADONLY (scalar))
37 croak ("Convert::Scalar::utf8_on called on read only scalar"); 42 croak ("Convert::Scalar::utf8_on called on read only scalar");
38 43
39 SvGETMAGIC (scalar); 44 SvGETMAGIC (scalar);
40 SvUTF8_on (scalar); 45 SvUTF8_on (scalar);
41 if (GIMME_V != G_VOID) 46 RETCOPY (scalar);
42 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
43 47
44void 48void
45utf8_off(scalar) 49utf8_off(scalar)
46 SV * scalar 50 SV * scalar
47 PROTOTYPE: $ 51 PROTOTYPE: $
49 if (SvREADONLY (scalar)) 53 if (SvREADONLY (scalar))
50 croak ("Convert::Scalar::utf8_off called on read only scalar"); 54 croak ("Convert::Scalar::utf8_off called on read only scalar");
51 55
52 SvGETMAGIC (scalar); 56 SvGETMAGIC (scalar);
53 SvUTF8_off (scalar); 57 SvUTF8_off (scalar);
54 if (GIMME_V != G_VOID) 58 RETCOPY (scalar);
55 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
56 59
57int 60int
58utf8_valid(scalar) 61utf8_valid(scalar)
59 SV * scalar 62 SV * scalar
60 PROTOTYPE: $ 63 PROTOTYPE: $
72 PPCODE: 75 PPCODE:
73 if (SvREADONLY (scalar)) 76 if (SvREADONLY (scalar))
74 croak ("Convert::Scalar::utf8_upgrade called on read only scalar"); 77 croak ("Convert::Scalar::utf8_upgrade called on read only scalar");
75 78
76 sv_utf8_upgrade(scalar); 79 sv_utf8_upgrade(scalar);
77 if (GIMME_V != G_VOID) 80 RETCOPY (scalar);
78 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
79 81
80bool 82bool
81utf8_downgrade(scalar, fail_ok = 0) 83utf8_downgrade(scalar, fail_ok = 0)
82 SV * scalar 84 SV * scalar
83 bool fail_ok 85 bool fail_ok
84 PROTOTYPE: $;$ 86 PROTOTYPE: $;$
85 CODE: 87 CODE:
86 if (SvREADONLY (scalar)) 88 if (SvREADONLY (scalar))
87 croak ("Convert::Scalar::utf8_downgrade called on read only scalar"); 89 croak ("Convert::Scalar::utf8_downgrade called on read only scalar");
88 90
89 RETVAL = sv_utf8_downgrade (scalar, fail_ok); 91 RETVAL = !!sv_utf8_downgrade (scalar, fail_ok);
90 OUTPUT: 92 OUTPUT:
91 RETVAL 93 RETVAL
92 94
93void 95void
94utf8_encode(scalar) 96utf8_encode(scalar)
97 PPCODE: 99 PPCODE:
98 if (SvREADONLY (scalar)) 100 if (SvREADONLY (scalar))
99 croak ("Convert::Scalar::utf8_encode called on read only scalar"); 101 croak ("Convert::Scalar::utf8_encode called on read only scalar");
100 102
101 sv_utf8_encode (scalar); 103 sv_utf8_encode (scalar);
102 if (GIMME_V != G_VOID) 104 RETCOPY (scalar);
103 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
104 105
105UV 106UV
106utf8_length(scalar) 107utf8_length(scalar)
107 SV * scalar 108 SV * scalar
108 PROTOTYPE: $ 109 PROTOTYPE: $
131 SV * scalar 132 SV * scalar
132 PROTOTYPE: $ 133 PROTOTYPE: $
133 CODE: 134 CODE:
134 SvTAINTED_on (scalar); 135 SvTAINTED_on (scalar);
135 136
136int 137bool
137tainted(scalar) 138tainted(scalar)
138 SV * scalar 139 SV * scalar
139 PROTOTYPE: $ 140 PROTOTYPE: $
140 CODE: 141 CODE:
141 RETVAL = SvTAINTED (scalar); 142 RETVAL = !!SvTAINTED (scalar);
142 OUTPUT: 143 OUTPUT:
143 RETVAL 144 RETVAL
144 145
145void 146void
146untaint(scalar) 147untaint(scalar)
203 { 204 {
204 if (!SvROK (scalar)) croak ("refcnt_dec_rv requires a reference as it's first argument"); 205 if (!SvROK (scalar)) croak ("refcnt_dec_rv requires a reference as it's first argument");
205 scalar = SvRV (scalar); 206 scalar = SvRV (scalar);
206 } 207 }
207 SvREFCNT_dec (scalar); 208 SvREFCNT_dec (scalar);
209
210bool
211ok(scalar)
212 SV * scalar
213 PROTOTYPE: $
214 CODE:
215 RETVAL = !!SvOK (scalar);
216 OUTPUT:
217 RETVAL
218
219bool
220uok(scalar)
221 SV * scalar
222 PROTOTYPE: $
223 CODE:
224 RETVAL = !!SvUOK (scalar);
225 OUTPUT:
226 RETVAL
227
228bool
229rok(scalar)
230 SV * scalar
231 PROTOTYPE: $
232 CODE:
233 RETVAL = !!SvROK (scalar);
234 OUTPUT:
235 RETVAL
236
237bool
238pok(scalar)
239 SV * scalar
240 PROTOTYPE: $
241 CODE:
242 RETVAL = !!SvPOK (scalar);
243 OUTPUT:
244 RETVAL
245
246bool
247nok(scalar)
248 SV * scalar
249 PROTOTYPE: $
250 CODE:
251 RETVAL = !!SvNOK (scalar);
252 OUTPUT:
253 RETVAL
254
255bool
256niok(scalar)
257 SV * scalar
258 PROTOTYPE: $
259 CODE:
260 RETVAL = !!SvNIOK (scalar);
261 OUTPUT:
262 RETVAL
263

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines