ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/BuildSystem/BuildFileXMLWriter.pm
Revision: 1.2
Committed: Mon Sep 11 14:53:39 2006 UTC (18 years, 7 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_3-p1, V1_0_3
Branch point for: v103_with_xml
Changes since 1.1: +3 -3 lines
Log Message:
merged from v103_branch

File Contents

# User Rev Content
1 sashby 1.1 #____________________________________________________________________
2     # File: BuildFileXMLWriter.pm
3     #____________________________________________________________________
4     #
5     # Author: Shaun Ashby <Shaun.Ashby@cern.ch>
6     # Update: 2003-12-03 19:03:15+0100
7 sashby 1.2 # Revision: $Id: BuildFileXMLWriter.pm,v 1.1.2.1 2006/08/30 13:53:20 sashby Exp $
8 sashby 1.1 #
9     # Copyright: 2003 (C) Shaun Ashby
10     #
11     #--------------------------------------------------------------------
12     package BuildSystem::BuildFileXMLWriter;
13     require 5.004;
14     use Exporter;
15     use BuildSystem::WriteXMLTagUtils;
16     use ActiveDoc::SimpleDoc;
17    
18     @ISA=qw(Exporter);
19     @EXPORT_OK=qw();
20    
21     #
22     sub new()
23     ###############################################################
24     # new #
25     ###############################################################
26     # modified : Wed Dec 3 19:03:22 2003 / SFA #
27     # params : #
28     # : #
29     # function : #
30     # : #
31     ###############################################################
32     {
33     my $proto=shift;
34     my $class=ref($proto) || $proto;
35     my $self={};
36    
37     bless $self,$class;
38    
39     $self->{DEPENDENCIES} = {};
40     $self->{content} = {};
41     return $self;
42     }
43    
44     sub _initparser()
45     {
46     my $self=shift;
47    
48     $self->{simpledoc}=ActiveDoc::SimpleDoc->new();
49     $self->{simpledoc}->newparse("builder");
50     $self->{simpledoc}->addignoretags("builder");
51    
52     # For blank lines do nothing:
53     $self->{simpledoc}->addtag("builder","none",
54     \&BuildSystem::WriteXMLTagUtils::NoTag, $self,
55     "", $self,
56     "", $self);
57    
58     # Define the tags to be used in this class:
59     $self->{simpledoc}->addtag("builder","classpath",
60     \&BuildSystem::WriteXMLTagUtils::classpathtagOpen, $self,
61     "", $self,
62     "", $self);
63    
64     $self->{simpledoc}->addtag("builder","productstore",
65     \&BuildSystem::WriteXMLTagUtils::productstoretagOpen, $self,
66     "", $self,
67     "", $self);
68    
69     $self->{simpledoc}->addtag("builder","architecture",
70     \&BuildSystem::WriteXMLTagUtils::archtagOpen, $self,
71     "", $self,
72     \&BuildSystem::WriteXMLTagUtils::archtagClose, $self);
73    
74     $self->{simpledoc}->addtag("builder","include_path",
75     \&BuildSystem::WriteXMLTagUtils::includetagOpen, $self,
76     "", $self,
77     "", $self);
78    
79     $self->{simpledoc}->addtag("builder","define_group",
80     \&BuildSystem::WriteXMLTagUtils::groupdeftagOpen, $self,
81     "", $self,
82     \&BuildSystem::WriteXMLTagUtils::groupdeftagClose, $self);
83    
84     $self->{simpledoc}->addtag("builder","group",
85     \&BuildSystem::WriteXMLTagUtils::grouptagOpen, $self,
86     "", $self,
87     "", $self);
88    
89     $self->{simpledoc}->addtag("builder","lib",
90     \&BuildSystem::WriteXMLTagUtils::libtagOpen, $self,
91     "", $self,
92     "", $self);
93    
94     $self->{simpledoc}->addtag("builder","export",
95     \&BuildSystem::WriteXMLTagUtils::exporttagOpen, $self,
96     "", $self,
97     \&BuildSystem::WriteXMLTagUtils::exporttagClose, $self);
98    
99     $self->{simpledoc}->addtag("builder","use",
100     \&BuildSystem::WriteXMLTagUtils::usetagOpen, $self,
101     "", $self,
102     "", $self);
103    
104     $self->{simpledoc}->addtag("builder","libtype",
105     \&BuildSystem::WriteXMLTagUtils::libtypetagOpen, $self,
106     "", $self,
107     "", $self);
108    
109     $self->{simpledoc}->addtag("builder","skip",
110     \&BuildSystem::WriteXMLTagUtils::skiptagOpen, $self,
111     \&BuildSystem::WriteXMLTagUtils::skiptagMessage, $self,
112     \&BuildSystem::WriteXMLTagUtils::skiptagClose, $self);
113    
114     $self->{simpledoc}->addtag("builder","makefile",
115     \&BuildSystem::WriteXMLTagUtils::makefiletagOpen, $self,
116     \&BuildSystem::WriteXMLTagUtils::makefiletagContent, $self,
117     \&BuildSystem::WriteXMLTagUtils::makefiletagClose, $self);
118    
119     $self->{simpledoc}->addtag("builder","flags",
120     \&BuildSystem::WriteXMLTagUtils::flagstagOpen, $self,
121     "", $self,
122     "", $self);
123    
124     $self->{simpledoc}->addtag("builder","bin",
125     \&BuildSystem::WriteXMLTagUtils::binarytagOpen, $self,
126     "", $self,
127     \&BuildSystem::WriteXMLTagUtils::binarytagClose, $self);
128    
129     $self->{simpledoc}->addtag("builder","module",
130     \&BuildSystem::WriteXMLTagUtils::moduletagOpen, $self,
131     "", $self,
132     \&BuildSystem::WriteXMLTagUtils::moduletagClose, $self);
133    
134     $self->{simpledoc}->addtag("builder","application",
135     \&BuildSystem::WriteXMLTagUtils::applicationtagOpen, $self,
136     "", $self,
137     \&BuildSystem::WriteXMLTagUtils::applicationtagClose, $self);
138    
139     $self->{simpledoc}->addtag("builder","library",
140     \&BuildSystem::WriteXMLTagUtils::librarytagOpen, $self,
141     "", $self,
142     \&BuildSystem::WriteXMLTagUtils::librarytagClose, $self);
143    
144     # $self->{simpledoc}->addtag("builder"," ",
145     # \&BuildSystem::WriteXMLTagUtils:: ,$self,
146     # \&BuildSystem::WriteXMLTagUtils:: ,$self,
147     # \&BuildSystem::WriteXMLTagUtils:: ,$self);
148    
149     return $self->{simpledoc};
150     }
151    
152     sub parse()
153     {
154     my $self=shift;
155     my ($filename)=@_;
156     my $buildfilexml = $filename.".xml";
157    
158     use FileHandle;
159     $::BUILDFILEXML = new FileHandle;
160     $::BUILDFILEXML->open("> $buildfilexml");
161    
162     # Print an XML document header:
163 sashby 1.2 print $::BUILDFILEXML "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>","\n";
164     print $::BUILDFILEXML "<doc type=\"BuildSystem::BuildFile\" version=\"1.0\">","\n\n";
165 sashby 1.1
166     $self->{simpledoc}=$self->_initparser();
167     $self->{simpledoc}->filetoparse($filename);
168     $self->{simpledoc}->parse("builder");
169    
170     # Print the footer (closing doc tag):
171     print $::BUILDFILEXML "\n\n</doc>","\n";
172    
173     $::BUILDFILEXML->close();
174    
175     # We're done with the SimpleDoc object so delete it:
176     delete $self->{simpledoc};
177     }
178    
179     1;