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

#ifndef __org_w3c_dom_ls_LSParser__
#define __org_w3c_dom_ls_LSParser__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class DOMConfiguration;
          class Document;
          class Node;
        namespace ls
        {
            class LSInput;
            class LSParser;
            class LSParserFilter;
        }
      }
    }
  }
}

class org::w3c::dom::ls::LSParser : public ::java::lang::Object
{

public:
  virtual ::org::w3c::dom::DOMConfiguration * getDomConfig() = 0;
  virtual ::org::w3c::dom::ls::LSParserFilter * getFilter() = 0;
  virtual void setFilter(::org::w3c::dom::ls::LSParserFilter *) = 0;
  virtual jboolean getAsync() = 0;
  virtual jboolean getBusy() = 0;
  virtual ::org::w3c::dom::Document * parse(::org::w3c::dom::ls::LSInput *) = 0;
  virtual ::org::w3c::dom::Document * parseURI(::java::lang::String *) = 0;
  virtual ::org::w3c::dom::Node * parseWithContext(::org::w3c::dom::ls::LSInput *, ::org::w3c::dom::Node *, jshort) = 0;
  virtual void abort() = 0;
  static const jshort ACTION_APPEND_AS_CHILDREN = 1;
  static const jshort ACTION_REPLACE_CHILDREN = 2;
  static const jshort ACTION_INSERT_BEFORE = 3;
  static const jshort ACTION_INSERT_AFTER = 4;
  static const jshort ACTION_REPLACE = 5;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __org_w3c_dom_ls_LSParser__
