本文整理汇总了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;未经允许,请勿转载。 |
请发表评论