📄 swigutil_pl.c
字号:
SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"open_root", &result, "OrS", ib->editor, base_revision, dir_pool, POOLINFO)); *root_baton = make_baton(dir_pool, ib->editor, result); return SVN_NO_ERROR;}static svn_error_t * thunk_delete_entry(const char *path, svn_revnum_t revision, void *parent_baton, apr_pool_t *pool){ item_baton *ib = parent_baton; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"delete_entry", NULL, "OsrOS", ib->editor, path, revision, ib->baton, pool, POOLINFO)); return SVN_NO_ERROR;}static svn_error_t * thunk_add_directory(const char *path, void *parent_baton, const char *copyfrom_path, svn_revnum_t copyfrom_revision, apr_pool_t *dir_pool, void **child_baton){ item_baton *ib = parent_baton; SV *result; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"add_directory", &result, "OsOsrS", ib->editor, path, ib->baton, copyfrom_path, copyfrom_revision, dir_pool, POOLINFO)); *child_baton = make_baton(dir_pool, ib->editor, result); return SVN_NO_ERROR;}static svn_error_t * thunk_open_directory(const char *path, void *parent_baton, svn_revnum_t base_revision, apr_pool_t *dir_pool, void **child_baton){ item_baton *ib = parent_baton; SV *result; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"open_directory", &result, "OsOrS", ib->editor, path, ib->baton, base_revision, dir_pool, POOLINFO)); *child_baton = make_baton(dir_pool, ib->editor, result); return SVN_NO_ERROR;}static svn_error_t * thunk_change_dir_prop(void *dir_baton, const char *name, const svn_string_t *value, apr_pool_t *pool){ item_baton *ib = dir_baton; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"change_dir_prop", NULL, "OOssS", ib->editor, ib->baton, name, value ? value->data : NULL, pool, POOLINFO)); return SVN_NO_ERROR;}static svn_error_t * thunk_close_directory(void *dir_baton, apr_pool_t *pool){ return close_baton(dir_baton, "close_directory", pool);}static svn_error_t * thunk_absent_directory(const char *path, void *parent_baton, apr_pool_t *pool){ item_baton *ib = parent_baton; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"absent_directory", NULL, "OsOS", ib->editor, path, ib->baton, pool, POOLINFO)); return SVN_NO_ERROR;}static svn_error_t * thunk_add_file(const char *path, void *parent_baton, const char *copyfrom_path, svn_revnum_t copyfrom_revision, apr_pool_t *file_pool, void **file_baton){ item_baton *ib = parent_baton; SV *result; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"add_file", &result, "OsOsrS", ib->editor, path, ib->baton, copyfrom_path, copyfrom_revision, file_pool, POOLINFO)); *file_baton = make_baton(file_pool, ib->editor, result); return SVN_NO_ERROR;}static svn_error_t * thunk_open_file(const char *path, void *parent_baton, svn_revnum_t base_revision, apr_pool_t *file_pool, void **file_baton){ item_baton *ib = parent_baton; SV *result; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"open_file", &result, "OsOrS", ib->editor, path, ib->baton, base_revision, file_pool, POOLINFO)); *file_baton = make_baton(file_pool, ib->editor, result); return SVN_NO_ERROR;}static svn_error_t * thunk_window_handler(svn_txdelta_window_t *window, void *baton){ SV *handler = baton; if (window == NULL) { SVN_ERR(svn_swig_pl_callback_thunk(CALL_SV, handler, NULL, "O", &PL_sv_undef)); SvREFCNT_dec(handler); } else { swig_type_info *tinfo = _SWIG_TYPE("svn_txdelta_window_t *"); SVN_ERR(svn_swig_pl_callback_thunk(CALL_SV, handler, NULL, "S", window, tinfo)); } return SVN_NO_ERROR;}static svn_error_t *thunk_apply_textdelta(void *file_baton, const char *base_checksum, apr_pool_t *pool, svn_txdelta_window_handler_t *handler, void **h_baton){ item_baton *ib = file_baton; SV *result; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"apply_textdelta", &result, "OOsS", ib->editor, ib->baton, base_checksum, pool, POOLINFO)); if (SvOK(result)) { if (SvROK(result) && SvTYPE(SvRV(result)) == SVt_PVAV) { swig_type_info *handler_info = _SWIG_TYPE("svn_txdelta_window_handler_t"); swig_type_info *void_info = _SWIG_TYPE("void *"); AV *array = (AV *)SvRV(result); if (SWIG_ConvertPtr(*av_fetch(array, 0, 0), (void **)handler, handler_info,0) < 0) { croak("Unable to convert from SWIG Type"); } if (SWIG_ConvertPtr(*av_fetch(array, 1, 0), h_baton, void_info,0) < 0) { croak("Unable to convert from SWIG Type "); } SvREFCNT_dec(result); } else { *handler = thunk_window_handler; *h_baton = result; } } else { *handler = svn_delta_noop_window_handler; *h_baton = NULL; } return SVN_NO_ERROR;}static svn_error_t * thunk_change_file_prop(void *file_baton, const char *name, const svn_string_t *value, apr_pool_t *pool){ item_baton *ib = file_baton; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"change_file_prop", NULL, "OOssS", ib->editor, ib->baton, name, value ? value->data : NULL, pool, POOLINFO)); return SVN_NO_ERROR;}static svn_error_t * thunk_close_file(void *file_baton, const char *text_checksum, apr_pool_t *pool){ item_baton *ib = file_baton; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"close_file", NULL, "OOsS", ib->editor, ib->baton, text_checksum, pool, POOLINFO)); SvREFCNT_dec(ib->baton); return SVN_NO_ERROR;}static svn_error_t * thunk_absent_file(const char *path, void *parent_baton, apr_pool_t *pool){ item_baton *ib = parent_baton; SVN_ERR(svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"absent_file", NULL, "OsOS", ib->editor, path, ib->baton, pool, POOLINFO)); return SVN_NO_ERROR;}static svn_error_t * thunk_close_edit(void *edit_baton, apr_pool_t *pool){ return close_baton(edit_baton, "close_edit", pool);}static svn_error_t * thunk_abort_edit(void *edit_baton, apr_pool_t *pool){ return close_baton(edit_baton, "abort_edit", pool);}void svn_delta_make_editor(svn_delta_editor_t **editor, void **edit_baton, SV *perl_editor, apr_pool_t *pool){ svn_delta_editor_t *thunk_editor = svn_delta_default_editor(pool); thunk_editor->set_target_revision = thunk_set_target_revision; thunk_editor->open_root = thunk_open_root; thunk_editor->delete_entry = thunk_delete_entry; thunk_editor->add_directory = thunk_add_directory; thunk_editor->open_directory = thunk_open_directory; thunk_editor->change_dir_prop = thunk_change_dir_prop; thunk_editor->close_directory = thunk_close_directory; thunk_editor->absent_directory = thunk_absent_directory; thunk_editor->add_file = thunk_add_file; thunk_editor->open_file = thunk_open_file; thunk_editor->apply_textdelta = thunk_apply_textdelta; thunk_editor->change_file_prop = thunk_change_file_prop; thunk_editor->close_file = thunk_close_file; thunk_editor->absent_file = thunk_absent_file; thunk_editor->close_edit = thunk_close_edit; thunk_editor->abort_edit = thunk_abort_edit; *editor = thunk_editor; *edit_baton = make_baton(pool, perl_editor, NULL); svn_swig_pl_hold_ref_in_pool(pool, perl_editor);}svn_error_t *svn_swig_pl_thunk_log_receiver(void *baton, apr_hash_t *changed_paths, svn_revnum_t rev, const char *author, const char *date, const char *msg, apr_pool_t *pool){ SV *receiver = baton; swig_type_info *tinfo = _SWIG_TYPE("svn_log_changed_path_t *"); if (!SvOK(receiver)) return SVN_NO_ERROR; svn_swig_pl_callback_thunk(CALL_SV, receiver, NULL, "OrsssS", (changed_paths) ? svn_swig_pl_convert_hash(changed_paths, tinfo) : &PL_sv_undef, rev, author, date, msg, pool, POOLINFO); return SVN_NO_ERROR;}svn_error_t *svn_swig_pl_thunk_history_func(void *baton, const char *path, svn_revnum_t revision, apr_pool_t *pool){ SV *func = baton; if (!SvOK(func)) return SVN_NO_ERROR; svn_swig_pl_callback_thunk(CALL_SV, func, NULL, "srS", path, revision, pool, POOLINFO); return SVN_NO_ERROR;}svn_error_t *svn_swig_pl_thunk_authz_func(svn_boolean_t *allowed, svn_fs_root_t *root, const char *path, void *baton, apr_pool_t *pool){ SV *func = baton, *result; if (!SvOK(func)) return SVN_NO_ERROR; svn_swig_pl_callback_thunk(CALL_SV, func, &result, "SsS", root, _SWIG_TYPE("svn_fs_root_t *"), path, pool, POOLINFO); *allowed = SvIV(result); SvREFCNT_dec(result); return SVN_NO_ERROR;}svn_error_t *svn_swig_pl_thunk_commit_callback(svn_revnum_t new_revision, const char *date, const char *author, void *baton){ if (!SvOK((SV *)baton)) return SVN_NO_ERROR; svn_swig_pl_callback_thunk(CALL_SV, baton, NULL, "rss", new_revision, date, author); return SVN_NO_ERROR;}/* Wrap RA */static svn_error_t * thunk_open_tmp_file(apr_file_t **fp, void *callback_baton, apr_pool_t *pool){ SV *result; swig_type_info *tinfo = _SWIG_TYPE("apr_file_t *"); svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"open_tmp_file", &result, "OS", callback_baton, pool, POOLINFO); if (SWIG_ConvertPtr(result, (void *)fp, tinfo,0) < 0) { croak("Unable to convert from SWIG Type"); } SvREFCNT_dec(result); return SVN_NO_ERROR;}svn_error_t *thunk_get_wc_prop(void *baton, const char *relpath, const char *name, const svn_string_t **value, apr_pool_t *pool){ SV *result; svn_swig_pl_callback_thunk(CALL_METHOD, (void *)"get_wc_prop", &result, "OssS", baton, relpath, name, pool, POOLINFO); /* this is svn_string_t * typemap in */ if (!SvOK(result) || result == &PL_sv_undef) { *value = NULL; } else if (SvPOK(result)) { *value = svn_string_create(SvPV_nolen(result), pool); } else { SvREFCNT_dec(result); croak("not a string"); } SvREFCNT_dec(result); return SVN_NO_ERROR;}svn_error_t *svn_ra_make_callbacks(svn_ra_callbacks_t **cb, void **c_baton, SV *perl_callbacks, apr_pool_t *pool){ SV *auth_baton; *cb = apr_pcalloc(pool, sizeof(**cb)); (*cb)->open_tmp_file = thunk_open_tmp_file; (*cb)->get_wc_prop = thunk_get_wc_prop; (*cb)->set_wc_prop = NULL; (*cb)->push_wc_prop = NULL; (*cb)->invalidate_wc_props = NULL; auth_baton = *hv_fetch((HV *)SvRV(perl_callbacks), "auth", 4, 0); if (SWIG_ConvertPtr(auth_baton, (void **)&(*cb)->auth_baton, _SWIG_TYPE("svn_auth_baton_t *"),0) < 0) { croak("Unable to convert from SWIG Type"); } *c_baton = perl_callbacks; svn_swig_pl_hold_ref_in_pool(pool, perl_callbacks); return SVN_NO_ERROR;}svn_error_t *svn_swig_pl_thunk_simple_prompt(svn_auth_cred_simple_t **cred, void *baton, const char *realm, const char *username, svn_boolean_t may_save, apr_pool_t *pool){ /* Be nice and allocate the memory for the cred structure before passing it * off to the perl space */ *cred = apr_pcalloc(pool, sizeof(**cred)); if (!*cred) { croak("Could not allocate memory for cred structure"); } svn_swig_pl_callback_thunk(CALL_SV, baton, NULL, "SssbS", *cred, _SWIG_TYPE("svn_auth_cred_simple_t *"), realm, username, may_save, pool, POOLINFO); return SVN_NO_ERROR;}svn_error_t *svn_swig_pl_thunk_username_prompt(svn_auth_cred_username_t **cred, void *baton, const char *realm, svn_boolean_t may_save, apr_pool_t *pool){ /* Be nice and allocate the memory for the cred structure before passing it * off to the perl space */ *cred = apr_pcalloc(pool, sizeof(**cred)); if (!*cred) { croak("Could not allocate memory for cred structure"); } svn_swig_pl_callback_thunk(CALL_SV, baton, NULL, "SsbS", *cred, _SWIG_TYPE("svn_auth_cred_username_t *"), realm, may_save, pool, POOLINFO); return SVN_NO_ERROR;}svn_error_t *svn_swig_pl_thunk_ssl_server_trust_prompt( svn_auth_cred_ssl_server_trust_t **cred, void *baton, const char *realm, apr_uint32_t failures, const svn_auth_ssl_server_cert_info_t *cert_info, svn_boolean_t may_save, apr_pool_t *pool){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -