File Coverage

blib/lib/CORBA/HTML/IndexVisitor.pm
Criterion Covered Total %
statement 9 478 1.8
branch 0 22 0.0
condition 0 57 0.0
subroutine 3 46 6.5
pod 0 39 0.0
total 12 642 1.8


line stmt bran cond sub pod time code
1             #
2             # Interface Definition Language (OMG IDL CORBA v3.0)
3             #
4            
5             package CORBA::HTML::IndexVisitor;
6            
7 1     1   5 use strict;
  1         1  
  1         36  
8 1     1   8 use warnings;
  1         2  
  1         42  
9            
10             our $VERSION = '2.60';
11            
12 1     1   5 use File::Basename;
  1         2  
  1         5679  
13            
14             sub new {
15 0     0 0   my $proto = shift;
16 0   0       my $class = ref($proto) || $proto;
17 0           my $self = {};
18 0           bless $self, $class;
19 0           my ($parser) = @_;
20 0           $self->{symbtab} = $parser->YYData->{symbtab};
21 0           $self->{file_html} = q{};
22 0           $self->{done_hash} = {};
23 0           $self->{save_module} = {};
24 0           $self->{num_key} = 'idx_html';
25 0           return $self;
26             }
27            
28             sub _get_name {
29 0     0     my $self = shift;
30 0           my ($node) = @_;
31 0           my @list_name = split /::/, $node->{full};
32 0           my @list_scope = split /::/, $self->{scope};
33 0           shift @list_name;
34 0           shift @list_scope;
35 0           while (@list_scope) {
36 0 0         last if ($list_scope[0] ne $list_name[0]);
37 0           shift @list_name;
38 0           shift @list_scope;
39             }
40 0           my $name = join '::', @list_name;
41 0           return $name;
42             }
43            
44             sub _get_defn {
45 0     0     my $self = shift;
46 0           my ($defn) = @_;
47 0 0         if (ref $defn) {
48 0           return $defn;
49             }
50             else {
51 0           return $self->{symbtab}->Lookup($defn);
52             }
53             }
54            
55             sub _get_file {
56 0     0     my $self = shift;
57 0           my ($defn) = @_;
58 0 0         if ($self->{file_html}) {
59 0           return $self->{file_html};
60             }
61             else {
62 0           my $filename = $defn->{filename};
63 0           return '__' . basename($defn->{filename}, '.idl') . '.html';
64             }
65             }
66            
67             #
68             # 3.5 OMG IDL Specification
69             #
70            
71             sub visitSpecification {
72 0     0 0   my $self = shift;
73 0           my ($node) = @_;
74 0           $self->{scope} = '::';
75             # init
76 0           $self->{index_module} = {};
77 0           $self->{index_interface} = {};
78 0           $self->{index_operation} = {};
79 0           $self->{index_attribute} = {};
80 0           $self->{index_constant} = {};
81 0           $self->{index_exception} = {};
82 0           $self->{index_type} = {};
83 0           $self->{index_value} = {};
84 0           $self->{index_boxed_value} = {};
85 0           $self->{index_state_member} = {};
86 0           $self->{index_initializer} = {};
87 0           $self->{index_event} = {};
88 0           $self->{index_component} = {};
89 0           $self->{index_provides} = {};
90 0           $self->{index_uses} = {};
91 0           $self->{index_publishes} = {};
92 0           $self->{index_emits} = {};
93 0           $self->{index_consumes} = {};
94 0           $self->{index_home} = {};
95 0           $self->{index_factory} = {};
96 0           $self->{index_finder} = {};
97 0           foreach (@{$node->{list_decl}}) {
  0            
98 0           $self->_get_defn($_)->visit($self);
99             }
100             # save
101 0           $node->{index_module} = $self->{index_module};
102 0           $node->{index_interface} = $self->{index_interface};
103 0           $node->{index_operation} = $self->{index_operation};
104 0           $node->{index_attribute} = $self->{index_attribute};
105 0           $node->{index_constant} = $self->{index_constant};
106 0           $node->{index_exception} = $self->{index_exception};
107 0           $node->{index_type} = $self->{index_type};
108 0           $node->{index_value} = $self->{index_value};
109 0           $node->{index_boxed_value} = $self->{index_boxed_value};
110 0           $node->{index_state_member} = $self->{index_state_member};
111 0           $node->{index_initializer} = $self->{index_initializer};
112 0           $node->{index_event} = $self->{index_event};
113 0           $node->{index_component} = $self->{index_component};
114 0           $node->{index_provides} = $self->{index_provides};
115 0           $node->{index_uses} = $self->{index_uses};
116 0           $node->{index_publishes} = $self->{index_publishes};
117 0           $node->{index_emits} = $self->{index_emits};
118 0           $node->{index_consumes} = $self->{index_consumes};
119 0           $node->{index_home} = $self->{index_home};
120 0           $node->{index_factory} = $self->{index_factory};
121 0           $node->{index_finder} = $self->{index_finder};
122             }
123            
124             #
125             # 3.7 Module Declaration
126             #
127            
128             sub visitModules {
129 0     0 0   my $self = shift;
130 0           my ($node) = @_;
131 0           $self->{scope} = $node->{full};
132 0           my $filename = $node->{full};
133 0           $filename =~ s/::/_/g;
134 0           $filename .= '.html';
135 0           $self->{index_module}->{$node->{idf}} = $node;
136 0 0         $self->{save_module}->{$node->{full}} = {}
137             unless (exists $self->{save_module}->{$node->{full}});
138             # local save
139 0           my $file_html = $self->{file_html};
140 0           my $module = $self->{index_module};
141 0           my $interface = $self->{index_interface};
142 0           my $operation = $self->{index_operation};
143 0           my $attribute = $self->{index_attribute};
144 0           my $constant = $self->{index_constant};
145 0           my $exception = $self->{index_exception};
146 0           my $type = $self->{index_type};
147 0           my $value = $self->{index_value};
148 0           my $boxed_value = $self->{index_boxed_value};
149 0           my $state_member = $self->{index_state_member};
150 0           my $initializer = $self->{index_initializer};
151 0           my $event = $self->{index_event};
152 0           my $component = $self->{index_component};
153 0           my $provides = $self->{index_provides};
154 0           my $uses = $self->{index_uses};
155 0           my $publishes = $self->{index_publishes};
156 0           my $emits = $self->{index_emits};
157 0           my $consumes = $self->{index_consumes};
158 0           my $home = $self->{index_home};
159 0           my $factory = $self->{index_factory};
160 0           my $finder = $self->{index_finder};
161             # re init
162 0           $self->{file_html} = $filename;
163 0   0       $self->{index_module} = $self->{save_module}->{$node->{full}}->{index_module} || {};
164 0   0       $self->{index_interface} = $self->{save_module}->{$node->{full}}->{index_interface} || {};
165 0   0       $self->{index_operation} = $self->{save_module}->{$node->{full}}->{index_operation} || {};
166 0   0       $self->{index_attribute} = $self->{save_module}->{$node->{full}}->{index_attribute} || {};
167 0   0       $self->{index_constant} = $self->{save_module}->{$node->{full}}->{index_constant} || {};
168 0   0       $self->{index_exception} = $self->{save_module}->{$node->{full}}->{index_exception} || {};
169 0   0       $self->{index_type} = $self->{save_module}->{$node->{full}}->{index_type} || {};
170 0   0       $self->{index_value} = $self->{save_module}->{$node->{full}}->{index_value} || {};
171 0   0       $self->{index_boxed_value} = $self->{save_module}->{$node->{full}}->{index_boxed_value} || {};
172 0   0       $self->{index_state_member} = $self->{save_module}->{$node->{full}}->{index_state_member} || {};
173 0   0       $self->{index_initializer} = $self->{save_module}->{$node->{full}}->{index_initializer} || {};
174 0   0       $self->{index_event} = $self->{save_module}->{$node->{full}}->{index_event} || {};
175 0   0       $self->{index_component} = $self->{save_module}->{$node->{full}}->{index_component} || {};
176 0   0       $self->{index_provides} = $self->{save_module}->{$node->{full}}->{index_provides} || {};
177 0   0       $self->{index_uses} = $self->{save_module}->{$node->{full}}->{index_uses} || {};
178 0   0       $self->{index_publishes} = $self->{save_module}->{$node->{full}}->{index_publishes} || {};
179 0   0       $self->{index_emits} = $self->{save_module}->{$node->{full}}->{index_emits} || {};
180 0   0       $self->{index_consumes} = $self->{save_module}->{$node->{full}}->{index_consumes} || {};
181 0   0       $self->{index_home} = $self->{save_module}->{$node->{full}}->{index_home} || {};
182 0   0       $self->{index_factory} = $self->{save_module}->{$node->{full}}->{index_factory} || {};
183 0   0       $self->{index_finder} = $self->{save_module}->{$node->{full}}->{index_finder} || {};
184 0 0         unless (exists $node->{$self->{num_key}}) {
185 0           $node->{$self->{num_key}} = 0;
186             }
187 0           ${$node->{list_decl}}[$node->{$self->{num_key}}]->visit($self);
  0            
188 0           $node->{$self->{num_key}} ++;
189            
190 0           $node->{file_html} = $self->{file_html};
191 0           $node->{index_module} = $self->{index_module};
192 0           $node->{index_interface} = $self->{index_interface};
193 0           $node->{index_operation} = $self->{index_operation};
194 0           $node->{index_attribute} = $self->{index_attribute};
195 0           $node->{index_constant} = $self->{index_constant};
196 0           $node->{index_exception} = $self->{index_exception};
197 0           $node->{index_type} = $self->{index_type};
198 0           $node->{index_value} = $self->{index_value};
199 0           $node->{index_boxed_value} = $self->{index_boxed_value};
200 0           $node->{index_state_member} = $self->{index_state_member};
201 0           $node->{index_initializer} = $self->{index_initializer};
202 0           $node->{index_event} = $self->{index_event};
203 0           $node->{index_component} = $self->{index_component};
204 0           $node->{index_provides} = $self->{index_provides};
205 0           $node->{index_uses} = $self->{index_uses};
206 0           $node->{index_publishes} = $self->{index_publishes};
207 0           $node->{index_emits} = $self->{index_emits};
208 0           $node->{index_consumes} = $self->{index_consumes};
209 0           $node->{index_home} = $self->{index_home};
210 0           $node->{index_factory} = $self->{index_factory};
211 0           $node->{index_finder} = $self->{index_finder};
212             #
213 0           $self->{save_module}->{$node->{full}}->{file_html} = $self->{file_html};
214 0           $self->{save_module}->{$node->{full}}->{index_module} = $self->{index_module};
215 0           $self->{save_module}->{$node->{full}}->{index_interface} = $self->{index_interface};
216 0           $self->{save_module}->{$node->{full}}->{index_operation} = $self->{index_operation};
217 0           $self->{save_module}->{$node->{full}}->{index_attribute} = $self->{index_attribute};
218 0           $self->{save_module}->{$node->{full}}->{index_constant} = $self->{index_constant};
219 0           $self->{save_module}->{$node->{full}}->{index_exception} = $self->{index_exception};
220 0           $self->{save_module}->{$node->{full}}->{index_type} = $self->{index_type};
221 0           $self->{save_module}->{$node->{full}}->{index_value} = $self->{index_value};
222 0           $self->{save_module}->{$node->{full}}->{index_boxed_value} = $self->{index_boxed_value};
223 0           $self->{save_module}->{$node->{full}}->{index_state_member} = $self->{index_state_member};
224 0           $self->{save_module}->{$node->{full}}->{index_initializer} = $self->{index_initializer};
225 0           $self->{save_module}->{$node->{full}}->{index_event} = $self->{index_event};
226 0           $self->{save_module}->{$node->{full}}->{index_component} = $self->{index_component};
227 0           $self->{save_module}->{$node->{full}}->{index_provides} = $self->{index_provides};
228 0           $self->{save_module}->{$node->{full}}->{index_uses} = $self->{index_uses};
229 0           $self->{save_module}->{$node->{full}}->{index_publishes} = $self->{index_publishes};
230 0           $self->{save_module}->{$node->{full}}->{index_emits} = $self->{index_emits};
231 0           $self->{save_module}->{$node->{full}}->{index_consumes} = $self->{index_consumes};
232 0           $self->{save_module}->{$node->{full}}->{index_home} = $self->{index_home};
233 0           $self->{save_module}->{$node->{full}}->{index_factory} = $self->{index_factory};
234 0           $self->{save_module}->{$node->{full}}->{index_finder} = $self->{index_finder};
235             # restore
236 0           $self->{file_html} = $file_html;
237 0           $self->{index_module} = $module;
238 0           $self->{index_interface} = $interface;
239 0           $self->{index_operation} = $operation;
240 0           $self->{index_attribute} = $attribute;
241 0           $self->{index_constant} = $constant;
242 0           $self->{index_exception} = $exception;
243 0           $self->{index_type} = $type;
244 0           $self->{index_value} = $value;
245 0           $self->{index_boxed_value} = $boxed_value;
246 0           $self->{index_state_member} = $state_member;
247 0           $self->{index_initializer} = $initializer;
248 0           $self->{index_event} = $event;
249 0           $self->{index_component} = $component;
250 0           $self->{index_provides} = $provides;
251 0           $self->{index_uses} = $uses;
252 0           $self->{index_publishes} = $publishes;
253 0           $self->{index_emits} = $emits;
254 0           $self->{index_consumes} = $consumes;
255 0           $self->{index_home} = $home;
256 0           $self->{index_factory} = $factory;
257 0           $self->{index_finder} = $finder;
258             }
259            
260             sub visitModule {
261 0     0 0   my $self = shift;
262 0           my ($node) = @_;
263 0           foreach (@{$node->{list_decl}}) {
  0            
264 0           $self->_get_defn($_)->visit($self);
265             }
266             }
267            
268             #
269             # 3.8 Interface Declaration
270             #
271            
272             sub _visitBaseInterface {
273 0     0     my $self = shift;
274 0           my ($node) = @_;
275 0           $self->{scope} = $node->{full};
276 0           my $filename = $node->{full};
277 0           $filename =~ s/::/_/g;
278 0           $filename .= '.html';
279 0           $node->{file_html} = $filename;
280             # local save
281 0           my $file_html = $self->{file_html};
282 0           my $module = $self->{index_module};
283 0           my $interface = $self->{index_interface};
284 0           my $operation = $self->{index_operation};
285 0           my $attribute = $self->{index_attribute};
286 0           my $constant = $self->{index_constant};
287 0           my $exception = $self->{index_exception};
288 0           my $type = $self->{index_type};
289 0           my $value = $self->{index_value};
290 0           my $boxed_value = $self->{index_boxed_value};
291 0           my $state_member = $self->{index_state_member};
292 0           my $initializer = $self->{index_initializer};
293 0           my $event = $self->{index_event};
294 0           my $component = $self->{index_component};
295 0           my $provides = $self->{index_provides};
296 0           my $uses = $self->{index_uses};
297 0           my $publishes = $self->{index_publishes};
298 0           my $emits = $self->{index_emits};
299 0           my $consumes = $self->{index_consumes};
300 0           my $home = $self->{index_home};
301 0           my $factory = $self->{index_factory};
302 0           my $finder = $self->{index_finder};
303             # init
304 0           $self->{file_html} = $filename;
305 0           $self->{index_module} = {};
306 0           $self->{index_interface} = {};
307 0           $self->{index_operation} = {};
308 0           $self->{index_attribute} = {};
309 0           $self->{index_constant} = {};
310 0           $self->{index_exception} = {};
311 0           $self->{index_type} = {};
312 0           $self->{index_value} = {};
313 0           $self->{index_boxed_value} = {};
314 0           $self->{index_state_member} = {};
315 0           $self->{index_initializer} = {};
316 0           $self->{index_event} = {};
317 0           $self->{index_component} = {};
318 0           $self->{index_provides} = {};
319 0           $self->{index_uses} = {};
320 0           $self->{index_publishes} = {};
321 0           $self->{index_emits} = {};
322 0           $self->{index_consumes} = {};
323 0           $self->{index_home} = {};
324 0           $self->{index_factory} = {};
325 0           $self->{index_finder} = {};
326 0           foreach (@{$node->{list_decl}}) {
  0            
327 0           $self->_get_defn($_)->visit($self);
328             }
329 0           $node->{file_html} = $self->{file_html};
330 0           $node->{index_module} = $self->{index_module};
331 0           $node->{index_interface} = $self->{index_interface};
332 0           $node->{index_operation} = $self->{index_operation};
333 0           $node->{index_attribute} = $self->{index_attribute};
334 0           $node->{index_constant} = $self->{index_constant};
335 0           $node->{index_exception} = $self->{index_exception};
336 0           $node->{index_type} = $self->{index_type};
337 0           $node->{index_value} = $self->{index_value};
338 0           $node->{index_boxed_value} = $self->{index_boxed_value};
339 0           $node->{index_state_member} = $self->{index_state_member};
340 0           $node->{index_initializer} = $self->{index_initializer};
341 0           $node->{index_event} = $self->{index_event};
342 0           $node->{index_component} = $self->{index_component};
343 0           $node->{index_provides} = $self->{index_provides};
344 0           $node->{index_uses} = $self->{index_uses};
345 0           $node->{index_publishes} = $self->{index_publishes};
346 0           $node->{index_emits} = $self->{index_emits};
347 0           $node->{index_consumes} = $self->{index_consumes};
348 0           $node->{index_home} = $self->{index_home};
349 0           $node->{index_factory} = $self->{index_factory};
350 0           $node->{index_finder} = $self->{index_finder};
351             # restore
352 0           $self->{file_html} = $file_html;
353 0           $self->{index_module} = $module;
354 0           $self->{index_interface} = $interface;
355 0           $self->{index_operation} = $operation;
356 0           $self->{index_attribute} = $attribute;
357 0           $self->{index_constant} = $constant;
358 0           $self->{index_exception} = $exception;
359 0           $self->{index_type} = $type;
360 0           $self->{index_value} = $value;
361 0           $self->{index_boxed_value} = $boxed_value;
362 0           $self->{index_state_member} = $state_member;
363 0           $self->{index_initializer} = $initializer;
364 0           $self->{index_event} = $event;
365 0           $self->{index_component} = $component;
366 0           $self->{index_provides} = $provides;
367 0           $self->{index_uses} = $uses;
368 0           $self->{index_publishes} = $publishes;
369 0           $self->{index_emits} = $emits;
370 0           $self->{index_consumes} = $consumes;
371 0           $self->{index_home} = $home;
372 0           $self->{index_factory} = $factory;
373 0           $self->{index_finder} = $finder;
374             }
375            
376             sub visitInterface {
377 0     0 0   my $self = shift;
378 0           my ($node) = @_;
379 0           $self->{index_interface}->{$node->{idf}} = $node;
380 0           $self->_visitBaseInterface($node);
381             }
382            
383 0     0 0   sub visitForwardBaseInterface {
384             # empty
385             }
386            
387             #
388             # 3.9 Value Declaration
389             #
390            
391             sub visitValue {
392 0     0 0   my $self = shift;
393 0           my ($node) = @_;
394 0           $self->{index_value}->{$node->{idf}} = $node;
395 0           $self->_visitBaseInterface($node);
396             }
397            
398             sub visitStateMembers {
399 0     0 0   my $self = shift;
400 0           my ($node) = @_;
401 0           foreach (@{$node->{list_decl}}) {
  0            
402 0           $self->_get_defn($_)->visit($self);
403             }
404             }
405            
406             sub visitStateMember {
407 0     0 0   my $self = shift;
408 0           my ($node) = @_;
409 0           $node->{file_html} = $self->_get_file($node);
410 0           $self->{index_state_member}->{$node->{idf}} = $node;
411             }
412            
413             sub visitInitializer {
414 0     0 0   my $self = shift;
415 0           my ($node) = @_;
416 0           $node->{file_html} = $self->_get_file($node);
417 0           $self->{index_initializer}->{$node->{idf}} = $node;
418             }
419            
420             sub visitBoxedValue {
421 0     0 0   my $self = shift;
422 0           my ($node) = @_;
423 0           $node->{file_html} = $self->_get_file($node);
424 0           $self->{index_boxed_value}->{$node->{idf}} = $node;
425             }
426            
427             #
428             # 3.10 Constant Declaration
429             #
430            
431             sub visitConstant {
432 0     0 0   my $self = shift;
433 0           my ($node) = @_;
434 0           $node->{file_html} = $self->_get_file($node);
435 0           $self->{index_constant}->{$node->{idf}} = $node;
436             }
437            
438             #
439             # 3.11 Type Declaration
440             #
441            
442             sub visitTypeDeclarators {
443 0     0 0   my $self = shift;
444 0           my ($node) = @_;
445 0           foreach (@{$node->{list_decl}}) {
  0            
446 0           $self->_get_defn($_)->visit($self);
447             }
448             }
449            
450             sub visitTypeDeclarator {
451 0     0 0   my $self = shift;
452 0           my ($node) = @_;
453 0           $node->{file_html} = $self->_get_file($node);
454 0           $self->{index_type}->{$node->{idf}} = $node;
455 0           my $type = $self->_get_defn($node->{type});
456 0 0 0       if ( $type->isa('StructType')
      0        
457             or $type->isa('UnionType')
458             or $type->isa('EnumType') ) {
459 0           $type->visit($self);
460             }
461             }
462            
463             sub visitNativeType {
464 0     0 0   my $self = shift;
465 0           my ($node) = @_;
466 0           $node->{file_html} = $self->_get_file($node);
467 0           $self->{index_type}->{$node->{idf}} = $node;
468             }
469            
470             # 3.11.2 Constructed Types
471             #
472            
473             sub visitStructType {
474 0     0 0   my $self = shift;
475 0           my ($node) = @_;
476 0 0         return if (exists $self->{done_hash}->{$node->{full}});
477 0           $self->{done_hash}->{$node->{full}} = 1;
478 0           my $name = $self->_get_name($node);
479 0           $self->{index_type}->{$name} = $node;
480 0           $node->{html_name} = $name;
481 0           $node->{file_html} = $self->_get_file($node);
482 0           foreach (@{$node->{list_expr}}) {
  0            
483 0           my $type = $self->_get_defn($_->{type});
484 0 0 0       if ( $type->isa('StructType')
485             or $type->isa('UnionType') ) {
486 0           $type->visit($self);
487             }
488             }
489 0           foreach (@{$node->{list_member}}) {
  0            
490 0           $self->_get_defn($_)->visit($self, $node->{file_html}); # member
491             }
492             }
493            
494             sub visitMember {
495 0     0 0   my $self = shift;
496 0           my ($node, $filename) = @_;
497 0           $node->{file_html} = $filename;
498 0           $node->{html_name} = $self->_get_name($node);
499             }
500            
501             sub visitUnionType {
502 0     0 0   my $self = shift;
503 0           my ($node) = @_;
504 0 0         return if (exists $self->{done_hash}->{$node->{full}});
505 0           $self->{done_hash}->{$node->{full}} = 1;
506 0           my $name = $self->_get_name($node);
507 0           $self->{index_type}->{$name} = $node;
508 0           $node->{html_name} = $name;
509 0           $node->{file_html} = $self->_get_file($node);
510 0           my $type = $self->_get_defn($node->{type});
511 0 0         if ($type->isa('EnumType')) {
512 0           $type->visit($self);
513             }
514 0           foreach (@{$node->{list_expr}}) { # case
  0            
515 0           $type = $self->_get_defn($_->{element}->{type});
516 0 0 0       if ( $type->isa('StructType')
517             or $type->isa('UnionType') ) {
518 0           $type->visit($self);
519             }
520 0           $self->_get_defn($_->{element}->{value})->visit($self, $node->{file_html}); # member
521             }
522             }
523            
524 0     0 0   sub visitForwardStructType {
525             # empty
526             }
527            
528 0     0 0   sub visitForwardUnionType {
529             # empty
530             }
531            
532             sub visitEnumType {
533 0     0 0   my $self = shift;
534 0           my ($node) = @_;
535 0           my $name = $self->_get_name($node);
536 0           $self->{index_type}->{$name} = $node;
537 0           $node->{html_name} = $name;
538 0           $node->{file_html} = $self->_get_file($node);
539 0           foreach (@{$node->{list_expr}}) {
  0            
540 0           $_->visit($self, $node->{file_html}); # enum
541             }
542             }
543            
544             sub visitEnum {
545 0     0 0   my $self = shift;
546 0           my ($node, $filename) = @_;
547 0           $node->{file_html} = $filename;
548 0           $node->{html_name} = $self->_get_name($node);
549             }
550            
551             #
552             # 3.12 Exception Declaration
553             #
554            
555             sub visitException {
556 0     0 0   my $self = shift;
557 0           my ($node) = @_;
558 0           $node->{file_html} = $self->_get_file($node);
559 0           $self->{index_exception}->{$node->{idf}} = $node;
560 0           foreach (@{$node->{list_member}}) {
  0            
561 0           $self->_get_defn($_)->visit($self);
562             }
563             }
564            
565             #
566             # 3.13 Operation Declaration
567             #
568            
569             sub visitOperation {
570 0     0 0   my $self = shift;
571 0           my ($node) = @_;
572 0           $node->{file_html} = $self->_get_file($node);
573 0           $self->{index_operation}->{$node->{idf}} = $node;
574             }
575            
576             #
577             # 3.14 Attribute Declaration
578             #
579            
580             sub visitAttributes {
581 0     0 0   my $self = shift;
582 0           my ($node) = @_;
583 0           foreach (@{$node->{list_decl}}) {
  0            
584 0           $self->_get_defn($_)->visit($self);
585             }
586             }
587            
588             sub visitAttribute {
589 0     0 0   my $self = shift;
590 0           my ($node) = @_;
591 0           $node->{file_html} = $self->_get_file($node);
592 0           $self->{index_attribute}->{$node->{idf}} = $node;
593             }
594            
595             #
596             # 3.15 Repository Identity Related Declarations
597             #
598            
599 0     0 0   sub visitTypeId {
600             # empty
601             }
602            
603 0     0 0   sub visitTypePrefix {
604             # empty
605             }
606            
607             #
608             # 3.16 Event Declaration
609             #
610            
611             sub visitEvent {
612 0     0 0   my $self = shift;
613 0           my ($node) = @_;
614 0           $self->{index_event}->{$node->{idf}} = $node;
615 0           $self->_visitBaseInterface($node);
616             }
617            
618             #
619             # 3.17 Component Declaration
620             #
621            
622             sub visitComponent {
623 0     0 0   my $self = shift;
624 0           my ($node) = @_;
625 0           $self->{index_component}->{$node->{idf}} = $node;
626 0           $self->_visitBaseInterface($node);
627             }
628            
629             sub visitProvides {
630 0     0 0   my $self = shift;
631 0           my ($node) = @_;
632 0           $node->{file_html} = $self->_get_file($node);
633 0           $self->{index_provides}->{$node->{idf}} = $node;
634             }
635            
636             sub visitUses {
637 0     0 0   my $self = shift;
638 0           my ($node) = @_;
639 0           $node->{file_html} = $self->_get_file($node);
640 0           $self->{index_uses}->{$node->{idf}} = $node;
641             }
642            
643             sub visitPublishes {
644 0     0 0   my $self = shift;
645 0           my ($node) = @_;
646 0           $node->{file_html} = $self->_get_file($node);
647 0           $self->{index_publishes}->{$node->{idf}} = $node;
648             }
649            
650             sub visitEmits {
651 0     0 0   my $self = shift;
652 0           my ($node) = @_;
653 0           $node->{file_html} = $self->_get_file($node);
654 0           $self->{index_emits}->{$node->{idf}} = $node;
655             }
656            
657             sub visitConsumes {
658 0     0 0   my $self = shift;
659 0           my ($node) = @_;
660 0           $node->{file_html} = $self->_get_file($node);
661 0           $self->{index_consumes}->{$node->{idf}} = $node;
662             }
663            
664             #
665             # 3.18 Home Declaration
666             #
667            
668             sub visitHome {
669 0     0 0   my $self = shift;
670 0           my ($node) = @_;
671 0           $self->{index_home}->{$node->{idf}} = $node;
672 0           $self->_visitBaseInterface($node);
673             }
674            
675             sub visitFactory {
676 0     0 0   my $self = shift;
677 0           my ($node) = @_;
678 0           $node->{file_html} = $self->_get_file($node);
679 0           $self->{index_factory}->{$node->{idf}} = $node;
680             }
681            
682             sub visitFinder {
683 0     0 0   my $self = shift;
684 0           my ($node) = @_;
685 0           $node->{file_html} = $self->_get_file($node);
686 0           $self->{index_finder}->{$node->{idf}} = $node;
687             }
688            
689             #
690             # XPIDL
691             #
692            
693 0     0 0   sub visitCodeFragment {
694             # empty
695             }
696            
697             1;
698