View Javadoc

1   /***
2    * Cecilia ADL Compiler
3    * Copyright (C) 2006-2007 STMicroelectronics
4    *
5    * This library is free software; you can redistribute it and/or
6    * modify it under the terms of the GNU Lesser General Public
7    * License as published by the Free Software Foundation; either
8    * version 2 of the License, or (at your option) any later version.
9    *
10   * This library is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   * Lesser General Public License for more details.
14   *
15   * You should have received a copy of the GNU Lesser General Public
16   * License along with this library; if not, write to the Free Software
17   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18   *
19   * Contact: fractal@objectweb.org
20   *
21   * Author:Ali Erdem Ozcan
22   */
23  
24  package org.objectweb.fractal.cecilia.adl.idl;
25  
26  import static org.objectweb.fractal.adl.NodeUtil.castNodeError;
27  
28  import org.objectweb.fractal.cecilia.adl.idl.ast.Field;
29  import org.objectweb.fractal.cecilia.adl.idl.ast.FieldContainer;
30  import org.objectweb.fractal.cecilia.adl.idl.ast.IDLDefinition;
31  import org.objectweb.fractal.cecilia.adl.idl.ast.InterfaceDefinition;
32  import org.objectweb.fractal.cecilia.adl.idl.ast.Method;
33  import org.objectweb.fractal.cecilia.adl.idl.ast.MethodContainer;
34  
35  /**
36   * Abstract Interface Definition Visitor.
37   */
38  public abstract class AbstractInterfaceVisitor implements InterfaceVisitor {
39  
40    public void visit(final IDLDefinition idlDefinition) throws Exception {
41      final InterfaceDefinition itf = castNodeError(idlDefinition,
42          InterfaceDefinition.class);
43  
44      enterInterface(itf);
45  
46      if (itf instanceof FieldContainer) {
47        for (final Field field : ((FieldContainer) itf).getFields())
48          visitField(field);
49      }
50  
51      if (itf instanceof MethodContainer) {
52        for (final Method method : ((MethodContainer) itf).getMethods())
53          visitMethod(method);
54      }
55  
56      leaveInterface(itf);
57    }
58  
59  }