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

Subversion Repositories socgen

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

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
#/*********************************************************************************************/
54
#/  find_ipxact                                                                               */
55
#/                                                                                            */
56
#/  returns full path name to ip-xact file                                                    */
57
#/                                                                                            */
58
#/   my $full_path = find_ipxact($type,$vendor,$library,$component,$version);                 */
59
#/                                                                                            */
60
#/*********************************************************************************************/
61
 
62
sub find_ipxact
63
   {
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
   my $card_type;
73
   my $card_file_name;
74
   my $card_dir_name;
75
   my $card_vendor;
76
   my $card_library;
77
   my $card_component;
78
   my $card_version;
79
 
80
   my $parser           = XML::LibXML->new();
81
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
82
 
83
 
84
 
85
 
86
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
87
     {
88
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
89
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
90
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
91
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
92
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
93
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
94
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
95
     if(( $card_type      eq "${type}"      ) &
96
        ( $card_vendor    eq "${vendor}"    ) &
97
        ( $card_library   eq "${project}"   ) &
98
        ( $card_component eq "${component}" ) &
99
        ( $card_version   eq "${version}"   )
100
       )  {return("./${card_dir_name}/${card_file_name}");  }
101
     }
102
   }
103
 
104
 
105
 
106
#/*********************************************************************************************/
107
#/  find_ipxact_file                                                                          */
108
#/                                                                                            */
109
#/  returns local name of the ip-xact file                                                    */
110
#/                                                                                            */
111
#/   my $file_name = find_ipxact_file($type,$vendor,$library,$component,$version);            */
112
#/                                                                                            */
113
#/*********************************************************************************************/
114
 
115
sub find_ipxact_file
116
   {
117
   my @params     = @_;
118
   my $version    = pop(@params);
119
   my $component  = pop(@params);
120
   my $project    = pop(@params);
121
   my $vendor     = pop(@params);
122
   my $type       = pop(@params);
123
 
124
 
125
   my $card_type;
126
   my $card_file_name;
127
   my $card_dir_name;
128
   my $card_vendor;
129
   my $card_library;
130
   my $card_component;
131
   my $card_version;
132
 
133
   my $parser           = XML::LibXML->new();
134
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
135
 
136
 
137
 
138
 
139
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
140
     {
141
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
142
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
143
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
144
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
145
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
146
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
147
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
148
     if(( $card_type      eq "${type}"      ) &
149
        ( $card_vendor    eq "${vendor}"    ) &
150
        ( $card_library   eq "${project}"   ) &
151
        ( $card_component eq "${component}" ) &
152
        ( $card_version   eq "${version}"   )
153
       )  {return("${card_file_name}");  }
154
     }
155
   }
156
 
157
 
158
 
159
#/*********************************************************************************************/
160
#/  find_ipxact_full_path                                                                     */
161
#/                                                                                            */
162
#/  returns  path to ip-xact directory from top level                                         */
163
#/   my $full_path = find_ipxact($type,$vendor,$library,$component,$version);                 */
164
#/                                                                                            */
165
#/*********************************************************************************************/
166
 
167
sub find_ipxact_full_path
168
   {
169
   my @params     = @_;
170
   my $version    = pop(@params);
171
   my $component  = pop(@params);
172
   my $project    = pop(@params);
173
   my $vendor     = pop(@params);
174
   my $type       = pop(@params);
175
 
176
 
177
   my $card_type;
178
   my $card_file_name;
179
   my $card_dir_name;
180
   my $card_vendor_path;
181
   my $card_library_path;
182
   my $card_component_path;
183
   my $card_vendor;
184
   my $card_library;
185
   my $card_component;
186
   my $card_version;
187
 
188
   my $parser           = XML::LibXML->new();
189
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
190
 
191
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
192
     {
193
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
194
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
195
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
196
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
197
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
198
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
199
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
200
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
201
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
202
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
203
     if(( $card_type      eq "${type}"      ) &
204
        ( $card_vendor    eq "${vendor}"    ) &
205
        ( $card_library   eq "${project}"   ) &
206
        ( $card_component eq "${component}" ) &
207
        ( $card_version   eq "${version}"   )
208
       )
209
 
210
       {return("${card_dir_name}");  }
211
     }
212
   }
213
 
214
 
215
 
216
 
217
 
218
 
219
 
220
 
221
#/*********************************************************************************************/
222
#/  find_ipxact_vendor_path                                                                   */
223
#/                                                                                            */
224
#/  returns  path to ip-xact directory from vendor level                                      */
225
#/  The ip-xact file MUST be stored under a subdirectory that matches the vendor name         */
226
#/   my $full_path = find_ipxact($type,$vendor,$library,$component,$version);                 */
227
#/                                                                                            */
228
#/*********************************************************************************************/
229
 
230
sub find_ipxact_vendor_path
231
   {
232
   my @params     = @_;
233
   my $version    = pop(@params);
234
   my $component  = pop(@params);
235
   my $project    = pop(@params);
236
   my $vendor     = pop(@params);
237
   my $type       = pop(@params);
238
 
239
 
240
   my $card_type;
241
   my $card_file_name;
242
   my $card_dir_name;
243
   my $card_vendor_path;
244
   my $card_library_path;
245
   my $card_component_path;
246
   my $card_vendor;
247
   my $card_library;
248
   my $card_component;
249
   my $card_version;
250
 
251
   my $parser           = XML::LibXML->new();
252
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
253
 
254
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
255
     {
256
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
257
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
258
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
259
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
260
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
261
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
262
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
263
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
264
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
265
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
266
     if(( $card_type      eq "${type}"      ) &
267
        ( $card_vendor    eq "${vendor}"    ) &
268
        ( $card_library   eq "${project}"   ) &
269
        ( $card_component eq "${component}" ) &
270
        ( $card_version   eq "${version}"   )
271
       )
272
 
273
       {return("/${card_vendor_path}");  }
274
     }
275
   }
276
 
277
 
278
 
279
 
280
#/*********************************************************************************************/
281
#/  find_ipxact_library_path                                                                  */
282
#/                                                                                            */
283
#/  returns  path to ip-xact directory from library level                                     */
284
#/  The ip-xact file MUST be stored under a subdirectory that matches the library name        */
285
#/   my $full_path = find_ipxact($type,$vendor,$library,$component,$version);                 */
286
#/                                                                                            */
287
#/*********************************************************************************************/
288
 
289
sub find_ipxact_library_path
290
   {
291
   my @params     = @_;
292
   my $version    = pop(@params);
293
   my $component  = pop(@params);
294
   my $project    = pop(@params);
295
   my $vendor     = pop(@params);
296
   my $type       = pop(@params);
297
 
298
 
299
   my $card_type;
300
   my $card_file_name;
301
   my $card_dir_name;
302
   my $card_vendor_path;
303
   my $card_library_path;
304
   my $card_component_path;
305
   my $card_vendor;
306
   my $card_library;
307
   my $card_component;
308
   my $card_version;
309
 
310
   my $parser           = XML::LibXML->new();
311
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
312
 
313
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
314
     {
315
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
316
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
317
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
318
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
319
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
320
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
321
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
322
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
323
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
324
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
325
     if(( $card_type      eq "${type}"      ) &
326
        ( $card_vendor    eq "${vendor}"    ) &
327
        ( $card_library   eq "${project}"   ) &
328
        ( $card_component eq "${component}" ) &
329
        ( $card_version   eq "${version}"   )
330
       )
331
 
332
       {return("/${card_library_path}");  }
333
     }
334
   }
335
 
336
 
337
#/*********************************************************************************************/
338
#/  find_ipxact_component_path                                                                */
339
#/                                                                                            */
340
#/  returns  path to ip-xact directory from component level                                   */
341
#/  The ip-xact file MUST be stored under a subdirectory that matches the component name      */
342
#/   my $full_path = find_ipxact($type,$vendor,$library,$component,$version);                 */
343
#/                                                                                            */
344
#/*********************************************************************************************/
345
 
346
sub find_ipxact_component_path
347
   {
348
   my @params     = @_;
349
   my $version    = pop(@params);
350
   my $component  = pop(@params);
351
   my $project    = pop(@params);
352
   my $vendor     = pop(@params);
353
   my $type       = pop(@params);
354
 
355
 
356
   my $card_type;
357
   my $card_file_name;
358
   my $card_dir_name;
359
   my $card_vendor_path;
360
   my $card_library_path;
361
   my $card_component_path;
362
   my $card_vendor;
363
   my $card_library;
364
   my $card_component;
365
   my $card_version;
366
 
367
   my $parser           = XML::LibXML->new();
368
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
369
 
370
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
371
     {
372
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
373
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
374
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
375
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
376
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
377
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
378
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
379
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
380
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
381
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
382
     if(( $card_type      eq "${type}"      ) &
383
        ( $card_vendor    eq "${vendor}"    ) &
384
        ( $card_library   eq "${project}"   ) &
385
        ( $card_component eq "${component}" ) &
386
        ( $card_version   eq "${version}"   )
387
       )
388
 
389
       {return("/${card_component_path}");  }
390
     }
391
   }
392
 
393
 
394
 
395
 
396
#/*********************************************************************************************/
397
#/  find_lib_comp_sep                                                                         */
398
#/                                                                                            */
399
#/  returns  path to the component from library level                                         */
400
#/  The file MUST be stored under a subdirectory that matches the component name              */
401
#/   my $full_path = find_lib_comp_sep($vendor,$library);                                     */
402
#/                                                                                            */
403
#/*********************************************************************************************/
404
 
405
sub find_lib_comp_sep
406
   {
407
   my @params     = @_;
408
   my $project    = pop(@params);
409
   my $vendor     = pop(@params);
410
 
411
 
412
 
413
   my $card_type;
414
   my $card_file_name;
415
   my $card_dir_name;
416
   my $card_vendor_path;
417
   my $card_library_path;
418
   my $card_component_path;
419
   my $card_lib_comp_sep;
420
   my $card_vendor;
421
   my $card_library;
422
   my $card_component;
423
   my $card_version;
424
 
425
   my $parser           = XML::LibXML->new();
426
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
427
 
428
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
429
     {
430
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
431
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
432
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
433
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
434
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
435
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
436
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
437
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
438
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
439
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
440
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
441
     if(( $card_vendor    eq "${vendor}"    ) &
442
        ( $card_library   eq "${project}"   )
443
       )
444
       {
445
       if($card_lib_comp_sep)   {return("/${card_lib_comp_sep}");}
446
       else                     {return("");}
447
 
448
       }
449
 
450
 
451
 
452
 
453
     }
454
   }
455
 
456
 
457
 
458
 
459
 
460
#/*********************************************************************************************/
461
#/  find_vendors                                                                              */
462
#/                                                                                            */
463
#/  returns  array of all vendors                                                             */
464
#/                                                                                            */
465
#/   my @vendors = find_vendors($type);                                                       */
466
#/                                                                                            */
467
#/*********************************************************************************************/
468
 
469
sub find_vendors
470
   {
471
   my @params     = @_;
472
   my $type       = pop(@params);
473
   my $card_type;
474
   my $card_file_name;
475
   my $card_dir_name;
476
   my $card_vendor_path;
477
   my $card_library_path;
478
   my $card_component_path;
479
   my $card_lib_comp_sep;
480
   my $card_vendor;
481
   my $card_library;
482
   my $card_component;
483
   my $card_version;
484
 
485
   my $parser           = XML::LibXML->new();
486
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
487
   my @vendors = ();
488
 
489
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
490
     {
491
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
492
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
493
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
494
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
495
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
496
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
497
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
498
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
499
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
500
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
501
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
502
 
503
     if($card_type eq $type){
504
     push (@vendors,$card_vendor );
505
     }
506
 
507
     }
508
   @vendors = trim_sort(@vendors);
509
   return (@vendors);
510
   }
511
 
512
 
513
 
514
#/*********************************************************************************************/
515
#/  find_libraries                                                                            */
516
#/                                                                                            */
517
#/  returns  array of all libraries from a vendor                                             */
518
#/                                                                                            */
519
#/   my @libraries = find_libraries($type,$vendor);                                                 */
520
#/                                                                                            */
521
#/*********************************************************************************************/
522
 
523
sub find_libraries
524
   {
525
   my @params     = @_;
526
   my $vendor    = pop(@params);
527
   my $type      = pop(@params);
528
   my $card_type;
529
   my $card_file_name;
530
   my $card_dir_name;
531
   my $card_vendor_path;
532
   my $card_library_path;
533
   my $card_component_path;
534
   my $card_lib_comp_sep;
535
   my $card_vendor;
536
   my $card_library;
537
   my $card_component;
538
   my $card_version;
539
 
540
   my $parser           = XML::LibXML->new();
541
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
542
   my @libraries = ();
543
 
544
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
545
     {
546
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
547
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
548
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
549
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
550
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
551
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
552
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
553
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
554
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
555
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
556
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
557
     if(($card_type eq $type)& ($card_vendor eq $vendor))  {
558
     push (@libraries,$card_library );}
559
     }
560
   @libraries = trim_sort(@libraries);
561
   return (@libraries);
562
   }
563
 
564
 
565
#/*********************************************************************************************/
566
#/  find_components                                                                           */
567
#/                                                                                            */
568
#/  returns  array of all components from a vendors library                                   */
569
#/                                                                                            */
570
#/   my @components = find_components($type,$vendor,$library);                                      */
571
#/                                                                                            */
572
#/*********************************************************************************************/
573
 
574
sub find_components
575
   {
576
   my @params     = @_;
577
   my $library    = pop(@params);
578
   my $vendor    = pop(@params);
579
   my $type      = pop(@params);
580
 
581
   my $card_type;
582
   my $card_file_name;
583
   my $card_dir_name;
584
   my $card_vendor_path;
585
   my $card_library_path;
586
   my $card_component_path;
587
   my $card_lib_comp_sep;
588
   my $card_vendor;
589
   my $card_library;
590
   my $card_component;
591
   my $card_version;
592
 
593
   my $parser           = XML::LibXML->new();
594
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
595
   my @components = ();
596
 
597
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
598
     {
599
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
600
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
601
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
602
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
603
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
604
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
605
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
606
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
607
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
608
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
609
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
610
     if(($card_type eq $type) & ($card_vendor eq $vendor) & ($card_library eq $library))
611
 
612
     {
613
     push (@components,$card_component);}
614
     }
615
   @components = trim_sort(@components);
616
   return (@components);
617
   }
618
 
619
 
620
 
621
 
622
#/*********************************************************************************************/
623
#/  find_versions                                                                             */
624
#/                                                                                            */
625
#/  returns  array of all versions from a vendors library component                           */
626
#/                                                                                            */
627
#/   my @versions = find_versions($type,$vendor,$library,component);                               */
628
#/                                                                                            */
629
#/*********************************************************************************************/
630
 
631
sub find_versions
632
   {
633
   my @params     = @_;
634
   my $component    = pop(@params);
635
   my $library    = pop(@params);
636
   my $vendor    = pop(@params);
637
   my $type     = pop(@params);
638
 
639
   my $card_type;
640
   my $card_file_name;
641
   my $card_dir_name;
642
   my $card_vendor_path;
643
   my $card_library_path;
644
   my $card_component_path;
645
   my $card_lib_comp_sep;
646
   my $card_vendor;
647
   my $card_library;
648
   my $card_component;
649
   my $card_version;
650
 
651
   my $parser           = XML::LibXML->new();
652
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
653
   my @versions = ();
654
 
655
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
656
     {
657
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
658
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
659
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
660
     $card_vendor_path   = $index_card->findnodes('../vendor_path/text()')->to_literal ;
661
     $card_component_path= $index_card->findnodes('../component_path/text()')->to_literal ;
662
     $card_library_path  = $index_card->findnodes('../library_path/text()')->to_literal ;
663
     $card_lib_comp_sep  = $index_card->findnodes('../lib_comp_sep/text()')->to_literal ;
664
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
665
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
666
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
667
     $card_version       = $index_card->findnodes('../version/text()')->to_literal ;
668
     if(($card_type eq $type) & ($card_vendor eq $vendor) & ($card_library eq $library) & ($card_component  eq $component))
669
 
670
     {
671
     push (@versions,$card_version);}
672
     }
673
   @versions = trim_sort(@versions);
674
   return (@versions);
675
   }
676
 
677
 
678
 
679
 
680
 
681
 
682
 
683
 
684
#/*********************************************************************************************/
685
#/  find_socgen                                                                               */
686
#/                                                                                            */
687
#/  returns full path name to socgen file                                                     */
688
#/                                                                                            */
689
#/   my $full_path = find_socgen($type,$vendor,$library,$component);                          */
690
#/                                                                                            */
691
#/*********************************************************************************************/
692
 
693
sub find_socgen
694
   {
695
   my @params     = @_;
696
   my $component  = pop(@params);
697
   my $project    = pop(@params);
698
   my $vendor     = pop(@params);
699
   my $type       = pop(@params);
700
 
701
 
702
   my $card_type;
703
   my $card_file_name;
704
   my $card_dir_name;
705
   my $card_vendor;
706
   my $card_library;
707
   my $card_component;
708
 
709
   my $parser           = XML::LibXML->new();
710
   my $yp_index_file    = $parser->parse_file("./tools/yp/index.xml");
711
 
712
 
713
   foreach my $index_card  ($yp_index_file->findnodes('//socgen:index_file/index_card/type'))
714
     {
715
     $card_type          = $index_card->findnodes('./text()')->to_literal ;
716
     $card_file_name     = $index_card->findnodes('../file_name/text()')->to_literal ;
717
     $card_dir_name      = $index_card->findnodes('../dir_name/text()')->to_literal ;
718
     $card_vendor        = $index_card->findnodes('../vendor/text()')->to_literal ;
719
     $card_library       = $index_card->findnodes('../library/text()')->to_literal ;
720
     $card_component     = $index_card->findnodes('../name/text()')->to_literal ;
721
     if(( $card_type      eq "${type}"      ) &
722
        ( $card_vendor    eq "${vendor}"    ) &
723
        ( $card_library   eq "${project}"   ) &
724
        ( $card_component eq "${component}" )
725
       )  {return("./${card_dir_name}/${card_file_name}");  }
726
     }
727
   }
728
 
729
 
730
 
731
 
732
sub trim_sort {
733
   my @output_files  = @_;
734
   my %trim = ();
735
   foreach my $descriptor (@output_files) { $trim{$descriptor}  = 1; }
736
   my @k = keys %trim;
737
   @output_files =  sort(sort @k);
738
   return(@output_files);
739
   }
740
 
741
 
742
 
743
 
744
 
745
 
746
 
747
 
748
 
749
1;

powered by: WebSVN 2.1.0

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