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

#ifndef __gnu_java_security_prng_IRandom__
#define __gnu_java_security_prng_IRandom__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace prng
        {
            class IRandom;
        }
      }
    }
  }
}

class gnu::java::security::prng::IRandom : public ::java::lang::Object
{

public:
  virtual ::java::lang::String * name() = 0;
  virtual void init(::java::util::Map *) = 0;
  virtual jbyte nextByte() = 0;
  virtual void nextBytes(JArray< jbyte > *, jint, jint) = 0;
  virtual void addRandomByte(jbyte) = 0;
  virtual void addRandomBytes(JArray< jbyte > *) = 0;
  virtual void addRandomBytes(JArray< jbyte > *, jint, jint) = 0;
  virtual ::java::lang::Object * clone() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __gnu_java_security_prng_IRandom__
