package seqOfComplex;

/**
 * <ul>
 * <li> <b>IDL Source</b>    "seqOfComplexTest.idl"
 * <li> <b>IDL Name</b>      ::seqOfComplex::BasicStruct
 * <li> <b>Repository Id</b> IDL:seqOfComplex/BasicStruct:1.0
 * </ul>
 * <b>IDL definition:</b>
 * <pre>
 * struct BasicStruct {
  ...
};
 * </pre>
 */
public final class BasicStructHelper {
  private static boolean _inited = false;
  private static boolean _initing = false;
  private static org.omg.CORBA.TypeCode _type;
  private static boolean _initializing;

  private static org.omg.CORBA.ORB _orb () {
    return org.omg.CORBA.ORB.init();
  }

  public static seqOfComplex.BasicStruct read (final org.omg.CORBA.portable.InputStream _input) {
    final seqOfComplex.BasicStruct _result = new seqOfComplex.BasicStruct();
    _result.longVal = _input.read_long();
    _result.stringVal = _input.read_string();
    return _result;
  }

  public static void write (final org.omg.CORBA.portable.OutputStream _output, final seqOfComplex.BasicStruct _vis_value) {
    _output.write_long((int)_vis_value.longVal);
    _output.write_string((java.lang.String)_vis_value.stringVal);
  }

  public static void insert (final org.omg.CORBA.Any any, final seqOfComplex.BasicStruct _vis_value) {
    any.insert_Streamable(new seqOfComplex.BasicStructHolder(_vis_value));
  }

  public static seqOfComplex.BasicStruct extract (final org.omg.CORBA.Any any) {
    seqOfComplex.BasicStruct _vis_value;
    if (any instanceof com.inprise.vbroker.CORBA.Any) {
      seqOfComplex.BasicStructHolder _vis_holder = new seqOfComplex.BasicStructHolder();
      ((com.inprise.vbroker.CORBA.Any)any).extract_Streamable(_vis_holder);
      _vis_value = _vis_holder.value;
    }
    else {
      _vis_value = seqOfComplex.BasicStructHelper.read(any.create_input_stream());
    }
    return _vis_value;
  }

  public static org.omg.CORBA.TypeCode type () {
    if (_type == null) {
      synchronized (org.omg.CORBA.TypeCode.class) {
        if (_type == null) {
          if (_initializing) {
            return _orb().create_recursive_tc(id());
          }
          _initializing = true;
          final org.omg.CORBA.StructMember[] members = new org.omg.CORBA.StructMember[2];
          members[0] = new org.omg.CORBA.StructMember("longVal", _orb().get_primitive_tc(org.omg.CORBA.TCKind.tk_long), null);
          members[1] = new org.omg.CORBA.StructMember("stringVal", _orb().get_primitive_tc(org.omg.CORBA.TCKind.tk_string), null);
          _type = _orb().create_struct_tc(id(), "BasicStruct", members);
          _initializing = false;
        }
      }
    }
    return _type;
  }

  public static java.lang.String id () {
    return "IDL:seqOfComplex/BasicStruct:1.0";
  }
}
