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

# Content
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 $self->{max}=0;
32 $self->setlevel(0);
33 $self->{messages}=();
34 return $self;
35 }
36
37 sub setlevel {
38 my $self=shift;
39
40 if ( @_ ) {
41 $self->{aslevel}=shift
42 }
43 else {
44 $self->{aslevel}++;
45 }
46 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