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.9 by root, Fri Mar 7 10:33:46 2008 UTC vs.
Revision 1.10 by root, Thu Aug 18 19:07:04 2011 UTC

12 } 12 }
13 13
14MODULE = Convert::Scalar PACKAGE = Convert::Scalar 14MODULE = Convert::Scalar PACKAGE = Convert::Scalar
15 15
16bool 16bool
17utf8(scalar,mode=0) 17utf8 (SV *scalar, SV *mode = NO_INIT)
18 SV * scalar
19 SV * mode
20 PROTOTYPE: $;$ 18 PROTOTYPE: $;$
21 CODE: 19 CODE:
22 SvGETMAGIC (scalar); 20 SvGETMAGIC (scalar);
23 RETVAL = !!SvUTF8 (scalar); 21 RETVAL = !!SvUTF8 (scalar);
24 if (items > 1) 22 if (items > 1)
32 } 30 }
33 OUTPUT: 31 OUTPUT:
34 RETVAL 32 RETVAL
35 33
36void 34void
37utf8_on(scalar) 35utf8_on (SV *scalar)
38 SV * scalar
39 PROTOTYPE: $ 36 PROTOTYPE: $
40 PPCODE: 37 PPCODE:
41 if (SvREADONLY (scalar)) 38 if (SvREADONLY (scalar))
42 croak ("Convert::Scalar::utf8_on called on read only scalar"); 39 croak ("Convert::Scalar::utf8_on called on read only scalar");
43 40
44 SvGETMAGIC (scalar); 41 SvGETMAGIC (scalar);
45 SvUTF8_on (scalar); 42 SvUTF8_on (scalar);
46 RETCOPY (scalar); 43 RETCOPY (scalar);
47 44
48void 45void
49utf8_off(scalar) 46utf8_off (SV *scalar)
50 SV * scalar
51 PROTOTYPE: $ 47 PROTOTYPE: $
52 PPCODE: 48 PPCODE:
53 if (SvREADONLY (scalar)) 49 if (SvREADONLY (scalar))
54 croak ("Convert::Scalar::utf8_off called on read only scalar"); 50 croak ("Convert::Scalar::utf8_off called on read only scalar");
55 51
56 SvGETMAGIC (scalar); 52 SvGETMAGIC (scalar);
57 SvUTF8_off (scalar); 53 SvUTF8_off (scalar);
58 RETCOPY (scalar); 54 RETCOPY (scalar);
59 55
60int 56int
61utf8_valid(scalar) 57utf8_valid (SV *scalar)
62 SV * scalar
63 PROTOTYPE: $ 58 PROTOTYPE: $
64 CODE: 59 CODE:
65 STRLEN len; 60 STRLEN len;
66 char *str = SvPV (scalar, len); 61 char *str = SvPV (scalar, len);
67 RETVAL = !!is_utf8_string (str, len); 62 RETVAL = !!is_utf8_string (str, len);
68 OUTPUT: 63 OUTPUT:
69 RETVAL 64 RETVAL
70 65
71void 66void
72utf8_upgrade(scalar) 67utf8_upgrade (SV *scalar)
73 SV * scalar
74 PROTOTYPE: $ 68 PROTOTYPE: $
75 PPCODE: 69 PPCODE:
76 if (SvREADONLY (scalar)) 70 if (SvREADONLY (scalar))
77 croak ("Convert::Scalar::utf8_upgrade called on read only scalar"); 71 croak ("Convert::Scalar::utf8_upgrade called on read only scalar");
78 72
79 sv_utf8_upgrade(scalar); 73 sv_utf8_upgrade(scalar);
80 RETCOPY (scalar); 74 RETCOPY (scalar);
81 75
82bool 76bool
83utf8_downgrade(scalar, fail_ok = 0) 77utf8_downgrade (SV *scalar, bool fail_ok = 0)
84 SV * scalar
85 bool fail_ok
86 PROTOTYPE: $;$ 78 PROTOTYPE: $;$
87 CODE: 79 CODE:
88 if (SvREADONLY (scalar)) 80 if (SvREADONLY (scalar))
89 croak ("Convert::Scalar::utf8_downgrade called on read only scalar"); 81 croak ("Convert::Scalar::utf8_downgrade called on read only scalar");
90 82
91 RETVAL = !!sv_utf8_downgrade (scalar, fail_ok); 83 RETVAL = !!sv_utf8_downgrade (scalar, fail_ok);
92 OUTPUT: 84 OUTPUT:
93 RETVAL 85 RETVAL
94 86
95void 87void
96utf8_encode(scalar) 88utf8_encode (SV *scalar)
97 SV * scalar
98 PROTOTYPE: $ 89 PROTOTYPE: $
99 PPCODE: 90 PPCODE:
100 if (SvREADONLY (scalar)) 91 if (SvREADONLY (scalar))
101 croak ("Convert::Scalar::utf8_encode called on read only scalar"); 92 croak ("Convert::Scalar::utf8_encode called on read only scalar");
102 93
103 sv_utf8_encode (scalar); 94 sv_utf8_encode (scalar);
104 RETCOPY (scalar); 95 RETCOPY (scalar);
105 96
106UV 97UV
107utf8_length(scalar) 98utf8_length (SV *scalar)
108 SV * scalar
109 PROTOTYPE: $ 99 PROTOTYPE: $
110 CODE: 100 CODE:
111 RETVAL = (UV) utf8_length (SvPV_nolen (scalar), SvEND (scalar)); 101 RETVAL = (UV) utf8_length (SvPV_nolen (scalar), SvEND (scalar));
112 OUTPUT: 102 OUTPUT:
113 RETVAL 103 RETVAL
114 104
105bool
106readonly (SV *scalar, SV *on = NO_INIT)
107 PROTOTYPE: $;$
108 CODE:
109 RETVAL = SvREADONLY (scalar);
110 if (items > 1)
111 {
112 if (SvTRUE (on))
113 SvREADONLY_on (scalar);
114 else
115 SvREADONLY_off (scalar);
116 }
117 OUTPUT:
118 RETVAL
119
115void 120void
121readonly_on (SV *scalar)
122 PROTOTYPE: $
123 CODE:
124 SvREADONLY_on (scalar);
125
126void
127readonly_off (SV *scalar)
128 PROTOTYPE: $
129 CODE:
130 SvREADONLY_off (scalar);
131
132void
116unmagic(scalar, type) 133unmagic (SV *scalar, char type)
117 SV * scalar
118 char type
119 PROTOTYPE: $ 134 PROTOTYPE: $
120 CODE: 135 CODE:
121 sv_unmagic (scalar, type); 136 sv_unmagic (scalar, type);
122 137
123void 138void
124weaken(scalar) 139weaken (SV *scalar)
125 SV * scalar
126 PROTOTYPE: $ 140 PROTOTYPE: $
127 CODE: 141 CODE:
128 sv_rvweaken (scalar); 142 sv_rvweaken (scalar);
129 143
130void 144void
131taint(scalar) 145taint (SV *scalar)
132 SV * scalar
133 PROTOTYPE: $ 146 PROTOTYPE: $
134 CODE: 147 CODE:
135 SvTAINTED_on (scalar); 148 SvTAINTED_on (scalar);
136 149
137bool 150bool
138tainted(scalar) 151tainted (SV *scalar)
139 SV * scalar
140 PROTOTYPE: $ 152 PROTOTYPE: $
141 CODE: 153 CODE:
142 RETVAL = !!SvTAINTED (scalar); 154 RETVAL = !!SvTAINTED (scalar);
143 OUTPUT: 155 OUTPUT:
144 RETVAL 156 RETVAL
145 157
146void 158void
147untaint(scalar) 159untaint (SV *scalar)
148 SV * scalar
149 PROTOTYPE: $ 160 PROTOTYPE: $
150 CODE: 161 CODE:
151 SvTAINTED_off (scalar); 162 SvTAINTED_off (scalar);
152 163
164STRLEN
165len (SV *scalar)
166 PROTOTYPE: $
167 CODE:
168 if (SvTYPE (scalar) < SVt_PV)
169 XSRETURN_UNDEF;
170 RETVAL = SvLEN (scalar);
171 OUTPUT:
172 RETVAL
173
153void 174void
154grow(scalar,newlen) 175grow (SV *scalar, STRLEN newlen)
155 SV * scalar
156 U32 newlen
157 PROTOTYPE: $$ 176 PROTOTYPE: $$
158 PPCODE: 177 PPCODE:
159 sv_grow (scalar, newlen); 178 sv_grow (scalar, newlen);
160 if (GIMME_V != G_VOID) 179 if (GIMME_V != G_VOID)
161 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar))); 180 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
162 181
182void
183extend (SV *scalar, STRLEN addlen)
184 PROTOTYPE: $$
185 PPCODE:
186{
187 if (SvTYPE (scalar) < SVt_PV)
188 sv_upgrade (scalar, SVt_PV);
189
190 if (SvCUR (scalar) + addlen >= SvLEN (scalar))
191 {
192 STRLEN l = SvLEN (scalar);
193 STRLEN o = SvCUR (scalar) + addlen >= 4096 ? sizeof (void *) * 4 : 0;
194
195 if (l < 64)
196 l = 64;
197
198 /* for big sizes, leave a bit of space for malloc management, and assume 4kb or smaller pages */
199 addlen += o;
200
201 while (SvCUR (scalar) + addlen >= l)
202 l <<= 1;
203
204 l -= o;
205
206 sv_grow (scalar, l);
207 }
208
209 if (GIMME_V != G_VOID)
210 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
211}
212
163int 213int
164refcnt(scalar,newrefcnt=0) 214refcnt (SV *scalar, U32 newrefcnt = NO_INIT)
165 SV * scalar
166 int newrefcnt
167 PROTOTYPE: $;$ 215 PROTOTYPE: $;$
168 ALIAS: 216 ALIAS:
169 refcnt_rv = 1 217 refcnt_rv = 1
170 CODE: 218 CODE:
171 if (ix) 219 if (ix)
178 SvREFCNT (scalar) = newrefcnt; 226 SvREFCNT (scalar) = newrefcnt;
179 OUTPUT: 227 OUTPUT:
180 RETVAL 228 RETVAL
181 229
182void 230void
183refcnt_inc(scalar) 231refcnt_inc (SV *scalar)
184 SV * scalar
185 ALIAS: 232 ALIAS:
186 refcnt_inc_rv = 1 233 refcnt_inc_rv = 1
187 PROTOTYPE: $ 234 PROTOTYPE: $
188 CODE: 235 CODE:
189 if (ix) 236 if (ix)
192 scalar = SvRV (scalar); 239 scalar = SvRV (scalar);
193 } 240 }
194 SvREFCNT_inc (scalar); 241 SvREFCNT_inc (scalar);
195 242
196void 243void
197refcnt_dec(scalar) 244refcnt_dec (SV *scalar)
198 SV * scalar
199 ALIAS: 245 ALIAS:
200 refcnt_dec_rv = 1 246 refcnt_dec_rv = 1
201 PROTOTYPE: $ 247 PROTOTYPE: $
202 CODE: 248 CODE:
203 if (ix) 249 if (ix)
206 scalar = SvRV (scalar); 252 scalar = SvRV (scalar);
207 } 253 }
208 SvREFCNT_dec (scalar); 254 SvREFCNT_dec (scalar);
209 255
210bool 256bool
211ok(scalar) 257ok (SV *scalar)
212 SV * scalar
213 PROTOTYPE: $ 258 PROTOTYPE: $
214 CODE: 259 CODE:
215 RETVAL = !!SvOK (scalar); 260 RETVAL = !!SvOK (scalar);
216 OUTPUT: 261 OUTPUT:
217 RETVAL 262 RETVAL
218 263
219bool 264bool
220uok(scalar) 265uok (SV *scalar)
221 SV * scalar
222 PROTOTYPE: $ 266 PROTOTYPE: $
223 CODE: 267 CODE:
224 RETVAL = !!SvUOK (scalar); 268 RETVAL = !!SvUOK (scalar);
225 OUTPUT: 269 OUTPUT:
226 RETVAL 270 RETVAL
227 271
228bool 272bool
229rok(scalar) 273rok (SV *scalar)
230 SV * scalar
231 PROTOTYPE: $ 274 PROTOTYPE: $
232 CODE: 275 CODE:
233 RETVAL = !!SvROK (scalar); 276 RETVAL = !!SvROK (scalar);
234 OUTPUT: 277 OUTPUT:
235 RETVAL 278 RETVAL
236 279
237bool 280bool
238pok(scalar) 281pok (SV *scalar)
239 SV * scalar
240 PROTOTYPE: $ 282 PROTOTYPE: $
241 CODE: 283 CODE:
242 RETVAL = !!SvPOK (scalar); 284 RETVAL = !!SvPOK (scalar);
243 OUTPUT: 285 OUTPUT:
244 RETVAL 286 RETVAL
245 287
246bool 288bool
247nok(scalar) 289nok (SV *scalar)
248 SV * scalar
249 PROTOTYPE: $ 290 PROTOTYPE: $
250 CODE: 291 CODE:
251 RETVAL = !!SvNOK (scalar); 292 RETVAL = !!SvNOK (scalar);
252 OUTPUT: 293 OUTPUT:
253 RETVAL 294 RETVAL
254 295
255bool 296bool
256niok(scalar) 297niok (SV *scalar)
257 SV * scalar
258 PROTOTYPE: $ 298 PROTOTYPE: $
259 CODE: 299 CODE:
260 RETVAL = !!SvNIOK (scalar); 300 RETVAL = !!SvNIOK (scalar);
261 OUTPUT: 301 OUTPUT:
262 RETVAL 302 RETVAL

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines