/*
 *  UnionStructHelper.java v0.10 20-DEC-1999
 *  Copyright (c) TKK/TLM/Calypso
 *  Author: Alexey Mednonogov
 */

package codec.adapt;

import java.io.*;
import java.util.*;

import codec.*;
import codec.adapt.*;
import codec.convert.*;
import codec.debug.*;
import codec.dyntree.*;
import codec.export.*;
import codec.orb.*;
import codec.pco.*;
import codec.server.*;
import codec.client.*;
import codec.visit.*;
import codec.build.*;

/** Helper class for "UnionStruct". Introduced to enforce specification
 *  requirement that any IDL "union" shall be encapsulated in ASP into
 *  TTCN SEQUENCE (aka IDL "struct") containing discriminator and "union"
 *  (aka TTCN CHOICE) value itself. */
final public class UnionStructHelper {

    public static org.omg.CORBA.TypeCode type(
		org.omg.CORBA.TypeCode discrType,
		org.omg.CORBA.TypeCode unionType) {

		org.omg.CORBA.TypeCode typeCode = null;

        org.omg.CORBA.ORB orb =
		    CorbaServer.getCodecObject().getOrbGeneric().getORB();

        org.omg.CORBA.StructMember[] members =
	  		new org.omg.CORBA.StructMember[2];

        members[0] = new org.omg.CORBA.StructMember();
        members[0].name = "discriminator";
   		members[0].type = discrType;

        members[1] = new org.omg.CORBA.StructMember();
        members[1].name = "value";
        members[1].type = unionType;

        typeCode = orb.create_struct_tc(id(), "UnionStruct", members);

        return typeCode;
    }

    public static String id() {
        return "IDL:CodecTypes/UnionStruct:1.0";
    }
}
