Changeset 14


Ignore:
Timestamp:
1998-11-17T22:48:46+13:00 (25 years ago)
Author:
rjmcnab
Message:

modified internal representation so that order is preserved (and
therefore sorting is possible).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/perllib/arcinfo.pm

    r4 r14  
    1111sub new {
    1212    my ($class) = @_;
    13     my $self = {'info'=>{}};
     13    my $self = {'info'=>{},
     14        'order'=>[]};
    1415
    1516    return bless $self, $class;
     
    3132        @line = split ("\t", $line); # filename,
    3233        if (scalar(@line) >= 2) {
    33         $self->add_info ($line[0], $line[1]);
     34        $self->add_info (@line);
    3435        }
    3536    }
     
    4344    my ($filename) = @_;
    4445
    45     my ($OID);
     46    my ($OID, $info);
    4647
    4748    open (OUTFILE, ">$filename") ||
    4849    die "arcinfo::save_info couldn't write $filename\n";
    4950
    50     foreach $OID (keys(%{$self->{'info'}})) {
    51     my $info = $self->get_info($OID);
     51    foreach $info (@{$self->get_OID_list()}) {
    5252    if (defined $info) {
    53         print OUTFILE "$OID\t", join("\t", @$info), "\n";
     53        print OUTFILE join("\t", @$info), "\n";
    5454    }
    5555    }
     
    5858}
    5959
     60sub delete_info {
     61    my $self = shift (@_);
     62    my ($OID) = @_;
     63
     64    if (defined $self->{'info'}->{$OID}) {
     65    delete $self->{'info'}->{$OID};
     66   
     67    my $i = 0;
     68    while ($i < scalar (@{$self->{'order'}})) {
     69        if ($self->{'order'}->[$i] eq $OID) {
     70        splice (@{$self->{'order'}}, $i, 1);
     71        last;
     72        }
     73       
     74        $i ++;
     75    }
     76    }
     77}
     78
    6079sub add_info {
    6180    my $self = shift (@_);
    6281    my ($OID, $doc_file) = @_;
    6382
     83    $self->delete_info ($OID);
    6484    $self->{'info'}->{$OID} = [$doc_file];
     85    push (@{$self->{'order'}}, $OID);
    6586}
    6687
     
    7293    my @list = ();
    7394
    74     foreach $OID (sort(keys(%{$self->{'info'}}))) {
     95    foreach $OID (@{$self->{'order'}}) {
    7596    push (@list, [$OID, $self->{'info'}->{$OID}->[0]]);
    7697    }
     
    86107    my @list = ();
    87108
    88     foreach $OID (sort(keys(%{$self->{'info'}}))) {
     109    foreach $OID (@{$self->{'order'}}) {
    89110    push (@list, [$self->{'info'}->{$OID}->[0], $OID]);
    90111    }
Note: See TracChangeset for help on using the changeset viewer.