// Package gomobile_bind is an autogenerated binder stub for package issue12328.
//   gobind -lang=go issue12328
//
// File is generated by gobind. Do not edit.
package gomobile_bind

/*
#include <stdlib.h>
#include <stdint.h>
#include "seq.h"
#include "issue12328.h"

*/
import "C"

import (
	_seq "golang.org/x/mobile/bind/seq"
	"issue12328"
)

// suppress the error if seq ends up unused
var _ = _seq.FromRefNum

//export proxyissue12328_T_Err_Set
func proxyissue12328_T_Err_Set(refnum C.int32_t, v C.nstring) {
	ref := _seq.FromRefNum(int32(refnum))
	_v_str := decodeString(v)
	_v := toError(_v_str)
	ref.Get().(*issue12328.T).Err = _v
}

//export proxyissue12328_T_Err_Get
func proxyissue12328_T_Err_Get(refnum C.int32_t) C.nstring {
	ref := _seq.FromRefNum(int32(refnum))
	v := ref.Get().(*issue12328.T).Err
	var _v_str string
	if v == nil {
		_v_str = ""
	} else {
		_v_str = v.Error()
	}
	_v := encodeString(_v_str)
	return _v
}
