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

#ifndef __gnu_javax_crypto_assembly_LoopbackTransformer__
#define __gnu_javax_crypto_assembly_LoopbackTransformer__

#pragma interface

#include <gnu/javax/crypto/assembly/Transformer.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace crypto
      {
        namespace assembly
        {
            class LoopbackTransformer;
        }
      }
    }
  }
}

class gnu::javax::crypto::assembly::LoopbackTransformer : public ::gnu::javax::crypto::assembly::Transformer
{

public: // actually package-private
  LoopbackTransformer();
public:
  void init(::java::util::Map *);
  void reset();
  JArray< jbyte > * update(JArray< jbyte > *, jint, jint);
  JArray< jbyte > * lastUpdate();
public: // actually package-private
  void initDelegate(::java::util::Map *);
  jint delegateBlockSize();
  void resetDelegate();
  JArray< jbyte > * updateDelegate(JArray< jbyte > *, jint, jint);
  JArray< jbyte > * lastUpdateDelegate();
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_crypto_assembly_LoopbackTransformer__
