
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __org_omg_CORBA_AnySeqHelper__
#define __org_omg_CORBA_AnySeqHelper__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class Any;
          class AnySeqHelper;
          class TypeCode;
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
    }
  }
}

class org::omg::CORBA::AnySeqHelper : public ::java::lang::Object
{

public:
  AnySeqHelper();
  static JArray< ::org::omg::CORBA::Any * > * extract(::org::omg::CORBA::Any *);
  static ::java::lang::String * id();
  static void insert(::org::omg::CORBA::Any *, JArray< ::org::omg::CORBA::Any * > *);
  static JArray< ::org::omg::CORBA::Any * > * read(::org::omg::CORBA::portable::InputStream *);
  static ::org::omg::CORBA::TypeCode * type();
  static void write(::org::omg::CORBA::portable::OutputStream *, JArray< ::org::omg::CORBA::Any * > *);
  static ::java::lang::Class class$;
};

#endif // __org_omg_CORBA_AnySeqHelper__
