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.2 by root, Sun Jan 20 04:23:59 2002 UTC vs.
Revision 1.8 by root, Sat Nov 27 23:36:37 2004 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:
17 SvGETMAGIC (scalar); 22 SvGETMAGIC (scalar);
18 RETVAL = !!SvUTF8 (scalar); 23 RETVAL = !!SvUTF8 (scalar);
19 if (items > 1) 24 if (items > 1)
20 { 25 {
26 if (SvREADONLY (scalar))
27 croak ("Convert::Scalar::utf8 called on read only scalar");
21 if (SvTRUE (mode)) 28 if (SvTRUE (mode))
22 SvUTF8_on (scalar); 29 SvUTF8_on (scalar);
23 else 30 else
24 SvUTF8_off (scalar); 31 SvUTF8_off (scalar);
25 } 32 }
29void 36void
30utf8_on(scalar) 37utf8_on(scalar)
31 SV * scalar 38 SV * scalar
32 PROTOTYPE: $ 39 PROTOTYPE: $
33 PPCODE: 40 PPCODE:
41 if (SvREADONLY (scalar))
42 croak ("Convert::Scalar::utf8_on called on read only scalar");
43
34 SvGETMAGIC (scalar); 44 SvGETMAGIC (scalar);
35 SvUTF8_on (scalar); 45 SvUTF8_on (scalar);
36 if (GIMME_V != G_VOID) 46 RETCOPY (scalar);
37 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
38 47
39void 48void
40utf8_off(scalar) 49utf8_off(scalar)
41 SV * scalar 50 SV * scalar
42 PROTOTYPE: $ 51 PROTOTYPE: $
43 PPCODE: 52 PPCODE:
53 if (SvREADONLY (scalar))
54 croak ("Convert::Scalar::utf8_off called on read only scalar");
55
44 SvGETMAGIC (scalar); 56 SvGETMAGIC (scalar);
45 SvUTF8_off (scalar); 57 SvUTF8_off (scalar);
46 if (GIMME_V != G_VOID) 58 RETCOPY (scalar);
47 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
48 59
49int 60int
50utf8_valid(scalar) 61utf8_valid(scalar)
51 SV * scalar 62 SV * scalar
52 PROTOTYPE: $ 63 PROTOTYPE: $
60void 71void
61utf8_upgrade(scalar) 72utf8_upgrade(scalar)
62 SV * scalar 73 SV * scalar
63 PROTOTYPE: $ 74 PROTOTYPE: $
64 PPCODE: 75 PPCODE:
76 if (SvREADONLY (scalar))
77 croak ("Convert::Scalar::utf8_upgrade called on read only scalar");
78
65 sv_utf8_upgrade(scalar); 79 sv_utf8_upgrade(scalar);
66 if (GIMME_V != G_VOID) 80 RETCOPY (scalar);
67 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
68 81
69bool 82bool
70utf8_downgrade(scalar, fail_ok = 0) 83utf8_downgrade(scalar, fail_ok = 0)
71 SV * scalar 84 SV * scalar
72 bool fail_ok 85 bool fail_ok
73 PROTOTYPE: $;$ 86 PROTOTYPE: $;$
74 CODE: 87 CODE:
88 if (SvREADONLY (scalar))
89 croak ("Convert::Scalar::utf8_downgrade called on read only scalar");
90
75 RETVAL = sv_utf8_downgrade (scalar, fail_ok); 91 RETVAL = sv_utf8_downgrade (scalar, fail_ok);
76 OUTPUT: 92 OUTPUT:
77 RETVAL 93 RETVAL
78 94
79void 95void
80utf8_encode(scalar) 96utf8_encode(scalar)
81 SV * scalar 97 SV * scalar
82 PROTOTYPE: $ 98 PROTOTYPE: $
83 PPCODE: 99 PPCODE:
100 if (SvREADONLY (scalar))
101 croak ("Convert::Scalar::utf8_encode called on read only scalar");
102
84 sv_utf8_encode (scalar); 103 sv_utf8_encode (scalar);
85 if (GIMME_V != G_VOID) 104 RETCOPY (scalar);
86 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
87 105
88UV 106UV
89utf8_length(scalar) 107utf8_length(scalar)
90 SV * scalar 108 SV * scalar
91 PROTOTYPE: $ 109 PROTOTYPE: $
92 CODE: 110 CODE:
93 RETVAL = (UV) sv_len_utf8 (scalar); 111 RETVAL = (UV) utf8_length (SvPV_nolen (scalar), SvEND (scalar));
94 OUTPUT: 112 OUTPUT:
95 RETVAL 113 RETVAL
96 114
97void 115void
98unmagic(scalar, type) 116unmagic(scalar, type)
186 { 204 {
187 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");
188 scalar = SvRV (scalar); 206 scalar = SvRV (scalar);
189 } 207 }
190 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