1 /*
2  * Copyright (c) 1999, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.  Oracle designates this
8  * particular file as subject to the "Classpath" exception as provided
9  * by Oracle in the LICENSE file that accompanied this code.
10  *
11  * This code is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14  * version 2 for more details (a copy is included in the LICENSE file that
15  * accompanied this code).
16  *
17  * You should have received a copy of the GNU General Public License version
18  * 2 along with this work; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22  * or visit www.oracle.com if you need additional information or have any
23  * questions.
24  */
25 /*
26  * COMPONENT_NAME: idl.parser
27  *
28  * ORIGINS: 27
29  *
30  * Licensed Materials - Property of IBM
31  * 5639-D57 (C) COPYRIGHT International Business Machines Corp. 1997, 1999
32  * RMI-IIOP v1.0
33  *
34  */
35 
36 package com.sun.tools.corba.se.idl;
37 
38 // NOTES:
39 
40 import java.io.PrintWriter;
41 import java.util.Hashtable;
42 
43 import com.sun.tools.corba.se.idl.constExpr.Expression;
44 
45 public class StringEntry extends SymtabEntry
46 {
StringEntry()47   protected StringEntry ()
48   {
49     super ();
50     String override = (String)Parser.overrideNames.get ("string");
51     if (override == null)
52       name ("string");
53     else
54       name (override);
55     repositoryID (Util.emptyID);
56   } // ctor
57 
StringEntry(StringEntry that)58   protected StringEntry (StringEntry that)
59   {
60     super (that);
61     _maxSize = that._maxSize;
62   } // ctor
63 
StringEntry(SymtabEntry that, IDLID clone)64   protected StringEntry (SymtabEntry that, IDLID clone)
65   {
66     super (that, clone);
67     module ("");
68 
69     String override = (String)Parser.overrideNames.get ("string");
70     if (override == null)
71       name ("string");
72     else
73       name (override);
74     repositoryID (Util.emptyID);
75   } // ctor
76 
clone()77   public Object clone ()
78   {
79     return new StringEntry (this);
80   } // clone
81 
82   /** Invoke the string type generator.
83       @param symbolTable the symbol table is a hash table whose key is
84        a fully qualified type name and whose value is a SymtabEntry or
85        a subclass of SymtabEntry.
86       @param stream the stream to which the generator should sent its output.
87       @see SymtabEntry */
generate(Hashtable symbolTable, PrintWriter stream)88   public void generate (Hashtable symbolTable, PrintWriter stream)
89   {
90     stringGen.generate (symbolTable, this, stream);
91   } // generate
92 
93   /** Access the primitive type generator.
94       @returns an object which implements the PrimitiveGen interface.
95       @see PrimitiveGen */
generator()96   public Generator generator ()
97   {
98     return stringGen;
99   } // generator
100 
101   /** The constant expression defining the maximum size of the string.
102       If it is null, then the string is unbounded. */
maxSize(Expression expr)103   public void maxSize (Expression expr)
104   {
105     _maxSize = expr;
106   } // maxSize
107 
108   /** The constant expression defining the maximum size of the string.
109       If it is null, then the string is unbounded. */
maxSize()110   public Expression maxSize ()
111   {
112     return _maxSize;
113   } // maxSize
114 
115   static StringGen  stringGen;
116 
117   private Expression _maxSize = null;
118 } // class StringEntry
119