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

#ifndef __gnu_CORBA_gnuValueHolder__
#define __gnu_CORBA_gnuValueHolder__

#pragma interface

#include <org/omg/CORBA/ValueBaseHolder.h>
extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
        class gnuValueHolder;
    }
  }
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class TypeCode;
        namespace portable
        {
            class BoxedValueHelper;
            class InputStream;
            class OutputStream;
        }
      }
    }
  }
}

class gnu::CORBA::gnuValueHolder : public ::org::omg::CORBA::ValueBaseHolder
{

public:
  gnuValueHolder(::java::io::Serializable *, ::org::omg::CORBA::TypeCode *);
  virtual ::org::omg::CORBA::TypeCode * _type();
  virtual void _write(::org::omg::CORBA::portable::OutputStream *);
  virtual void _read(::org::omg::CORBA::portable::InputStream *);
public: // actually package-private
  virtual void findHelper();
  ::org::omg::CORBA::TypeCode * __attribute__((aligned(__alignof__( ::org::omg::CORBA::ValueBaseHolder)))) type;
  ::org::omg::CORBA::portable::BoxedValueHelper * helper;
  jboolean helper_NA;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_gnuValueHolder__
