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

#ifndef __gnu_xml_libxmlj_dom_GnomeXPathResult__
#define __gnu_xml_libxmlj_dom_GnomeXPathResult__

#include <jni.h>

#ifdef __cplusplus
extern "C"
{
#endif

JNIEXPORT void JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_free (JNIEnv *env, jobject, jobject);
JNIEXPORT jshort JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_getResultType (JNIEnv *env, jobject);
JNIEXPORT jdouble JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_getNumberValue (JNIEnv *env, jobject);
JNIEXPORT jstring JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_getStringValue (JNIEnv *env, jobject);
JNIEXPORT jboolean JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_getBooleanValue (JNIEnv *env, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_getSingleNodeValue (JNIEnv *env, jobject);
JNIEXPORT jboolean JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_getInvalidIteratorState (JNIEnv *env, jobject);
JNIEXPORT jint JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_getSnapshotLength (JNIEnv *env, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_iterateNext (JNIEnv *env, jobject);
JNIEXPORT jobject JNICALL Java_gnu_xml_libxmlj_dom_GnomeXPathResult_snapshotItem (JNIEnv *env, jobject, jint);

#ifdef __cplusplus
}
#endif

#endif /* __gnu_xml_libxmlj_dom_GnomeXPathResult__ */
