• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ rb_ensure函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中rb_ensure函数的典型用法代码示例。如果您正苦于以下问题:C++ rb_ensure函数的具体用法?C++ rb_ensure怎么用?C++ rb_ensure使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了rb_ensure函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: rb_query

/* call-seq:
 *    client.query(sql, options = {})
 *
 * Query the database with +sql+, with optional +options+.  For the possible
 * options, see default_query_options on the Mysql2::Client class.
 */
static VALUE rb_query(VALUE self, VALUE sql, VALUE current) {
#ifndef _WIN32
  struct async_query_args async_args;
#endif
  struct nogvl_send_query_args args;
  GET_CLIENT(self);

  REQUIRE_CONNECTED(wrapper);
  args.mysql = wrapper->client;

  (void)RB_GC_GUARD(current);
  Check_Type(current, T_HASH);
  rb_iv_set(self, "@current_query_options", current);

  Check_Type(sql, T_STRING);
#ifdef HAVE_RUBY_ENCODING_H
  /* ensure the string is in the encoding the connection is expecting */
  args.sql = rb_str_export_to_enc(sql, rb_to_encoding(wrapper->encoding));
#else
  args.sql = sql;
#endif
  args.sql_ptr = RSTRING_PTR(args.sql);
  args.sql_len = RSTRING_LEN(args.sql);
  args.wrapper = wrapper;

  rb_mysql_client_set_active_thread(self);

#ifndef _WIN32
  rb_rescue2(do_send_query, (VALUE)&args, disconnect_and_raise, self, rb_eException, (VALUE)0);

  if (rb_hash_aref(current, sym_async) == Qtrue) {
    return Qnil;
  } else {
    async_args.fd = wrapper->client->net.fd;
    async_args.self = self;

    rb_rescue2(do_query, (VALUE)&async_args, disconnect_and_raise, self, rb_eException, (VALUE)0);

    return rb_ensure(rb_mysql_client_async_result, self, disconnect_and_mark_inactive, self);
  }
#else
  do_send_query(&args);

  /* this will just block until the result is ready */
  return rb_ensure(rb_mysql_client_async_result, self, disconnect_and_mark_inactive, self);
#endif
}
开发者ID:reverbnation,项目名称:mysql2,代码行数:53,代码来源:client.c


示例2: thread_exclusive

static VALUE
thread_exclusive(VALUE (*func)(ANYARGS), VALUE arg)
{
    VALUE critical = rb_thread_critical;

    rb_thread_critical = 1;
    return rb_ensure(func, arg, set_critical, (VALUE)critical);
}
开发者ID:appliedcode,项目名称:omnibus,代码行数:8,代码来源:thread.c


示例3: rbg_pangologattrs2rval_free

static VALUE
rbg_pangologattrs2rval_free(PangoLogAttr *attrs, long n)
{
    struct rbg_pangologattrs2rval_free_args args = { attrs, n };

    return rb_ensure(rbg_pangologattrs2rval_free_body, (VALUE)&args,
                     rbg_pangologattrs2rval_free_ensure, (VALUE)&args);
}
开发者ID:Vasfed,项目名称:pango,代码行数:8,代码来源:rbpango.c


示例4: rg_lock

/*
 * Get lock on media list items
 *
 * @yield
 * @return self
 * @todo fixme
 */
static VALUE
rg_lock(VALUE self)
{
    libvlc_media_list_lock(_SELF(self));
    if (rb_block_given_p())
        rb_ensure(rb_yield, self, rg_unlock, self);
    return self;
}
开发者ID:Vasfed,项目名称:ruby-gnome2,代码行数:15,代码来源:rbvlcmedialist.c


示例5: rbgio_cstr_to_rval_tainted_free

VALUE
rbgio_cstr_to_rval_tainted_free(char *string, gsize length)
{
        struct rbgio_cstr_to_rval_tainted_free_data data = { string, length };
        
        return rb_ensure(rbgio_cstr_to_rval_tainted_free_body, (VALUE)&data,
                         rbgio_cstr_to_rval_tainted_free_ensure, (VALUE)&data);
}
开发者ID:benolee,项目名称:ruby-gnome2,代码行数:8,代码来源:util.c


示例6: aspirin_response_set_body

static void
aspirin_response_set_body(struct evhttp_request* request, VALUE body)
{
    VALUE buff = Data_Wrap_Struct(rb_cData, 0, 0, request->output_buffer);
    VALUE args = rb_ary_new3(2, body, buff);
    rb_ensure(aspirin_response_each_body, args, aspirin_response_close_body, body);
    DATA_PTR(buff) = NULL;
}
开发者ID:miyucy,项目名称:aspirin,代码行数:8,代码来源:response.c


示例7: rb_format_exception_message

VALUE
rb_format_exception_message(VALUE exc)
{
    const int old_level = rb_safe_level();
    rb_set_safe_level_force(0);

    return rb_ensure(format_message, exc, restore_level, (VALUE)old_level);
}
开发者ID:1nueve,项目名称:MacRuby,代码行数:8,代码来源:error.c


示例8: oci8_get_rowid_attr

VALUE oci8_get_rowid_attr(oci8_base_t *base, ub4 attrtype)
{
    rowid_arg_t arg;
    arg.base = base;
    arg.attrtype = attrtype;
    arg.ridp = NULL;
    return rb_ensure(get_rowid_attr, (VALUE)&arg, rowid_ensure, (VALUE)&arg);
}
开发者ID:Vachman,项目名称:STMT,代码行数:8,代码来源:attr.c


示例9: rbgutil_gslist2ary_boxed_and_free

VALUE
rbgutil_gslist2ary_boxed_and_free(GSList *const list, GType gtype)
{
    struct rbgutil_gslist2ary_boxed_and_free_data data = { list, gtype };

    return rb_ensure(rbgutil_gslist2ary_boxed_and_free_body, (VALUE)&data,
                     rbgutil_gslist2ary_boxed_and_free_ensure, (VALUE)&data);
}
开发者ID:benolee,项目名称:ruby-gnome2,代码行数:8,代码来源:rbgutil.c


示例10: stackprof_run

static VALUE
stackprof_run(int argc, VALUE *argv, VALUE self)
{
    rb_need_block();
    stackprof_start(argc, argv, self);
    rb_ensure(rb_yield, Qundef, stackprof_stop, self);
    return stackprof_results(0, 0, self);
}
开发者ID:ThomasSevestre,项目名称:stackprof,代码行数:8,代码来源:stackprof.c


示例11: rb_grn_array_s_create


//.........这里部分代码省略.........
 * @example
 *   #無名一時テーブルを生成する。
 *   Groonga::Array.create
 *
 *   #無名永続テーブルを生成する。
 *   Groonga::Array.create(:path => "/tmp/array.grn")
 *
 *   #名前付き永続テーブルを生成する。ただし、ファイル名は気にしない。
 *   Groonga::Array.create(:name => "Bookmarks",
 *                         :persistent => true)
 *
 *   #それぞれのレコードに512バイトの値を格納できる無名一時テーブルを生成する。
 *   Groonga::Array.create(:value => 512)
 *
 * @param [::Hash] options The name and value
 *   pairs. Omitted names are initialized as the default value.
 * @option options [Grrnga::Context] :context (Groonga::Context.default) The context
 *   テーブルが利用するGrrnga::Context
 * @option options :name The name
 *   テーブルの名前。名前をつけると、Groonga::Context#[]に名
 *   前を指定してテーブルを取得することができる。省略すると
 *   無名テーブルになり、テーブルIDでのみ取得できる。
 * @option options :path The path
 *   テーブルを保存するパス。パスを指定すると永続テーブルとな
 *   り、プロセス終了後もレコードは保持される。次回起動時に
 *   Groonga::Context#[]で保存されたレコードを利用することが
 *   できる。省略すると一時テーブルになり、プロセスが終了する
 *   とレコードは破棄される。
 * @option options :persistent The persistent
 *   +true+ を指定すると永続テーブルとなる。 +path+ を省略した
 *   場合は自動的にパスが付加される。 +:context+ で指定した
 *   Groonga::Contextに結びついているデータベースが一時デー
 *   タベースの場合は例外が発生する。
 * @option options :value_type (nil) The value_type
 *   値の型を指定する。省略すると値のための領域を確保しない。
 *   値を保存したい場合は必ず指定すること。
 *   参考: Groonga::Type.new
 * @option options [Groonga::Record#n_sub_records] :sub_records The sub_records
 *   +true+ を指定すると#groupでグループ化したときに、
 *   Groonga::Record#n_sub_recordsでグループに含まれるレコー
 *   ドの件数を取得できる。
 */
static VALUE
rb_grn_array_s_create (int argc, VALUE *argv, VALUE klass)
{
    grn_ctx *context = NULL;
    grn_obj *value_type = NULL, *table;
    const char *name = NULL, *path = NULL;
    unsigned name_size = 0;
    grn_obj_flags flags = GRN_OBJ_TABLE_NO_KEY;
    VALUE rb_table;
    VALUE options, rb_context, rb_name, rb_path, rb_persistent;
    VALUE rb_value_type, rb_sub_records;

    rb_scan_args(argc, argv, "01", &options);

    rb_grn_scan_options(options,
			"context", &rb_context,
			"name", &rb_name,
                        "path", &rb_path,
			"persistent", &rb_persistent,
			"value_type", &rb_value_type,
			"sub_records", &rb_sub_records,
			NULL);

    context = rb_grn_context_ensure(&rb_context);

    if (!NIL_P(rb_name)) {
        name = StringValuePtr(rb_name);
	name_size = RSTRING_LEN(rb_name);
	flags |= GRN_OBJ_PERSISTENT;
    }

    if (!NIL_P(rb_path)) {
        path = StringValueCStr(rb_path);
	flags |= GRN_OBJ_PERSISTENT;
    }

    if (RVAL2CBOOL(rb_persistent))
	flags |= GRN_OBJ_PERSISTENT;

    if (!NIL_P(rb_value_type))
	value_type = RVAL2GRNOBJECT(rb_value_type, &context);

    if (RVAL2CBOOL(rb_sub_records))
	flags |= GRN_OBJ_WITH_SUBREC;

    table = grn_table_create(context, name, name_size, path,
			     flags, NULL, value_type);
    if (!table)
	rb_grn_context_check(context, rb_ary_new4(argc, argv));
    rb_table = GRNOBJECT2RVAL(klass, context, table, GRN_TRUE);
    rb_grn_context_check(context, rb_table);
    rb_iv_set(rb_table, "@context", rb_context);

    if (rb_block_given_p())
        return rb_ensure(rb_yield, rb_table, rb_grn_object_close, rb_table);
    else
        return rb_table;
}
开发者ID:iwaim,项目名称:rroonga,代码行数:101,代码来源:rb-grn-array.c


示例12: rb_aio_s_read

/*
 *  call-seq:
 *     AIO.read(cb) -> string
 *  
 *  Asynchronously reads a file.This is an initial *blocking* implementation until
 *  cross platform notification is supported.
 */
static VALUE 
rb_aio_s_read(VALUE aio, VALUE cb)
{
    rb_aiocb_t *cbs = GetCBStruct(cb);
    if (rb_block_given_p()){
      cbs->rcb = rb_block_proc();
    }
    return rb_ensure(rb_aio_read, (VALUE)&cbs->cb, control_block_close, cb);
}
开发者ID:methodmissing,项目名称:aio,代码行数:16,代码来源:aio.c


示例13: yield_or_return_result

VALUE
yield_or_return_result( VALUE result)
{
    struct pgresult_data *r;

    Data_Get_Struct( result, struct pgresult_data, r);
    return rb_block_given_p() ?
        rb_ensure( rb_yield, result, pgresult_clear, result) : result;
}
开发者ID:BertramScharpf,项目名称:ruby-pgsql,代码行数:9,代码来源:conn_exec.c


示例14: rg_activate

static VALUE
rg_activate(VALUE self)
{
    pango_renderer_activate(_SELF(self));
    if (rb_block_given_p()) {
        rb_ensure(rb_yield, self, rg_deactivate, self);
    }
    return self;
}
开发者ID:msakai,项目名称:ruby-gnome2,代码行数:9,代码来源:rbpangorenderer.c


示例15: gobj_freeze_notify

static VALUE
gobj_freeze_notify(VALUE self)
{
    g_object_freeze_notify(RVAL2GOBJ(self));
    if (rb_block_given_p()) {
        return rb_ensure(rb_yield, self, gobj_thaw_notify, self);
    }
    return self;
}
开发者ID:geoffyoungs,项目名称:ruby-gnome2,代码行数:9,代码来源:rbgobj_object.c


示例16: rg_block_activate

static VALUE
rg_block_activate(VALUE self)
{
    gtk_action_block_activate(_SELF(self));
    if (rb_block_given_p())
        rb_ensure(rb_yield, self, rg_unblock_activate, self);

    return self;
}
开发者ID:Mazwak,项目名称:ruby-gnome2,代码行数:9,代码来源:rbgtk-action.c


示例17: bdb_log_hcae

static VALUE
bdb_log_hcae(VALUE lsn)
{
    struct dblsnst *lsnst;

    Data_Get_Struct(lsn, struct dblsnst, lsnst);
    lsnst->flags = DB_PREV;
    return rb_ensure(bdb_log_i_get, lsn, bdb_log_cursor_close, lsn);
 }
开发者ID:mallowlabs,项目名称:ruby-bdb,代码行数:9,代码来源:log.c


示例18: pgconn_send

/*
 * call-seq:
 *    conn.send( sql, *bind_values) { |conn| ... }  -> nil
 *
 * Sends an asynchronous SQL query request specified by +sql+ to the
 * PostgreSQL server.
 *
 * Use Pg::Conn#fetch to fetch the results after you waited for data.
 *
 *   Pg::Conn.connect do |conn|
 *     conn.send "select pg_sleep(3), * from t;" do
 *       ins = [ conn.socket]
 *       loop do
 *         r = IO.select ins, nil, nil, 0.5
 *         break if r
 *         puts Time.now
 *       end
 *       res = conn.fetch
 *       res.each { |w| puts w.inspect }
 *     end
 *   end
 */
VALUE
pgconn_send( int argc, VALUE *argv, VALUE self)
{
    VALUE cmd, par;

    pg_parse_parameters( argc, argv, &cmd, &par);
    pg_statement_send( self, cmd, par);
    return rb_ensure( rb_yield, self, clear_resultqueue, self);
}
开发者ID:BertramScharpf,项目名称:ruby-pgsql,代码行数:31,代码来源:conn_exec.c


示例19: each_group

static void
each_group(void)
{
    if (group_blocking) {
	rb_raise(rb_eRuntimeError, "parallel group iteration");
    }
    group_blocking = (int)Qtrue;
    rb_ensure(group_iterate, 0, group_ensure, 0);
}
开发者ID:Shopify,项目名称:ruby,代码行数:9,代码来源:etc.c


示例20: rbg_gslist2rval_with_type

VALUE
rbg_gslist2rval_with_type(GSList *const list, RBGRValueFuncWithType conv, GType gtype,
                          GFreeFunc free_list, GFreeFunc free_elem)
{
    struct list2rval_with_type_args args = {{list, NULL, free_list, free_elem}, conv, gtype};

    return rb_ensure(gslist2rval_with_type_body, (VALUE)&args,
                     gslist2rval_ensure, (VALUE)&args);
}
开发者ID:adamhooper,项目名称:ruby-gnome2,代码行数:9,代码来源:rbgutil_list.c



注:本文中的rb_ensure函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ rb_equal函数代码示例发布时间:2022-05-30
下一篇:
C++ rb_enc_str_new函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap