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

#ifndef __java_net_VMInetAddress__
#define __java_net_VMInetAddress__

#pragma interface

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

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

class java::net::VMInetAddress : public ::java::lang::Object
{

public: // actually package-private
  VMInetAddress();
public:
  static ::java::lang::String * getLocalHostname();
  static JArray< jbyte > * lookupInaddrAny();
  static ::java::lang::String * getHostByAddr(JArray< jbyte > *);
  static JArray< JArray< jbyte > * > * getHostByName(::java::lang::String *);
  static JArray< jbyte > * aton(::java::lang::String *);
  static ::java::lang::Class class$;
};

#endif // __java_net_VMInetAddress__
