'jobject_wrapper_create', C.Function('jobject_wrapper_create', return_type='JObjectWrapper*', params=['jobject jobj', 'gboolean weak'], body=[ C.Decl('JNIEnv*', 'env'), C.Decl('JObjectWrapper*', 'wrapper'), '', C.Assign('env', C.Call('get_jni_env')), C.Assign('wrapper', C.Call('g_slice_new0', 'JObjectWrapper')), C.Assert('wrapper'), C.IfElse(ifs=['weak'], bodies=[[ C.Assign('wrapper->weak', C.Env('NewWeakGlobalRef', 'jobj')), C.Log.info('created weak global ref: %p', 'wrapper->weak'), ], [ C.Assign('wrapper->obj', C.Env('NewGlobalRef', 'jobj')), C.Log.info('created global ref: %p', 'wrapper->obj'), ]]), C.ExceptionCheck('NULL'), '', C.Return('wrapper'), ]))