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

#include <jni.h>

#ifndef __gnu_xml_libxmlj_dom_GnomeDocument__
#define __gnu_xml_libxmlj_dom_GnomeDocument__

#ifdef __cplusplus
extern "C"
{
#endif

JNIEXPORT void JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_free (JNIEnv *env, jobject, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_getDoctype (JNIEnv *env, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_getDocumentElement (JNIEnv *env, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_createDocumentType (JNIEnv *env, jobject, jstring, jstring, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_createDocumentFragment (JNIEnv *env, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_createTextNode (JNIEnv *env, jobject, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_createComment (JNIEnv *env, jobject, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_createCDATASection (JNIEnv *env, jobject, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_createProcessingInstruction (JNIEnv *env, jobject, jstring, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_createEntityReference (JNIEnv *env, jobject, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_getElementsByTagName (JNIEnv *env, jobject, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_xmljImportNode (JNIEnv *env, jobject, jobject, jboolean);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_createElementNS (JNIEnv *env, jobject, jstring, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_createAttributeNS (JNIEnv *env, jobject, jstring, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_getElementsByTagNameNS (JNIEnv *env, jobject, jstring, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_xmljGetElementById (JNIEnv *env, jobject, jstring);
JNIEXPORT jstring JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_getInputEncoding (JNIEnv *env, jobject);
JNIEXPORT jstring JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_getXmlEncoding (JNIEnv *env, jobject);
JNIEXPORT jboolean JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_getXmlStandalone (JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_setXmlStandalone (JNIEnv *env, jobject, jboolean);
JNIEXPORT jstring JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_getXmlVersion (JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_setXmlVersion (JNIEnv *env, jobject, jstring);
JNIEXPORT jstring JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_getDocumentURI (JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_setDocumentURI (JNIEnv *env, jobject, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_xmljAdoptNode (JNIEnv *env, jobject, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_renameNode (JNIEnv *env, jobject, jobject, jstring, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeDocument_evaluate (JNIEnv *env, jobject, jstring, jobject, jobject, jshort, jobject);

#ifdef __cplusplus
}
#endif

#endif /* __gnu_xml_libxmlj_dom_GnomeDocument__ */
