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

#ifndef __org_omg_CORBA_DataInputStream__
#define __org_omg_CORBA_DataInputStream__

#pragma interface

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

extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace CORBA
      {
          class Any;
          class AnySeqHolder;
          class BooleanSeqHolder;
          class CharSeqHolder;
          class DataInputStream;
          class DoubleSeqHolder;
          class FloatSeqHolder;
          class LongLongSeqHolder;
          class LongSeqHolder;
          class Object;
          class OctetSeqHolder;
          class ShortSeqHolder;
          class TypeCode;
          class ULongLongSeqHolder;
          class ULongSeqHolder;
          class UShortSeqHolder;
          class WCharSeqHolder;
      }
    }
  }
}

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

public:
  virtual ::org::omg::CORBA::Any * read_any() = 0;
  virtual jboolean read_boolean() = 0;
  virtual jchar read_char() = 0;
  virtual jchar read_wchar() = 0;
  virtual jbyte read_octet() = 0;
  virtual jshort read_short() = 0;
  virtual jshort read_ushort() = 0;
  virtual jint read_long() = 0;
  virtual jint read_ulong() = 0;
  virtual jlong read_longlong() = 0;
  virtual jlong read_ulonglong() = 0;
  virtual jfloat read_float() = 0;
  virtual jdouble read_double() = 0;
  virtual ::java::lang::String * read_string() = 0;
  virtual ::java::lang::String * read_wstring() = 0;
  virtual ::org::omg::CORBA::Object * read_Object() = 0;
  virtual ::java::lang::Object * read_Abstract() = 0;
  virtual ::java::io::Serializable * read_Value() = 0;
  virtual ::org::omg::CORBA::TypeCode * read_TypeCode() = 0;
  virtual void read_any_array(::org::omg::CORBA::AnySeqHolder *, jint, jint) = 0;
  virtual void read_boolean_array(::org::omg::CORBA::BooleanSeqHolder *, jint, jint) = 0;
  virtual void read_char_array(::org::omg::CORBA::CharSeqHolder *, jint, jint) = 0;
  virtual void read_wchar_array(::org::omg::CORBA::WCharSeqHolder *, jint, jint) = 0;
  virtual void read_octet_array(::org::omg::CORBA::OctetSeqHolder *, jint, jint) = 0;
  virtual void read_short_array(::org::omg::CORBA::ShortSeqHolder *, jint, jint) = 0;
  virtual void read_ushort_array(::org::omg::CORBA::UShortSeqHolder *, jint, jint) = 0;
  virtual void read_long_array(::org::omg::CORBA::LongSeqHolder *, jint, jint) = 0;
  virtual void read_ulong_array(::org::omg::CORBA::ULongSeqHolder *, jint, jint) = 0;
  virtual void read_ulonglong_array(::org::omg::CORBA::ULongLongSeqHolder *, jint, jint) = 0;
  virtual void read_longlong_array(::org::omg::CORBA::LongLongSeqHolder *, jint, jint) = 0;
  virtual void read_float_array(::org::omg::CORBA::FloatSeqHolder *, jint, jint) = 0;
  virtual void read_double_array(::org::omg::CORBA::DoubleSeqHolder *, jint, jint) = 0;
  virtual JArray< ::java::lang::String * > * _truncatable_ids() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __org_omg_CORBA_DataInputStream__
