File Coverage

blib/lib/Verilog/Netlist/Subclass.pm
Criterion Covered Total %
statement 761 1113 68.3
branch 599 1194 50.1
condition 60 262 22.9
subroutine 144 204 70.5
pod 7 17 41.1
total 1571 2790 56.3


line stmt bran cond sub pod time code
1             # Verilog - Verilog Perl Interface
2             # See copyright, etc in below POD section.
3             ######################################################################
4              
5             package Verilog::Netlist::Subclass;
6 8     8   43 use Scalar::Util qw(weaken);
  8         12  
  8         429  
7 8     8   38 use Carp;
  8         12  
  8         301  
8              
9 8     8   2825 use Verilog::Netlist::Logger;
  8         15  
  8         236  
10             require Exporter;
11 8     8   35 use base qw(Exporter);
  8         12  
  8         518  
12 8     8   39 use vars qw($VERSION @EXPORT);
  8         14  
  8         294  
13 8     8   34 use strict;
  8         12  
  8         3695  
14              
15             $VERSION = '3.480';
16             @EXPORT = qw(structs);
17              
18             # Maybe in the future. For now all users of this must do it themselves
19             #struct ('Verilog::Netlist::Subclass'
20             # =>[name => '$', #' # Name of the element
21             # filename => '$', #' # Filename this came from
22             # lineno => '$', #' # Linenumber this came from
23             # logger => '%', # Logger object, or undef
24             # userdata => '%', # User information
25             # ]);
26              
27             ######################################################################
28             #### Member functions
29              
30             sub fileline {
31 0     0 0 0 my $self = shift;
32 0   0     0 return ($self->filename||"").":".($self->lineno||"");
      0        
33             }
34              
35             ######################################################################
36             #### Error Handling
37              
38             our $_Subclass_Logger_Warned;
39              
40             sub logger {
41 0     0 1 0 my $self = shift;
42             # This provides forward compatibility to derived classes written before
43             # Verilog-Perl 3.041. At some point this function will be removed; all
44             # new derived classes should provide an override for this function.
45 0 0       0 if (!$_Subclass_Logger_Warned) {
46 0         0 warn "-Info: Object class missing logger method, update the package?: ".ref($self)."\n";
47 0         0 $_Subclass_Logger_Warned = Verilog::Netlist::Logger->new();
48             }
49 0         0 return $_Subclass_Logger_Warned;
50             }
51              
52             sub errors {
53 0     0 1 0 my $self = shift;
54 0         0 return $self->logger->errors;
55             }
56             sub warnings {
57 0     0 1 0 my $self = shift;
58 0         0 return $self->logger->warnings;
59             }
60              
61             # Methods
62             sub info {
63 0     0 1 0 my $self = shift;
64 0 0       0 my $objref = $self; $objref = shift if ref $_[0]; # Optional reference to object
  0         0  
65 0         0 $self->logger->info($objref,@_);
66             }
67              
68             sub warn {
69 0     0 1 0 my $self = shift;
70 0 0       0 my $objref = $self; $objref = shift if ref $_[0]; # Optional reference to object
  0         0  
71 0         0 $self->logger->warn($objref,@_);
72             }
73              
74             sub error {
75 0     0 1 0 my $self = shift;
76 0 0       0 my $objref = $self; $objref = shift if ref $_[0]; # Optional reference to object
  0         0  
77 0         0 $self->logger->error($objref,@_);
78             }
79              
80             sub exit_if_error {
81 8     8 1 60 my $self = shift;
82 8         26 return $self->logger->exit_if_error(@_);
83             }
84              
85             sub unlink_if_error {
86 0     0 0 0 my $self = shift;
87             # Not documented; Depreciated in Verilog-Perl 3.041.
88             # Applications should call the logger object's unlink_if_error directly.
89 0         0 return $self->logger->unlink_if_error(@_);
90             }
91              
92             ######################################################################
93             ######################################################################
94             ######################################################################
95             #
96             # Prior to perl 5.6, Class::Struct's new didn't bless the arguments,
97             # or allow parameter initialization! Later versions didn't support weak
98             # references.
99             # This code is thus from Class::Struct, copyright under the Artistic license
100              
101             sub structs {
102 80     80 0 141 my $func = shift;
103 80         117 my $baseclass = $_[0];
104              
105             # Determine parameter list structure, one of:
106             # struct (class => [ element-list ])
107              
108 80         116 my ($class, @decls);
109 80         134 my $base_type = ref $_[1];
110 80 50       205 if ($base_type eq 'ARRAY') {
111 80         94 $class = shift;
112 80         89 @decls = @{shift()};
  80         362  
113 80 50       225 confess "structs usage error" if @_;
114             }
115             else {
116 0         0 confess "structs usage error";
117             }
118 80 50       204 confess "structs usage error" if @decls % 2 == 1;
119              
120             # Create constructor.
121             croak "function 'new' already defined in package $class"
122 8 50   8   49 if do { no strict 'refs'; defined &{$class . "::new"} };
  8         14  
  8         2866  
  80         91  
  80         82  
  80         324  
123              
124 80         140 my @methods = ();
125 80         105 my %refs = ();
126 80         97 my %arrays = ();
127 80         81 my %hashes = ();
128 80         139 my %types;
129 80         88 my $got_class = 0;
130 80         86 my $out = '';
131              
132 80         134 $out .= "{\n package $class;\n use Carp;\n";
133 80         91 $out .= " use Scalar::Util qw(weaken);\n\n";
134 80         97 $out .= " sub new {\n";
135 80         89 $out .= " my (\$class, \%init) = \@_;\n";
136 80         89 $out .= " \$class = __PACKAGE__ unless \@_;\n";
137              
138 80         90 my $cnt = 0;
139 80         95 my ($cmt, $elem);
140              
141 80 50       153 if ($base_type eq 'ARRAY') {
142 80         102 $out .= " my(\$r) = [];\n";
143             }
144 80         163 for (my $idx=0; $idx < @decls; $idx+=2) {
145 1168         1211 my $name = $decls[$idx];
146 1168         1124 my $type = $decls[$idx+1];
147 1168         1562 $types{$name} = $type;
148 1168         1235 push (@methods, $name);
149 1168 50       1466 if ($base_type eq 'ARRAY') {
150 1168         1299 $elem = "[$cnt]";
151 1168         1004 ++$cnt;
152 1168         1082 $cmt = " # $name";
153             }
154 1168 50       1459 if ($type =~ /^\*(.)/) {
155 0         0 $refs{$name}++;
156 0         0 $type = $1;
157             }
158 1168         1454 my $init = "defined(\$init{'$name'}) ? \$init{'$name'} :";
159 1168 100       1846 if ($type eq '@') {
    100          
    50          
160 40         75 $out .= " croak 'Initializer for $name must be array reference'\n";
161 40         94 $out .= " if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'ARRAY';\n";
162 40         72 $out .= " \$r->$elem = $init [];$cmt\n";
163 40         81 $arrays{$name}++;
164             }
165             elsif ($type eq '%') {
166 304         390 $out .= " croak 'Initializer for $name must be hash reference'\n";
167 304         423 $out .= " if defined(\$init{'$name'}) && ref(\$init{'$name'}) ne 'HASH';\n";
168 304         413 $out .= " \$r->$elem = $init {};$cmt\n";
169 304         609 $hashes{$name}++;
170             }
171             elsif ($type eq '$') {
172 824         1866 $out .= " \$r->$elem = $init undef;$cmt\n";
173             }
174             else{
175 0         0 croak "'$type' is not a valid struct element type";
176             }
177             }
178 80         114 $out .= " bless \$r, \$class;\n }\n";
179              
180             # Create accessor methods.
181              
182 80         99 my ($pre, $pst, $sel);
183 80         97 $cnt = 0;
184 80         123 foreach my $name (@methods) {
185 1168         1323 my $type = $types{$name};
186 8 50   8   51 if (do { no strict 'refs'; defined &{$class . "::$name"} }) {
  8         19  
  8         2703  
  1168         1015  
  1168         925  
  1168         2466  
187 0         0 warnings::warnif("function '$name' already defined, overrides struct accessor method");
188             }
189             else {
190 1168         1316 $pre = $pst = $cmt = $sel = '';
191 1168 50       1765 if (defined $refs{$name}) {
192 0         0 $pre = "\\(";
193 0         0 $pst = ")";
194 0         0 $cmt = " # returns ref";
195             }
196 1168         1470 $out .= " sub $name {$cmt\n my \$r = shift;\n";
197 1168 50       1401 if ($base_type eq 'ARRAY') {
198 1168         1194 $elem = "[$cnt]";
199 1168         1035 ++$cnt;
200             }
201 1168 100       1867 if (defined $arrays{$name}) {
    100          
202 40         45 $out .= " my \$i;\n";
203 40         49 $out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
204 40         64 $out .= " if (ref(\$i) eq 'ARRAY' && !\@_) { \$r->$elem = \$i; return \$r }\n";
205 40         38 $sel = "->[\$i]";
206             }
207             elsif (defined $hashes{$name}) {
208 304         299 $out .= " my \$i;\n";
209 304         344 $out .= " \@_ ? (\$i = shift) : return \$r->$elem;\n";
210 304         481 $out .= " if (ref(\$i) eq 'HASH' && !\@_) { \$r->$elem = \$i; return \$r }\n";
211 304         306 $sel = "->{\$i}";
212             }
213 1168         1455 $out .= " croak 'Too many args to $name' if \@_ > 1;\n";
214 1168         1772 $out .= " \@_ ? ($pre\$r->$elem$sel = shift$pst) : $pre\$r->$elem$sel$pst;\n";
215 1168         1493 $out .= " }\n";
216             }
217             }
218              
219             #print $out;
220 80         94 $out .= "}\n1;\n";
221 8 0 0 8   53 my $result = eval $out;
  8 0 0 8   15  
  8 0 0 8   531  
  8 0 0 8   51  
  8 0 33 8   15  
  8 0 33 8   7052  
  8 0 0 8   54  
  8 0 33 8   16  
  8 0 33 8   521  
  8 0 33 8   49  
  8 0 33 8   16  
  8 0 33 8   11234  
  8 0 33 8   49  
  8 0 33 8   14  
  8 0 0 8   480  
  8 0 33 8   49  
  8 0 33 8   9  
  8 0 33 8   7553  
  8 0 33 8   66  
  8 0 33 8   30  
  8 0 33 0   555  
  8 0 33 0   49  
  8 0 33 0   13  
  8 0 0 0   6844  
  8 0 0 0   49  
  8 0 0 0   13  
  8 100 0 0   545  
  8 50 0 0   47  
  8 50 0 0   15  
  8 50 0 93   8559  
  8 100 0 2116   51  
  8 50 0 0   18  
  8 50 0 0   436  
  8 50 33 0   43  
  8 0 33 6   21  
  8 0 33 89   5630  
  8 0 33 11   48  
  8 0 33 26   13  
  8 0 33 246   458  
  8 0 33 629   65  
  8 0 33 56063   17  
  8 0 33 8102   5462  
  8 50 33 53   52  
  8 50 33 2278   15  
  8 50 33 424   525  
  8 50 33 0   50  
  8 50 33 252   24  
  8 100 33 1444   20369  
  8 50 33 106   56  
  8 100 33 23   12  
  8 100 33 676   499  
  8 50 33 3   49  
  8 50 33 322   17  
  8 50 33 30   7883  
  8 50 33 263   54  
  8 50 33 14   16  
  8 50 33 436   652  
  8 50 33 264   53  
  8 100 33 125   21  
  8 100 33 2   9507  
  80 100 33 0   6007  
  0 100 33 0   0  
  0 50 33 0   0  
  0 50 33 0   0  
  0 100 33 0   0  
  0 100 33 2   0  
  0 50 33 0   0  
  0 50 33 0   0  
  0 100 33 0   0  
  0 50 33 0   0  
  0 50 33 239   0  
  0 50 33 470   0  
  0 100 33 970   0  
  0 50 33 62   0  
  0 50 33 2   0  
  0 100 33 24   0  
  0 50 0 366   0  
  0 50 0 4   0  
  0 0 0 24   0  
  0 0 0 0   0  
  0 0 0 14   0  
  0 0 0 167   0  
  0 100 0 12879   0  
  0 50 0 237   0  
  0 50 0 653   0  
  0 50 0 0   0  
  0 100   1   0  
  0 50   2   0  
  0 50   0   0  
  0 50   0   0  
  0 100   52   0  
  0 50   104   0  
  0 50   21   0  
  0 50   0   0  
  0 100   38   0  
  0 50   264   0  
  0 50   54   0  
  0 50   46   0  
  0 100   114   0  
  0 50   14   0  
  0 50   19   0  
  0 50   0   0  
  0 50   5   0  
  0 50   11   0  
  0 50   0   0  
  0 50   0   0  
  0 100   104   0  
  0 50   0   0  
  93 50   0   163  
  93 50   2   98  
  93 50   0   439  
  13 100   0   72  
  0 50   0   0  
  0 100   88   0  
  13 50   21   28  
  13 100   12615   40  
  2116 50   679   3676  
  2116 100   434   2259  
  2116 50   4   10732  
  438 50   64   1017  
  0 50   247   0  
  0 50   523   0  
  438 50   2967   747  
  438 50   201   1162  
  0 0   88   0  
  0 0   1427   0  
  0 0   1302   0  
  0 0   2517   0  
  0 0   994   0  
  0 0   23246   0  
  0 0   354   0  
  0 0   444   0  
  0 0   11528   0  
  0 0   190   0  
  0 0   248   0  
  0 0   481   0  
  0 0   429   0  
  0 0   21   0  
  6 0   1409   12  
  6 0   30   7  
  6 0   657   14  
  6 0   11108   14  
  0 0   120   0  
  0 0   843   0  
  6 0   214   15  
  6 0   251   30  
  89 50   531   134  
  89 0   3   121  
  89 0   472   253  
  11 0   1387   16  
  11 0   51   19  
  11 0   17   35  
  26 0   442   47  
  26 0   31   28  
  26 0   11   95  
  2 0   5   22  
  0 0   0   0  
  0 0   0   0  
  2 0   0   7  
  2 0   0   19  
  246 0   0   455  
  246 0   0   280  
  246 0   0   485  
  246 0   674   629  
  0 0   250   0  
  0 0   0   0  
  246 50   0   507  
  246 50   0   726  
  629 50   0   965  
  629 100   0   845  
  629 50   0   2619  
  56093 50   0   86644  
  56063 50   0   52748  
  56063 100   0   266049  
  11065 50   0   20718  
  30 50   601   80  
  0 50       0  
  11035 100       15048  
  11035 50       33750  
  8102 100       13088  
  8102 50       8879  
  8102 100       37413  
  1510 50       3232  
  0 100       0  
  0 0       0  
  1510 0       2475  
  1510 50       3750  
  53 100       87  
  53 50       66  
  53 100       272  
  7 50       22  
  0 100       0  
  0 50       0  
  7 50       15  
  7 50       22  
  2278 50       3782  
  2278 0       2495  
  2278 0       5842  
  853 50       1812  
  0 50       0  
  0 50       0  
  853 50       1573  
  853 0       2307  
  424 0       599  
  424 0       633  
  424 0       967  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 0       0  
  0 0       0  
  252 50       383  
  252 100       253  
  252 50       1109  
  59 50       113  
  0 50       0  
  0 50       0  
  59 50       100  
  59 100       132  
  1444 50       2676  
  1444 50       1693  
  1444 50       3494  
  609 50       1587  
  0 50       0  
  0 50       0  
  609 0       1000  
  609 0       1656  
  106 50       224  
  106 50       112  
  106 50       533  
  22 50       54  
  0 0       0  
  0 0       0  
  22 0       43  
  22 0       63  
  23 50       49  
  23 50       32  
  23 0       63  
  18 0       66  
  0 0       0  
  0 0       0  
  18 50       37  
  18 50       59  
  676 0       1285  
  676 0       759  
  676 0       1218  
  663 0       1400  
  0 0       0  
  0 0       0  
  663 50       1054  
  663 50       1918  
  3 50       9  
  3 50       4  
  3 50       17  
  3 50       11  
  0 50       0  
  0 50       0  
  3 50       7  
  3 50       10  
  322 50       597  
  322 50       370  
  322 50       1318  
  10 50       32  
  0 50       0  
  0 50       0  
  10 50       22  
  10 50       43  
  30 50       51  
  30 50       58  
  30 50       224  
  263 50       351  
  263 50       400  
  263 100       2614  
  14 50       27  
  14 100       24  
  14 50       119  
  436 50       658  
  436 50       697  
  436 50       2998  
  264 50       369  
  264 50       405  
  264 50       2401  
  125 50       154  
  125 50       199  
  125 100       2095  
  2 50       4  
  2 100       1  
  2 50       6  
  2 100       10  
  2 50       5  
  2 100       4  
  0 50       0  
  0 50       0  
  0 50       0  
  0 100       0  
  0 50       0  
  0 50       0  
  0 100       0  
  0 50       0  
  0 100       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 100       0  
  0 50       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  2 50       7  
  2 50       2  
  2 100       26  
  0 100       0  
  0 50       0  
  0 50       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 50       0  
  0 50       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 50       0  
  0 50       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 50       0  
  0 100       0  
  239 100       488  
  239 100       544  
  239 50       664  
  470 50       1004  
  470 50       963  
  470 100       1112  
  970 50       1761  
  970 50       1700  
  970 50       10956  
  62 100       100  
  62 100       110  
  62 100       519  
  2 50       5  
  2 50       4  
  2 50       6  
  24 50       49  
  24 100       39  
  24 50       145  
  366 100       2087  
  366 100       586  
  366 50       1689  
  4 100       9  
  4 100       11  
  4 100       83  
  24 50       44  
  24 100       49  
  24 100       282  
  0 50       0  
  0 100       0  
  0 100       0  
  14 100       26  
  14 100       23  
  14 50       130  
  167 50       216  
  167 50       393  
  167 100       752  
  12879 50       20742  
  12879 50       21750  
  12879 100       25992  
  237 100       373  
  237 100       367  
  237 100       2071  
  653 100       1045  
  653 50       944  
  653 100       2580  
  0 100       0  
  0 100       0  
  0 100       0  
  1 100       2  
  1 100       3  
  1 100       16  
  2 50       3  
  2 100       8  
  2 100       9  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  0 100       0  
  52 50       73  
  52 100       84  
  52 100       965  
  104 100       1474  
  104 100       164  
  104 100       236  
  21 50       35  
  21 100       50  
  21 50       136  
  0 100       0  
  0 100       0  
  0 100       0  
  38 50       74  
  38 50       86  
  38 100       453  
  264 100       574  
  264 100       741  
  264 100       2603  
  54 100       99  
  54 100       157  
  54 100       387  
  46 50       83  
  46 50       141  
  46 100       234  
  114 100       159  
  114 100       172  
  114 100       1098  
  14 100       25  
  14 100       30  
  14 50       103  
  19 100       363  
  19 100       31  
  19 50       206  
  0 50       0  
  0 50       0  
  0 50       0  
  5 50       9  
  5 50       13  
  5 50       31  
  11 50       20  
  11 50       22  
  11 50       62  
  0 50       0  
  0 50       0  
  0 50       0  
  0 100       0  
  0 100       0  
  0 50       0  
  104 50       139  
  104 50       136  
  104 50       211  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 50       0  
  2 50       3  
  2 50       5  
  2 50       6  
  0 50       0  
  0 50       0  
  0 100       0  
  0 50       0  
  0 50       0  
  0 50       0  
  0 100       0  
  0 50       0  
  0 100       0  
  88 50       135  
  88 50       173  
  88 50       666  
  21 50       36  
  21 50       40  
  21 50       94  
  12615 50       18057  
  12615 50       17741  
  12615 50       137749  
  679 50       1070  
  679 50       1248  
  679 50       7462  
  434 0       930  
  434 0       850  
  434 0       5109  
  4 0       6  
  4 0       8  
  4 0       10  
  64 0       104  
  64 0       111  
  64 0       166  
  247 0       430  
  247 0       425  
  247 0       1298  
  523 0       1008  
  523 0       1057  
  523 50       1793  
  2967 100       5280  
  2967 50       5251  
  2967 50       22940  
  201 0       284  
  201 0       304  
  201 0       692  
  88 0       212  
  88 0       143  
  88 0       375  
  1427 0       1816  
  1427 0       1960  
  1427 0       5688  
  1302 0       2427  
  1302 0       2391  
  1302 0       9669  
  2517 0       4166  
  2517 0       4161  
  2517 0       15100  
  994 0       1546  
  994 0       1655  
  994 0       2584  
  23246 0       35029  
  23246 0       35476  
  23246 0       184117  
  354 0       500  
  354 0       570  
  354 0       1410  
  444 0       636  
  444 0       656  
  444 0       1897  
  11528 0       17030  
  11528 0       18329  
  11528 0       22968  
  190 0       291  
  190 0       289  
  190 0       878  
  248 0       459  
  248 0       505  
  248 0       778  
  481 0       919  
  481 0       1002  
  481 0       1641  
  429 0       1962  
  429 50       917  
  429 50       726  
  429         1147  
  429         883  
  429         774  
  429         1007  
  429         891  
  429         881  
  429         836  
  429         783  
  429         867  
  429         806  
  429         773  
  429         963  
  427         944  
  427         865  
  427         998  
  425         808  
  425         730  
  425         648  
  425         5302  
  25         54  
  25         51  
  25         53  
  25         112  
  25         67  
  25         66  
  25         118  
  21         52  
  21         55  
  21         54  
  21         61  
  21         60  
  21         67  
  21         54  
  21         45  
  21         131  
  15         42  
  15         145  
  6         12  
  6         90  
  1409         7296  
  1409         2897  
  1409         2251  
  1409         3515  
  1409         2578  
  1409         2408  
  1409         2952  
  1409         2577  
  1409         2743  
  1409         3006  
  1409         2829  
  1409         2738  
  1409         2357  
  1409         2539  
  1409         2694  
  1438         2673  
  1438         2528  
  1438         2820  
  1438         2316  
  1437         2485  
  1437         2697  
  1437         2134  
  1437         2201  
  1437         2911  
  1437         2031  
  1437         2454  
  1437         2048  
  1437         2594  
  1437         20537  
  37         119  
  692         2754  
  692         1646  
  692         1199  
  692         2031  
  692         1607  
  692         1252  
  692         1723  
  666         1260  
  666         1342  
  666         1428  
  666         1485  
  666         1326  
  666         1148  
  666         1347  
  666         1178  
  666         1232  
  666         1002  
  666         8760  
  43         191  
  36         85  
  36         91  
  36         59  
  36         63  
  36         79  
  36         58  
  36         71  
  36         121  
  36         75  
  36         570  
  11110         48589  
  11110         18772  
  11110         17562  
  11110         24550  
  11110         19101  
  11108         17091  
  11108         17868  
  11108         19459  
  11108         17991  
  11108         20908  
  11108         22742  
  11108         22345  
  11108         19144  
  11108         19974  
  11108         19477  
  11108         18785  
  11108         22028  
  11108         21454  
  11043         16208  
  11043         14325  
  11043         20192  
  11043         14756  
  11150         16185  
  11150         17417  
  11150         16548  
  11150         16218  
  11150         15223  
  11150         17227  
  11150         163614  
  120         232  
  120         212  
  120         221  
  120         243  
  120         237  
  120         216  
  120         246  
  120         239  
  119         228  
  119         211  
  119         210  
  119         175  
  119         294  
  953         3782  
  953         1873  
  952         1541  
  952         2760  
  952         1739  
  952         1608  
  952         1734  
  952         1620  
  952         3193  
  843         1690  
  843         1450  
  843         1631  
  843         1588  
  843         1810  
  843         1528  
  843         1716  
  843         1223  
  843         1559  
  843         1284  
  1056         12019  
  249         682  
  249         615  
  247         835  
  247         562  
  247         486  
  247         503  
  247         574  
  247         643  
  247         741  
  242         648  
  242         553  
  242         601  
  242         559  
  242         603  
  238         469  
  238         588  
  238         733  
  479         1538  
  479         1087  
  479         902  
  479         1361  
  479         1188  
  479         999  
  479         1060  
  479         1149  
  479         1132  
  479         1123  
  479         1021  
  479         1468  
  451         893  
  451         1088  
  451         1049  
  451         1039  
  451         928  
  451         3414  
  243         497  
  243         807  
  214         544  
  214         522  
  214         444  
  214         410  
  214         460  
  214         473  
  214         389  
  214         479  
  214         456  
  214         433  
  214         3167  
  14         33  
  14         41  
  14         39  
  14         32  
  14         41  
  14         36  
  14         29  
  14         32  
  14         33  
  14         32  
  14         40  
  14         32  
  14         36  
  14         27  
  14         39  
  14         47  
  14         35  
  14         220  
  531         949  
  531         979  
  531         5413  
  3         7  
  3         10  
  3         19  
  472         715  
  472         701  
  472         2275  
  1387         2364  
  1387         2370  
  1387         5748  
  51         83  
  51         98  
  51         125  
  17         30  
  17         34  
  17         65  
  442         1025  
  442         873  
  442         1571  
  31         50  
  31         56  
  31         77  
  11         14  
  11         22  
  11         70  
  5         10  
  5         11  
  5         44  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  674         1183  
  674         1077  
  674         2557  
  250         369  
  250         387  
  250         1126  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
  601         847  
  601         873  
  601         4860  
222 80 50       253 carp $@ if $@;
223              
224             # Create top class
225 80         493 (my $overclass = $baseclass) =~ s/::Struct$//;
226             {
227             #print \"NEW \",join(' ',\@_),\"\\n\";
228 80     11680 0 131 eval "
  80     909 0 5172  
  11680     1534 0 19972  
  11680     33 0 125681  
  11680     28 0 29139  
  909     216 0 2705  
  909     39 0 10846  
  909     19   3212  
  1534     207   3106  
  1534     417   17847  
  1534         3981  
  33         70  
  33         396  
  33         100  
  28         54  
  28         313  
  28         75  
  216         550  
  216         2954  
  216         679  
  39         94  
  39         475  
  39         118  
  19         98  
  19         272  
  19         61  
  207         506  
  207         2882  
  207         683  
  417         826  
  417         4932  
  417         1087  
229             package $overclass;
230             sub ${func} {
231             my \$class = shift;
232             my \$self = new $baseclass(\@_);
233             bless \$self, \$class;
234             }";
235             }
236             }
237              
238             ######################################################################
239             #### Package return
240             1;
241             __END__