Beispiel #1
0
  /** print an IDL operation */
  public void printOperation(org.omg.CORBA.OperationDescription op, int indentation) {
    indent(indentation);

    String mode = "";
    if (op.mode.equals(org.omg.CORBA.OperationMode.OP_ONEWAY)) mode = "oneway ";
    print(mode + TypeCode.idlTypeName(op.result) + " " + op.name + "(");

    indent(0);

    for (int i = 0; i < op.parameters.length - 1; i++) {
      printParameter(op.parameters[i], ",");
    }

    if (op.parameters.length > 0) printParameter(op.parameters[op.parameters.length - 1], "");
    print(")");

    if (op.exceptions.length > 0) {
      print(" raises (");
      print(TypeCode.idlTypeName(op.exceptions[0].type));
      for (int i = 1; i < op.exceptions.length; i++) {
        print(TypeCode.idlTypeName(op.exceptions[0].type) + ",");
      }
      print(")");
    }
    print(";" + "\n");
    indent(indentation);
  }
Beispiel #2
0
 public void printParameter(org.omg.CORBA.ParameterDescription p, String separator) {
   if (p.mode.equals(org.omg.CORBA.ParameterMode.PARAM_OUT)) print("out ");
   else if (p.mode.equals(org.omg.CORBA.ParameterMode.PARAM_INOUT)) print("inout ");
   else print("in ");
   print(TypeCode.idlTypeName(p.type) + " " + p.name);
   print(separator);
 }
Beispiel #3
0
  /** print an IDL struct def */
  public void printStruct(org.omg.CORBA.TypeDescription t, int indentation) {
    org.omg.CORBA.StructDef s_def = org.omg.CORBA.StructDefHelper.narrow(ir.lookup_id(t.id));

    if (s_def != null) {
      org.omg.CORBA.StructMember[] members = s_def.members();
      org.omg.CORBA.Contained[] contents =
          s_def.contents(org.omg.CORBA.DefinitionKind.dk_all, false);

      indent(indentation);
      print("struct " + s_def.name() + " {" + "\n");
      indent(indentation + 3);

      for (int i = 0; i < members.length; i++) {
        print(TypeCode.idlTypeName(members[i].type) + " " + members[i].name + ";" + "\n");
      }

      for (int i = 0; i < contents.length; i++) {
        printContained(contents[i], indentation);
      }

      indent(indentation);
      print("};" + "\n\n");
    } else {
      logger.error("Error, could not find struct " + t.id + " in IR ");
    }
  }
Beispiel #4
0
  /** print an IDL alias */
  public void printAlias(org.omg.CORBA.TypeDescription t, int indentation) {
    org.omg.CORBA.AliasDef adef = org.omg.CORBA.AliasDefHelper.narrow(ir.lookup_id(t.id));
    indent(indentation);

    String originalTypeName = TypeCode.idlTypeName(adef.original_type_def().type());

    print("typedef " + originalTypeName + " " + adef.name() + ";\n\n");
  }
Beispiel #5
0
  /** print an IDL const */
  public void printConstant(org.omg.CORBA.ConstantDescription c, int indentation) {
    indent(indentation);
    StringBuffer sb =
        new StringBuffer("const " + TypeCode.idlTypeName(c.type) + " " + c.name + " = ");
    switch (c.type.kind().value()) {
      case org.omg.CORBA.TCKind._tk_string:
        sb.append("\"" + c.value.extract_string() + "\"");
        break;
      case org.omg.CORBA.TCKind._tk_wstring:
        sb.append("\"" + c.value.extract_wstring() + "\"");
        break;
      case org.omg.CORBA.TCKind._tk_boolean:
        sb.append(c.value.extract_boolean());
        break;
      case org.omg.CORBA.TCKind._tk_long:
        sb.append(c.value.extract_long());
        break;
      case org.omg.CORBA.TCKind._tk_ulong:
        sb.append(c.value.extract_ulong());
        break;
      case org.omg.CORBA.TCKind._tk_longlong:
        sb.append(c.value.extract_longlong());
        break;
      case org.omg.CORBA.TCKind._tk_ulonglong:
        sb.append(c.value.extract_ulonglong());
        break;
      case org.omg.CORBA.TCKind._tk_short:
        sb.append(c.value.extract_short());
        break;
      case org.omg.CORBA.TCKind._tk_ushort:
        sb.append(c.value.extract_ushort());
        break;
      case org.omg.CORBA.TCKind._tk_float:
        sb.append(c.value.extract_float());
        break;
      case org.omg.CORBA.TCKind._tk_octet:
        sb.append(c.value.extract_octet());
        break;
      case org.omg.CORBA.TCKind._tk_char:
        sb.append("\'" + c.value.extract_char() + "\'");
        break;
      case org.omg.CORBA.TCKind._tk_wchar:
        sb.append("\'" + c.value.extract_wchar() + "\'");
        break;
      case org.omg.CORBA.TCKind._tk_fixed:
        sb.append(c.value.extract_fixed());
        break;
    }

    print(sb.toString() + ";\n\n");
  }
Beispiel #6
0
  /** print an IDL exception def */
  public void printException(org.omg.CORBA.ExceptionDescription e, int indentation) {
    org.omg.CORBA.ExceptionDef e_def = org.omg.CORBA.ExceptionDefHelper.narrow(ir.lookup_id(e.id));

    if (e_def != null) {
      org.omg.CORBA.StructMember[] members = e_def.members();
      indent(indentation);
      print("exception " + e.name + " {" + "\n");
      indent(indentation + 3);
      for (int i = 0; i < members.length; i++) {
        print(TypeCode.idlTypeName(members[i].type) + " " + members[i].name + ";" + "\n");
      }
      indent(indentation);
      print("};" + "\n\n");
    } else {
      logger.error("Error, could not find exception " + e.id + " in IR ");
    }
  }
Beispiel #7
0
  /** print an IDL Union */
  public void printUnion(org.omg.CORBA.TypeDescription t, int indentation) {
    org.omg.CORBA.UnionDef u_def = org.omg.CORBA.UnionDefHelper.narrow(ir.lookup_id(t.id));
    if (u_def != null) {
      org.omg.CORBA.UnionMember[] members = u_def.members();
      indent(indentation);
      print(
          "union "
              + u_def.name()
              + " switch ( "
              + TypeCode.idlTypeName(u_def.discriminator_type())
              + " )\n");
      print("{\n");
      indent(indentation + 4);
      int def_idx = -1;
      for (int i = 0; i < members.length; i++) {
        if (members[i].label.type().kind() == org.omg.CORBA.TCKind.tk_octet
            && (members[i].label.extract_octet() == (byte) 0)) {
          def_idx = i;
        } else if (members[i].label.type().kind() == org.omg.CORBA.TCKind.tk_char) {
          print(
              "case \'"
                  + members[i].label.extract_char()
                  + "\' : "
                  + TypeCode.idlTypeName(members[i].type)
                  + " "
                  + members[i].name
                  + ";"
                  + "\n");
        } else if (members[i].label.type().kind() == org.omg.CORBA.TCKind.tk_enum) {
          // int val = members[i].label.extract_long();
          try {
            DynEnum dEnum = DynEnumHelper.narrow(factory.create_dyn_any(members[i].label));

            // print("case " + members[i].label.type().member_name(val) + " : " +
            print(
                "case "
                    + dEnum.get_as_string()
                    + " : "
                    + TypeCode.idlTypeName(members[i].type)
                    + " "
                    + members[i].name
                    + ";"
                    + "\n");
          } catch (Exception bk) {
            logger.error("unexpected exception", bk);
          }
        } else
          print(
              "case "
                  + members[i].label.type()
                  + " : "
                  + TypeCode.idlTypeName(members[i].type)
                  + " "
                  + members[i].name
                  + ";"
                  + "\n");
      }
      if (def_idx != -1) {
        print(
            "default : "
                + TypeCode.idlTypeName(members[def_idx].type)
                + " "
                + members[def_idx].name
                + ";"
                + "\n");
      }
      indent(indentation);
      print("};" + "\n\n");
    } else {
      logger.error("Error, could not find union " + t.id + " in IR ");
    }
  }
Beispiel #8
0
 /** print an IDL attribute */
 public void printAttribute(org.omg.CORBA.AttributeDescription a, int indentation) {
   indent(indentation);
   String mode = "";
   if (a.mode.equals(org.omg.CORBA.AttributeMode.ATTR_READONLY)) mode = "readonly ";
   print(mode + "attribute " + TypeCode.idlTypeName(a.type) + " " + a.name + ";" + "\n");
 }