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

# User Rev Content
1 sashby 1.1.2.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;