ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Utilities/Message.pm
Revision: 1.7
Committed: Fri Dec 14 09:04:17 2007 UTC (17 years, 4 months ago) by muzaffar
Content type: text/plain
Branch: MAIN
CVS Tags: V1_1_7, V1_1_6, V1_1_5, V1_2_0-cand3, V1_2_0-cand2, V1_2_0-cand1, V1_1_4, V1_1_3, V1_1_2, V1_1_0_reltag8, V1_1_0_reltag7, V1_1_0_reltag6, V1_1_1, V1_1_0_reltag5, V1_1_0_reltag4, V1_1_0_reltag3, V1_1_0_reltag2, V1_1_0_reltag1, V1_1_0_reltag, V1_1_0_cand3, V1_1_0_cand2, V1_1_0_cand1
Branch point for: forBinLess_SCRAM
Changes since 1.6: +5 -0 lines
Log Message:
replace head with xml branch

File Contents

# Content
1 =head1 NAME
2
3 Utilities::Message - Hold a multi level message that can be reconstructed to any level.
4
5 =head1 SYNOPSIS
6
7 my $obj = Utilities::Message->new();
8
9 =head1 DESCRIPTION
10
11 Hold a multi level message that can be reconstructed to any level.
12
13 =head1 METHODS
14
15 =over
16
17 =cut
18
19 =item C<new()>
20
21 A new Message object.
22
23 =item C<setlevel([level_number])>
24
25 Set the current level to which messages can be assigned.
26
27 =item C<message(string)>
28
29 Set a new message at the current level.
30
31 =item C<read([level])>
32
33 Return list of all messages up to level n (or current assignment level).
34
35 =item C<readlevel(level)>
36
37 Read only those messages assigned to the given level.
38
39 =item C<copy(Message)>
40
41 Copy the messages from one object to the current,
42 starting at the current active level.
43
44 =item C<levels()>
45
46 Return the number of assignment levels.
47
48 =back
49
50 =head1 AUTHOR
51
52 Originally Written by Christopher Williams.
53
54 =head1 MAINTAINER
55
56 Shaun ASHBY
57
58 =cut
59
60 BEGIN
61 {
62 die __PACKAGE__.": I AM still used!!","\n";
63 };
64
65 package Utilities::Message;
66 require 5.004;
67
68 sub new {
69 my $class=shift;
70 $self={};
71 bless $self, $class;
72 $self->{max}=0;
73 $self->setlevel(0);
74 $self->{messages}=();
75 return $self;
76 }
77
78 sub setlevel {
79 my $self=shift;
80
81 if ( @_ ) {
82 $self->{aslevel}=shift
83 }
84 else {
85 $self->{aslevel}++;
86 }
87 if ( $self->{aslevel} > $self->{max} ) { $self->{max}++ }
88 }
89
90 sub levels {
91 my $self=shift;
92 return $self->{max};
93 }
94
95 sub message {
96 my $self=shift;
97 my $message=shift;
98
99 push @{$self->{messages}}, $message;
100 push @{$self->{messagelevel}}, $self->{aslevel};
101 }
102
103 sub read {
104 my $self=shift;
105
106 my $lev;
107 if (@_) { $lev=shift }
108 else { $lev=$self->{aslevel} }
109 my @messages=();
110 for ( my $i=0; $i<=$#{$self->{messages}}; $i++) {
111 if ( $self->{messagelevel}[$i] <= $lev ) {
112 push @messages, $self->{messages}[$i];
113 }
114 }
115 return @messages;
116 }
117
118 sub readlevel {
119 my $self=shift;
120
121 my @messages=();
122 my $lev;
123 if (@_) { $lev=shift }
124 else { $lev=$self->{aslevel} }
125
126 for ( my $i=0; $i<=$#{$self->{messages}}; $i++) {
127 if ( $self->{messagelevel}[$i] eq $lev ) {
128 push @messages, $self->{messages}[$i];
129 }
130 }
131 return @messages;
132 }
133
134 sub copy {
135 my $self=shift;
136 my $obj=shift;
137
138 my $currentlev=$self->{aslevel};
139 for ( my $i=0; $i<=$obj->levels(); $i++) {
140 foreach $mes ( $obj->readlevel($i) ) {
141 $self->message($mes);
142 }
143 $self->setlevel();
144 }
145 $self->setlevel($currentlev);
146 }
147