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

#ifndef __java_net_Inet4Address__
#define __java_net_Inet4Address__

#pragma interface

#include <java/net/InetAddress.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace net
    {
        class Inet4Address;
    }
  }
}

class java::net::Inet4Address : public ::java::net::InetAddress
{

  ::java::lang::Object * writeReplace();
public: // actually package-private
  Inet4Address(JArray< jbyte > *, ::java::lang::String *);
public:
  jboolean isMulticastAddress();
  jboolean isLoopbackAddress();
  jboolean isAnyLocalAddress();
  jboolean isLinkLocalAddress();
  jboolean isSiteLocalAddress();
  jboolean isMCGlobal();
  jboolean isMCNodeLocal();
  jboolean isMCLinkLocal();
  jboolean isMCSiteLocal();
  jboolean isMCOrgLocal();
  JArray< jbyte > * getAddress();
  ::java::lang::String * getHostAddress();
  jint hashCode();
  jboolean equals(::java::lang::Object *);
public: // actually package-private
  static const jlong serialVersionUID = 3286316764910316507LL;
private:
  static const jint AF_INET = 2;
public:
  static ::java::lang::Class class$;
};

#endif // __java_net_Inet4Address__
