# -*- perl -*- # DO NOT EDIT - This file is generated by UMMF; http://ummf.sourceforge.net # From template: $Id: Perl.txt,v 1.77 2006/05/14 01:40:03 kstephens Exp $ package UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal; #use 5.6.1; use strict; use warnings; ################################################################# # Version # our $VERSION = do { my @r = (q{1.5} =~ /\d+/g); sprintf "%d." . "%03d" x $#r, @r }; ################################################################# # Documentation # =head1 NAME UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal -- =head1 VERSION 1.5 =head1 SYNOPSIS =head1 DESCRIPTION =head1 USAGE =head1 EXPORT =head1 METATYPE L =head1 SUPERCLASSES L =head1 ATTRIBUTES I =head1 ASSOCIATIONS =head2 C : I C<0..*> E---E C : UMMF::UML_1_5::Foundation::Core::BehavioralFeature C<0..*> =over 4 =item metatype = L =item type = L =item multiplicity = C<0..*> =item changeability = C =item targetScope = C =item ordering = C<> =item isNavigable = C<1> =item aggregation = C =item visibility = C =item container_type = C =back =head2 C : I C<1> E---E C : UMMF::UML_1_5::Behavioral_Elements::State_Machines::SignalEvent C<0..*> =over 4 =item metatype = L =item type = L =item multiplicity = C<0..*> =item changeability = C =item targetScope = C =item ordering = C<> =item isNavigable = C<1> =item aggregation = C =item visibility = C =item container_type = C =back =head2 C : I C<1> E---E C : UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Reception C<0..*> =over 4 =item metatype = L =item type = L =item multiplicity = C<0..*> =item changeability = C =item targetScope = C =item ordering = C<> =item isNavigable = C<1> =item aggregation = C =item visibility = C =item container_type = C =back =head2 C : I C<0..1> E---- C<> : UMMF::UML_1_5::OCL::Types::OclMessageType C<1> =over 4 =item metatype = L =item type = L =item multiplicity = C<1> =item changeability = C =item targetScope = C =item ordering = C<> =item isNavigable = C<0> =item aggregation = C =item visibility = C =item container_type = C =back =head2 C : I C<1> E---- C<> : UMMF::UML_1_5::Behavioral_Elements::Actions::Messaging_Actions::BroadcastSignalAction C<0..*> =over 4 =item metatype = L =item type = L =item multiplicity = C<0..*> =item changeability = C =item targetScope = C =item ordering = C<> =item isNavigable = C<0> =item aggregation = C =item visibility = C =item container_type = C =back =head2 C : I C<1> E---- C<> : UMMF::UML_1_5::Behavioral_Elements::Actions::Messaging_Actions::SendSignalAction C<0..*> =over 4 =item metatype = L =item type = L =item multiplicity = C<0..*> =item changeability = C =item targetScope = C =item ordering = C<> =item isNavigable = C<0> =item aggregation = C =item visibility = C =item container_type = C =back =head1 METHODS =cut ################################################################# # Dependencies # use Carp qw(croak confess); use Set::Object 1.05; use Class::Multimethods 1.70; use Data::Dumper; use Scalar::Util qw(weaken); use UMMF::UML_1_5::__ObjectBase qw(:__ummf_array); ################################################################# # Generalizations # use base qw( UMMF::UML_1_5::Foundation::Core::Classifier ); ################################################################# # Exports # our @EXPORT_OK = qw( ); our %EXPORT_TAGS = ( 'all' => \@EXPORT_OK ); ################################################################# # Validation # =head2 C<__validate_type> UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal->__validate_type($value); Returns true if C<$value> is a valid representation of L. =cut sub __validate_type($$) { my ($self, $x) = @_; no warnings; UNIVERSAL::isa($x, 'UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal') ; } =head2 C<__typecheck> UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal->__typecheck($value, $msg); Calls C with C<$msg> if C<__validate_type($value)>> is false. =cut sub __typecheck { my ($self, $x, $msg) = @_; confess("typecheck: $msg: type '" . 'UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal' . ": value '$x'") unless __validate_type($self, $x); } =head2 C Returns true if receiver is a L. Other receivers will return false. =cut sub isaSignal { 1 } =head2 C Returns true if receiver is a L. Other receivers will return false. This is the fully qualified version of the C method. =cut sub isaBehavioral_Elements__Common_Behavior__Signal { 1 } ################################################################# # Introspection # =head2 C<__model_name> my $name = $obj_or_package->__model_name; Returns the UML Model name (C<'Behavioral_Elements::Common_Behavior::Signal'>) for an object or package of this Classifier. =cut sub __model_name { 'Behavioral_Elements::Common_Behavior::Signal' } =head2 C<__isAbstract> $package->__isAbstract; Returns C<0>. =cut sub __isAbstract { 0; } my $__tangram_schema; =head2 C<__tangram_schema> my $tangram_schema $obj_or_package->__tangram_schema Returns a HASH ref that describes this Classifier for Tangram. See L =cut sub __tangram_schema { my ($self) = @_; $__tangram_schema ||= { 'classes' => [ 'UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal' => { 'table' => 'Behavioral_Elements__Common_Behavior__Signal', 'abstract' => 0, 'slots' => { # Attributes # Associations 'context' => { 'type_impl' => 'set', 'class' => 'UMMF::UML_1_5::Foundation::Core::BehavioralFeature', 'table' => 'RaisedSignal_Context', 'item' => 'context', 'coll' => 'raisedSignal', } , 'occurance' => { 'type_impl' => 'iset', 'class' => 'UMMF::UML_1_5::Behavioral_Elements::State_Machines::SignalEvent', 'table' => 'Behavioral_Elements__Common_Behavior__Signal__occurance', 'coll' => 'signal', } , 'reception' => { 'type_impl' => 'iset', 'class' => 'UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Reception', 'table' => 'Behavioral_Elements__Common_Behavior__Signal__reception', 'coll' => 'signal', } , }, 'bases' => [ 'UMMF::UML_1_5::Foundation::Core::Classifier', ], 'sql' => { }, }, ], 'sql' => { # Note Tangram::Ref::get_exporter() has # "UPDATE $table SET $self->{col} = $refid WHERE id = $id", # The id_col is hard-coded, # Thus id_col will not work. #'id_col' => '__sid', #'class_col' => '__stype', }, # 'set_id' => sub { } # 'get_id' => sub { } }; } ################################################################# # Class Attributes # ################################################################# # Class Associations # ################################################################# # Initialization # =head2 C<___initialize> Initialize all Attributes and AssociationEnds in a instance of this Classifier. Does B initalize slots in its Generalizations. See also: C<__initialize>. =cut sub ___initialize { my ($self) = @_; # Attributes # Associations # AssociationEnd # raisedSignal 0..* # <--> # context 0..* UMMF::UML_1_5::Foundation::Core::BehavioralFeature. if ( defined $self->{'context'} ) { my $x = $self->{'context'}; $self->{'context'} = Set::Object->new(); $self->set_context(@$x); } # AssociationEnd # signal 1 # <--> # occurance 0..* UMMF::UML_1_5::Behavioral_Elements::State_Machines::SignalEvent. if ( defined $self->{'occurance'} ) { my $x = $self->{'occurance'}; $self->{'occurance'} = Set::Object->new(); $self->set_occurance(@$x); } # AssociationEnd # signal 1 # <--> # reception 0..* UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Reception. if ( defined $self->{'reception'} ) { my $x = $self->{'reception'}; $self->{'reception'} = Set::Object->new(); $self->set_reception(@$x); } $self; } my $__initialize_use; =head2 C<__initialize> Initialize all slots in this Classifier and all its Generalizations. See also: C<___initialize>. =cut sub __initialize { my ($self) = @_; # $DB::single = 1; unless ( ! $__initialize_use ) { $__initialize_use = 1; $self->__use('UMMF::UML_1_5::Foundation::Core::Namespace'); $self->__use('UMMF::UML_1_5::Foundation::Core::Element'); $self->__use('UMMF::UML_1_5::Foundation::Core::ModelElement'); $self->__use('UMMF::UML_1_5::Foundation::Core::GeneralizableElement'); $self->__use('UMMF::UML_1_5::Foundation::Core::Classifier'); } $self->UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal::___initialize; $self->UMMF::UML_1_5::Foundation::Core::Namespace::___initialize; $self->UMMF::UML_1_5::Foundation::Core::Element::___initialize; $self->UMMF::UML_1_5::Foundation::Core::ModelElement::___initialize; $self->UMMF::UML_1_5::Foundation::Core::GeneralizableElement::___initialize; $self->UMMF::UML_1_5::Foundation::Core::Classifier::___initialize; $self; } =head2 C<__create> Calls all <> Methods for this Classifier and all Generalizations. See also: C<___create>. =cut sub __create { my ($self, @args) = @_; # $DB::single = 1; $self->UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal::___create(@args); $self->UMMF::UML_1_5::Foundation::Core::Namespace::___create(); $self->UMMF::UML_1_5::Foundation::Core::Element::___create(); $self->UMMF::UML_1_5::Foundation::Core::ModelElement::___create(); $self->UMMF::UML_1_5::Foundation::Core::GeneralizableElement::___create(); $self->UMMF::UML_1_5::Foundation::Core::Classifier::___create(); $self; } ################################################################# # Attributes # ################################################################# # Association # =for html
=cut ################################################################# # AssociationEnd raisedSignal <---> context # type = UMMF::UML_1_5::Foundation::Core::BehavioralFeature # multiplicity = 0..* # ordering = =head2 C my @val = $obj->context; my $ary_val = $obj->context; Returns the AssociationEnd C values of type L. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association. =cut sub context ($) { my ($self) = @_; my $x = $self->{'context'}; # confess("Container for context $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/; wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ]; } =head2 C $obj->set_context(@val); Sets the AssociationEnd C value. Elements of C<@val> must of type L. Returns C<$obj>. =cut sub set_context ($@) { my ($self, @val) = @_; $self->clear_context; $self->add_context(@val); } =head2 C $obj->add_context(@val); Adds AssociationEnd C values. Elements of C<@val> must of type L. Returns C<$obj>. =cut sub add_context ($@) { my ($self, @val) = @_; my $x = $self->{'context'} ||= Set::Object->new(); my $old; # Place holder for other MACRO. for my $val ( @val ) { # Recursion lock next if $x->includes($val); $self->__use('UMMF::UML_1_5::Foundation::Core::BehavioralFeature')->__typecheck($val, "UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal.context"); # Recursion lock $x->insert($val); # weaken? # Remove and add associations with other ends. $old->remove_raisedSignal($self) if $old; $val->add_raisedSignal($self) if $val; } $self; } =head2 C $obj->remove_context(@val); Removes the AssociationEnd C values C<@val>. Elements of C<@val> must of type L. Returns C<$obj>. =cut sub remove_context ($@) { my ($self, @val) = @_; my $x = $self->{'context'} ||= Set::Object->new(); for my $old ( @val ) { # Recursion lock next unless $x->includes($old); my $val = $old; $self->__use('UMMF::UML_1_5::Foundation::Core::BehavioralFeature')->__typecheck($val, "UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal.context"); # Recursion lock $x->remove($old); $val = undef; # Remove associations with other ends. $old->remove_raisedSignal($self) if $old; $val->add_raisedSignal($self) if $val; ; } $self; } =head2 C $obj->clear_context; Clears the AssociationEnd C links to L. Returns C<$obj>. =cut sub clear_context ($) { my ($self) = @_; my $x = $self->{'context'} ||= Set::Object->new(); my $val; # Place holder for other MACRO. $self->{'context'} = Set::Object->new(); # Recursion lock for my $old ( $x->members() ) { # Recursion lock # Remove associations with other ends. $old->remove_raisedSignal($self) if $old; $val->add_raisedSignal($self) if $val; ; } $self; } =head2 C $obj->count_context; Returns the number of elements associated with C. =cut sub count_context ($) { my ($self) = @_; my $x = $self->{'context'}; defined $x ? $x->size : 0; } =for html
=cut ################################################################# # AssociationEnd signal <---> occurance # type = UMMF::UML_1_5::Behavioral_Elements::State_Machines::SignalEvent # multiplicity = 0..* # ordering = =head2 C my @val = $obj->occurance; my $ary_val = $obj->occurance; Returns the AssociationEnd C values of type L. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association. =cut sub occurance ($) { my ($self) = @_; my $x = $self->{'occurance'}; # confess("Container for occurance $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/; wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ]; } =head2 C $obj->set_occurance(@val); Sets the AssociationEnd C value. Elements of C<@val> must of type L. Returns C<$obj>. =cut sub set_occurance ($@) { my ($self, @val) = @_; $self->clear_occurance; $self->add_occurance(@val); } =head2 C $obj->add_occurance(@val); Adds AssociationEnd C values. Elements of C<@val> must of type L. Returns C<$obj>. =cut sub add_occurance ($@) { my ($self, @val) = @_; my $x = $self->{'occurance'} ||= Set::Object->new(); my $old; # Place holder for other MACRO. for my $val ( @val ) { # Recursion lock next if $x->includes($val); $self->__use('UMMF::UML_1_5::Behavioral_Elements::State_Machines::SignalEvent')->__typecheck($val, "UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal.occurance"); # Recursion lock $x->insert($val); # weaken? # Remove and add associations with other ends. $old->remove_signal($self) if $old; $val->add_signal($self) if $val; } $self; } =head2 C $obj->remove_occurance(@val); Removes the AssociationEnd C values C<@val>. Elements of C<@val> must of type L. Returns C<$obj>. =cut sub remove_occurance ($@) { my ($self, @val) = @_; my $x = $self->{'occurance'} ||= Set::Object->new(); for my $old ( @val ) { # Recursion lock next unless $x->includes($old); my $val = $old; $self->__use('UMMF::UML_1_5::Behavioral_Elements::State_Machines::SignalEvent')->__typecheck($val, "UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal.occurance"); # Recursion lock $x->remove($old); $val = undef; # Remove associations with other ends. $old->remove_signal($self) if $old; $val->add_signal($self) if $val; ; } $self; } =head2 C $obj->clear_occurance; Clears the AssociationEnd C links to L. Returns C<$obj>. =cut sub clear_occurance ($) { my ($self) = @_; my $x = $self->{'occurance'} ||= Set::Object->new(); my $val; # Place holder for other MACRO. $self->{'occurance'} = Set::Object->new(); # Recursion lock for my $old ( $x->members() ) { # Recursion lock # Remove associations with other ends. $old->remove_signal($self) if $old; $val->add_signal($self) if $val; ; } $self; } =head2 C $obj->count_occurance; Returns the number of elements associated with C. =cut sub count_occurance ($) { my ($self) = @_; my $x = $self->{'occurance'}; defined $x ? $x->size : 0; } =for html
=cut ################################################################# # AssociationEnd signal <---> reception # type = UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Reception # multiplicity = 0..* # ordering = =head2 C my @val = $obj->reception; my $ary_val = $obj->reception; Returns the AssociationEnd C values of type L. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association. =cut sub reception ($) { my ($self) = @_; my $x = $self->{'reception'}; # confess("Container for reception $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/; wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ]; } =head2 C $obj->set_reception(@val); Sets the AssociationEnd C value. Elements of C<@val> must of type L. Returns C<$obj>. =cut sub set_reception ($@) { my ($self, @val) = @_; $self->clear_reception; $self->add_reception(@val); } =head2 C $obj->add_reception(@val); Adds AssociationEnd C values. Elements of C<@val> must of type L. Returns C<$obj>. =cut sub add_reception ($@) { my ($self, @val) = @_; my $x = $self->{'reception'} ||= Set::Object->new(); my $old; # Place holder for other MACRO. for my $val ( @val ) { # Recursion lock next if $x->includes($val); $self->__use('UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Reception')->__typecheck($val, "UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal.reception"); # Recursion lock $x->insert($val); # weaken? # Remove and add associations with other ends. $old->remove_signal($self) if $old; $val->add_signal($self) if $val; } $self; } =head2 C $obj->remove_reception(@val); Removes the AssociationEnd C values C<@val>. Elements of C<@val> must of type L. Returns C<$obj>. =cut sub remove_reception ($@) { my ($self, @val) = @_; my $x = $self->{'reception'} ||= Set::Object->new(); for my $old ( @val ) { # Recursion lock next unless $x->includes($old); my $val = $old; $self->__use('UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Reception')->__typecheck($val, "UMMF::UML_1_5::Behavioral_Elements::Common_Behavior::Signal.reception"); # Recursion lock $x->remove($old); $val = undef; # Remove associations with other ends. $old->remove_signal($self) if $old; $val->add_signal($self) if $val; ; } $self; } =head2 C $obj->clear_reception; Clears the AssociationEnd C links to L. Returns C<$obj>. =cut sub clear_reception ($) { my ($self) = @_; my $x = $self->{'reception'} ||= Set::Object->new(); my $val; # Place holder for other MACRO. $self->{'reception'} = Set::Object->new(); # Recursion lock for my $old ( $x->members() ) { # Recursion lock # Remove associations with other ends. $old->remove_signal($self) if $old; $val->add_signal($self) if $val; ; } $self; } =head2 C $obj->count_reception; Returns the number of elements associated with C. =cut sub count_reception ($) { my ($self) = @_; my $x = $self->{'reception'}; defined $x ? $x->size : 0; } # End of Class Signal =pod =for html
I =cut ############################################################################ 1; # is true! ############################################################################ ### Keep these comments at end of file: kstephens@users.sourceforge.net 2003/04/06 ### ### Local Variables: ### ### mode:perl ### ### perl-indent-level:2 ### ### perl-continued-statement-offset:0 ### ### perl-brace-offset:0 ### ### perl-label-offset:0 ### ### End: ###