ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Utilities/Message.pm
Revision: 1.4
Committed: Wed Aug 17 11:11:48 2005 UTC (19 years, 8 months ago) by sashby
Content type: text/plain
Branch: MAIN
CVS Tags: V1_0_3-p4, V1_0_3-p3, V1_0_3-p2, before110xmlBRmerge, V1_0_4p1, V1_0_3-p1, V1_0_3, V1_0_2, V1_0_2_p1
Branch point for: v103_with_xml, v103_branch
Changes since 1.3: +1 -1 lines
Log Message:
Added more POD doc.

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 package Utilities::Message;
61 require 5.004;
62
63 sub new {
64 my $class=shift;
65 $self={};
66 bless $self, $class;
67 $self->{max}=0;
68 $self->setlevel(0);
69 $self->{messages}=();
70 return $self;
71 }
72
73 sub setlevel {
74 my $self=shift;
75
76 if ( @_ ) {
77 $self->{aslevel}=shift
78 }
79 else {
80 $self->{aslevel}++;
81 }
82 if ( $self->{aslevel} > $self->{max} ) { $self->{max}++ }
83 }
84
85 sub levels {
86 my $self=shift;
87 return $self->{max};
88 }
89
90 sub message {
91 my $self=shift;
92 my $message=shift;
93
94 push @{$self->{messages}}, $message;
95 push @{$self->{messagelevel}}, $self->{aslevel};
96 }
97
98 sub read {
99 my $self=shift;
100
101 my $lev;
102 if (@_) { $lev=shift }
103 else { $lev=$self->{aslevel} }
104 my @messages=();
105 for ( my $i=0; $i<=$#{$self->{messages}}; $i++) {
106 if ( $self->{messagelevel}[$i] <= $lev ) {
107 push @messages, $self->{messages}[$i];
108 }
109 }
110 return @messages;
111 }
112
113 sub readlevel {
114 my $self=shift;
115
116 my @messages=();
117 my $lev;
118 if (@_) { $lev=shift }
119 else { $lev=$self->{aslevel} }
120
121 for ( my $i=0; $i<=$#{$self->{messages}}; $i++) {
122 if ( $self->{messagelevel}[$i] eq $lev ) {
123 push @messages, $self->{messages}[$i];
124 }
125 }
126 return @messages;
127 }
128
129 sub copy {
130 my $self=shift;
131 my $obj=shift;
132
133 my $currentlev=$self->{aslevel};
134 for ( my $i=0; $i<=$obj->levels(); $i++) {
135 foreach $mes ( $obj->readlevel($i) ) {
136 $self->message($mes);
137 }
138 $self->setlevel();
139 }
140 $self->setlevel($currentlev);
141 }
142