sub
new {
my
$self
=
shift
->SUPER::new(
@_
)
or
return
PNI::Error::unable_to_create_item;
my
$arg
= {
@_
};
$self
->add(
edges
=> {} );
return
$self
}
sub
add_edge {
my
$self
=
shift
;
my
$edge
=
shift
or
return
PNI::Error::missing_required_argument;
$edge
->isa(
'PNI::Edge'
)
or
return
PNI::Error::invalid_argument_type;
$self
->get(
'edges'
)->{
$edge
->id } =
$edge
;
}
sub
del_edge {
my
$self
=
shift
;
my
$edge
=
shift
or
return
PNI::Error::missing_required_argument;
delete
$self
->get(
'edges'
)->{
$edge
->id };
}
sub
get_edges {
values
%{
shift
->get(
'edges'
) }; }
sub
is_connected {
shift
->get_edges ? 1 : 0 }
sub
join_to {
my
$self
=
shift
;
my
$input_slot
=
shift
or
return
PNI::Error::missing_required_argument;
return
PNI::Edge->new(
source
=>
$self
,
target
=>
$input_slot
)
}
1