// Code generated by gobind. DO NOT EDIT.

// JNI functions for the Go <=> Java bridge.
//
//   autogenerated by gobind -lang=java issue29559

#include <android/log.h>
#include <stdint.h>
#include "seq.h"
#include "_cgo_export.h"
#include "issue29559.h"


JNIEXPORT void JNICALL
Java_issue29559_Issue29559__1init(JNIEnv *env, jclass _unused) {
    jclass clazz;
}

JNIEXPORT void JNICALL
Java_issue29559_Issue29559_takesAString(JNIEnv* env, jclass _clazz, jstring s) {
    nstring _s = go_seq_from_java_string(env, s);
    proxyissue29559__TakesAString(_s);
}

