has 'id' => (
is =>'ro',
isa => 'Int',
required => 1,
builder => '_labelling',
init_arg => undef,
);
sub _labelling { $N++ }
has 'verlet' => (
is =>'rw',
isa => 'ArrayRef[Molecule::Atom]',
required => 1,
weak_ref => 1,
default => sub { [] },
);
sub add_verlet{
my $self = shift;
print $self->{id},"\n";
my $array = $self->{verlet};
foreach my $obj (@_){
print "adding :", $obj->{id},"\n";
push(@{$array},$obj);
weaken(@{$array}[-1]);
}
print "Array dim = $#{$array}\n";
}
sub print_verlet{
my $self = shift;
my $array = $self->{verlet};
print "Verlet from Atom ", $self->{id}, "\n";
foreach my $obj (@{$array}){
print "Verlet list :", $obj->{id},"---->\n";
}
}
####
$atom1a = Molecule::Atom->new(O);
$atom1b = Molecule::Atom->new(X);
$atom1c = Molecule::Atom->new(Y);
$atom2a = Molecule::Atom->new(Z);
$atom1a->add_verlet($atom1c,$atom1b);
$atom1a->add_verlet($atom2a);
$atom1a->print_verlet();
####
8
adding :10
adding :9
Array dim = 1
8
adding :11
Array dim = 0
Verlet from Atom 8
####
8
adding :10
adding :9
Array dim = 1
8
adding :11
Array dim = 2
Verlet from Atom 8
Verlet list 10
Verlet list 9
Verlet list 11
####
has 'verlet' => (
traits => ['Array'],
is =>'rw',
isa => 'ArrayRef[Molecule::Atom]',
required => 1,
weak_ref => 1,
default => sub { [] },
handles => {
add_atom =>'add_verlet',
}
);