ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Utilities/Message.pm
Revision: 1.2
Committed: Wed Jan 5 15:45:48 2000 UTC (25 years, 4 months ago) by williamc
Content type: text/plain
Branch: MAIN
CVS Tags: v102p1, V1_0_1, V1_0_0, V1_pre0, SCRAM_V1, SCRAMV1_IMPORT, V0_19_7, V0_19_6, V0_19_6p1, V0_19_5, SFATEST, V0_19_4, V0_19_4_pre3, V0_19_4_pre2, V0_19_4_pre1, V0_19_3, V0_19_2, V0_19_1, V0_19_0, V0_18_5, V0_18_4, V_18_3_TEST, VO_18_3, V0_18_2, V0_18_1, ProtoEnd
Branch point for: V1_pre1, SCRAM_V1_BRANCH, V0_19_4_B
Changes since 1.1: +7 -2 lines
Log Message:
bug-fix - predefine max malue

File Contents

# User Rev Content
1 williamc 1.1 #
2     # Message.pm
3     #
4     # Originally Written by Christopher Williams
5     #
6     # Description
7     # -----------
8     # Hold a multi level message that can be reconstructed to any level
9     #
10     # Interface
11     # ---------
12     # new() : A new Message object
13     # setlevel([level_number]) : set the current level to which messages can
14     # be assigned.
15     # message(string) : Set a new message at the current level
16     # read([level]) : return list of all messages up to level n (or
17     # current assignment level)
18     # readlevel(level) : read only those messages assigned to the given
19     # level
20     # copy(Message) : Copy the messages from one object to the current
21     # starting at the current active level
22     # levels() : return the number of assignment levels
23    
24     package Utilities::Message;
25     require 5.004;
26    
27     sub new {
28     my $class=shift;
29     $self={};
30     bless $self, $class;
31 williamc 1.2 $self->{max}=0;
32 williamc 1.1 $self->setlevel(0);
33     $self->{messages}=();
34     return $self;
35     }
36    
37     sub setlevel {
38     my $self=shift;
39    
40 williamc 1.2 if ( @_ ) {
41     $self->{aslevel}=shift
42     }
43     else {
44     $self->{aslevel}++;
45     }
46 williamc 1.1 if ( $self->{aslevel} > $self->{max} ) { $self->{max}++ }
47     }
48    
49     sub levels {
50     my $self=shift;
51     return $self->{max};
52     }
53    
54     sub message {
55     my $self=shift;
56     my $message=shift;
57    
58     push @{$self->{messages}}, $message;
59     push @{$self->{messagelevel}}, $self->{aslevel};
60     }
61    
62     sub read {
63     my $self=shift;
64    
65     my $lev;
66     if (@_) { $lev=shift }
67     else { $lev=$self->{aslevel} }
68     my @messages=();
69     for ( my $i=0; $i<=$#{$self->{messages}}; $i++) {
70     if ( $self->{messagelevel}[$i] <= $lev ) {
71     push @messages, $self->{messages}[$i];
72     }
73     }
74     return @messages;
75     }
76    
77     sub readlevel {
78     my $self=shift;
79    
80     my @messages=();
81     my $lev;
82     if (@_) { $lev=shift }
83     else { $lev=$self->{aslevel} }
84    
85     for ( my $i=0; $i<=$#{$self->{messages}}; $i++) {
86     if ( $self->{messagelevel}[$i] eq $lev ) {
87     push @messages, $self->{messages}[$i];
88     }
89     }
90     return @messages;
91     }
92    
93     sub copy {
94     my $self=shift;
95     my $obj=shift;
96    
97     my $currentlev=$self->{aslevel};
98     for ( my $i=0; $i<=$obj->levels(); $i++) {
99     foreach $mes ( $obj->readlevel($i) ) {
100     $self->message($mes);
101     }
102     $self->setlevel();
103     }
104     $self->setlevel($currentlev);
105     }
106