OpenCores
URL https://opencores.org/ocsvn/socgen/socgen/trunk

Subversion Repositories socgen

[/] [socgen/] [trunk/] [tools/] [yp/] [lib.pm] - Blame information for rev 128

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 117 jt_eaton
#/**********************************************************************/
2
#/*                                                                    */
3
#/*             -------                                                */
4
#/*            /   SOC  \                                              */
5
#/*           /    GEN   \                                             */
6
#/*          /    TOOL    \                                            */
7
#/*          ==============                                            */
8
#/*          |            |                                            */
9
#/*          |____________|                                            */
10
#/*                                                                    */
11
#/*                                                                    */
12
#/*                                                                    */
13
#/*  Author(s):                                                        */
14
#/*      - John Eaton, jt_eaton@opencores.org                          */
15
#/*                                                                    */
16
#/**********************************************************************/
17
#/*                                                                    */
18
#/*    Copyright (C) <2010-2011>  <Ouabache Design Works>              */
19
#/*                                                                    */
20
#/*  This source file may be used and distributed without              */
21
#/*  restriction provided that this copyright statement is not         */
22
#/*  removed from the file and that any derivative work contains       */
23
#/*  the original copyright notice and the associated disclaimer.      */
24
#/*                                                                    */
25
#/*  This source file is free software; you can redistribute it        */
26
#/*  and/or modify it under the terms of the GNU Lesser General        */
27
#/*  Public License as published by the Free Software Foundation;      */
28
#/*  either version 2.1 of the License, or (at your option) any        */
29
#/*  later version.                                                    */
30
#/*                                                                    */
31
#/*  This source is distributed in the hope that it will be            */
32
#/*  useful, but WITHOUT ANY WARRANTY; without even the implied        */
33
#/*  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR           */
34
#/*  PURPOSE.  See the GNU Lesser General Public License for more      */
35
#/*  details.                                                          */
36
#/*                                                                    */
37
#/*  You should have received a copy of the GNU Lesser General         */
38
#/*  Public License along with this source; if not, download it        */
39
#/*  from http://www.opencores.org/lgpl.shtml                          */
40
#/*                                                                    */
41
#/**********************************************************************/
42
 
43
 
44
 
45
 
46
 
47
 
48
use strict;
49
 
50
package yp::lib;
51
 
52
 
53 118 jt_eaton
#/***********************************************************************************************/
54
#/  find_ipxact                                                                                 */
55
#/                                                                                              */
56
#/  returns full path name to ip-xact file                                                      */
57
#/                                                                                              */
58
#/  my $spirit_type_file = yp::lib::find_ipxact($type,$vendor,$library,$component,$version);    */
59
#/                                                                                              */
60
#/***********************************************************************************************/
61 117 jt_eaton
 
62 118 jt_eaton
sub find_ipxact
63 117 jt_eaton
   {
64
   my @params     = @_;
65
   my $version    = pop(@params);
66
   my $component  = pop(@params);
67
   my $project    = pop(@params);
68
   my $vendor     = pop(@params);
69
   my $type       = pop(@params);
70
 
71
 
72 118 jt_eaton
   my $card_file_name;
73
   my $card_dir_name;
74
 
75
   my $parser           = XML::LibXML->new();
76
   my $yp_index_file    = $parser->parse_file("./tools/yp/hier_index.xml");
77
 
78
   foreach  my   $i_vendor ($yp_index_file->findnodes("//socgen:file_types/socgen:file_type[socgen:name/text() = '$type']/socgen:vendors/socgen:vendor[socgen:name/text() = '$vendor']/socgen:libraries/socgen:library[socgen:name/text() = '$project']/socgen:components/socgen:component[socgen:name/text() = '$component']/socgen:versions/socgen:version[socgen:name/text() = '$version']"))
79
     {
80
     $card_file_name       = $i_vendor->findnodes('./socgen:file_name/text()')->to_literal ;
81
     $card_dir_name       = $i_vendor->findnodes('./socgen:dir_name/text()')->to_literal ;
82
     return("./${card_dir_name}/${card_file_name}");
83
     }
84
     return("");
85
 
86
   }
87
 
88
 
89
 
90
 
91
 
92
 
93
 
94 120 jt_eaton
 
95
 
96 117 jt_eaton
#/*********************************************************************************************/
97
#/  find_ipxact_file                                                                          */
98
#/                                                                                            */
99
#/  returns local name of the ip-xact file                                                    */
100
#/                                                                                            */
101 118 jt_eaton
#/   my $file_name = yp::lib::find_ipxact_file($type,$vendor,$library,$component,$version);   */
102 117 jt_eaton
#/                                                                                            */
103
#/*********************************************************************************************/
104
 
105
sub find_ipxact_file
106
   {
107
   my @params     = @_;
108
   my $version    = pop(@params);
109
   my $component  = pop(@params);
110
   my $project    = pop(@params);
111
   my $vendor     = pop(@params);
112
   my $type       = pop(@params);
113
 
114
 
115
   my $card_type;
116
   my $card_file_name;
117
   my $card_dir_name;
118
   my $card_vendor;
119
   my $card_library;
120
   my $card_component;
121
   my $card_version;
122
 
123
   my $parser           = XML::LibXML->new();
124
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
125
 
126
 
127
 
128
 
129
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
130
     {
131
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
132
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
133
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
134
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
135
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
136
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
137
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
138
     if(( $card_type      eq "${type}"      ) &
139
        ( $card_vendor    eq "${vendor}"    ) &
140
        ( $card_library   eq "${project}"   ) &
141
        ( $card_component eq "${component}" ) &
142
        ( $card_version   eq "${version}"   )
143
       )  {return("${card_file_name}");  }
144
     }
145
   }
146
 
147
 
148
 
149
#/*********************************************************************************************/
150 118 jt_eaton
#/  find_ipxact_dir_name                                                                      */
151 117 jt_eaton
#/                                                                                            */
152
#/  returns  path to ip-xact directory from top level                                         */
153 118 jt_eaton
#/   my $dir_name = yp::lib::find_ipxact_dir_name($type,$vendor,$library,$component,$version);                 */
154 117 jt_eaton
#/                                                                                            */
155
#/*********************************************************************************************/
156
 
157 118 jt_eaton
sub find_ipxact_dir_name
158 117 jt_eaton
   {
159
   my @params     = @_;
160
   my $version    = pop(@params);
161
   my $component  = pop(@params);
162
   my $project    = pop(@params);
163
   my $vendor     = pop(@params);
164
   my $type       = pop(@params);
165
 
166
 
167
   my $card_type;
168
   my $card_file_name;
169
   my $card_dir_name;
170
   my $card_vendor_path;
171
   my $card_library_path;
172
   my $card_component_path;
173
   my $card_vendor;
174
   my $card_library;
175
   my $card_component;
176
   my $card_version;
177
 
178
   my $parser           = XML::LibXML->new();
179
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
180
 
181
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
182
     {
183
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
184
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
185
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
186
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
187
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
188
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
189
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
190
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
191
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
192
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
193
     if(( $card_type      eq "${type}"      ) &
194
        ( $card_vendor    eq "${vendor}"    ) &
195
        ( $card_library   eq "${project}"   ) &
196
        ( $card_component eq "${component}" ) &
197
        ( $card_version   eq "${version}"   )
198
       )
199
 
200
       {return("${card_dir_name}");  }
201
     }
202
   }
203
 
204
 
205
 
206
 
207
 
208
 
209
 
210
 
211
#/*********************************************************************************************/
212
#/  find_ipxact_vendor_path                                                                   */
213
#/                                                                                            */
214
#/  returns  path to ip-xact directory from vendor level                                      */
215
#/  The ip-xact file MUST be stored under a subdirectory that matches the vendor name         */
216 118 jt_eaton
#/   my $vendor_path = yp::lib::find_ipxact_vendor_path($type,$vendor,$library,$component,$version);                 */
217 117 jt_eaton
#/                                                                                            */
218
#/*********************************************************************************************/
219
 
220
sub find_ipxact_vendor_path
221
   {
222
   my @params     = @_;
223
   my $version    = pop(@params);
224
   my $component  = pop(@params);
225
   my $project    = pop(@params);
226
   my $vendor     = pop(@params);
227
   my $type       = pop(@params);
228
 
229
 
230
   my $card_type;
231
   my $card_file_name;
232
   my $card_dir_name;
233
   my $card_vendor_path;
234
   my $card_library_path;
235
   my $card_component_path;
236
   my $card_vendor;
237
   my $card_library;
238
   my $card_component;
239
   my $card_version;
240
 
241
   my $parser           = XML::LibXML->new();
242
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
243
 
244
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
245
     {
246
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
247
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
248
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
249
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
250
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
251
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
252
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
253
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
254
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
255
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
256
     if(( $card_type      eq "${type}"      ) &
257
        ( $card_vendor    eq "${vendor}"    ) &
258
        ( $card_library   eq "${project}"   ) &
259
        ( $card_component eq "${component}" ) &
260
        ( $card_version   eq "${version}"   )
261
       )
262
 
263
       {return("/${card_vendor_path}");  }
264
     }
265
   }
266
 
267
 
268
 
269
 
270
#/*********************************************************************************************/
271
#/  find_ipxact_library_path                                                                  */
272
#/                                                                                            */
273
#/  returns  path to ip-xact directory from library level                                     */
274
#/  The ip-xact file MUST be stored under a subdirectory that matches the library name        */
275 118 jt_eaton
#/   my $library_path = yp::lib::find_ipxact_library_path($type,$vendor,$library,$component,$version);                 */
276 117 jt_eaton
#/                                                                                            */
277
#/*********************************************************************************************/
278
 
279
sub find_ipxact_library_path
280
   {
281
   my @params     = @_;
282
   my $version    = pop(@params);
283
   my $component  = pop(@params);
284
   my $project    = pop(@params);
285
   my $vendor     = pop(@params);
286
   my $type       = pop(@params);
287
 
288
 
289
   my $card_type;
290
   my $card_file_name;
291
   my $card_dir_name;
292
   my $card_vendor_path;
293
   my $card_library_path;
294
   my $card_component_path;
295
   my $card_vendor;
296
   my $card_library;
297
   my $card_component;
298
   my $card_version;
299
 
300
   my $parser           = XML::LibXML->new();
301
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
302
 
303
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
304
     {
305
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
306
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
307
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
308
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
309
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
310
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
311
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
312
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
313
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
314
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
315
     if(( $card_type      eq "${type}"      ) &
316
        ( $card_vendor    eq "${vendor}"    ) &
317
        ( $card_library   eq "${project}"   ) &
318
        ( $card_component eq "${component}" ) &
319
        ( $card_version   eq "${version}"   )
320
       )
321
 
322
       {return("/${card_library_path}");  }
323
     }
324
   }
325
 
326
 
327
#/*********************************************************************************************/
328
#/  find_ipxact_component_path                                                                */
329
#/                                                                                            */
330
#/  returns  path to ip-xact directory from component level                                   */
331
#/  The ip-xact file MUST be stored under a subdirectory that matches the component name      */
332 118 jt_eaton
#/   my $component_path = yp::lib::find_ipxact_component_path($type,$vendor,$library,$component,$version);                 */
333 117 jt_eaton
#/                                                                                            */
334
#/*********************************************************************************************/
335
 
336
sub find_ipxact_component_path
337
   {
338
   my @params     = @_;
339
   my $version    = pop(@params);
340
   my $component  = pop(@params);
341
   my $project    = pop(@params);
342
   my $vendor     = pop(@params);
343
   my $type       = pop(@params);
344
 
345
 
346
   my $card_type;
347
   my $card_file_name;
348
   my $card_dir_name;
349
   my $card_vendor_path;
350
   my $card_library_path;
351
   my $card_component_path;
352
   my $card_vendor;
353
   my $card_library;
354
   my $card_component;
355
   my $card_version;
356
 
357
   my $parser           = XML::LibXML->new();
358
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
359
 
360
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
361
     {
362
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
363
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
364
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
365
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
366
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
367
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
368
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
369
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
370
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
371
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
372
     if(( $card_type      eq "${type}"      ) &
373
        ( $card_vendor    eq "${vendor}"    ) &
374
        ( $card_library   eq "${project}"   ) &
375
        ( $card_component eq "${component}" ) &
376
        ( $card_version   eq "${version}"   )
377
       )
378
 
379
       {return("/${card_component_path}");  }
380
     }
381
   }
382
 
383
 
384
 
385
 
386 120 jt_eaton
 
387 117 jt_eaton
#/*********************************************************************************************/
388
#/  find_lib_comp_sep                                                                         */
389
#/                                                                                            */
390
#/  returns  path to the component from library level                                         */
391
#/  The file MUST be stored under a subdirectory that matches the component name              */
392 127 jt_eaton
#/   my $lib_comp_sep = yp::lib::find_lib_comp_sep($vendor,$library,$component);              */
393 117 jt_eaton
#/                                                                                            */
394
#/*********************************************************************************************/
395
 
396
sub find_lib_comp_sep
397
   {
398
   my @params     = @_;
399 127 jt_eaton
   my $component  = pop(@params);
400 117 jt_eaton
   my $project    = pop(@params);
401
   my $vendor     = pop(@params);
402
 
403
 
404
 
405
   my $card_type;
406
   my $card_file_name;
407
   my $card_dir_name;
408
   my $card_vendor_path;
409
   my $card_library_path;
410
   my $card_component_path;
411
   my $card_lib_comp_sep;
412
   my $card_vendor;
413
   my $card_library;
414
   my $card_component;
415
   my $card_version;
416
 
417
   my $parser           = XML::LibXML->new();
418
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
419
 
420
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
421
     {
422
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
423
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
424
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
425
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
426
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
427
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
428
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
429
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
430
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
431
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
432
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
433
     if(( $card_vendor    eq "${vendor}"    ) &
434 120 jt_eaton
        ( $card_library   eq "${project}"   ) &
435 127 jt_eaton
        ( $card_component eq "${component}" )
436 117 jt_eaton
       )
437
       {
438 127 jt_eaton
       if($card_lib_comp_sep)   {return("/${card_lib_comp_sep}");}
439 117 jt_eaton
       else                     {return("");}
440 120 jt_eaton
       }
441
     }
442
   }
443 117 jt_eaton
 
444 120 jt_eaton
 
445
 
446
 
447
 
448
 
449
 
450
 
451
#/*********************************************************************************************/
452
#/  find_file_type                                                                            */
453
#/                                                                                            */
454
#/  returns  file_type                                                                        */
455
#/  The file MUST be stored under a subdirectory that matches the component name              */
456
#/   my $file_type = yp::lib::find_file_type($vendor,$library,$component,$version);           */
457
#/                                                                                            */
458
#/*********************************************************************************************/
459
 
460
sub find_file_type
461
   {
462
   my @params     = @_;
463
   my $version    = pop(@params);
464
   my $component  = pop(@params);
465
   my $project    = pop(@params);
466
   my $vendor     = pop(@params);
467
 
468
 
469
 
470
   my $card_type;
471
   my $card_file_name;
472
   my $card_dir_name;
473
   my $card_vendor_path;
474
   my $card_library_path;
475
   my $card_component_path;
476
   my $card_lib_comp_sep;
477
   my $card_vendor;
478
   my $card_library;
479
   my $card_component;
480
   my $card_version;
481
 
482
   my $parser           = XML::LibXML->new();
483
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
484
 
485
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
486
     {
487
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
488
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
489
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
490
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
491
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
492
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
493
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
494
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
495
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
496
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
497
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
498
     if(( $card_vendor    eq "${vendor}"    ) &
499
        ( $card_library   eq "${project}"   ) &
500
        ( $card_component eq "${component}" ) &
501
        ( $card_version   eq "${version}"   )
502
       )
503
       {
504
       if($card_type)    {return("${card_type}");}
505
       else                     {return("xxxx");}
506 117 jt_eaton
       }
507 120 jt_eaton
     }
508
   }
509 117 jt_eaton
 
510
 
511
 
512
 
513 120 jt_eaton
 
514
 
515
#/*********************************************************************************************/
516
#/  find_lib_sw_dir                                                                           */
517
#/                                                                                            */
518
#/  returns  library sw directory                                                             */
519
#/                                                                                            */
520
#/   my $file_lib_sw_dir = yp::lib::find_file_lib_sw_dir($vendor,$library);                   */
521
#/                                                                                            */
522
#/*********************************************************************************************/
523 117 jt_eaton
 
524 120 jt_eaton
sub find_lib_sw_dir
525
   {
526
   my @params     = @_;
527
   my $project    = pop(@params);
528
   my $vendor     = pop(@params);
529 117 jt_eaton
 
530 120 jt_eaton
   my $card_type;
531
   my $card_file_name;
532
   my $card_dir_name;
533
   my $card_vendor_path;
534
   my $card_library_path;
535
   my $card_component_path;
536
   my $card_lib_comp_sep;
537
   my $card_vendor;
538
   my $card_library;
539
   my $card_component;
540
   my $card_version;
541
   my $card_lib_sw_dir;
542
 
543
   my $parser           = XML::LibXML->new();
544
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
545 118 jt_eaton
 
546 120 jt_eaton
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
547
     {
548
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
549
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
550
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
551
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
552
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
553
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
554
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
555
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
556
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
557
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
558
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
559
     $card_lib_sw_dir    = $index_card->findnodes('../lib_sw_dir/text()')->to_literal ;
560
     if(( $card_vendor    eq "${vendor}"    ) &
561
        ( $card_library   eq "${project}"   ) &
562 124 jt_eaton
        ( $card_type      eq "socgen:libraryConfiguration"   )
563 120 jt_eaton
       )
564
       {
565
       if($card_lib_sw_dir){return("/${card_lib_sw_dir}");}
566
       }
567
     }
568
   }
569
 
570
 
571
 
572
 
573
 
574
 
575
 
576
 
577
 
578 117 jt_eaton
#/*********************************************************************************************/
579
#/  find_vendors                                                                              */
580
#/                                                                                            */
581
#/  returns  array of all vendors                                                             */
582
#/                                                                                            */
583 118 jt_eaton
#/   my @vendors = yp::lib::find_vendors($type);                                                       */
584 117 jt_eaton
#/                                                                                            */
585
#/*********************************************************************************************/
586
 
587
sub find_vendors
588
   {
589
   my @params     = @_;
590
   my $type       = pop(@params);
591
   my $card_type;
592
   my $card_file_name;
593
   my $card_dir_name;
594
   my $card_vendor_path;
595
   my $card_library_path;
596
   my $card_component_path;
597
   my $card_lib_comp_sep;
598
   my $card_vendor;
599
   my $card_library;
600
   my $card_component;
601
   my $card_version;
602
 
603
   my $parser           = XML::LibXML->new();
604
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
605
   my @vendors = ();
606
 
607
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
608
     {
609
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
610
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
611
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
612
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
613
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
614
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
615
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
616
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
617
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
618
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
619
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
620
 
621
     if($card_type eq $type){
622
     push (@vendors,$card_vendor );
623
     }
624
 
625
     }
626
   @vendors = trim_sort(@vendors);
627
   return (@vendors);
628
   }
629
 
630
 
631
 
632
#/*********************************************************************************************/
633
#/  find_libraries                                                                            */
634
#/                                                                                            */
635
#/  returns  array of all libraries from a vendor                                             */
636
#/                                                                                            */
637 118 jt_eaton
#/   my @libraries = yp::lib::find_libraries($type,$vendor);                                                 */
638 117 jt_eaton
#/                                                                                            */
639
#/*********************************************************************************************/
640
 
641
sub find_libraries
642
   {
643
   my @params     = @_;
644
   my $vendor    = pop(@params);
645
   my $type      = pop(@params);
646
   my $card_type;
647
   my $card_file_name;
648
   my $card_dir_name;
649
   my $card_vendor_path;
650
   my $card_library_path;
651
   my $card_component_path;
652
   my $card_lib_comp_sep;
653
   my $card_vendor;
654
   my $card_library;
655
   my $card_component;
656
   my $card_version;
657
 
658
   my $parser           = XML::LibXML->new();
659
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
660
   my @libraries = ();
661
 
662
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
663
     {
664
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
665
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
666
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
667
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
668
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
669
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
670
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
671
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
672
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
673
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
674
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
675
     if(($card_type eq $type)& ($card_vendor eq $vendor))  {
676
     push (@libraries,$card_library );}
677
     }
678
   @libraries = trim_sort(@libraries);
679
   return (@libraries);
680
   }
681
 
682
 
683
#/*********************************************************************************************/
684
#/  find_components                                                                           */
685
#/                                                                                            */
686
#/  returns  array of all components from a vendors library                                   */
687
#/                                                                                            */
688 118 jt_eaton
#/   my @components = yp::lib::find_components($type,$vendor,$library);                                      */
689 117 jt_eaton
#/                                                                                            */
690
#/*********************************************************************************************/
691
 
692
sub find_components
693
   {
694
   my @params     = @_;
695
   my $library    = pop(@params);
696
   my $vendor    = pop(@params);
697
   my $type      = pop(@params);
698
 
699
   my $card_type;
700
   my $card_file_name;
701
   my $card_dir_name;
702
   my $card_vendor_path;
703
   my $card_library_path;
704
   my $card_component_path;
705
   my $card_lib_comp_sep;
706
   my $card_vendor;
707
   my $card_library;
708
   my $card_component;
709
   my $card_version;
710
 
711
   my $parser           = XML::LibXML->new();
712
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
713
   my @components = ();
714
 
715
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
716
     {
717
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
718
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
719
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
720
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
721
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
722
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
723
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
724
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
725
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
726
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
727
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
728
     if(($card_type eq $type) & ($card_vendor eq $vendor) & ($card_library eq $library))
729
 
730
     {
731
     push (@components,$card_component);}
732
     }
733
   @components = trim_sort(@components);
734
   return (@components);
735
   }
736
 
737
 
738
 
739
 
740
#/*********************************************************************************************/
741
#/  find_versions                                                                             */
742
#/                                                                                            */
743
#/  returns  array of all versions from a vendors library component                           */
744
#/                                                                                            */
745 118 jt_eaton
#/   my @versions = yp::lib::find_versions($type,$vendor,$library,component);                               */
746 117 jt_eaton
#/                                                                                            */
747
#/*********************************************************************************************/
748
 
749
sub find_versions
750
   {
751
   my @params     = @_;
752
   my $component    = pop(@params);
753
   my $library    = pop(@params);
754
   my $vendor    = pop(@params);
755
   my $type     = pop(@params);
756
 
757
   my $card_type;
758
   my $card_file_name;
759
   my $card_dir_name;
760
   my $card_vendor_path;
761
   my $card_library_path;
762
   my $card_component_path;
763
   my $card_lib_comp_sep;
764
   my $card_vendor;
765
   my $card_library;
766
   my $card_component;
767
   my $card_version;
768
 
769
   my $parser           = XML::LibXML->new();
770
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
771
   my @versions = ();
772
 
773
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
774
     {
775
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
776
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
777
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
778
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
779
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
780
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
781
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
782
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
783
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
784
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
785
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
786
     if(($card_type eq $type) & ($card_vendor eq $vendor) & ($card_library eq $library) & ($card_component  eq $component))
787
 
788
     {
789
     push (@versions,$card_version);}
790
     }
791
   @versions = trim_sort(@versions);
792
   return (@versions);
793
   }
794
 
795
 
796
 
797
 
798
 
799
 
800
 
801
 
802
#/*********************************************************************************************/
803
#/  find_socgen                                                                               */
804
#/                                                                                            */
805
#/  returns full path name to socgen file                                                     */
806
#/                                                                                            */
807 125 jt_eaton
#/   my $socgen_ip_file = yp::lib::find_socgen($type,$vendor,$library,$component);            */
808 117 jt_eaton
#/                                                                                            */
809
#/*********************************************************************************************/
810
 
811
sub find_socgen
812
   {
813
   my @params     = @_;
814
   my $component  = pop(@params);
815
   my $project    = pop(@params);
816
   my $vendor     = pop(@params);
817
   my $type       = pop(@params);
818
 
819
 
820
   my $card_type;
821
   my $card_file_name;
822
   my $card_dir_name;
823
   my $card_vendor;
824
   my $card_library;
825
   my $card_component;
826
 
827
   my $parser           = XML::LibXML->new();
828
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
829
 
830
 
831
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
832
     {
833
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
834
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
835
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
836
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
837
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
838
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
839
     if(( $card_type      eq "${type}"      ) &
840
        ( $card_vendor    eq "${vendor}"    ) &
841
        ( $card_library   eq "${project}"   ) &
842
        ( $card_component eq "${component}" )
843
       )  {return("./${card_dir_name}/${card_file_name}");  }
844
     }
845
   }
846
 
847
 
848
 
849 122 jt_eaton
#/*********************************************************************************************/
850
#/  get_module_name                                                                           */
851
#/                                                                                            */
852
#/  returns module name for component                                                         */
853
#/                                                                                            */
854
#/   my $module_name = yp::lib::get_module_name($vendor,$library,$component,$version);        */
855
#/                                                                                            */
856
#/*********************************************************************************************/
857 117 jt_eaton
 
858 122 jt_eaton
sub get_module_name
859
   {
860
   my @params     = @_;
861
   my $version    = pop(@params);
862
   my $component  = pop(@params);
863 125 jt_eaton
   my $library    = pop(@params);
864 122 jt_eaton
   my $vendor     = pop(@params);
865
 
866 125 jt_eaton
   my $name_depth =2;
867 122 jt_eaton
 
868 125 jt_eaton
 
869
 
870
   my $parser     = XML::LibXML->new();
871
 
872
   my $socgen_component_file  = $parser->parse_file(yp::lib::find_socgen("socgen:componentConfiguration",$vendor,$library,$component));
873
 
874
   foreach my $new_comp ($socgen_component_file->findnodes("//socgen:componentConfiguration"))
875
     {
876
 
877
     $name_depth        = $new_comp->findnodes('./socgen:ip_name_depth/text()')->to_literal ;
878
 
879
     }
880 127 jt_eaton
  if($name_depth eq "0"){   return("${library}");}
881 125 jt_eaton
  if($name_depth eq "1"){   return("${component}");}
882
  if($name_depth eq "2"){   return("${component}_${version}");}
883
  if($name_depth eq "3"){   return("${library}_${component}_${version}");}
884
  if($name_depth eq "4"){   return("${vendor}_${library}_${component}_${version}");}
885 122 jt_eaton
 
886
   }
887
 
888
 
889
 
890
 
891 117 jt_eaton
sub trim_sort {
892
   my @output_files  = @_;
893
   my %trim = ();
894
   foreach my $descriptor (@output_files) { $trim{$descriptor}  = 1; }
895
   my @k = keys %trim;
896
   @output_files =  sort(sort @k);
897
   return(@output_files);
898
   }
899
 
900 125 jt_eaton
#/*********************************************************************************************/
901
#/  parse_component_file                                                                      */
902
#/                                                                                            */
903
#/  returns design names for component                                                        */
904
#/                                                                                            */
905
#/   my @filelist = yp::lib::parse_component_file($vendor,$library,$component,$version);      */
906
#/                                                                                            */
907
#/*********************************************************************************************/
908 117 jt_eaton
 
909
 
910
 
911 125 jt_eaton
sub parse_component_file
912
   {
913
   my @params     = @_;
914
   my $version    = pop(@params);
915
   my $component  = pop(@params);
916
   my $library    = pop(@params);
917
   my $vendor     = pop(@params);
918
 
919
   my $parser     = XML::LibXML->new();
920
 
921
 
922
   my $spirit_cmp_filename =yp::lib::find_ipxact("spirit:component",$vendor,$library,$component,$version );
923
 
924
   unless($spirit_cmp_filename)
925
      {
926 126 jt_eaton
      print("spirit:component MISSING   $vendor,$library,$component,$version \n");
927 125 jt_eaton
      }
928
 
929 126 jt_eaton
 
930 125 jt_eaton
   my $spirit_component_file  = $parser->parse_file(yp::lib::find_ipxact("spirit:component",$vendor,$library,$component,$version ));
931
 
932
 
933
   my $line;
934
 
935
   my      @filelist_acc = (  );
936
   push(@filelist_acc,"::${vendor}::${library}::${component}::${version}::");
937
 
938
   foreach my $new_comp ($spirit_component_file->findnodes("//spirit:component/spirit:model/spirit:views/spirit:view/spirit:vendorExtensions/spirit:componentRef"))
939
     {
940
     my($new_vendor)        = $new_comp->findnodes('./@spirit:vendor')->to_literal ;
941
     my($new_library)       = $new_comp->findnodes('./@spirit:library')->to_literal ;
942
     my($new_name)          = $new_comp->findnodes('./@spirit:name')->to_literal ;
943
     my($new_version)       = $new_comp->findnodes('./@spirit:version')->to_literal ;
944
     my $hier_ref_type      = yp::lib::find_file_type($new_vendor,$new_library,$new_name,$new_version) ;
945 128 jt_eaton
     my @filelist_sub       = parse_component_fileX($new_vendor,$new_library,$new_name,$new_version);
946 125 jt_eaton
                              foreach $line (@filelist_sub) { push(@filelist_acc,"$line"); }
947
     }
948
 
949
   foreach my $new_comp ($spirit_component_file->findnodes("//spirit:component/spirit:model/spirit:views/spirit:view/spirit:hierarchyRef"))
950
     {
951
     my($new_vendor)        = $new_comp->findnodes('./@spirit:vendor')->to_literal ;
952
     my($new_library)       = $new_comp->findnodes('./@spirit:library')->to_literal ;
953
     my($new_name)          = $new_comp->findnodes('./@spirit:name')->to_literal ;
954
     my($new_version)       = $new_comp->findnodes('./@spirit:version')->to_literal ;
955
     my $hier_ref_type      = yp::lib::find_file_type($new_vendor,$new_library,$new_name,$new_version) ;
956
 
957
     if($hier_ref_type eq "spirit:designConfiguration")
958
        {
959
        my $spirit_designCfg_file
960
        = $parser->parse_file(yp::lib::find_ipxact("spirit:designConfiguration",$new_vendor,$new_library,$new_name,$new_version ));
961
 
962
        foreach my $design_ref_view ($spirit_designCfg_file->findnodes('//spirit:designConfiguration'))
963
            {
964
            $new_vendor         = $design_ref_view->findnodes('./spirit:designRef/@spirit:vendor')->to_literal ;
965
            $new_library        = $design_ref_view->findnodes('./spirit:designRef/@spirit:library')->to_literal ;
966
            $new_name           = $design_ref_view->findnodes('./spirit:designRef/@spirit:name')->to_literal ;
967
            $new_version        = $design_ref_view->findnodes('./spirit:designRef/@spirit:version')->to_literal ;
968
            $hier_ref_type                ="spirit:design";
969
            }
970
        }
971
 
972
        if($hier_ref_type eq "spirit:design")
973
           {
974
           my $spirit_design_file = $parser->parse_file(yp::lib::find_ipxact("spirit:design",$new_vendor,$new_library,$new_name,$new_version ));
975
           if($spirit_design_file)
976
             {
977 128 jt_eaton
 
978
 
979 125 jt_eaton
             foreach  my   $i_name ($spirit_design_file->findnodes("//spirit:design/spirit:componentInstances/spirit:componentInstance/spirit:componentRef/\@spirit:vendor"))
980
                {
981
                my($vendor_name)         = $i_name  ->to_literal ;
982
                my($library_name)        = $i_name  ->findnodes('../@spirit:library')->to_literal ;
983
                my($component_name)      = $i_name  ->findnodes('../@spirit:name')->to_literal ;
984
                my($version_name)        = $i_name  ->findnodes('../@spirit:version')->to_literal ;
985
 
986
                push(@filelist_acc,"::${vendor_name}::${library_name}::${component_name}::${version_name}::");
987 128 jt_eaton
                my  @filelist_sub = parse_component_fileX($vendor_name,$library_name,$component_name,$version_name);
988 125 jt_eaton
                  foreach $line (@filelist_sub) { push(@filelist_acc,"$line"); }
989
                }
990
           }
991
        }
992
     }
993
 
994
   @filelist_acc     =       sys::lib::trim_sort(@filelist_acc);
995
   return(@filelist_acc);
996
}
997
 
998
 
999
 
1000
 
1001
 
1002 128 jt_eaton
sub parse_component_fileX
1003
   {
1004
   my @params     = @_;
1005
   my $version    = pop(@params);
1006
   my $component  = pop(@params);
1007
   my $library    = pop(@params);
1008
   my $vendor     = pop(@params);
1009 125 jt_eaton
 
1010 128 jt_eaton
   my $parser     = XML::LibXML->new();
1011 125 jt_eaton
 
1012 128 jt_eaton
 
1013
   my $spirit_cmp_filename =yp::lib::find_ipxact("spirit:component",$vendor,$library,$component,$version );
1014
 
1015
   unless($spirit_cmp_filename)
1016
      {
1017
      print("spirit:component MISSING   $vendor,$library,$component,$version \n");
1018
      }
1019
 
1020
 
1021
   my $spirit_component_file  = $parser->parse_file(yp::lib::find_ipxact("spirit:component",$vendor,$library,$component,$version ));
1022
 
1023
 
1024
   my $line;
1025
 
1026
   my      @filelist_acc = (  );
1027
#   push(@filelist_acc,"::${vendor}::${library}::${component}::${version}::");
1028
 
1029
   foreach my $new_comp ($spirit_component_file->findnodes("//spirit:component/spirit:model/spirit:views/spirit:view/spirit:vendorExtensions/spirit:componentRef"))
1030
     {
1031
     my($new_vendor)        = $new_comp->findnodes('./@spirit:vendor')->to_literal ;
1032
     my($new_library)       = $new_comp->findnodes('./@spirit:library')->to_literal ;
1033
     my($new_name)          = $new_comp->findnodes('./@spirit:name')->to_literal ;
1034
     my($new_version)       = $new_comp->findnodes('./@spirit:version')->to_literal ;
1035
     my $hier_ref_type      = yp::lib::find_file_type($new_vendor,$new_library,$new_name,$new_version) ;
1036
     my @filelist_sub       = parse_component_fileX($new_vendor,$new_library,$new_name,$new_version);
1037
                              foreach $line (@filelist_sub) { push(@filelist_acc,"$line"); }
1038
     }
1039
 
1040
   foreach my $new_comp ($spirit_component_file->findnodes("//spirit:component/spirit:model/spirit:views/spirit:view/spirit:hierarchyRef"))
1041
     {
1042
     my($new_vendor)        = $new_comp->findnodes('./@spirit:vendor')->to_literal ;
1043
     my($new_library)       = $new_comp->findnodes('./@spirit:library')->to_literal ;
1044
     my($new_name)          = $new_comp->findnodes('./@spirit:name')->to_literal ;
1045
     my($new_version)       = $new_comp->findnodes('./@spirit:version')->to_literal ;
1046
     my $hier_ref_type      = yp::lib::find_file_type($new_vendor,$new_library,$new_name,$new_version) ;
1047
 
1048
     if($hier_ref_type eq "spirit:designConfiguration")
1049
        {
1050
        my $spirit_designCfg_file
1051
        = $parser->parse_file(yp::lib::find_ipxact("spirit:designConfiguration",$new_vendor,$new_library,$new_name,$new_version ));
1052
 
1053
        foreach my $design_ref_view ($spirit_designCfg_file->findnodes('//spirit:designConfiguration'))
1054
            {
1055
            $new_vendor         = $design_ref_view->findnodes('./spirit:designRef/@spirit:vendor')->to_literal ;
1056
            $new_library        = $design_ref_view->findnodes('./spirit:designRef/@spirit:library')->to_literal ;
1057
            $new_name           = $design_ref_view->findnodes('./spirit:designRef/@spirit:name')->to_literal ;
1058
            $new_version        = $design_ref_view->findnodes('./spirit:designRef/@spirit:version')->to_literal ;
1059
            $hier_ref_type                ="spirit:design";
1060
            }
1061
        }
1062
 
1063
        if($hier_ref_type eq "spirit:design")
1064
           {
1065
           my $spirit_design_file = $parser->parse_file(yp::lib::find_ipxact("spirit:design",$new_vendor,$new_library,$new_name,$new_version ));
1066
           if($spirit_design_file)
1067
             {
1068
 
1069
 
1070
             foreach  my   $i_name ($spirit_design_file->findnodes("//spirit:design/spirit:componentInstances/spirit:componentInstance/spirit:componentRef/\@spirit:vendor"))
1071
                {
1072
                my($vendor_name)         = $i_name  ->to_literal ;
1073
                my($library_name)        = $i_name  ->findnodes('../@spirit:library')->to_literal ;
1074
                my($component_name)      = $i_name  ->findnodes('../@spirit:name')->to_literal ;
1075
                my($version_name)        = $i_name  ->findnodes('../@spirit:version')->to_literal ;
1076
 
1077
                push(@filelist_acc,"::${vendor_name}::${library_name}::${component_name}::${version_name}::");
1078
                my  @filelist_sub = parse_component_fileX($vendor_name,$library_name,$component_name,$version_name);
1079
                  foreach $line (@filelist_sub) { push(@filelist_acc,"$line"); }
1080
                }
1081
           }
1082
        }
1083
     }
1084
 
1085
   @filelist_acc     =       sys::lib::trim_sort(@filelist_acc);
1086
   return(@filelist_acc);
1087
}
1088
 
1089
 
1090
 
1091
 
1092
 
1093
 
1094
#/*********************************************************************************************/
1095
#/  parse_component_brothers                                                                  */
1096
#/                                                                                            */
1097
#/  returns names for component brothers                                                      */
1098
#/                                                                                            */
1099
#/   my @filelist = yp::lib::parse_component_brother($vendor,$library,$component,$version);   */
1100
#/                                                                                            */
1101
#/*********************************************************************************************/
1102
 
1103
 
1104
 
1105
sub parse_component_brothers
1106
   {
1107
   my @params     = @_;
1108
   my $version    = pop(@params);
1109
   my $component  = pop(@params);
1110
   my $library    = pop(@params);
1111
   my $vendor     = pop(@params);
1112
 
1113
   my $parser     = XML::LibXML->new();
1114
 
1115
 
1116
   my $spirit_cmp_filename =yp::lib::find_ipxact("spirit:component",$vendor,$library,$component,$version );
1117
 
1118
   unless($spirit_cmp_filename)
1119
      {
1120
      print("spirit:component MISSING   $vendor,$library,$component,$version \n");
1121
      }
1122
 
1123
 
1124
   my $spirit_component_file  = $parser->parse_file(yp::lib::find_ipxact("spirit:component",$vendor,$library,$component,$version ));
1125
 
1126
 
1127
   my $line;
1128
 
1129
   my      @filelist_acc = (  );
1130
   push(@filelist_acc,"::${vendor}::${library}::${component}::${version}::");
1131
 
1132
   foreach my $new_comp ($spirit_component_file->findnodes("//spirit:component/spirit:model/spirit:views/spirit:view/spirit:vendorExtensions/spirit:componentRef"))
1133
     {
1134
     my($new_vendor)        = $new_comp->findnodes('./@spirit:vendor')->to_literal ;
1135
     my($new_library)       = $new_comp->findnodes('./@spirit:library')->to_literal ;
1136
     my($new_component)     = $new_comp->findnodes('./@spirit:name')->to_literal ;
1137
     my($new_version)       = $new_comp->findnodes('./@spirit:version')->to_literal ;
1138
     push(@filelist_acc,"::${new_vendor}::${new_library}::${new_component}::${new_version}::");
1139
     }
1140
 
1141
 
1142
   return(@filelist_acc);
1143
}
1144
 
1145
 
1146
 
1147
 
1148
 
1149
 
1150
 
1151 125 jt_eaton
#/*****************************************************************************************************/
1152
#/  find_ipxact_design_files                                                                          */
1153
#/                                                                                                    */
1154
#/  returns parser tokens  to ip-xact design files referred to by component file vlnv                 */
1155
#/                                                                                                    */
1156
#/  my @spirit_design_files = yp::lib::find_ipxact_design_file($vendor,$library,$component,$version);  */
1157
#/                                                                                                    */
1158
#/*****************************************************************************************************/
1159
 
1160
sub find_ipxact_design_files
1161
   {
1162
   my @params     = @_;
1163
   my $version    = pop(@params);
1164
   my $component  = pop(@params);
1165
   my $project    = pop(@params);
1166
   my $vendor     = pop(@params);
1167
 
1168
 
1169
   my $card_type;
1170
   my $card_file_name;
1171
   my $card_dir_name;
1172
   my $card_vendor;
1173
   my $card_library;
1174
   my $card_component;
1175
   my $card_version;
1176
 
1177
   my @design_files = ();
1178
 
1179
   my $parser           = XML::LibXML->new();
1180
   my $yp_index_file    = $parser->parse_file("./tools/yp/hier_index.xml");
1181
 
1182
   unless (yp::lib::find_ipxact("spirit:component",$vendor,$project,$component,$version)){print "Missing Component  $vendor, $project, $component, $version \n";  }
1183
 
1184
   my $spirit_component_file    = $parser->parse_file(yp::lib::find_ipxact("spirit:component",$vendor,$project,$component,$version));
1185
 
1186
 
1187
   foreach my $new_comp ($spirit_component_file->findnodes("//spirit:component/spirit:model/spirit:views/spirit:view/spirit:vendorExtensions/spirit:componentRef"))
1188
     {
1189
     my($new_vendor)        = $new_comp->findnodes('./@spirit:vendor')->to_literal ;
1190
     my($new_library)       = $new_comp->findnodes('./@spirit:library')->to_literal ;
1191
     my($new_name)          = $new_comp->findnodes('./@spirit:name')->to_literal ;
1192
     my($new_version)       = $new_comp->findnodes('./@spirit:version')->to_literal ;
1193
     my @filelist_sub       = yp::lib::find_ipxact_design_files($new_vendor,$new_library,$new_name,$new_version);
1194
                              foreach my $line (@filelist_sub) { push(@design_files,"$line"); }
1195
     }
1196
 
1197
 
1198
 
1199
 
1200
   foreach my $comp_view ($spirit_component_file->findnodes('//spirit:component/spirit:model/spirit:views/spirit:view'))
1201
      {
1202
      my($hier_ref_vendor)         = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:vendor')->to_literal ;
1203
      my($hier_ref_library)        = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:library')->to_literal ;
1204
      my($hier_ref_component)      = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:name')->to_literal ;
1205
      my($hier_ref_version)        = $comp_view->findnodes('./spirit:hierarchyRef/@spirit:version')->to_literal ;
1206
 
1207
 
1208
 
1209
      if(yp::lib::find_ipxact("spirit:designConfiguration",$hier_ref_vendor,$hier_ref_library,$hier_ref_component,$hier_ref_version ))
1210
      {
1211
 
1212
      my $spirit_designCfg_file
1213
       = $parser->parse_file(yp::lib::find_ipxact("spirit:designConfiguration",$hier_ref_vendor,$hier_ref_library,$hier_ref_component,$hier_ref_version ));
1214
 
1215
      foreach my $design_ref_view ($spirit_designCfg_file->findnodes('//spirit:designConfiguration'))
1216
         {
1217
         ($hier_ref_vendor)         = $design_ref_view->findnodes('./spirit:designRef/@spirit:vendor')->to_literal ;
1218
         ($hier_ref_library)        = $design_ref_view->findnodes('./spirit:designRef/@spirit:library')->to_literal ;
1219
         ($hier_ref_component)      = $design_ref_view->findnodes('./spirit:designRef/@spirit:name')->to_literal ;
1220
         ($hier_ref_version)        = $design_ref_view->findnodes('./spirit:designRef/@spirit:version')->to_literal ;
1221
         }
1222
      }
1223
 
1224
 
1225
 
1226
 
1227
         foreach  my   $index_card ($yp_index_file->findnodes("//socgen:file_types/socgen:file_type[socgen:name/text() = 'spirit:design']/socgen:vendors/socgen:vendor[socgen:name/text() = '$hier_ref_vendor']/socgen:libraries/socgen:library[socgen:name/text() = '$hier_ref_library']/socgen:components/socgen:component[socgen:name/text() = '$hier_ref_component']/socgen:versions/socgen:version[socgen:name/text() = '$hier_ref_version']"))
1228
           {
1229
           push(@design_files,":::${hier_ref_vendor}:::${hier_ref_library}:::${hier_ref_component}:::${hier_ref_version}:::");
1230
           };
1231
 
1232
 
1233
      }
1234
     return(@design_files);
1235
   }
1236
 
1237
 
1238
 
1239
 
1240
 
1241
 
1242
 
1243 117 jt_eaton
1;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.