Object.pm revision c227543f6890bd6f2054360ec1820bfef8132431
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen# Object.pm contains perl code for exacct object manipulation.
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabeleuse warnings;
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele%EXPORT_TAGS = (CONSTANTS => \@_Constants, ALL => \@EXPORT_OK);
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowenuse base qw(Exporter);
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen# Class methods
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele# Dump an exacct object to the specified filehandle, or STDOUT by default.
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen # Fettle parameters.
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele # Check for undef values.
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen if (! defined($obj)) {
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen # Deal with items.
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen # Recursively dump nested objects.
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen if (ref($val)) {
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen # Just print out items.
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen # Deal with groups.
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen# Item subclass - establish inheritance.
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen# Group subclass - establish inheritance.
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele# Tied array used for holding a group's items.
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele# Check the passed list of arguments are derived from ::Object
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen foreach my $i (@_) {
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen if (! UNIVERSAL::isa($i, 'Sun::Solaris::Exacct::Object'));
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen croak('"', join('", "', @duff), @duff == 1 ? '" is' : '" are',
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen ' not of type Sun::Solaris::Exacct::Object');
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele# Tied hash access methods
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen return(bless([], $_[0]));
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen return(scalar(@{$_[0]}));
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen $#{$_[0]} = $_[1] - 1;
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele @{$_[0]} = ();
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele return(pop(@{$_[0]}));
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen my $a = shift(@_);
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen push(@$a, copy_xs_ea_objects(@_));
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele return(shift(@{$_[0]}));
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen my $a = shift(@_);
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen return(unshift(@$a, copy_xs_ea_objects(@_)));
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele my $a = shift(@_);
47bbfaa3a2ea0afb775a3aa3e7dbf8a71ea1b966rbowen my $sz = scalar(@$a);
d5082de325fb6351c6bd34d28df0b43ec5a8ac90erikabele return(splice(@$a, $off, $len, copy_xs_ea_objects(@_)));