ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Convert-Scalar/Scalar.xs
Revision: 1.1
Committed: Thu Sep 27 18:32:22 2001 UTC (22 years, 7 months ago) by root
Branch: MAIN
Log Message:
*** empty log message ***

File Contents

# Content
1 #include "EXTERN.h"
2 #include "perl.h"
3 #include "XSUB.h"
4
5 #if PERL_VERSION < 7
6 # define is_utf8_string(s,l) (croak ("utf8_valid requires perl 5.7 or higher"), 0)
7 #endif
8
9 MODULE = Convert::Scalar PACKAGE = Convert::Scalar
10
11 int
12 utf8(scalar,mode=0)
13 SV * scalar
14 SV * mode
15 PROTOTYPE: $;$
16 CODE:
17 SvGETMAGIC (scalar);
18 RETVAL = !!SvUTF8 (scalar);
19 if (items > 1)
20 {
21 if (SvTRUE (mode))
22 SvUTF8_on (scalar);
23 else
24 SvUTF8_off (scalar);
25 }
26 OUTPUT:
27 RETVAL
28
29 void
30 utf8_on(scalar)
31 SV * scalar
32 PROTOTYPE: $
33 PPCODE:
34 SvGETMAGIC (scalar);
35 SvUTF8_on (scalar);
36 if (GIMME_V != G_VOID)
37 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
38
39 void
40 utf8_off(scalar)
41 SV * scalar
42 PROTOTYPE: $
43 PPCODE:
44 SvGETMAGIC (scalar);
45 SvUTF8_off (scalar);
46 if (GIMME_V != G_VOID)
47 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
48
49 int
50 utf8_valid(scalar)
51 SV * scalar
52 PROTOTYPE: $
53 CODE:
54 STRLEN len;
55 char *str = SvPV (scalar, len);
56 RETVAL = !!is_utf8_string (str, len);
57 OUTPUT:
58 RETVAL
59
60 void
61 utf8_upgrade(scalar)
62 SV * scalar
63 PROTOTYPE: $
64 PPCODE:
65 sv_utf8_upgrade(scalar);
66 if (GIMME_V != G_VOID)
67 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
68
69 bool
70 utf8_downgrade(scalar, fail_ok = 0)
71 SV * scalar
72 bool fail_ok
73 PROTOTYPE: $;$
74 CODE:
75 RETVAL = sv_utf8_downgrade (scalar, fail_ok);
76 OUTPUT:
77 RETVAL
78
79 void
80 utf8_encode(scalar)
81 SV * scalar
82 PROTOTYPE: $
83 PPCODE:
84 sv_utf8_encode (scalar);
85 if (GIMME_V != G_VOID)
86 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
87
88 UV
89 utf8_length(scalar)
90 SV * scalar
91 PROTOTYPE: $
92 CODE:
93 RETVAL = (UV) sv_len_utf8 (scalar);
94 OUTPUT:
95 RETVAL
96
97 void
98 unmagic(scalar, type)
99 SV * scalar
100 char type
101 PROTOTYPE: $
102 CODE:
103 sv_unmagic (scalar, type);
104
105 void
106 weaken(scalar)
107 SV * scalar
108 PROTOTYPE: $
109 CODE:
110 sv_rvweaken (scalar);
111
112 void
113 taint(scalar)
114 SV * scalar
115 PROTOTYPE: $
116 CODE:
117 SvTAINTED_on (scalar);
118
119 int
120 tainted(scalar)
121 SV * scalar
122 PROTOTYPE: $
123 CODE:
124 RETVAL = SvTAINTED (scalar);
125 OUTPUT:
126 RETVAL
127
128 void
129 untaint(scalar)
130 SV * scalar
131 PROTOTYPE: $
132 CODE:
133 SvTAINTED_off (scalar);
134
135 void
136 grow(scalar,newlen)
137 SV * scalar
138 U32 newlen
139 PROTOTYPE: $$
140 PPCODE:
141 sv_grow (scalar, newlen);
142 if (GIMME_V != G_VOID)
143 XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
144