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.1 by root, Thu Sep 27 18:32:22 2001 UTC vs.
Revision 1.7 by root, Fri Nov 26 21:14:09 2004 UTC

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 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 }
17
9MODULE = Convert::Scalar PACKAGE = Convert::Scalar 18MODULE = Convert::Scalar PACKAGE = Convert::Scalar
10 19
11int 20bool
12utf8(scalar,mode=0) 21utf8(scalar,mode=0)
13 SV * scalar 22 SV * scalar
14 SV * mode 23 SV * mode
15 PROTOTYPE: $;$ 24 PROTOTYPE: $;$
16 CODE: 25 CODE:
17 SvGETMAGIC (scalar); 26 SvGETMAGIC (scalar);
18 RETVAL = !!SvUTF8 (scalar); 27 RETVAL = !!SvUTF8 (scalar);
19 if (items > 1) 28 if (items > 1)
20 { 29 {
30 if (SvREADONLY (scalar))
31 croak ("Convert::Scalar::utf8 called on read only scalar");
21 if (SvTRUE (mode)) 32 if (SvTRUE (mode))
22 SvUTF8_on (scalar); 33 SvUTF8_on (scalar);
23 else 34 else
24 SvUTF8_off (scalar); 35 SvUTF8_off (scalar);
25 } 36 }
29void 40void
30utf8_on(scalar) 41utf8_on(scalar)
31 SV * scalar 42 SV * scalar
32 PROTOTYPE: $ 43 PROTOTYPE: $
33 PPCODE: 44 PPCODE:
45 if (SvREADONLY (scalar))
46 croak ("Convert::Scalar::utf8_on called on read only scalar");
47
34 SvGETMAGIC (scalar); 48 SvGETMAGIC (scalar);
35 SvUTF8_on (scalar); 49 SvUTF8_on (scalar);
36 if (GIMME_V != G_VOID) 50 RETCOPY (scalar);
37 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
38 51
39void 52void
40utf8_off(scalar) 53utf8_off(scalar)
41 SV * scalar 54 SV * scalar
42 PROTOTYPE: $ 55 PROTOTYPE: $
43 PPCODE: 56 PPCODE:
57 if (SvREADONLY (scalar))
58 croak ("Convert::Scalar::utf8_off called on read only scalar");
59
44 SvGETMAGIC (scalar); 60 SvGETMAGIC (scalar);
45 SvUTF8_off (scalar); 61 SvUTF8_off (scalar);
46 if (GIMME_V != G_VOID) 62 RETCOPY (scalar);
47 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
48 63
49int 64int
50utf8_valid(scalar) 65utf8_valid(scalar)
51 SV * scalar 66 SV * scalar
52 PROTOTYPE: $ 67 PROTOTYPE: $
60void 75void
61utf8_upgrade(scalar) 76utf8_upgrade(scalar)
62 SV * scalar 77 SV * scalar
63 PROTOTYPE: $ 78 PROTOTYPE: $
64 PPCODE: 79 PPCODE:
80 if (SvREADONLY (scalar))
81 croak ("Convert::Scalar::utf8_upgrade called on read only scalar");
82
65 sv_utf8_upgrade(scalar); 83 sv_utf8_upgrade(scalar);
66 if (GIMME_V != G_VOID) 84 RETCOPY (scalar);
67 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
68 85
69bool 86bool
70utf8_downgrade(scalar, fail_ok = 0) 87utf8_downgrade(scalar, fail_ok = 0)
71 SV * scalar 88 SV * scalar
72 bool fail_ok 89 bool fail_ok
73 PROTOTYPE: $;$ 90 PROTOTYPE: $;$
74 CODE: 91 CODE:
92 if (SvREADONLY (scalar))
93 croak ("Convert::Scalar::utf8_downgrade called on read only scalar");
94
75 RETVAL = sv_utf8_downgrade (scalar, fail_ok); 95 RETVAL = sv_utf8_downgrade (scalar, fail_ok);
76 OUTPUT: 96 OUTPUT:
77 RETVAL 97 RETVAL
78 98
79void 99void
80utf8_encode(scalar) 100utf8_encode(scalar)
81 SV * scalar 101 SV * scalar
82 PROTOTYPE: $ 102 PROTOTYPE: $
83 PPCODE: 103 PPCODE:
104 if (SvREADONLY (scalar))
105 croak ("Convert::Scalar::utf8_encode called on read only scalar");
106
84 sv_utf8_encode (scalar); 107 sv_utf8_encode (scalar);
85 if (GIMME_V != G_VOID) 108 RETCOPY (scalar);
86 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
87 109
88UV 110UV
89utf8_length(scalar) 111utf8_length(scalar)
90 SV * scalar 112 SV * scalar
91 PROTOTYPE: $ 113 PROTOTYPE: $
92 CODE: 114 CODE:
93 RETVAL = (UV) sv_len_utf8 (scalar); 115 RETVAL = (UV) utf8_length (SvPV_nolen (scalar), SvEND (scalar));
94 OUTPUT: 116 OUTPUT:
95 RETVAL 117 RETVAL
96 118
97void 119void
98unmagic(scalar, type) 120unmagic(scalar, type)
140 PPCODE: 162 PPCODE:
141 sv_grow (scalar, newlen); 163 sv_grow (scalar, newlen);
142 if (GIMME_V != G_VOID) 164 if (GIMME_V != G_VOID)
143 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar))); 165 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
144 166
167int
168refcnt(scalar,newrefcnt=0)
169 SV * scalar
170 int newrefcnt
171 PROTOTYPE: $;$
172 ALIAS:
173 refcnt_rv = 1
174 CODE:
175 if (ix)
176 {
177 if (!SvROK (scalar)) croak ("refcnt_rv requires a reference as it's first argument");
178 scalar = SvRV (scalar);
179 }
180 RETVAL = SvREFCNT (scalar);
181 if (items > 1)
182 SvREFCNT (scalar) = newrefcnt;
183 OUTPUT:
184 RETVAL
185
186void
187refcnt_inc(scalar)
188 SV * scalar
189 ALIAS:
190 refcnt_inc_rv = 1
191 PROTOTYPE: $
192 CODE:
193 if (ix)
194 {
195 if (!SvROK (scalar)) croak ("refcnt_inc_rv requires a reference as it's first argument");
196 scalar = SvRV (scalar);
197 }
198 SvREFCNT_inc (scalar);
199
200void
201refcnt_dec(scalar)
202 SV * scalar
203 ALIAS:
204 refcnt_dec_rv = 1
205 PROTOTYPE: $
206 CODE:
207 if (ix)
208 {
209 if (!SvROK (scalar)) croak ("refcnt_dec_rv requires a reference as it's first argument");
210 scalar = SvRV (scalar);
211 }
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