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

#ifndef __gnu_javax_crypto_assembly_CascadeTransformer__
#define __gnu_javax_crypto_assembly_CascadeTransformer__

#pragma interface

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

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

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

public: // actually package-private
  CascadeTransformer(::gnu::javax::crypto::assembly::Cascade *);
  virtual void initDelegate(::java::util::Map *);
  virtual jint delegateBlockSize();
  virtual void resetDelegate();
  virtual JArray< jbyte > * updateDelegate(JArray< jbyte > *, jint, jint);
  virtual JArray< jbyte > * lastUpdateDelegate();
private:
  JArray< jbyte > * updateInternal(JArray< jbyte > *, jint, jint);
  ::gnu::javax::crypto::assembly::Cascade * __attribute__((aligned(__alignof__( ::gnu::javax::crypto::assembly::Transformer)))) delegate;
  jint blockSize;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_crypto_assembly_CascadeTransformer__
