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

#ifndef __gnu_CORBA_CDR_BufferredCdrInput__
#define __gnu_CORBA_CDR_BufferredCdrInput__

#pragma interface

#include <gnu/CORBA/CDR/AbstractCdrInput.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace CORBA
    {
      namespace CDR
      {
          class AligningInput;
          class BufferredCdrInput;
          class gnuRuntime;
      }
    }
  }
}

class gnu::CORBA::CDR::BufferredCdrInput : public ::gnu::CORBA::CDR::AbstractCdrInput
{

public:
  BufferredCdrInput(JArray< jbyte > *);
  virtual void setOffset(jint);
  virtual void align(jint);
  virtual void mark(jint);
  virtual jboolean markSupported();
  virtual void reset();
  virtual jint getPosition();
  virtual void seek(jint);
  virtual ::gnu::CORBA::CDR::gnuRuntime * getRunTime();
  virtual void setRunTime(::gnu::CORBA::CDR::gnuRuntime *);
private:
  static const jlong serialVersionUID = 1LL;
public:
  ::gnu::CORBA::CDR::AligningInput * __attribute__((aligned(__alignof__( ::gnu::CORBA::CDR::AbstractCdrInput)))) buffer;
  static ::java::lang::Class class$;
};

#endif // __gnu_CORBA_CDR_BufferredCdrInput__
