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

# Content
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 # Revision: $Id: BuildFileXMLWriter.pm,v 1.1.2.1 2006/08/30 13:53:20 sashby Exp $
8 #
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 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
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;