Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Add Metamodel::EnumHOW page
Resolves #1642
- Loading branch information
Brian Duggan
committed
Nov 3, 2017
1 parent
76badf6
commit 5d08cfc
Showing
1 changed file
with
74 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,74 @@ | ||
| =begin pod | ||
| =TITLE class Metamodel::EnumHOW | ||
| =SUBTITLE Metaobject representing a Perl 6 enum. | ||
| class Metamodel::EnumHOW | ||
| does Metamodel::Naming | ||
| does Metamodel::Documenting | ||
| does Metamodel::Stashing | ||
| does Metamodel::AttributeContainer | ||
| does Metamodel::MethodContainer | ||
| does Metamodel::MultiMethodContainer | ||
| does Metamodel::RoleContainer | ||
| does Metamodel::BaseType | ||
| does Metamodel::MROBasedMethodDispatch | ||
| does Metamodel::MROBasedTypeChecking | ||
| does Metamodel::BUILDPLAN | ||
| does Metamodel::BoolificationProtocol | ||
| does Metamodel::REPRComposeProtocol | ||
| does Metamodel::InvocationProtocol | ||
| does Metamodel::Mixins | ||
| { } | ||
| C<Metamodel::EnumHOW> is the meta class behind the C<enum> keyword. | ||
| enum numbers <1 2>; | ||
| say numbers.HOW ~~ Metamodel::EnumHOW # OUTPUT: «True» | ||
| =head1 Methods | ||
| =head2 method add_enum_value | ||
| method add_enum_value($Metamodel::ClassHOW:D: obj, $value) | ||
| Add a value to this enum. | ||
| =head2 method enum_values | ||
| method enum_values(Metamodel::ClassHOW:D: $obj) | ||
| Returns the values for the enum. | ||
| enum numbers <10 20>; | ||
| say numbers.^enum_values; # OUTPUT: {10 => 0, 20 => 1} | ||
| =head2 method elems | ||
| method elems(Metamodel::ClassHOW:D: $obj) | ||
| Returns the number of values. | ||
| enum numbers <10 20>; | ||
| say numbers.^elems; # OUTPUT: 2 | ||
| =head2 method enum_from_value | ||
| method enum_from_value(Metamodel::ClassHOW:D: $obj, $value) | ||
| Given an value, return the corresponding enum. | ||
| enum numbers <10 20>; | ||
| say numbers.^enum_from_value(0) # OUTPUT: 10 | ||
| =head2 method enum_value_list | ||
| method enum_value_list(Metamodel::ClassHOW:D: $obj) | ||
| Returns a list of the enum values. | ||
| enum numbers <10 20>; | ||
| say numbers.^enum_value_list; # OUTPUT: (10 20) | ||
| =end pod |