/
phpboolean.pmc
123 lines (77 loc) · 1.57 KB
/
phpboolean.pmc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*
Copyright (C) 2008, The Perl Foundation.
=head1 NAME
pmc/phpboolean.pmc - PHP Boolean
=head1 DESCRIPTION
=head2 Methods
=over 4
=cut
*/
#include "php_private.h"
pmclass PhpBoolean
extends Boolean
provides scalar
provides boolean
provides integer
dynpmc
group pipp_group
hll PHP
maps Boolean {
/*
=item C<STRING* name()>
Return the string 'boolean'.
=cut
*/
STRING* name() {
return Parrot_str_new_constant(INTERP, "boolean");
}
/*
=item C<STRING* get_string()>
Return the string '1' or ''.
=cut
*/
STRING* get_string() {
if (SELF.get_integer())
return Parrot_str_new_constant(INTERP, "1");
else
return Parrot_str_new_constant(INTERP, "");
}
/*
=back
=head2 non-Vtable Methods
=over 4
=item C<STRING* serialize()>
Return a representation of this boolean in the same format as PHP's serialize function.
=cut
*/
METHOD STRING* serialize() {
STRING *serialized;
serialized = Parrot_str_format_data(INTERP, "b:%d;", VTABLE_get_integer(INTERP, SELF));
RETURN(STRING *serialized);
}
/*
=back
=head2 Specific Methods
=over 4
=item C<PMC* to_number()>
=cut
*/
METHOD PMC* to_number() {
PMC *retval = pmc_new(INTERP, dynpmc_PhpInteger);
INTVAL val = SELF.get_integer();
VTABLE_set_integer_native(INTERP, retval, val);
RETURN(PMC *retval);
}
}
/*
=back
=head1 AUTHORS
Francois Perrad.
=cut
*/
/*
* Local variables:
* c-file-style: "parrot"
* End:
* vim: expandtab shiftwidth=4:
*/