Skip to content

Commit 310efd3

Browse files
authored
Merge pull request #1648 from perl6/enum_how
Add Metamodel::EnumHOW page
2 parents 494b842 + 5d08cfc commit 310efd3

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

doc/Type/Metamodel/EnumHOW.pod6

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
=begin pod
2+
3+
=TITLE class Metamodel::EnumHOW
4+
5+
=SUBTITLE Metaobject representing a Perl 6 enum.
6+
7+
class Metamodel::EnumHOW
8+
does Metamodel::Naming
9+
does Metamodel::Documenting
10+
does Metamodel::Stashing
11+
does Metamodel::AttributeContainer
12+
does Metamodel::MethodContainer
13+
does Metamodel::MultiMethodContainer
14+
does Metamodel::RoleContainer
15+
does Metamodel::BaseType
16+
does Metamodel::MROBasedMethodDispatch
17+
does Metamodel::MROBasedTypeChecking
18+
does Metamodel::BUILDPLAN
19+
does Metamodel::BoolificationProtocol
20+
does Metamodel::REPRComposeProtocol
21+
does Metamodel::InvocationProtocol
22+
does Metamodel::Mixins
23+
{ }
24+
25+
C<Metamodel::EnumHOW> is the meta class behind the C<enum> keyword.
26+
27+
enum numbers <1 2>;
28+
say numbers.HOW ~~ Metamodel::EnumHOW # OUTPUT: «True␤»
29+
30+
=head1 Methods
31+
32+
=head2 method add_enum_value
33+
34+
method add_enum_value($Metamodel::ClassHOW:D: obj, $value)
35+
36+
Add a value to this enum.
37+
38+
=head2 method enum_values
39+
40+
method enum_values(Metamodel::ClassHOW:D: $obj)
41+
42+
Returns the values for the enum.
43+
44+
enum numbers <10 20>;
45+
say numbers.^enum_values; # OUTPUT: {10 => 0, 20 => 1}
46+
47+
=head2 method elems
48+
49+
method elems(Metamodel::ClassHOW:D: $obj)
50+
51+
Returns the number of values.
52+
53+
enum numbers <10 20>;
54+
say numbers.^elems; # OUTPUT: 2
55+
56+
=head2 method enum_from_value
57+
58+
method enum_from_value(Metamodel::ClassHOW:D: $obj, $value)
59+
60+
Given an value, return the corresponding enum.
61+
62+
enum numbers <10 20>;
63+
say numbers.^enum_from_value(0) # OUTPUT: 10
64+
65+
=head2 method enum_value_list
66+
67+
method enum_value_list(Metamodel::ClassHOW:D: $obj)
68+
69+
Returns a list of the enum values.
70+
71+
enum numbers <10 20>;
72+
say numbers.^enum_value_list; # OUTPUT: (10 20)
73+
74+
=end pod

0 commit comments

Comments
 (0)