MRP::Interface - defines object interfaces
Allows you to specify the interface that an object is expected to implement without implying an inheritance hierachy.
MRP::Interface->create(Foo => {''=>'My realy usefull interface', # interface description action=>'performs an action', # functions and their descriptions reaction=>'responds to an action', # ... }); MRP::Interface->Foo->implementedBy('Bar'); # register package Bar as implementing interface Foo # Package Bar must have functions 'action' and 'reaction' # or a fatal error is generated. $bar = new Bar; $hoot = new Hoot; MRP::Interface->Foo->implementedBy($bar); # returns true as $bar does implement Foo MRP::Interface->Foo->implementedBy($hoot); # returns false as $hoot doen't implement Foo MRP::Interface->Gee->implementedBy($bar); # fatal error if interface Gee is not defined $int = MRP::Interface->Foo; # gets the interface object for 'Foo' print $int->name(); # prints out 'Foo' %functions = %{$int->functions()}; # %functions now contains Foo's functions and descriptions
Creates a new interface. You can create any number of interfaces with a single call. Treats the parameters as a hash, where each key is an interface name, and each value is a hashref. The hasref key/value pairs specify function names and descriptions for those functions. If the function name is '' then this is used as the interface description.
MRP::Interface->create( interfaceName => { '' => $description_for_interfaceName, func1 => $description_for_func1, func2 => $description_for_func2, ... funcn => $description_for_funcn }, otherInterface => { ..... } );
Returns the hash of function names and descriptions used to create the interface.
Returns the name of the interface.
If the argument is a reference (presumably an object) then return true or false depending on whether the object is of a class that implements the interface.
If the argument is a package name (not a reference) then the package is registered as implementing the interface. If the package does not provide all of the required functions then an error is thrown.
Any other method is treated as if it where the name of an interface to retrieve. Thus, MRP::Interface->Holly will retrieve the interface named Holly. If Holly does not exist then a fatal error is thrown. So, you can have code like:
MRP::Interface->Holly->implementedBy($obj) || die "$obj does not implement interface Holly";
Matthew Pocock mrp@sanger.ac.uk
To install MRP::Text, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MRP::Text
CPAN shell
perl -MCPAN -e shell install MRP::Text
For more information on module installation, please visit the detailed CPAN module installation guide.