本文整理汇总了C++中call_method函数的典型用法代码示例。如果您正苦于以下问题:C++ call_method函数的具体用法?C++ call_method怎么用?C++ call_method使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了call_method函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: condition_notify
static PyObject*
condition_notify(ConditionObject *self, int num)
{
PyObject *res, *waiters;
PyObject *iter, *item;
DEBUG("self:%p", self);
res = call_method((PyObject*)self, "_is_owned");
if (res == NULL) {
return NULL;
}
if (PyObject_Not(res)) {
Py_DECREF(res);
PyErr_SetString(PyExc_RuntimeError, "cannot release un-acquired lock");
return NULL;
}
Py_DECREF(res);
waiters = PyList_GetSlice(self->waiters, 0, num);
if (waiters == NULL) {
return NULL;
}
if (PyObject_Not(waiters)) {
Py_RETURN_NONE;
}
iter = PyObject_GetIter(waiters);
if (PyErr_Occurred()) {
return NULL;
}
while ((item = PyIter_Next(iter))) {
res = semaphore_release((SemaphoreObject*)item);
Py_XDECREF(res);
if (res == NULL) {
Py_DECREF(item);
goto err;
}
if (remove_from_list((PyListObject*)self->waiters, item) == -1) {
Py_DECREF(item);
goto err;
}
Py_DECREF(item);
/* DEBUG("self->waiters len:%d", PyList_Size(self->waiters)); */
}
Py_DECREF(waiters);
Py_DECREF(iter);
Py_RETURN_NONE;
err:
Py_DECREF(waiters);
Py_DECREF(iter);
return NULL;
}
示例2: perl_back_compare
int
perl_back_compare(
Operation *op,
SlapReply *rs )
{
int count, avalen;
char *avastr;
PerlBackend *perl_back = (PerlBackend *)op->o_bd->be_private;
avalen = op->orc_ava->aa_desc->ad_cname.bv_len + 1 +
op->orc_ava->aa_value.bv_len;
avastr = ch_malloc( avalen + 1 );
lutil_strcopy( lutil_strcopy( lutil_strcopy( avastr,
op->orc_ava->aa_desc->ad_cname.bv_val ), "=" ),
op->orc_ava->aa_value.bv_val );
PERL_SET_CONTEXT( PERL_INTERPRETER );
ldap_pvt_thread_mutex_lock( &perl_interpreter_mutex );
{
dSP; ENTER; SAVETMPS;
PUSHMARK(sp);
XPUSHs( perl_back->pb_obj_ref );
XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , op->o_req_dn.bv_len)));
XPUSHs(sv_2mortal(newSVpv( avastr , avalen)));
PUTBACK;
count = call_method("compare", G_SCALAR);
SPAGAIN;
if (count != 1) {
croak("Big trouble in back_compare\n");
}
rs->sr_err = POPi;
PUTBACK; FREETMPS; LEAVE;
}
ldap_pvt_thread_mutex_unlock( &perl_interpreter_mutex );
ch_free( avastr );
send_ldap_result( op, rs );
Debug( LDAP_DEBUG_ANY, "Perl COMPARE\n", 0, 0, 0 );
return (0);
}
示例3: pb_note_access
/* if necessary, call self._p_connection.note_access(self) */
static int
pb_note_access(PersistentBaseObject *self)
{
ConnectionBaseObject *connection;
connection = (ConnectionBaseObject *)self->p_connection;
if (self->p_connection != Py_None &&
self->p_serial != connection->transaction_serial) {
return call_method(
(PyObject *)connection, "note_access", (PyObject *)self);
} else
return 1;
}
示例4: perl_back_add
int
perl_back_add(
Backend *be,
Connection *conn,
Operation *op,
Entry *e
)
{
int len;
int count;
int return_code;
PerlBackend *perl_back = (PerlBackend *) be->be_private;
ldap_pvt_thread_mutex_lock( &perl_interpreter_mutex );
ldap_pvt_thread_mutex_lock( &entry2str_mutex );
{
dSP; ENTER; SAVETMPS;
PUSHMARK(sp);
XPUSHs( perl_back->pb_obj_ref );
XPUSHs(sv_2mortal(newSVpv( entry2str( e, &len ), 0 )));
PUTBACK;
#ifdef PERL_IS_5_6
count = call_method("add", G_SCALAR);
#else
count = perl_call_method("add", G_SCALAR);
#endif
SPAGAIN;
if (count != 1) {
croak("Big trouble in back_add\n");
}
return_code = POPi;
PUTBACK; FREETMPS; LEAVE;
}
ldap_pvt_thread_mutex_unlock( &entry2str_mutex );
ldap_pvt_thread_mutex_unlock( &perl_interpreter_mutex );
send_ldap_result( conn, op, return_code,
NULL, NULL, NULL, NULL );
Debug( LDAP_DEBUG_ANY, "Perl ADD\n", 0, 0, 0 );
return( 0 );
}
示例5: init_cgi_obj
//// Callbacks ////
static void init_cgi_obj(struct req_state *state){
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs( state->req_obj );
PUTBACK;
call_method ("new", G_DISCARD);
FREETMPS;
LEAVE;
};
示例6: call_load
static void
call_load(Class cls)
{
if (cls->info & OBJC_CLASS_INFO_LOADED)
return;
if (cls->superclass != Nil)
call_load(cls->superclass);
call_method(cls, "load");
cls->info |= OBJC_CLASS_INFO_LOADED;
}
示例7: perl_back_modrdn
int
perl_back_modrdn(
Operation *op,
SlapReply *rs )
{
PerlBackend *perl_back = (PerlBackend *) op->o_bd->be_private;
int count;
#if defined(HAVE_WIN32_ASPERL) || defined(USE_ITHREADS)
PERL_SET_CONTEXT( PERL_INTERPRETER );
#endif
ldap_pvt_thread_mutex_lock( &perl_interpreter_mutex );
{
dSP; ENTER; SAVETMPS;
PUSHMARK(sp) ;
XPUSHs( perl_back->pb_obj_ref );
XPUSHs(sv_2mortal(newSVpv( op->o_req_dn.bv_val , 0 )));
XPUSHs(sv_2mortal(newSVpv( op->orr_newrdn.bv_val , 0 )));
XPUSHs(sv_2mortal(newSViv( op->orr_deleteoldrdn )));
if ( op->orr_newSup != NULL ) {
XPUSHs(sv_2mortal(newSVpv( op->orr_newSup->bv_val , 0 )));
}
PUTBACK ;
#ifdef PERL_IS_5_6
count = call_method("modrdn", G_SCALAR);
#else
count = perl_call_method("modrdn", G_SCALAR);
#endif
SPAGAIN ;
if (count != 1) {
croak("Big trouble in back_modrdn\n") ;
}
rs->sr_err = POPi;
PUTBACK; FREETMPS; LEAVE ;
}
ldap_pvt_thread_mutex_unlock( &perl_interpreter_mutex );
send_ldap_result( op, rs );
Debug( LDAP_DEBUG_ANY, "Perl MODRDN\n", 0, 0, 0 );
return( 0 );
}
示例8: display_menu
void display_menu()
{
int val;
puts("\t\t\t----------------------------BST------------------------------------------");
puts("1:Insert a Node\n2:Traverse BST\n3:Sucessor of a Node\n4:Predecessor of a Node\n5:Search a Node\n6:Delete a Node\n7:Exit\n8:Sum of all children\n\nEnter your choice:");
scanf("%d",&val);
{
char dummy;
scanf("%c",&dummy);
}
call_method(val);
}
示例9: perl_back_add
int
perl_back_add(
Operation *op,
SlapReply *rs )
{
PerlBackend *perl_back = (PerlBackend *) op->o_bd->be_private;
int len;
int count;
#if defined(HAVE_WIN32_ASPERL) || defined(USE_ITHREADS)
PERL_SET_CONTEXT( PERL_INTERPRETER );
#endif
ldap_pvt_thread_mutex_lock( &perl_interpreter_mutex );
ldap_pvt_thread_mutex_lock( &entry2str_mutex );
{
dSP; ENTER; SAVETMPS;
PUSHMARK(sp);
XPUSHs( perl_back->pb_obj_ref );
XPUSHs(sv_2mortal(newSVpv( entry2str( op->ora_e, &len ), 0 )));
PUTBACK;
#ifdef PERL_IS_5_6
count = call_method("add", G_SCALAR);
#else
count = perl_call_method("add", G_SCALAR);
#endif
SPAGAIN;
if (count != 1) {
croak("Big trouble in back_add\n");
}
rs->sr_err = POPi;
PUTBACK; FREETMPS; LEAVE;
}
ldap_pvt_thread_mutex_unlock( &entry2str_mutex );
ldap_pvt_thread_mutex_unlock( &perl_interpreter_mutex );
send_ldap_result( op, rs );
Debug( LDAP_DEBUG_ANY, "Perl ADD\n", 0, 0, 0 );
return( 0 );
}
示例10: l_newobj
/*
* mono.new(class, "ctor_sig", ...)
* class 为MonoClass指针(userdata)
* "ctor_sig" : 带有函数签名的.ctor 比如 : .ctor(int, int),
* 若使用默认构造函数(无参数), 该参数为空字符串
* ... : 为构造函数所需实参
* 返回 : MonoObject*(userdata)
*/
static int l_newobj (lua_State *L) {
MonoClass *clazz = (MonoClass*)lua_touserdata (L, 1);
luaL_argcheck (L, clazz != 0, 1, "class is null.");
char const *ctor_sig = luaL_checkstring (L, 2);
MonoMethod *ctor = get_class_method (clazz, ctor_sig);
if (!ctor)
luaL_error (L, "class %s can not find the %s.", mono_class_get_name (clazz), ctor_sig);
MonoObject *obj = mono_object_new (mono_domain_get (), clazz);
MonoObject *ex = 0;
call_method (L, 3, obj, ctor, &ex);
if (ex)
luaL_error (L, "init the obj cause an exception!");
lua_pushlightuserdata (L, obj);
return 1;
}
示例11: owl_perlconfig_message2hashref
/* Calls a method on a perl object representing a message.
If the return value is non-null, the caller must free it.
*/
CALLER_OWN char *owl_perlconfig_message_call_method(const owl_message *m, const char *method, int argc, const char **argv)
{
dSP;
unsigned int count, i;
SV *msgref, *srv;
char *out;
msgref = owl_perlconfig_message2hashref(m);
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(sv_2mortal(msgref));
for(i=0;i<argc;i++) {
XPUSHs(sv_2mortal(owl_new_sv(argv[i])));
}
PUTBACK;
count = call_method(method, G_SCALAR|G_EVAL);
SPAGAIN;
if(count != 1) {
fprintf(stderr, "perl returned wrong count %u\n", count);
abort();
}
if (SvTRUE(ERRSV)) {
owl_function_error("Error: '%s'", SvPV_nolen(ERRSV));
/* and clear the error */
sv_setsv (ERRSV, &PL_sv_undef);
}
srv = POPs;
if (srv) {
out = g_strdup(SvPV_nolen(srv));
} else {
out = NULL;
}
PUTBACK;
FREETMPS;
LEAVE;
return out;
}
示例12: jmethod_call
STATIC mp_obj_t jmethod_call(mp_obj_t self_in, mp_uint_t n_args, mp_uint_t n_kw, const mp_obj_t *args) {
if (n_kw != 0) {
nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_TypeError, "kwargs not supported"));
}
mp_obj_jmethod_t *self = self_in;
const char *name = qstr_str(self->name);
// jstring meth_name = JJ(NewStringUTF, name);
jclass obj_class = self->obj;
if (!self->is_static) {
obj_class = JJ(GetObjectClass, self->obj);
}
jarray methods = JJ(CallObjectMethod, obj_class, Class_getMethods_mid);
return call_method(self->obj, name, methods, false, n_args, args);
}
示例13: Perl_av_extend
void
Perl_av_extend(pTHX_ AV *av, I32 key)
{
dVAR;
MAGIC *mg;
PERL_ARGS_ASSERT_AV_EXTEND;
assert(SvTYPE(av) == SVt_PVAV);
mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied);
if (mg) {
dSP;
ENTER;
SAVETMPS;
PUSHSTACKi(PERLSI_MAGIC);
PUSHMARK(SP);
EXTEND(SP,2);
PUSHs(SvTIED_obj(MUTABLE_SV(av), mg));
mPUSHi(key + 1);
PUTBACK;
call_method("EXTEND", G_SCALAR|G_DISCARD);
POPSTACK;
FREETMPS;
LEAVE;
return;
}
if (key > AvMAX(av)) {
SV** ary;
I32 tmp;
I32 newmax;
if (AvALLOC(av) != AvARRAY(av)) {
ary = AvALLOC(av) + AvFILLp(av) + 1;
tmp = AvARRAY(av) - AvALLOC(av);
Move(AvARRAY(av), AvALLOC(av), AvFILLp(av)+1, SV*);
AvMAX(av) += tmp;
AvARRAY(av) = AvALLOC(av);
if (AvREAL(av)) {
while (tmp)
ary[--tmp] = &PL_sv_undef;
}
if (key > AvMAX(av) - 10) {
newmax = key + AvMAX(av);
goto resize;
}
}
示例14: S_do_callback_sv
static SV*
S_do_callback_sv(void *vobj, char *method, uint32_t num_args, va_list args)
{
SV *return_val;
SI_push_args(vobj, args, num_args);
{
int num_returned = call_method(method, G_SCALAR);
dSP;
if (num_returned != 1) {
CFISH_THROW(KINO_ERR, "Bad number of return vals from %s: %i32", method,
(int32_t)num_returned);
}
return_val = POPs;
PUTBACK;
}
return return_val;
}
示例15: sv_to_msg
const std::string sv_to_msg(SV* msg) {
dSP;
ENTER;
SAVETMPS;
PUSHMARK(SP);
XPUSHs(msg);
PUTBACK;
int rc = call_method("encode", G_SCALAR);
SPAGAIN;
std::string retval(sv_to_string(POPs));
FREETMPS;
LEAVE;
return retval;
}