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

#ifndef __javax_naming_BinaryRefAddr__
#define __javax_naming_BinaryRefAddr__

#pragma interface

#include <javax/naming/RefAddr.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace naming
    {
        class BinaryRefAddr;
    }
  }
}

class javax::naming::BinaryRefAddr : public ::javax::naming::RefAddr
{

public:
  BinaryRefAddr(::java::lang::String *, JArray< jbyte > *);
  BinaryRefAddr(::java::lang::String *, JArray< jbyte > *, jint, jint);
  virtual ::java::lang::Object * getContent();
  virtual jboolean equals(::java::lang::Object *);
  virtual jint hashCode();
  virtual ::java::lang::String * toString();
public: // actually package-private
  static const jlong serialVersionUID = -3415254970957330361LL;
private:
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::javax::naming::RefAddr)))) buf;
  static JArray< jchar > * hex;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_naming_BinaryRefAddr__
