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

#ifndef __gnu_xml_libxmlj_util_StandaloneLocator__
#define __gnu_xml_libxmlj_util_StandaloneLocator__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace libxmlj
      {
        namespace util
        {
            class StandaloneLocator;
        }
      }
    }
  }
}

class gnu::xml::libxmlj::util::StandaloneLocator : public ::java::lang::Object
{

public:
  StandaloneLocator(jint, jint, ::java::lang::String *, ::java::lang::String *);
  ::java::lang::String * getPublicId();
  ::java::lang::String * getSystemId();
  jint getLineNumber();
  jint getColumnNumber();
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) lineNumber;
  jint columnNumber;
  ::java::lang::String * publicId;
  ::java::lang::String * systemId;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_libxmlj_util_StandaloneLocator__
