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>
}