// lastError retrieves the last error from the FFI layer.
func lastError() error {
code := int32(C.{{ last_error_code_fn }}())
if code == 0 {
return nil
}
{% if error_codes %}
switch code {
{% for error_code in error_codes %}
case {{ error_code.0 }}:
return {{ error_code.1 }}
{% endfor %}
}
{% endif %}
ctx := C.{{ last_error_context_fn }}()
if ctx == nil {
return fmt.Errorf("[%d] native error", code)
}
message := C.GoString(ctx)
return fmt.Errorf("[%d] %s", code, message)
}