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

#ifndef __gnu_xml_transform_DOMSourceLocator__
#define __gnu_xml_transform_DOMSourceLocator__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace transform
      {
          class DOMSourceLocator;
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Node;
      }
    }
  }
}

class gnu::xml::transform::DOMSourceLocator : public ::java::lang::Object
{

public: // actually package-private
  DOMSourceLocator(::org::w3c::dom::Node *);
public:
  virtual ::org::w3c::dom::Node * getOriginatingNode();
  virtual ::java::lang::String * getPublicId();
  virtual ::java::lang::String * getSystemId();
  virtual jint getLineNumber();
  virtual jint getColumnNumber();
public: // actually package-private
  ::org::w3c::dom::Node * __attribute__((aligned(__alignof__( ::java::lang::Object)))) node;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_transform_DOMSourceLocator__
