本文整理汇总了C++中rb_grn_context_check函数的典型用法代码示例。如果您正苦于以下问题:C++ rb_grn_context_check函数的具体用法?C++ rb_grn_context_check怎么用?C++ rb_grn_context_check使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rb_grn_context_check函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: rb_grn_patricia_trie_prefix_search
/*
* call-seq:
* patricia_trie.prefix_search(prefix) -> Groonga::Hash
*
* キーが_prefix_に前方一致するレコードのIDがキーに入っている
* Groonga::Hashを返す。マッチするレコードがない場合は空の
* Groonga::Hashが返る。
*
*/
static VALUE
rb_grn_patricia_trie_prefix_search (VALUE self, VALUE rb_prefix)
{
grn_ctx *context;
grn_obj *table, *key, *domain, *result;
grn_id domain_id;
VALUE rb_result;
rb_grn_table_key_support_deconstruct(SELF(self), &table, &context,
&key, &domain_id, &domain,
NULL, NULL, NULL,
NULL);
result = grn_table_create(context, NULL, 0, NULL,
GRN_OBJ_TABLE_HASH_KEY,
table, 0);
rb_grn_context_check(context, self);
rb_result = GRNOBJECT2RVAL(Qnil, context, result, GRN_TRUE);
GRN_BULK_REWIND(key);
RVAL2GRNKEY(rb_prefix, context, key, domain_id, domain, self);
grn_pat_prefix_search(context, (grn_pat *)table,
GRN_BULK_HEAD(key), GRN_BULK_VSIZE(key),
(grn_hash *)result);
rb_grn_context_check(context, self);
return rb_result;
}
示例2: rb_grn_array_s_create
/*
* call-seq:
* Groonga::Array.create(options={}) -> Groonga::Array
* Groonga::Array.create(options={}) {|table| ... }
*
* キーのないテーブルを生成する。ブロックを指定すると、そのブ
* ロックに生成したテーブルが渡され、ブロックを抜けると自動的
* にテーブルが破棄される。
*
* @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));
//.........这里部分代码省略.........
示例3: rb_grn_config_set
/*
* Sets a configuration key and value pair.
*
* @overload config[]=(key, value)
* @param [String] key The key.
* @param [String] value The value to be assigned.
* @return [String] `value`.
*/
static VALUE
rb_grn_config_set (VALUE self, VALUE rb_key, VALUE rb_value)
{
VALUE rb_value_original = rb_value;
VALUE rb_context;
grn_ctx *context;
const char *key;
int key_size;
const char *value;
int value_size;
rb_context = rb_iv_get(self, "@context");
context = rb_grn_context_ensure(&rb_context);
rb_key = rb_grn_convert_to_string(rb_key);
key = RSTRING_PTR(rb_key);
key_size = RSTRING_LEN(rb_key);
rb_value = rb_grn_convert_to_string(rb_value);
value = RSTRING_PTR(rb_value);
value_size = RSTRING_LEN(rb_value);
{
grn_rc rc;
rc = grn_config_set(context,
key, key_size,
value, value_size);
rb_grn_context_check(context, self);
rb_grn_rc_check(rc, self);
}
return rb_value_original;
}
示例4: rb_grn_config_get
/*
* Gets a configuration value for key.
*
* @overload config[](key)
* @param [String] key The key.
* @return [String, nil] The value associated with `key`.
*
* @since 5.0.9
*/
static VALUE
rb_grn_config_get (VALUE self, VALUE rb_key)
{
VALUE rb_context;
VALUE rb_value;
grn_ctx *context;
const char *key;
int key_size;
const char *value;
uint32_t value_size;
rb_context = rb_iv_get(self, "@context");
context = rb_grn_context_ensure(&rb_context);
rb_key = rb_grn_convert_to_string(rb_key);
key = RSTRING_PTR(rb_key);
key_size = RSTRING_LEN(rb_key);
{
grn_rc rc;
rc = grn_config_get(context,
key, key_size,
&value, &value_size);
rb_grn_context_check(context, self);
rb_grn_rc_check(rc, self);
}
if (value_size == 0) {
rb_value = Qnil;
} else {
rb_value = rb_grn_context_rb_string_new(context, value, value_size);
}
return rb_value;
}
示例5: rb_grn_patricia_trie_open_grn_rk_cursor
static grn_table_cursor *
rb_grn_patricia_trie_open_grn_rk_cursor (int argc, VALUE *argv, VALUE self,
grn_ctx **context)
{
grn_obj *table;
grn_table_cursor *cursor;
void *prefix = NULL;
unsigned prefix_size = 0;
int offset = 0, limit = -1;
int flags = GRN_CURSOR_PREFIX | GRN_CURSOR_RK;
VALUE options, rb_prefix, rb_key_bytes, rb_key_bits;
VALUE rb_greater_than, rb_less_than, rb_offset, rb_limit;
rb_grn_table_deconstruct((RbGrnTable *)SELF(self), &table, context,
NULL, NULL,
NULL, NULL, NULL,
NULL);
rb_scan_args(argc, argv, "11", &rb_prefix, &options);
rb_grn_scan_options(options,
"key_bytes", &rb_key_bytes,
"key_bites", &rb_key_bits,
"offset", &rb_offset,
"limit", &rb_limit,
"greater_than", &rb_greater_than,
"less_than", &rb_less_than,
NULL);
prefix = StringValuePtr(rb_prefix);
if (!NIL_P(rb_key_bytes) && !NIL_P(rb_key_bits)) {
rb_raise(rb_eArgError,
"should not specify both :key_bytes and :key_bits once: %s",
rb_grn_inspect(rb_ary_new4(argc, argv)));
} else if (!NIL_P(rb_key_bytes)) {
prefix_size = NUM2UINT(rb_key_bytes);
} else if (!NIL_P(rb_key_bits)) {
prefix_size = NUM2UINT(rb_key_bits);
flags |= GRN_CURSOR_SIZE_BY_BIT;
} else {
prefix_size = RSTRING_LEN(rb_prefix);
}
if (!NIL_P(rb_offset))
offset = NUM2INT(rb_offset);
if (!NIL_P(rb_limit))
limit = NUM2INT(rb_limit);
if (RVAL2CBOOL(rb_greater_than))
flags |= GRN_CURSOR_GT;
if (RVAL2CBOOL(rb_less_than))
flags |= GRN_CURSOR_LT;
cursor = grn_table_cursor_open(*context, table,
prefix, prefix_size,
NULL, 0,
offset, limit, flags);
rb_grn_context_check(*context, self);
return cursor;
}
示例6: rb_grn_normalizer_s_normalize
/*
* Normalizes the @[email protected]
*
* @example
* # Normalizes "ABC" with the default normalizer
* Groonga::Normalizer.normalize("AbC") # => "abc"
*
* @overload normalize(string)
* @return [String] The normalized string
* @param [String] string The original string
*/
static VALUE
rb_grn_normalizer_s_normalize (VALUE klass, VALUE rb_string)
{
VALUE rb_context = Qnil;
VALUE rb_encoded_string;
VALUE rb_normalized_string;
grn_ctx *context = NULL;
grn_obj *grn_string;
grn_obj *normalizer = GRN_NORMALIZER_AUTO;
/* TODO: make customizable */
int flags = GRN_STRING_REMOVE_BLANK;
const char *normalized_string;
unsigned int normalized_string_length;
context = rb_grn_context_ensure(&rb_context);
rb_encoded_string = rb_grn_context_rb_string_encode(context, rb_string);
grn_string = grn_string_open(context,
RSTRING_PTR(rb_encoded_string),
RSTRING_LEN(rb_encoded_string),
normalizer,
flags);
rb_grn_context_check(context, rb_string);
grn_string_get_normalized(context, grn_string,
&normalized_string, &normalized_string_length,
NULL);
rb_normalized_string =
rb_grn_context_rb_string_new(context,
normalized_string,
normalized_string_length);
grn_obj_close(context, grn_string);
return rb_normalized_string;
}
示例7: rb_grn_windows_event_logger_s_register
/*
* @overload register(event_source_name, options={})
*
* Registers Windows Event Log based logger that uses
* `event_source_name` as event source name.
*
* @param event_source_name [String] The event source name.
* @param options [::Hash]
* @option options :context [Groonga::Context] (Groonga::Context.default)
* The context to be set logger.
*
* @return [void]
*
* @since 5.0.5
*/
static VALUE
rb_grn_windows_event_logger_s_register (int argc,
VALUE *argv,
VALUE klass)
{
VALUE rb_event_source_name;
VALUE rb_options;
VALUE rb_context;
const char *event_source_name;
grn_ctx *context;
grn_rc rc;
rb_scan_args(argc, argv, "11", &rb_event_source_name, &rb_options);
rb_event_source_name = rb_grn_convert_to_string(rb_event_source_name);
event_source_name = StringValueCStr(rb_event_source_name);
rb_grn_scan_options(rb_options,
"context", &rb_context,
NULL);
context = rb_grn_context_ensure(&rb_context);
rc = grn_windows_event_logger_set(context, event_source_name);
rb_grn_context_check(context, rb_event_source_name);
rb_grn_rc_check(rc, rb_event_source_name);
return Qnil;
}
示例8: rb_grn_index_column_get_sources
/*
* call-seq:
* column.sources -> Groonga::Columnの配列
*
* インデックス対象となっているカラムの配列を返す。
*/
static VALUE
rb_grn_index_column_get_sources (VALUE self)
{
grn_ctx *context = NULL;
grn_obj *column;
grn_obj sources;
grn_id *source_ids;
VALUE rb_sources;
int i, n;
rb_grn_index_column_deconstruct(SELF(self), &column, &context,
NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL);
GRN_OBJ_INIT(&sources, GRN_BULK, 0, GRN_ID_NIL);
grn_obj_get_info(context, column, GRN_INFO_SOURCE, &sources);
rb_grn_context_check(context, self);
n = GRN_BULK_VSIZE(&sources) / sizeof(grn_id);
source_ids = (grn_id *)GRN_BULK_HEAD(&sources);
rb_sources = rb_ary_new2(n);
for (i = 0; i < n; i++) {
grn_obj *source;
VALUE rb_source;
source = grn_ctx_at(context, *source_ids);
rb_source = GRNOBJECT2RVAL(Qnil, context, source, RB_GRN_FALSE);
rb_ary_push(rb_sources, rb_source);
source_ids++;
}
grn_obj_unlink(context, &sources);
return rb_sources;
}
示例9: rb_grn_column_cache_array_reference
/*
* @overload [](id)
* @param id [Integer, Groonga::Record] The record ID for the
* column value.
*
* @return [Object] The value for the record ID.
*/
static VALUE
rb_grn_column_cache_array_reference (VALUE self, VALUE rb_id)
{
RbGrnColumnCache *rb_grn_column_cache;
grn_id id;
void *value;
size_t value_size = 0;
TypedData_Get_Struct(self,
RbGrnColumnCache,
&data_type,
rb_grn_column_cache);
if (!rb_grn_column_cache->column_cache) {
return Qnil;
}
id = rb_grn_id_from_ruby_object(rb_id,
rb_grn_column_cache->context,
rb_grn_column_cache->table,
self);
value = grn_column_cache_ref(rb_grn_column_cache->context,
rb_grn_column_cache->column_cache,
id,
&value_size);
rb_grn_context_check(rb_grn_column_cache->context, self);
GRN_TEXT_SET_REF(&(rb_grn_column_cache->buffer),
value,
value_size);
return GRNBULK2RVAL(rb_grn_column_cache->context,
&(rb_grn_column_cache->buffer),
rb_grn_column_cache->range,
self);
}
示例10: rb_grn_database_initialize
/*
* 既存のデータベースを開く。ブロックを指定した場合はブロッ
* クに開いたデータベースを渡し、ブロックを抜けるときに閉じ
* る。
*
* @overload new(path, options=nil)
* @!macro [new] database.new.arguments
* @param options [::Hash] The name and value
* pairs. Omitted names are initialized as the default value.
* @option options :context (Groonga::Context.default)
* データベースを結びつけるコンテキスト。省略すると
* {Groonga::Context.default} を利用する。
* @!macro database.new.arguments
* @return [Groonga::Database]
* @overload new(path, options=nil)
* @!macro database.new.arguments
* @yield [database]
* @yieldparam [Groonga::Database] database 開いたデータベース
*/
static VALUE
rb_grn_database_initialize (int argc, VALUE *argv, VALUE self)
{
grn_ctx *context;
grn_obj *old_database, *database;
const char *path;
VALUE rb_path, options, rb_context;
rb_scan_args(argc, argv, "11", &rb_path, &options);
path = StringValuePtr(rb_path);
rb_grn_scan_options(options,
"context", &rb_context,
NULL);
context = rb_grn_context_ensure(&rb_context);
old_database = grn_ctx_db(context);
if (old_database)
grn_obj_unlink(context, old_database);
reset_floating_objects(rb_context);
database = grn_db_open(context, path);
rb_grn_object_assign(Qnil, self, rb_context, context, database);
rb_grn_context_check(context, self);
rb_iv_set(self, "@context", rb_context);
if (!NIL_P(rb_context))
rb_iv_set(rb_context, "database", self);
return Qnil;
}
示例11: rb_grn_flushable_flush
/*
* Flush memory mapped data to disk.
*
* @overload flush(options={})
* @param [::Hash] options
* @option options [Boolean] :recursive (true) Whether to flush objects
* which a target object has recursively.
* @return [void]
*/
static VALUE
rb_grn_flushable_flush (int argc, VALUE *argv, VALUE self)
{
grn_ctx *context = NULL;
grn_obj *object = NULL;
VALUE rb_recursive_p;
VALUE rb_options;
rb_scan_args(argc, argv, "01", &rb_options);
rb_grn_scan_options(rb_options,
"recursive", &rb_recursive_p,
NULL);
if (NIL_P(rb_recursive_p)) {
rb_recursive_p = Qtrue;
}
rb_grn_object_deconstruct(SELF(self), &object, &context,
NULL, NULL, NULL, NULL);
if (!object) {
rb_raise(rb_eGrnClosed,
"can't access already closed Groonga object: <%s>",
rb_grn_inspect(self));
}
if (RVAL2CBOOL(rb_recursive_p)) {
grn_obj_flush_recursive(context, object);
} else {
grn_obj_flush(context, object);
}
rb_grn_context_check(context, self);
return Qnil;
}
示例12: rb_grn_expression_append_object
/*
* _object_ を追加し、 _n_arguments_ 個の引数を取る _operation_ を追加する。
*
* @overload append_object(object, operation=Groonga::Operator::PUSH, n_arguments=1)
* @param [Object] object 追加するオブジェクト
* @param [Groonga::Operator::XXX] operation 追加する _operation_
* @param [Integer] n_arguments _operation_ の取る引数
* @return [Self] self
*
*/
static VALUE
rb_grn_expression_append_object (int argc, VALUE *argv, VALUE self)
{
VALUE rb_object, rb_operation, rb_n_arguments;
grn_ctx *context = NULL;
grn_obj *expression, *object;
grn_operator operation = GRN_OP_PUSH;
int n_arguments = 1;
rb_scan_args(argc, argv, "12", &rb_object, &rb_operation, &rb_n_arguments);
if (!NIL_P(rb_operation))
operation = RVAL2GRNOPERATOR(rb_operation);
if (!NIL_P(rb_n_arguments))
n_arguments = NUM2INT(rb_n_arguments);
rb_grn_expression_deconstruct(SELF(self), &expression, &context,
NULL, NULL,
NULL, NULL, NULL);
object = RVAL2GRNOBJECT(rb_object, &context);
grn_expr_append_obj(context, expression, object,
operation, n_arguments);
rb_grn_context_check(context, self);
rb_ary_push(rb_iv_get(self, "@objects"), rb_object);
return self;
}
示例13: rb_grn_expression_initialize
static VALUE
rb_grn_expression_initialize (int argc, VALUE *argv, VALUE self)
{
grn_ctx *context = NULL;
grn_obj *expression;
VALUE options, rb_context, rb_name;
char *name = NULL;
unsigned name_size = 0;
rb_scan_args(argc, argv, "01", &options);
rb_grn_scan_options(options,
"context", &rb_context,
"name", &rb_name,
NULL);
context = rb_grn_context_ensure(&rb_context);
if (!NIL_P(rb_name)) {
name = StringValuePtr(rb_name);
name_size = RSTRING_LEN(rb_name);
}
expression = grn_expr_create(context, name, name_size);
rb_grn_context_check(context, self);
rb_grn_object_assign(Qnil, self, rb_context, context, expression);
rb_grn_context_register_floating_object(DATA_PTR(self));
rb_iv_set(self, "@objects", rb_ary_new());
return Qnil;
}
示例14: rb_grn_database_lock
/*
* _database_ をロックする。ロックに失敗した場合は
* {Groonga::ResourceDeadlockAvoided} 例外が発生する。
*
* @overload lock(options={})
* @!macro [new] database.lock.arguments
* @param [::Hash] options 利用可能なオプションは以下の通り。
* @option options :timeout
* ロックを獲得できなかった場合は _:timeout_ 秒間ロックの獲
* 得を試みる。 _:timeout_ 秒以内にロックを獲得できなかった
* 場合は例外が発生する。
* @!macro database.lock.arguments
* @overload lock(options={})
* @yield ブロックを指定した場合はブロックを抜けたときにunlockする。
* @!macro database.lock.arguments
*/
static VALUE
rb_grn_database_lock (int argc, VALUE *argv, VALUE self)
{
grn_ctx *context;
grn_obj *database;
int timeout = 0;
grn_rc rc;
VALUE options, rb_timeout;
rb_scan_args(argc, argv, "01", &options);
rb_grn_database_deconstruct(SELF(self), &database, &context,
NULL, NULL, NULL, NULL);
rb_grn_scan_options(options,
"timeout", &rb_timeout,
NULL);
if (!NIL_P(rb_timeout))
timeout = NUM2UINT(rb_timeout);
rc = grn_obj_lock(context, database, GRN_ID_NIL, timeout);
rb_grn_context_check(context, self);
rb_grn_rc_check(rc, self);
if (rb_block_given_p()) {
return rb_ensure(rb_yield, Qnil, rb_grn_database_unlock, self);
} else {
return Qnil;
}
}
示例15: rb_grn_value_from_ruby_object
grn_obj *
rb_grn_value_from_ruby_object (VALUE object, grn_ctx *context,
grn_obj *value, grn_id type_id, grn_obj *type)
{
grn_bool string_p, table_type_p;
string_p = rb_type(object) == T_STRING;
table_type_p = (GRN_TABLE_HASH_KEY <= type->header.type &&
type->header.type <= GRN_TABLE_NO_KEY);
if (!string_p) {
return RVAL2GRNBULK_WITH_TYPE(object, context, value, type_id, type);
}
if (table_type_p && RSTRING_LEN(object) == 0) {
if (value) {
if (value->header.domain != type_id) {
grn_obj_reinit(context, value, type_id, 0);
}
} else {
value = grn_obj_open(context, GRN_BULK, 0, type_id);
rb_grn_context_check(context, object);
}
GRN_RECORD_SET(context, value, GRN_ID_NIL);
return value;
}
return RVAL2GRNBULK(object, context, value);
}