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

package codec.orb;

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.*;

/** Class providing generic operations with ANY values. */
final public class AnyGeneric {

    /** Copy the contents of "src" into "dest". */
   	public static void dynAnyToAny(org.omg.CORBA.Any dest,
	    org.omg.CORBA.DynAny src) {

        org.omg.CORBA.Any interAny = null;
		try {
	  		interAny = src.to_any();
		}
		catch (org.omg.CORBA.DynAnyPackage.Invalid inv) {
			System.out.println("AnyGeneric::" + 
				"dynAnyToAny(): Internal error.");
			System.exit(0);
		}
					
		org.omg.CORBA.portable.OutputStream out = 
			interAny.create_output_stream();

		interAny.write_value(out);
		dest.read_value(out.create_input_stream(), interAny.type());
	}

    /** Remove all outstanding alias definitions from TypeCode. */
   	public static org.omg.CORBA.TypeCode removeAliases(
		org.omg.CORBA.TypeCode value) {

		try
		{
			while (value.kind().value() == org.omg.CORBA.TCKind._tk_alias) {

				value = value.content_type();
			}
		}
		catch (org.omg.CORBA.TypeCodePackage.BadKind ex)
		{
			System.out.println("AnyGeneric::" +
				"removeAliases(): Internal error.");
			System.exit(0);
		}
		return value;
	}
}
