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

#ifndef __gnu_xml_libxmlj_dom_GnomeElement__
#define __gnu_xml_libxmlj_dom_GnomeElement__

#include <jni.h>

#ifdef __cplusplus
extern "C"
{
#endif

JNIEXPORT jstring JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_getAttribute (JNIEnv *env, jobject, jstring);
JNIEXPORT void JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_setAttribute (JNIEnv *env, jobject, jstring, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_getAttributeNode (JNIEnv *env, jobject, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_setAttributeNode (JNIEnv *env, jobject, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_removeAttributeNode (JNIEnv *env, jobject, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_getElementsByTagName (JNIEnv *env, jobject, jstring);
JNIEXPORT jstring JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_getAttributeNS (JNIEnv *env, jobject, jstring, jstring);
JNIEXPORT void JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_setAttributeNS (JNIEnv *env, jobject, jstring, jstring, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_getAttributeNodeNS (JNIEnv *env, jobject, jstring, jstring);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_setAttributeNodeNS (JNIEnv *env, jobject, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_getElementsByTagNameNS (JNIEnv *env, jobject, jstring, jstring);
JNIEXPORT jboolean JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_hasAttribute (JNIEnv *env, jobject, jstring);
JNIEXPORT jboolean JNICALL Java_gnu_xml_libxmlj_dom_GnomeElement_hasAttributeNS (JNIEnv *env, jobject, jstring, jstring);

#ifdef __cplusplus
}
#endif

#endif /* __gnu_xml_libxmlj_dom_GnomeElement__ */
