001: /*
002: * Copyright 1999-2004 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025: /*
026: * COMPONENT_NAME: idl.parser
027: *
028: * ORIGINS: 27
029: *
030: * Licensed Materials - Property of IBM
031: * 5639-D57 (C) COPYRIGHT International Business Machines Corp. 1997, 1999
032: * RMI-IIOP v1.0
033: *
034: * @(#)SymtabFactory.java 1.21 07/05/05
035: */
036:
037: package com.sun.tools.corba.se.idl;
038:
039: // NOTES:
040:
041: /**
042: * Each entry must have three ways in which it can be instantiated:
043: * <ul>
044: * <li>with no parameters;
045: * <li>cloned from a copy of itself;
046: * <li>the normal-use instantiation (usually with 2 parameters: the container and the id of the container).
047: * </ul>
048: **/
049: public interface SymtabFactory {
050: AttributeEntry attributeEntry();
051:
052: AttributeEntry attributeEntry(InterfaceEntry container, IDLID id);
053:
054: ConstEntry constEntry();
055:
056: ConstEntry constEntry(SymtabEntry container, IDLID id);
057:
058: NativeEntry nativeEntry();
059:
060: NativeEntry nativeEntry(SymtabEntry container, IDLID id);
061:
062: EnumEntry enumEntry();
063:
064: EnumEntry enumEntry(SymtabEntry container, IDLID id);
065:
066: ExceptionEntry exceptionEntry();
067:
068: ExceptionEntry exceptionEntry(SymtabEntry container, IDLID id);
069:
070: ForwardEntry forwardEntry();
071:
072: ForwardEntry forwardEntry(ModuleEntry container, IDLID id);
073:
074: ForwardValueEntry forwardValueEntry();
075:
076: ForwardValueEntry forwardValueEntry(ModuleEntry container, IDLID id);
077:
078: IncludeEntry includeEntry();
079:
080: IncludeEntry includeEntry(SymtabEntry container);
081:
082: InterfaceEntry interfaceEntry();
083:
084: InterfaceEntry interfaceEntry(ModuleEntry container, IDLID id);
085:
086: ValueEntry valueEntry();
087:
088: ValueEntry valueEntry(ModuleEntry container, IDLID id);
089:
090: ValueBoxEntry valueBoxEntry();
091:
092: ValueBoxEntry valueBoxEntry(ModuleEntry container, IDLID id);
093:
094: MethodEntry methodEntry();
095:
096: MethodEntry methodEntry(InterfaceEntry container, IDLID id);
097:
098: ModuleEntry moduleEntry();
099:
100: ModuleEntry moduleEntry(ModuleEntry container, IDLID id);
101:
102: ParameterEntry parameterEntry();
103:
104: ParameterEntry parameterEntry(MethodEntry container, IDLID id);
105:
106: PragmaEntry pragmaEntry();
107:
108: PragmaEntry pragmaEntry(SymtabEntry container);
109:
110: PrimitiveEntry primitiveEntry();
111:
112: /** name can be, but is not limited to, the primitive idl type names:
113: char, octet, short, long, etc. The reason it is not limited to
114: these is that, as an extender, you may wish to override these names.
115: For instance, when generating Java code, octet translates to byte,
116: so there is an entry in Compile.overrideNames: <"octet", "byte">
117: and a PrimitiveEntry in the symbol table for "byte". */
118: PrimitiveEntry primitiveEntry(String name);
119:
120: SequenceEntry sequenceEntry();
121:
122: SequenceEntry sequenceEntry(SymtabEntry container, IDLID id);
123:
124: StringEntry stringEntry();
125:
126: StructEntry structEntry();
127:
128: StructEntry structEntry(SymtabEntry container, IDLID id);
129:
130: TypedefEntry typedefEntry();
131:
132: TypedefEntry typedefEntry(SymtabEntry container, IDLID id);
133:
134: UnionEntry unionEntry();
135:
136: UnionEntry unionEntry(SymtabEntry container, IDLID id);
137: } // interface SymtabFactory
|