Object.pm revision 7c478bd95313f5f23a4c958a745db2134aa03244
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# CDDL HEADER START
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# The contents of this file are subject to the terms of the
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# Common Development and Distribution License, Version 1.0 only
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# (the "License"). You may not use this file except in compliance
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# with the License.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# See the License for the specific language governing permissions
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# and limitations under the License.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# When distributing Covered Code, include this CDDL HEADER in each
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# If applicable, add the following below this CDDL HEADER, with the
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# fields enclosed by brackets "[]" replaced with your own identifying
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# information: Portions Copyright [yyyy] [name of copyright owner]
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# CDDL HEADER END
9e986f0e5fb5e5ac09af90cd3b63f7836d983f9dFrank Van Der Linden# Copyright 2002-2003 Sun Microsystems, Inc. All rights reserved.
9e986f0e5fb5e5ac09af90cd3b63f7836d983f9dFrank Van Der Linden# Use is subject to license terms.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde#ident "%Z%%M% %I% %E% SMI"
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# Object.pm contains perl code for exacct object manipulation.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegdeuse warnings;
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde%EXPORT_TAGS = (CONSTANTS => \@_Constants, ALL => \@EXPORT_OK);
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegdeuse Sun::Solaris::Exacct::Catalog qw(:CONSTANTS);
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# Class methods
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# Dump an exacct object to the specified filehandle, or STDOUT by default.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde # Fettle parameters.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde # Check for undef values.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde if (! defined($obj)) {
3adb2334459b30a605b8d375be6c3f3a3ec9ef38Vikram Hegde # Deal with items.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde # Recursively dump nested objects.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde if (ref($val)) {
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde # Just print out items.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde $val = unpack('H*', $val) if ($cat[0] == &EXT_RAW);
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde # Deal with groups.
e03dceed3deb85ad561202c77277e701f763fa13Vikram Hegde printf $fh ("%sGROUP\n%s Catalog = %s|%s|%s\n",
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# Item subclass - establish inheritance.
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# Group subclass - establish inheritance.
9e986f0e5fb5e5ac09af90cd3b63f7836d983f9dFrank Van Der Lindenuse base qw(Sun::Solaris::Exacct::Object);
9e986f0e5fb5e5ac09af90cd3b63f7836d983f9dFrank Van Der Linden# Tied array used for holding a group's items.
50200e773f0242e336d032a7b43485e1bcfc9bfeFrank Van Der Lindenpackage Sun::Solaris::Exacct::Object::_Array;
50200e773f0242e336d032a7b43485e1bcfc9bfeFrank Van Der Linden# Check the passed list of arguments are derived from ::Object
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde foreach my $i (@_) {
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde if (! UNIVERSAL::isa($i, 'Sun::Solaris::Exacct::Object'));
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde croak('"', join('", "', @duff), @duff == 1 ? '" is' : '" are',
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde ' not of type Sun::Solaris::Exacct::Object');
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde# Tied hash access methods
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde return(bless([], $_[0]));
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde return(scalar(@{$_[0]}));
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde $#{$_[0]} = $_[1] - 1;
50200e773f0242e336d032a7b43485e1bcfc9bfeFrank Van Der Linden return($_[0]->[$_[1]] = copy_xs_ea_objects($_[2]));
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde @{$_[0]} = ();
50200e773f0242e336d032a7b43485e1bcfc9bfeFrank Van Der Linden return(pop(@{$_[0]}));
3a634bfc9a31448c742688c603d3e76b83b041a0Vikram Hegde my $a = shift(@_);
e03dceed3deb85ad561202c77277e701f763fa13Vikram Hegde return(shift(@{$_[0]}));
9e986f0e5fb5e5ac09af90cd3b63f7836d983f9dFrank Van Der Linden my $a = shift(@_);
50200e773f0242e336d032a7b43485e1bcfc9bfeFrank Van Der Linden return(unshift(@$a, copy_xs_ea_objects(@_)));
9e986f0e5fb5e5ac09af90cd3b63f7836d983f9dFrank Van Der Linden my $a = shift(@_);
9e986f0e5fb5e5ac09af90cd3b63f7836d983f9dFrank Van Der Linden my $sz = scalar(@$a);
9e986f0e5fb5e5ac09af90cd3b63f7836d983f9dFrank Van Der Linden return(splice(@$a, $off, $len, copy_xs_ea_objects(@_)));