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.3 by root, Fri Jul 5 11:44:55 2002 UTC vs.
Revision 1.6 by root, Fri Nov 26 21:05:13 2004 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines