Java源码示例:com.sun.tools.corba.se.idl.SymtabEntry
示例1
/**
*
**/
static private String checkForArrayBase (TypedefEntry t, Vector importTypes, Vector importList)
{
String arrays = "";
try
{
String name = (String)t.dynamicVariable (Compile.typedefInfo);
int index = name.indexOf ('[');
if (index >= 0)
{
arrays = name.substring (index);
name = name.substring (0, index);
}
// See if the base type should be added to the list.
SymtabEntry typeEntry = (SymtabEntry)symbolTable.get (name);
if (typeEntry != null && importTypes.contains (typeEntry))
addTo (importList, typeEntry.name ());
}
catch (NoSuchFieldException e)
{}
return arrays;
}
示例2
public int read (int index, String indent, String name,
SymtabEntry entry, PrintWriter stream)
{
UnionEntry u = (UnionEntry)entry;
String disName = "_dis" + index++;
SymtabEntry utype = Util.typeOf (u.type ());
Util.writeInitializer (indent, disName, "", utype, stream);
if (utype instanceof PrimitiveEntry)
index = ((JavaGenerator)utype.generator ()).read (index, indent, disName, utype, stream);
else
stream.println (indent + disName + " = " + Util.helperName (utype, true) + ".read (istream);");
if (utype.name ().equals ("boolean"))
index = readBoolean (disName, index, indent, name, u, stream);
else
index = readNonBoolean (disName, index, indent, name, u, stream);
return index;
}
示例3
/**
*
**/
protected void writeMembers ()
{
// if the value type contains no data members, a null return is expected
if (v.state () == null)
return;
for (int i = 0; i < v.state ().size (); i ++)
{
InterfaceState member = (InterfaceState) v.state ().elementAt (i);
SymtabEntry entry = (SymtabEntry) member.entry;
Util.fillInfo (entry);
if (entry.comment () != null)
entry.comment ().generate (" ", stream);
String modifier = " ";
if (member.modifier == InterfaceState.Public)
modifier = " public ";
Util.writeInitializer (modifier, entry.name (), "", entry, stream);
}
}
示例4
public int type (int index, String indent, TCOffsets tcoffsets, String name, SymtabEntry entry, PrintWriter stream) {
tcoffsets.set (entry);
StringEntry stringEntry = (StringEntry)entry;
String bound;
if (stringEntry.maxSize () == null)
bound = "0";
else
bound = Util.parseExpression (stringEntry.maxSize ());
// entry.name() is necessary to determine whether it is a
// string or wstring
stream.println (indent
+ name
+ " = org.omg.CORBA.ORB.init ().create_"
+ entry.name()
+ "_tc ("
+ bound + ");");
return index;
}
示例5
/**
* d62023 - private state maps to protected, not default
**/
protected void writeMembers ()
{
// if the value type contains no data members, a null return is expected
if (v.state () == null)
return;
for (int i = 0; i < v.state ().size (); i ++)
{
InterfaceState member = (InterfaceState) v.state ().elementAt (i);
SymtabEntry entry = (SymtabEntry) member.entry;
Util.fillInfo (entry);
if (entry.comment () != null)
entry.comment ().generate (" ", stream);
String modifier = " ";
if (member.modifier == InterfaceState.Public)
modifier = " public ";
else
modifier = " protected ";
Util.writeInitializer (modifier, entry.name (), "", entry, stream);
}
stream.println();
}
示例6
/**
*
**/
protected void writeMembers ()
{
// if the value type contains no data members, a null return is expected
if (v.state () == null)
return;
for (int i = 0; i < v.state ().size (); i ++)
{
InterfaceState member = (InterfaceState) v.state ().elementAt (i);
SymtabEntry entry = (SymtabEntry) member.entry;
Util.fillInfo (entry);
if (entry.comment () != null)
entry.comment ().generate (" ", stream);
String modifier = " ";
if (member.modifier == InterfaceState.Public)
modifier = " public ";
Util.writeInitializer (modifier, entry.name (), "", entry, stream);
}
}
示例7
/**
* Write the constant's value according to its type.
**/
private void writeConstValue (SymtabEntry type)
{
if (type instanceof PrimitiveEntry)
stream.println ('(' + Util.javaName (type) + ")(" + Util.parseExpression (c.value ()) + ");");
else if (type instanceof StringEntry)
stream.println (Util.parseExpression (c.value ()) + ';');
else if (type instanceof TypedefEntry)
{
while (type instanceof TypedefEntry)
type = type.type ();
writeConstValue (type);
}
else
stream.println (Util.parseExpression (c.value ()) + ';');
}
示例8
/**
* Generate Java code for all members of an IDL module.
**/
public void generate (Hashtable symbolTable, ModuleEntry entry, PrintWriter stream)
{
// Generate the package directory
String name = Util.containerFullName( entry ) ;
Util.mkdir (name);
// Generate all of the contained types
Enumeration e = entry.contained ().elements ();
while (e.hasMoreElements ())
{
SymtabEntry element = (SymtabEntry)e.nextElement ();
if (element.emit ())
element.generate (symbolTable, stream);
}
}
示例9
/**
* <d62023> - private state maps to protected, not default
**/
protected void writeMembers ()
{
// if the value type contains no data members, a null return is expected
if (v.state () == null)
return;
for (int i = 0; i < v.state ().size (); i ++)
{
InterfaceState member = (InterfaceState) v.state ().elementAt (i);
SymtabEntry entry = (SymtabEntry) member.entry;
Util.fillInfo (entry);
if (entry.comment () != null)
entry.comment ().generate (" ", stream);
String modifier = " ";
if (member.modifier == InterfaceState.Public)
modifier = " public ";
else
modifier = " protected ";
Util.writeInitializer (modifier, entry.name (), "", entry, stream);
}
stream.println();
}
示例10
/**
* Write the constant's value according to its type.
**/
private void writeConstValue (SymtabEntry type)
{
if (type instanceof PrimitiveEntry)
stream.println ('(' + Util.javaName (type) + ")(" + Util.parseExpression (c.value ()) + ");");
else if (type instanceof StringEntry)
stream.println (Util.parseExpression (c.value ()) + ';');
else if (type instanceof TypedefEntry)
{
while (type instanceof TypedefEntry)
type = type.type ();
writeConstValue (type);
}
else
stream.println (Util.parseExpression (c.value ()) + ';');
}
示例11
/**
*
**/
protected void generateContainedTypes ()
{
// Generate all of the contained types
Enumeration e = s.contained ().elements ();
while (e.hasMoreElements ())
{
SymtabEntry entry = (SymtabEntry)e.nextElement ();
// Don't generate contained entries if they are sequences.
// Sequences are unnamed and since they translate to arrays,
// no classes are generated for them, not even holders in this
// case since they cannot be accessed outside of this struct.
if (!(entry instanceof SequenceEntry))
entry.generate (symbolTable, stream);
}
}
示例12
private int readBranch (int index, String indent, String name, String disName, TypedefEntry entry, PrintWriter stream)
{
SymtabEntry type = entry.type ();
Util.writeInitializer (indent, '_' + name, "", entry, stream);
if (!entry.arrayInfo ().isEmpty () ||
type instanceof SequenceEntry ||
type instanceof PrimitiveEntry ||
type instanceof StringEntry) {
index = ((JavaGenerator)entry.generator ()).read (index, indent, '_' + name, entry, stream);
} else {
stream.println (indent + '_' + name + " = " + Util.helperName (type, true) + ".read (istream);");
}
stream.print (indent + "value." + name + " (");
if( disName == "" )
stream.println("_" + name + ");");
else
stream.println(disName + ", " + "_" + name + ");");
return index;
}
示例13
/**
* Generate Java code for all members of an IDL module.
**/
public void generate (Hashtable symbolTable, ModuleEntry entry, PrintWriter stream)
{
// Generate the package directory
String name = Util.containerFullName( entry ) ;
Util.mkdir (name);
// Generate all of the contained types
Enumeration e = entry.contained ().elements ();
while (e.hasMoreElements ())
{
SymtabEntry element = (SymtabEntry)e.nextElement ();
if (element.emit ())
element.generate (symbolTable, stream);
}
}
示例14
/**
* <d62023> - private state maps to protected, not default
**/
protected void writeMembers ()
{
// if the value type contains no data members, a null return is expected
if (v.state () == null)
return;
for (int i = 0; i < v.state ().size (); i ++)
{
InterfaceState member = (InterfaceState) v.state ().elementAt (i);
SymtabEntry entry = (SymtabEntry) member.entry;
Util.fillInfo (entry);
if (entry.comment () != null)
entry.comment ().generate (" ", stream);
String modifier = " ";
if (member.modifier == InterfaceState.Public)
modifier = " public ";
else
modifier = " protected ";
Util.writeInitializer (modifier, entry.name (), "", entry, stream);
}
stream.println();
}
示例15
private int readBranch (int index, String indent, String name, String disName, TypedefEntry entry, PrintWriter stream)
{
SymtabEntry type = entry.type ();
Util.writeInitializer (indent, '_' + name, "", entry, stream);
if (!entry.arrayInfo ().isEmpty () ||
type instanceof SequenceEntry ||
type instanceof PrimitiveEntry ||
type instanceof StringEntry) {
index = ((JavaGenerator)entry.generator ()).read (index, indent, '_' + name, entry, stream);
} else {
stream.println (indent + '_' + name + " = " + Util.helperName (type, true) + ".read (istream);");
}
stream.print (indent + "value." + name + " (");
if( disName == "" )
stream.println("_" + name + ");");
else
stream.println(disName + ", " + "_" + name + ");");
return index;
}
示例16
/**
* Generate Java code for all members of an IDL module.
**/
public void generate (Hashtable symbolTable, ModuleEntry entry, PrintWriter stream)
{
// Generate the package directory
String name = Util.containerFullName( entry ) ;
Util.mkdir (name);
// Generate all of the contained types
Enumeration e = entry.contained ().elements ();
while (e.hasMoreElements ())
{
SymtabEntry element = (SymtabEntry)e.nextElement ();
if (element.emit ())
element.generate (symbolTable, stream);
}
}
示例17
/**
*
**/
protected void writeBody ()
{
InterfaceState member = (InterfaceState) v.state ().elementAt (0);
SymtabEntry entry = (SymtabEntry) member.entry;
Util.fillInfo (entry);
if (entry.comment () != null)
entry.comment ().generate (" ", stream);
stream.println (" public " + Util.javaName (entry) + " value;");
stream.println (" public " + v.name () + " (" + Util.javaName (entry) + " initial)");
stream.println (" {");
stream.println (" value = initial;");
stream.println (" }");
stream.println ();
writeTruncatable (); // <d60929>
// writeStreamableMethods ();
}
示例18
public int read (int index, String indent, String name,
SymtabEntry entry, PrintWriter stream)
{
UnionEntry u = (UnionEntry)entry;
String disName = "_dis" + index++;
SymtabEntry utype = Util.typeOf (u.type ());
Util.writeInitializer (indent, disName, "", utype, stream);
if (utype instanceof PrimitiveEntry)
index = ((JavaGenerator)utype.generator ()).read (index, indent, disName, utype, stream);
else
stream.println (indent + disName + " = " + Util.helperName (utype, true) + ".read (istream);");
if (utype.name ().equals ("boolean"))
index = readBoolean (disName, index, indent, name, u, stream);
else
index = readNonBoolean (disName, index, indent, name, u, stream);
return index;
}
示例19
/**
*
**/
public void generate (Hashtable symbolTable, SymtabEntry entry)
{
this.symbolTable = symbolTable;
this.i = (InterfaceEntry)entry;
this.localStub = i.isLocalServant();
this.isAbstract = i.isAbstract( );
init ();
openStream ();
if (stream == null)
return;
writeHeading ();
writeBody ();
writeClosing ();
closeStream ();
}
示例20
protected void streamableRead (String entryName, SymtabEntry entry, PrintWriter stream)
{
Vector vMembers = ( (ValueBoxEntry) entry ).state ();
TypedefEntry member = ((InterfaceState) vMembers.elementAt (0)).entry;
SymtabEntry mType = member.type ();
if (mType instanceof PrimitiveEntry || mType instanceof SequenceEntry || mType instanceof TypedefEntry ||
mType instanceof StringEntry || !member.arrayInfo ().isEmpty ())
{
SymtabEntry mEntry = (SymtabEntry) ((InterfaceState) vMembers.elementAt (0)).entry;
((JavaGenerator)member.generator ()).read (0, " ", entryName + ".value", member, stream);
}
else if (mType instanceof ValueEntry || mType instanceof ValueBoxEntry)
stream.println (" " + entryName + ".value = (" + Util.javaQualifiedName (mType) + ") ((org.omg.CORBA_2_3.portable.InputStream)istream).read_value (" + Util.helperName(mType, true) + ".get_instance ());"); // <d60929> // <d61056>
else
stream.println (" " + entryName + ".value = " + Util.helperName (mType, true) + ".read (istream);"); // <d61056>
}
示例21
/**
*
**/
private void writeInsert (String indent, String target, String source, SymtabEntry type, PrintWriter stream)
{
String typeName = type.name ();
if (type instanceof PrimitiveEntry)
{
// RJB does something have to be done with TC offsets?
if (typeName.equals ("long long"))
stream.println (indent + source + ".insert_longlong (" + target + ");");
else if (typeName.equals ("unsigned short"))
stream.println (indent + source + ".insert_ushort (" + target + ");");
else if (typeName.equals ("unsigned long"))
stream.println (indent + source + ".insert_ulong (" + target + ");");
else if (typeName.equals ("unsigned long long"))
stream.println (indent + source + ".insert_ulonglong (" + target + ");");
else
stream.println (indent + source + ".insert_" + typeName + " (" + target + ");");
}
else if (type instanceof StringEntry)
stream.println (indent + source + ".insert_" + typeName + " (" + target + ");");
else
stream.println (indent + Util.helperName (type, true) + ".insert (" + source + ", " + target + ");"); // <d61056>
}
示例22
/**
*
**/
private String writeExtract (String source, SymtabEntry type)
{
String extract;
if (type instanceof PrimitiveEntry)
{
if (type.name ().equals ("long long"))
extract = source + ".extract_longlong ()";
else if (type.name ().equals ("unsigned short"))
extract = source + ".extract_ushort ()";
else if (type.name ().equals ("unsigned long"))
extract = source + ".extract_ulong ()";
else if (type.name ().equals ("unsigned long long"))
extract = source + ".extract_ulonglong ()";
else
extract = source + ".extract_" + type.name () + " ()";
}
else if (type instanceof StringEntry)
extract = source + ".extract_" + type.name () + " ()";
else
extract = Util.helperName (type, true) + ".extract (" + source + ')'; // <d61056>
return extract;
}
示例23
public int helperType (int index, String indent, TCOffsets tcoffsets, String name, SymtabEntry entry, PrintWriter stream)
{
TCOffsets innerOffsets = new TCOffsets ();
innerOffsets.set (entry);
int offsetForStruct = innerOffsets.currentOffset ();
StructEntry s = (StructEntry)entry;
String membersName = "_members" + index++;
stream.println (indent + "org.omg.CORBA.StructMember[] " + membersName + " = new org.omg.CORBA.StructMember [" + s.members ().size () + "];");
String tcOfMembers = "_tcOf" + membersName;
stream.println (indent + "org.omg.CORBA.TypeCode " + tcOfMembers + " = null;");
for (int i = 0; i < s.members ().size (); ++i)
{
TypedefEntry member = (TypedefEntry)s.members ().elementAt (i);
String memberName = member.name ();
// Generate and assign member TypeCode to tcofMembers
index = ((JavaGenerator)member.generator ()).type (index, indent, innerOffsets, tcOfMembers, member, stream);
stream.println (indent + membersName + '[' + i + "] = new org.omg.CORBA.StructMember (");
stream.println (indent + " \"" + Util.stripLeadingUnderscores (memberName) + "\",");
stream.println (indent + " " + tcOfMembers + ',');
stream.println (indent + " null);");
int offsetSoFar = innerOffsets.currentOffset ();
innerOffsets = new TCOffsets ();
innerOffsets.set (entry);
innerOffsets.bumpCurrentOffset (offsetSoFar - offsetForStruct);
}
tcoffsets.bumpCurrentOffset (innerOffsets.currentOffset ());
// <54697>
//stream.println (indent + name + " = org.omg.CORBA.ORB.init ().create_struct_tc (id (), \"" + Util.stripLeadingUnderscores (entry.name ()) + "\", " + membersName + ");");
stream.println (indent + name + " = org.omg.CORBA.ORB.init ().create_" + (thisIsReallyAnException ? "exception" : "struct") + "_tc (" + Util.helperName (s, true) + ".id (), \"" + Util.stripLeadingUnderscores (entry.name ()) + "\", " + membersName + ");"); // <d61056>
return index;
}
示例24
public int type (int index, String indent, TCOffsets tcoffsets, String name, SymtabEntry entry, PrintWriter stream)
{
// The type() method is invoked from other emitters instead of when an IDL
// typedef statement is being processed. Code generated is identical minus the
// generation of a create_alias_tc() which is required for IDL typedef's but not
// needed when typedef is being processed as a member of struct/union/valuetype.
return helperType( index, indent, tcoffsets, name, entry, stream);
}
示例25
/**
* <d62023> Write the methodEntry for a valuetype factory method into
* the Value Helper class. Contents from email from Simon,
* 4/25/99.
**/
protected void helperFactoryMethod (Hashtable symbolTable, MethodEntry m, SymtabEntry t, PrintWriter stream)
{
this.symbolTable = symbolTable;
this.m = m;
this.stream = stream;
String initializerName = m.name ();
String typeName = Util.javaName (t);
String factoryName = typeName + "ValueFactory";
// Step 1. Print factory method decl up to parms.
stream.print (" public static " + typeName + " " + initializerName +
" (org.omg.CORBA.ORB $orb");
if (!m.parameters ().isEmpty ())
stream.print (", "); // <d62794>
// Step 2. Print the declaration parameter list.
writeParmList (m, true, stream);
// Step 3. Print the body of the factory method
stream.println (")");
stream.println (" {");
stream.println (" try {");
stream.println (" " + factoryName + " $factory = (" + factoryName + ")");
stream.println (" ((org.omg.CORBA_2_3.ORB) $orb).lookup_value_factory(id());");
stream.print (" return $factory." + initializerName + " (");
writeParmList (m, false, stream);
stream.println (");");
stream.println (" } catch (ClassCastException $ex) {");
stream.println (" throw new org.omg.CORBA.BAD_PARAM ();");
stream.println (" }");
stream.println (" }");
stream.println ();
}
示例26
/**
*
**/
static private void checkForArrays (SymtabEntry entry, Vector importTypes, Vector importList)
{
if (entry instanceof TypedefEntry)
{
TypedefEntry t = (TypedefEntry)entry;
String arrays = checkForArrayBase (t, importTypes, importList);
checkForArrayDimensions (arrays, importTypes, importList);
}
}
示例27
/**
* <d62023> Call super._read()
**/
public int read (int index, String indent, String name, SymtabEntry entry, PrintWriter stream)
{
// First do the state members from concrete parent hierarchy
Vector vParents = ((ValueEntry) entry).derivedFrom ();
if (vParents != null && vParents.size() != 0)
{
ValueEntry parent = (ValueEntry) vParents.elementAt (0);
if (parent == null)
return index;
// call super._read if non-abstract value parent
if ((!parent.isAbstract ()) && (! Util.javaQualifiedName(parent).equals ("java.io.Serializable"))) // <d60929>
stream.println(indent + "super._read (istream);");
}
Vector vMembers = ((ValueEntry) entry).state ();
int noOfMembers = vMembers == null ? 0 : vMembers.size ();
for (int k = 0; k < noOfMembers; k++)
{
TypedefEntry member = (TypedefEntry)((InterfaceState)vMembers.elementAt (k)).entry;
String memberName = member.name ();
SymtabEntry mType = member.type ();
if (mType instanceof PrimitiveEntry ||
mType instanceof TypedefEntry ||
mType instanceof SequenceEntry ||
mType instanceof StringEntry ||
!member.arrayInfo ().isEmpty ())
index = ((JavaGenerator)member.generator ()).read (index, indent, name + '.' + memberName, member, stream);
else
stream.println (indent + name + '.' + memberName + " = " +
Util.helperName (mType, true) + ".read (istream);"); // <d61056>
}
return index;
}
示例28
/**
*
**/
static void fillValueBoxInfo (ValueBoxEntry vb)
{
SymtabEntry stateMember = (((InterfaceState) vb.state ().elementAt (0)).entry);
if (stateMember.type() != null)
Util.fillInfo (stateMember.type ());
Util.fillInfo (stateMember);
}
示例29
/**
* d62023
**/
public int write (int index, String indent, String name, SymtabEntry entry, PrintWriter stream)
{
Vector vMembers = ( (ValueEntry) entry ).state ();
TypedefEntry member = ((InterfaceState) vMembers.elementAt (0)).entry;
SymtabEntry mType = member.type ();
if (mType instanceof PrimitiveEntry || !member.arrayInfo ().isEmpty ())
index = ((JavaGenerator)member.generator ()).write (index, indent, name + ".value", member, stream);
else if (mType instanceof SequenceEntry || mType instanceof StringEntry || mType instanceof TypedefEntry || !member.arrayInfo ().isEmpty ())
index = ((JavaGenerator)member.generator ()).write (index, indent, name, member, stream);
else
stream.println (indent + Util.helperName (mType, true) + ".write (ostream, " + name + ");"); // <d61056>
return index;
}
示例30
/**
*
**/
private void writeType (String indent, String name, SymtabEntry type, PrintWriter stream)
{
if (type instanceof PrimitiveEntry)
{
// RJB does something have to be done with TC offsets?
if (type.name ().equals ("long long"))
stream.println (indent + name + " (org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_longlong));");
else if (type.name ().equals ("unsigned short"))
stream.println (indent + name + " (org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_ushort));");
else if (type.name ().equals ("unsigned long"))
stream.println (indent + name + " (org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_ulong));");
else if (type.name ().equals ("unsigned long long"))
stream.println (indent + name + " (org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_ulonglong));");
else
stream.println (indent + name + " (org.omg.CORBA.ORB.init ().get_primitive_tc (org.omg.CORBA.TCKind.tk_" + type.name () + "));");
}
else if (type instanceof StringEntry)
{
StringEntry s = (StringEntry)type;
Expression e = s.maxSize ();
if (e == null)
stream.println (indent + name + " (org.omg.CORBA.ORB.init ().create_" + type.name () + "_tc (" + Util.parseExpression (e) + "));");
else
stream.println (indent + name + " (org.omg.CORBA.ORB.init ().create_" + type.name () + "_tc (0));");
}
else
stream.println (indent + name + '(' + Util.helperName (type, true) + ".type ());"); // <d61056>
}