# This file was automatically generated by SWIG
package top;
require Exporter;
require DynaLoader;
@ISA = qw(Exporter DynaLoader);
package topc;
bootstrap top;
var_top_init();
@EXPORT = qw( );

# ---------- BASE METHODS -------------

package top;

sub TIEHASH {
    my ($classname,$obj) = @_;
    return bless $obj, $classname;
}

sub CLEAR { }


############# Class : statics ##############

package statics;
@ISA = qw( top );
%OWNER = ();
%BLESSEDMEMBERS = (
);

%ITERATORS = ();
sub new {
    my $self = shift;
    my @args = @_;
    $self = topc::new_statics(@args);
    return undef if (!defined($self));
    bless $self, "statics";
    $OWNER{$self} = 1;
    my %retval;
    tie %retval, "statics", $self;
    return bless \%retval,"statics";
}

sub DESTROY {
    my $self = tied(%{$_[0]});
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        topc::delete_statics($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
    };

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
    };

sub FETCH {
    my ($self,$field) = @_;
    my $member_func = "topc::statics_${field}_get";
    my $val = &$member_func($self);
    if (exists $BLESSEDMEMBERS{$field}) {
        return undef if (!defined($val));
        my %retval;
        tie %retval,$BLESSEDMEMBERS{$field},$val;
        return bless \%retval, $BLESSEDMEMBERS{$field};
    }
    return $val;
}

sub STORE {
    my ($self,$field,$newval) = @_;
    my $member_func = "topc::statics_${field}_set";
    if (exists $BLESSEDMEMBERS{$field}) {
        &$member_func($self,tied(%{$newval}));
    } else {
        &$member_func($self,$newval);
    }
}

sub FIRSTKEY {
    my $self = shift;
    $ITERATORS{$self} = ['procstate_names', 'cpustate_names', 'memory_names', ];
    my $first = shift @{$ITERATORS{$self}};
    return $first;
}

sub NEXTKEY {
    my $self = shift;
    $nelem = scalar @{$ITERATORS{$self}};
    if ($nelem > 0) {
        my $member = shift @{$ITERATORS{$self}};
        return $member;
    } else {
        $ITERATORS{$self} = ['procstate_names', 'cpustate_names', 'memory_names', ];
        return ();
    }
}


############# Class : system_info ##############

package system_info;
@ISA = qw( top );
%OWNER = ();
%BLESSEDMEMBERS = (
);

%ITERATORS = ();
sub new {
    my $self = shift;
    my @args = @_;
    $self = topc::new_system_info(@args);
    return undef if (!defined($self));
    bless $self, "system_info";
    $OWNER{$self} = 1;
    my %retval;
    tie %retval, "system_info", $self;
    return bless \%retval,"system_info";
}

sub DESTROY {
    my $self = tied(%{$_[0]});
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        topc::delete_system_info($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
    };

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
    };

sub FETCH {
    my ($self,$field) = @_;
    my $member_func = "topc::system_info_${field}_get";
    my $val = &$member_func($self);
    if (exists $BLESSEDMEMBERS{$field}) {
        return undef if (!defined($val));
        my %retval;
        tie %retval,$BLESSEDMEMBERS{$field},$val;
        return bless \%retval, $BLESSEDMEMBERS{$field};
    }
    return $val;
}

sub STORE {
    my ($self,$field,$newval) = @_;
    my $member_func = "topc::system_info_${field}_set";
    if (exists $BLESSEDMEMBERS{$field}) {
        &$member_func($self,tied(%{$newval}));
    } else {
        &$member_func($self,$newval);
    }
}

sub FIRSTKEY {
    my $self = shift;
    $ITERATORS{$self} = ['last_pid', 'load_avg', 'p_total', 'p_active', 'procstates', 'cpustates', 'memory', ];
    my $first = shift @{$ITERATORS{$self}};
    return $first;
}

sub NEXTKEY {
    my $self = shift;
    $nelem = scalar @{$ITERATORS{$self}};
    if ($nelem > 0) {
        my $member = shift @{$ITERATORS{$self}};
        return $member;
    } else {
        $ITERATORS{$self} = ['last_pid', 'load_avg', 'p_total', 'p_active', 'procstates', 'cpustates', 'memory', ];
        return ();
    }
}


############# Class : process_select ##############

package process_select;
@ISA = qw( top );
%OWNER = ();
%BLESSEDMEMBERS = (
);

%ITERATORS = ();
sub new {
    my $self = shift;
    my @args = @_;
    $self = topc::new_process_select(@args);
    return undef if (!defined($self));
    bless $self, "process_select";
    $OWNER{$self} = 1;
    my %retval;
    tie %retval, "process_select", $self;
    return bless \%retval,"process_select";
}

sub DESTROY {
    my $self = tied(%{$_[0]});
    delete $ITERATORS{$self};
    if (exists $OWNER{$self}) {
        topc::delete_process_select($self);
        delete $OWNER{$self};
    }
}

sub DISOWN {
    my $self = shift;
    my $ptr = tied(%$self);
    delete $OWNER{$ptr};
    };

sub ACQUIRE {
    my $self = shift;
    my $ptr = tied(%$self);
    $OWNER{$ptr} = 1;
    };

sub FETCH {
    my ($self,$field) = @_;
    my $member_func = "topc::process_select_${field}_get";
    my $val = &$member_func($self);
    if (exists $BLESSEDMEMBERS{$field}) {
        return undef if (!defined($val));
        my %retval;
        tie %retval,$BLESSEDMEMBERS{$field},$val;
        return bless \%retval, $BLESSEDMEMBERS{$field};
    }
    return $val;
}

sub STORE {
    my ($self,$field,$newval) = @_;
    my $member_func = "topc::process_select_${field}_set";
    if (exists $BLESSEDMEMBERS{$field}) {
        &$member_func($self,tied(%{$newval}));
    } else {
        &$member_func($self,$newval);
    }
}

sub FIRSTKEY {
    my $self = shift;
    $ITERATORS{$self} = ['idle', 'system', 'uid', 'command', ];
    my $first = shift @{$ITERATORS{$self}};
    return $first;
}

sub NEXTKEY {
    my $self = shift;
    $nelem = scalar @{$ITERATORS{$self}};
    if ($nelem > 0) {
        my $member = shift @{$ITERATORS{$self}};
        return $member;
    } else {
        $ITERATORS{$self} = ['idle', 'system', 'uid', 'command', ];
        return ();
    }
}


# ------- FUNCTION WRAPPERS --------

package top;

*ptrcast = *topc::ptrcast;
*ptrvalue = *topc::ptrvalue;
*ptrset = *topc::ptrset;
*ptrcreate = *topc::ptrcreate;
*ptrfree = *topc::ptrfree;
*ptradd = *topc::ptradd;
*ptrmap = *topc::ptrmap;
*itoa = *topc::itoa;
*itoa7 = *topc::itoa7;
*version_string = *topc::version_string;
*format_header = *topc::format_header;
*format_next_process = *topc::format_next_process;
*printable = *topc::printable;
*full_format_header = *topc::full_format_header;
*full_format_next_process = *topc::full_format_next_process;
sub machine_init {
    my @args = @_;
    $args[0] = tied(%{$args[0]});
    my $result = topc::machine_init(@args);
    return $result;
}
sub get_system_info {
    my @args = @_;
    $args[0] = tied(%{$args[0]});
    my $result = topc::get_system_info(@args);
    return $result;
}
sub get_process_info {
    my @args = @_;
    $args[0] = tied(%{$args[0]});
    $args[1] = tied(%{$args[1]});
    my $result = topc::get_process_info(@args);
    return $result;
}

# ------- VARIABLE STUBS --------

package top;

*VERSION = *topc::VERSION;
*Header_lines = *topc::Header_lines;
*MAX_COLS = *topc::MAX_COLS;
*LOG1024 = *topc::LOG1024;
*Infinity = *topc::Infinity;
*Invalid = *topc::Invalid;
*Largest = *topc::Largest;
*NUM_AVERAGES = *topc::NUM_AVERAGES;
1;
