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

#ifndef __org_omg_CORBA_WStringSeqHolder__
#define __org_omg_CORBA_WStringSeqHolder__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
      namespace typecodes
      {
          class ArrayTypeCode;
      }
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class TypeCode;
          class WStringSeqHolder;
        namespace portable
        {
            class InputStream;
            class OutputStream;
        }
      }
    }
  }
}

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

public:
  WStringSeqHolder();
  WStringSeqHolder(JArray< ::java::lang::String * > *);
  void _read(::org::omg::CORBA::portable::InputStream *);
  ::org::omg::CORBA::TypeCode * _type();
  void _write(::org::omg::CORBA::portable::OutputStream *);
  JArray< ::java::lang::String * > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) value;
private:
  ::gnu::CORBA::typecodes::ArrayTypeCode * typecode;
public:
  static ::java::lang::Class class$;
};

#endif // __org_omg_CORBA_WStringSeqHolder__
