ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/BuildSystem/TransientDataObject.pm
Revision: 1.1.2.1
Committed: Fri Feb 27 15:34:55 2004 UTC (21 years, 2 months ago) by sashby
Content type: text/plain
Branch: SCRAM_V1_BRANCH
CVS Tags: SCRAM_V1, SCRAMV1_IMPORT
Changes since 1.1: +165 -0 lines
Log Message:
First import of new SCRAM packages into CMS cvs repos.

File Contents

# Content
1 #____________________________________________________________________
2 # File: TransientDataObject.pm
3 #____________________________________________________________________
4 #
5 # Author: Shaun Ashby <Shaun.Ashby@cern.ch>
6 # Update: 2004-02-25 15:21:52+0100
7 # Revision: $Id: TransientDataObject.pm,v 1.3 2004/02/26 15:04:25 sashby Exp $
8 #
9 # Copyright: 2004 (C) Shaun Ashby
10 #
11 #--------------------------------------------------------------------
12 package BuildSystem::TransientDataObject;
13 require 5.004;
14 use Exporter;
15 @ISA=qw(Exporter);
16 @EXPORT_OK=qw( );
17 #
18 ##
19 # Note: make sure local includes come first.
20 # libs: keep last occurrences of lib in list....
21 #
22 #
23
24 sub new()
25 ###############################################################
26 # new #
27 ###############################################################
28 # modified : Wed Feb 25 15:21:57 2004 / SFA #
29 # params : #
30 # : #
31 # function : #
32 # : #
33 ###############################################################
34 {
35 my $proto=shift;
36 my $class=ref($proto) || $proto;
37 my $self={};
38
39 bless $self,$class;
40 return $self;
41 }
42
43 sub variables()
44 {
45 my $self=shift;
46 # Return a hash of variables:
47 return $self->{VARIABLES};
48 }
49
50 sub packages()
51 {
52 my $self=shift;
53 return $self->{PACKAGES};
54 }
55
56 sub packagetargets()
57 {
58 my $self=shift;
59
60 }
61
62 sub data()
63 {
64 my $self=shift;
65 my ($key)=@_;
66
67 if ($key eq 'MAKEFILE')
68 {
69 # Since makefile elements are each statements, add newline to
70 # each item in data array so they appear on separate lines:
71 return join("\n",@{$self->{$key}});
72 }
73 else
74 {
75 return join(" ",@{$self->{$key}});
76 }
77 }
78
79 sub allscramstores()
80 {
81 my $self=shift;
82 return $self->{SCRAMSTORE};
83 }
84
85 sub allflags()
86 {
87 my $self=shift;
88 my %flags;
89
90 # Return a hash containing FLAGNAME, FLAGSTRING pairs:
91 while (my ($flagname,$flagvalue) = each %{$self->{FLAGS}})
92 {
93 $flags{$flagname} = join(" ",@{$flagvalue});
94 }
95
96 return \%flags;
97 }
98
99
100 ## These routines are for storing data in the TransientDataObject object:
101 sub addstore()
102 {
103 my $self=shift;
104 my ($name,$value)=@_;
105 # Add a new SCRAMSTORE:
106 $self->{SCRAMSTORE}->{$name} = $value;
107 }
108
109 sub storedata()
110 {
111 my $self=shift;
112 my ($tag,$data)=@_;
113
114 if (ref($data) eq 'HASH')
115 {
116 if ($tag eq 'FLAGS')
117 {
118 while (my ($flag,$flagvalue) = each %{$data})
119 {
120 $self->flags($flag,$flagvalue);
121 }
122 }
123 }
124 else
125 {
126 push(@{$self->{$tag}},@{$data});
127 }
128 }
129
130 sub flags()
131 {
132 my $self=shift;
133 my ($flag,$flagvalue) = @_;
134
135 if ($flag && $flagvalue)
136 {
137 if (exists ($self->{FLAGS}->{$flag}))
138 {
139 push(@{$self->{FLAGS}->{$flag}},@$flagvalue);
140 }
141 else
142 {
143 $self->{FLAGS}->{$flag} = [ @$flagvalue ];
144 }
145 }
146 elsif ($flag && $self->{FLAGS}->{$flag}->[0] ne '')
147 {
148 return @{$self->{FLAGS}->{$flag}};
149 }
150 else
151 {
152 return "";
153 }
154 }
155
156 sub scramstore()
157 {
158 my $self=shift;
159 my ($name) = @_;
160 (exists $self->{SCRAMSTORE}->{"SCRAMSTORENAME_".$name}) ?
161 return $self->{SCRAMSTORE}->{"SCRAMSTORENAME_".$name}
162 : return "";
163 }
164
165 1;