本文整理汇总了C++中rb_str_new2函数的典型用法代码示例。如果您正苦于以下问题:C++ rb_str_new2函数的具体用法?C++ rb_str_new2怎么用?C++ rb_str_new2使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rb_str_new2函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: Game_initialize
static VALUE
Game_initialize(int argc, VALUE* argv, VALUE self)
{
if (!NIL_P(Game_s_current(rb_cGame))) {
rb_raise(strb_GetStarRubyErrorClass(), "already run");
}
volatile VALUE rbWidth, rbHeight, rbOptions;
rb_scan_args(argc, argv, "21", &rbWidth, &rbHeight, &rbOptions);
if (NIL_P(rbOptions)) {
rbOptions = rb_hash_new();
} else {
Check_Type(rbOptions, T_HASH);
}
Game* game;
Data_Get_Struct(self, Game, game);
if (SDL_InitSubSystem(SDL_INIT_VIDEO | SDL_INIT_TIMER)) {
rb_raise_sdl_error();
}
const int width = NUM2INT(rbWidth);
const int height = NUM2INT(rbHeight);
volatile VALUE rbFps = rb_hash_aref(rbOptions, symbol_fps);
Game_fps_eq(self, !NIL_P(rbFps) ? rbFps : INT2FIX(30));
volatile VALUE rbTitle = rb_hash_aref(rbOptions, symbol_title);
Game_title_eq(self, !NIL_P(rbTitle) ? rbTitle : rb_str_new2(""));
bool cursor = false;
volatile VALUE val;
Check_Type(rbOptions, T_HASH);
if (!NIL_P(val = rb_hash_aref(rbOptions, symbol_cursor))) {
cursor = RTEST(val);
}
if (!NIL_P(val = rb_hash_aref(rbOptions, symbol_fullscreen))) {
game->isFullscreen = RTEST(val);
}
if (!NIL_P(val = rb_hash_aref(rbOptions, symbol_window_scale))) {
game->windowScale = NUM2INT(val);
if (game->windowScale < 1) {
rb_raise(rb_eArgError, "invalid window scale: %d",
game->windowScale);
}
}
if (!NIL_P(val = rb_hash_aref(rbOptions, symbol_vsync))) {
game->isVsync = RTEST(val);
}
SDL_ShowCursor(cursor ? SDL_ENABLE : SDL_DISABLE);
volatile VALUE rbScreen =
rb_class_new_instance(2, (VALUE[]){INT2NUM(width), INT2NUM(height)},
strb_GetTextureClass());
game->screen = rbScreen;
InitializeScreen(game);
rb_iv_set(rb_cGame, "current", self);
return Qnil;
}
开发者ID:CaptainJet,项目名称:RM-StarRuby,代码行数:64,代码来源:game.c
示例2: rb_load_internal
static void
rb_load_internal(VALUE fname, int wrap)
{
int state;
rb_thread_t *th = GET_THREAD();
volatile VALUE wrapper = th->top_wrapper;
volatile VALUE self = th->top_self;
volatile int loaded = FALSE;
volatile int mild_compile_error;
#ifndef __GNUC__
rb_thread_t *volatile th0 = th;
#endif
th->errinfo = Qnil; /* ensure */
if (!wrap) {
rb_secure(4); /* should alter global state */
th->top_wrapper = 0;
}
else {
/* load in anonymous module as toplevel */
th->top_self = rb_obj_clone(rb_vm_top_self());
th->top_wrapper = rb_module_new();
rb_extend_object(th->top_self, th->top_wrapper);
}
mild_compile_error = th->mild_compile_error;
PUSH_TAG();
state = EXEC_TAG();
if (state == 0) {
NODE *node;
VALUE iseq;
th->mild_compile_error++;
node = (NODE *)rb_load_file(RSTRING_PTR(fname));
loaded = TRUE;
iseq = rb_iseq_new_top(node, rb_str_new2("<top (required)>"), fname, fname, Qfalse);
th->mild_compile_error--;
rb_iseq_eval(iseq);
}
POP_TAG();
#ifndef __GNUC__
th = th0;
fname = RB_GC_GUARD(fname);
#endif
th->mild_compile_error = mild_compile_error;
th->top_self = self;
th->top_wrapper = wrapper;
if (!loaded) {
rb_exc_raise(GET_THREAD()->errinfo);
}
if (state) {
rb_vm_jump_tag_but_local_jump(state, Qundef);
}
if (!NIL_P(GET_THREAD()->errinfo)) {
/* exception during load */
rb_exc_raise(th->errinfo);
}
}
开发者ID:beazergood,项目名称:engineering,代码行数:62,代码来源:load.c
示例3: device_dirname
/*
* call-seq:
* dirname() -> String
*
* Returns the libusb device attribute dirname. At least in linux, this seems
* to correspond to the device's directory in /proc/bus/usb
*
*/
VALUE device_dirname(VALUE self)
{
struct usb_device *dev;
Data_Get_Struct(self, struct usb_device, dev);
return rb_str_new2(dev->bus->dirname);
}
开发者ID:joshuasiler,项目名称:ambient_msp430,代码行数:14,代码来源:usbbasics.c
示例4: cState_configure
//.........这里部分代码省略.........
tmp = rb_hash_aref(opts, ID2SYM(i_object_nl));
if (RTEST(tmp)) {
Check_Type(tmp, T_STRING);
state->object_nl = tmp;
}
tmp = ID2SYM(i_check_circular);
#if WITH_OBJC
if (CFDictionaryGetValueIfPresent((CFDictionaryRef)opts, (const void *)RB2OC(tmp), 0)) {
#else
if (st_lookup(RHASH_TBL(opts), tmp, 0)) {
#endif
tmp = rb_hash_aref(opts, ID2SYM(i_check_circular));
state->check_circular = RTEST(tmp);
} else {
state->check_circular = 1;
}
tmp = ID2SYM(i_max_nesting);
state->max_nesting = 19;
#if WITH_OBJC
if (CFDictionaryGetValueIfPresent((CFDictionaryRef)opts, (const void *)RB2OC(tmp), 0)) {
#else
if (st_lookup(RHASH_TBL(opts), tmp, 0)) {
#endif
VALUE max_nesting = rb_hash_aref(opts, tmp);
if (RTEST(max_nesting)) {
Check_Type(max_nesting, T_FIXNUM);
state->max_nesting = FIX2LONG(max_nesting);
} else {
state->max_nesting = 0;
}
}
tmp = rb_hash_aref(opts, ID2SYM(i_allow_nan));
state->allow_nan = RTEST(tmp);
return self;
}
/*
* call-seq: to_h
*
* Returns the configuration instance variables as a hash, that can be
* passed to the configure method.
*/
static VALUE cState_to_h(VALUE self)
{
VALUE result = rb_hash_new();
GET_STATE(self);
rb_hash_aset(result, ID2SYM(i_indent), state->indent);
rb_hash_aset(result, ID2SYM(i_space), state->space);
rb_hash_aset(result, ID2SYM(i_space_before), state->space_before);
rb_hash_aset(result, ID2SYM(i_object_nl), state->object_nl);
rb_hash_aset(result, ID2SYM(i_array_nl), state->array_nl);
rb_hash_aset(result, ID2SYM(i_check_circular), state->check_circular ? Qtrue : Qfalse);
rb_hash_aset(result, ID2SYM(i_allow_nan), state->allow_nan ? Qtrue : Qfalse);
rb_hash_aset(result, ID2SYM(i_max_nesting), LONG2FIX(state->max_nesting));
return result;
}
/*
* call-seq: new(opts = {})
*
* Instantiates a new State object, configured by _opts_.
*
* _opts_ can have the following keys:
*
* * *indent*: a string used to indent levels (default: ''),
* * *space*: a string that is put after, a : or , delimiter (default: ''),
* * *space_before*: a string that is put before a : pair delimiter (default: ''),
* * *object_nl*: a string that is put at the end of a JSON object (default: ''),
* * *array_nl*: a string that is put at the end of a JSON array (default: ''),
* * *check_circular*: true if checking for circular data structures
* should be done, false (the default) otherwise.
* * *allow_nan*: true if NaN, Infinity, and -Infinity should be
* generated, otherwise an exception is thrown, if these values are
* encountered. This options defaults to false.
*/
static VALUE cState_initialize(int argc, VALUE *argv, VALUE self)
{
VALUE opts;
GET_STATE(self);
rb_scan_args(argc, argv, "01", &opts);
state->indent = rb_str_new2("");
state->space = rb_str_new2("");
state->space_before = rb_str_new2("");
state->array_nl = rb_str_new2("");
state->object_nl = rb_str_new2("");
if (NIL_P(opts)) {
state->check_circular = 1;
state->allow_nan = 0;
state->max_nesting = 19;
} else {
cState_configure(self, opts);
}
state->seen = rb_hash_new();
state->memo = Qnil;
state->depth = INT2FIX(0);
return self;
}
开发者ID:alloy,项目名称:mr-experimental,代码行数:101,代码来源:generator.c
示例5: Init_curb_core
void Init_curb_core() {
// TODO we need to call curl_global_cleanup at exit!
curl_version_info_data *ver;
VALUE curlver, curllongver, curlvernum;
curl_global_init(CURL_GLOBAL_ALL);
ver = curl_version_info(CURLVERSION_NOW);
mCurl = rb_define_module("Curl");
curlver = rb_str_new2(ver->version);
curllongver = rb_str_new2(curl_version());
curlvernum = LONG2NUM(LIBCURL_VERSION_NUM);
rb_define_const(mCurl, "CURB_VERSION", rb_str_new2(CURB_VERSION));
rb_define_const(mCurl, "VERSION", curlver);
rb_define_const(mCurl, "CURL_VERSION", curlver);
rb_define_const(mCurl, "VERNUM", curlvernum);
rb_define_const(mCurl, "CURL_VERNUM", curlvernum);
rb_define_const(mCurl, "LONG_VERSION", curllongver);
rb_define_const(mCurl, "CURL_LONG_VERSION", curllongver);
/* Passed to on_debug handler to indicate that the data is informational text. */
rb_define_const(mCurl, "CURLINFO_TEXT", INT2FIX(CURLINFO_TEXT));
/* Passed to on_debug handler to indicate that the data is header (or header-like) data received from the peer. */
rb_define_const(mCurl, "CURLINFO_HEADER_IN", INT2FIX(CURLINFO_HEADER_IN));
/* Passed to on_debug handler to indicate that the data is header (or header-like) data sent to the peer. */
rb_define_const(mCurl, "CURLINFO_HEADER_OUT", INT2FIX(CURLINFO_HEADER_OUT));
/* Passed to on_debug handler to indicate that the data is protocol data received from the peer. */
rb_define_const(mCurl, "CURLINFO_DATA_IN", INT2FIX(CURLINFO_DATA_IN));
/* Passed to on_debug handler to indicate that the data is protocol data sent to the peer. */
rb_define_const(mCurl, "CURLINFO_DATA_OUT", INT2FIX(CURLINFO_DATA_OUT));
#ifdef HAVE_CURLFTPMETHOD_MULTICWD
rb_define_const(mCurl, "CURL_MULTICWD", INT2FIX(CURLFTPMETHOD_MULTICWD));
#endif
#ifdef HAVE_CURLFTPMETHOD_NOCWD
rb_define_const(mCurl, "CURL_NOCWD", INT2FIX(CURLFTPMETHOD_NOCWD));
#endif
#ifdef HAVE_CURLFTPMETHOD_SINGLECWD
rb_define_const(mCurl, "CURL_SINGLECWD", INT2FIX(CURLFTPMETHOD_SINGLECWD));
#endif
/* When passed to Curl::Easy#proxy_type , indicates that the proxy is an HTTP proxy. (libcurl >= 7.10) */
#ifdef HAVE_CURLPROXY_HTTP
rb_define_const(mCurl, "CURLPROXY_HTTP", INT2FIX(CURLPROXY_HTTP));
#else
rb_define_const(mCurl, "CURLPROXY_HTTP", INT2FIX(-1));
#endif
#ifdef CURL_VERSION_SSL
rb_define_const(mCurl, "CURL_SSLVERSION_DEFAULT", INT2FIX(CURL_SSLVERSION_DEFAULT));
rb_define_const(mCurl, "CURL_SSLVERSION_TLSv1", INT2FIX(CURL_SSLVERSION_TLSv1));
rb_define_const(mCurl, "CURL_SSLVERSION_SSLv2", INT2FIX(CURL_SSLVERSION_SSLv2));
rb_define_const(mCurl, "CURL_SSLVERSION_SSLv3", INT2FIX(CURL_SSLVERSION_SSLv3));
rb_define_const(mCurl, "CURL_USESSL_CONTROL", INT2FIX(CURB_FTPSSL_CONTROL));
rb_define_const(mCurl, "CURL_USESSL_NONE", INT2FIX(CURB_FTPSSL_NONE));
rb_define_const(mCurl, "CURL_USESSL_TRY", INT2FIX(CURB_FTPSSL_TRY));
rb_define_const(mCurl, "CURL_USESSL_ALL", INT2FIX(CURB_FTPSSL_ALL));
#else
rb_define_const(mCurl, "CURL_SSLVERSION_DEFAULT", INT2FIX(-1));
rb_define_const(mCurl, "CURL_SSLVERSION_TLSv1", INT2FIX(-1));
rb_define_const(mCurl, "CURL_SSLVERSION_SSLv2", INT2FIX(-1));
rb_define_const(mCurl, "CURL_SSLVERSION_SSLv3", INT2FIX(-1));
rb_define_const(mCurl, "CURL_USESSL_CONTROL", INT2FIX(-1));
rb_define_const(mCurl, "CURL_USESSL_NONE", INT2FIX(-1));
rb_define_const(mCurl, "CURL_USESSL_TRY", INT2FIX(-1));
rb_define_const(mCurl, "CURL_USESSL_ALL", INT2FIX(-1));
#endif
/* When passed to Curl::Easy#proxy_type , indicates that the proxy is a SOCKS4 proxy. (libcurl >= 7.15.2) */
#ifdef HAVE_CURLPROXY_SOCKS4
rb_define_const(mCurl, "CURLPROXY_SOCKS4", INT2FIX(CURLPROXY_SOCKS4));
#else
rb_define_const(mCurl, "CURLPROXY_SOCKS4", INT2FIX(-2));
#endif
/* When passed to Curl::Easy#proxy_type , indicates that the proxy is a SOCKS5 proxy. (libcurl >= 7.10) */
#ifdef HAVE_CURLPROXY_SOCKS5
rb_define_const(mCurl, "CURLPROXY_SOCKS5", INT2FIX(CURLPROXY_SOCKS5));
#else
rb_define_const(mCurl, "CURLPROXY_SOCKS5", INT2FIX(-2));
#endif
/* When passed to Curl::Easy#http_auth_types or Curl::Easy#proxy_auth_types, directs libcurl to use Basic authentication. */
#ifdef HAVE_CURLAUTH_BASIC
rb_define_const(mCurl, "CURLAUTH_BASIC", INT2FIX(CURLAUTH_BASIC));
#else
rb_define_const(mCurl, "CURLAUTH_BASIC", INT2FIX(0));
#endif
/* When passed to Curl::Easy#http_auth_types or Curl::Easy#proxy_auth_types, directs libcurl to use Digest authentication. */
//.........这里部分代码省略.........
开发者ID:drewblas,项目名称:curb,代码行数:101,代码来源:curb.c
示例6: mString_Extend_json_create
/*
* call-seq: json_create(o)
*
* Raw Strings are JSON Objects (the raw bytes are stored in an array for the
* key "raw"). The Ruby String can be created by this module method.
*/
static VALUE mString_Extend_json_create(VALUE self, VALUE o) {
VALUE ary;
Check_Type(o, T_HASH);
ary = rb_hash_aref(o, rb_str_new2("raw"));
return rb_funcall(ary, i_pack, 1, rb_str_new2("C*"));
}
开发者ID:alloy,项目名称:mr-experimental,代码行数:12,代码来源:generator.c
示例7: mFalseClass_to_json
/*
* call-seq: to_json(state = nil, depth = 0)
*
* Returns a JSON string for false: 'false'.
*/
static VALUE mFalseClass_to_json(int argc, VALUE *argv, VALUE self)
{
return rb_str_new2("false");
}
开发者ID:alloy,项目名称:mr-experimental,代码行数:9,代码来源:generator.c
示例8: dummy_dump
static VALUE
dummy_dump(VALUE self)
{
return rb_str_new2("");
}
开发者ID:asimoov,项目名称:emscripted-ruby,代码行数:5,代码来源:thread.c
示例9: __rhoGetCurrentDir
VALUE __rhoGetCurrentDir(void)
{
return rb_str_new2(rho_native_rhopath());
}
开发者ID:yura505,项目名称:rhodes,代码行数:4,代码来源:rhosupport.c
示例10: get_value
static VALUE get_value(const char* buffer, int* position, int type) {
VALUE value;
switch (type) {
case -1:
{
value = rb_class_new_instance(0, NULL, MinKey);
break;
}
case 1:
{
double d;
memcpy(&d, buffer + *position, 8);
value = rb_float_new(d);
*position += 8;
break;
}
case 2:
case 13:
{
int value_length;
value_length = *(int*)(buffer + *position) - 1;
*position += 4;
value = STR_NEW(buffer + *position, value_length);
*position += value_length + 1;
break;
}
case 3:
{
int size;
memcpy(&size, buffer + *position, 4);
if (strcmp(buffer + *position + 5, "$ref") == 0) { // DBRef
int offset = *position + 10;
VALUE argv[2];
int collection_length = *(int*)(buffer + offset) - 1;
char id_type;
offset += 4;
argv[0] = STR_NEW(buffer + offset, collection_length);
offset += collection_length + 1;
id_type = buffer[offset];
offset += 5;
argv[1] = get_value(buffer, &offset, (int)id_type);
value = rb_class_new_instance(2, argv, DBRef);
} else {
value = elements_to_hash(buffer + *position + 4, size - 5);
}
*position += size;
break;
}
case 4:
{
int size, end;
memcpy(&size, buffer + *position, 4);
end = *position + size - 1;
*position += 4;
value = rb_ary_new();
while (*position < end) {
int type = (int)buffer[(*position)++];
int key_size = (int)strlen(buffer + *position);
VALUE to_append;
*position += key_size + 1; // just skip the key, they're in order.
to_append = get_value(buffer, position, type);
rb_ary_push(value, to_append);
}
(*position)++;
break;
}
case 5:
{
int length, subtype;
VALUE data, st;
VALUE argv[2];
memcpy(&length, buffer + *position, 4);
subtype = (unsigned char)buffer[*position + 4];
if (subtype == 2) {
data = rb_str_new(buffer + *position + 9, length - 4);
} else {
data = rb_str_new(buffer + *position + 5, length);
}
st = INT2FIX(subtype);
argv[0] = data;
argv[1] = st;
value = rb_class_new_instance(2, argv, Binary);
*position += length + 5;
break;
}
case 6:
{
value = Qnil;
break;
}
case 7:
{
VALUE str = rb_str_new(buffer + *position, 12);
VALUE oid = rb_funcall(str, unpack_method, 1, rb_str_new2("C*"));
value = rb_class_new_instance(1, &oid, ObjectId);
*position += 12;
break;
//.........这里部分代码省略.........
开发者ID:getaroom,项目名称:mongo-ruby-driver,代码行数:101,代码来源:cbson.c
示例11: write_doc
static void write_doc(bson_buffer_t buffer, VALUE hash, VALUE check_keys, VALUE move_id) {
bson_buffer_position start_position = bson_buffer_get_position(buffer);
bson_buffer_position length_location = bson_buffer_save_space(buffer, 4);
bson_buffer_position length;
int allow_id;
int (*write_function)(VALUE, VALUE, VALUE) = NULL;
VALUE id_str = rb_str_new2("_id");
VALUE id_sym = ID2SYM(rb_intern("_id"));
if (length_location == -1) {
rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c");
}
// write '_id' first if move_id is true. then don't allow an id to be written.
if(move_id == Qtrue) {
allow_id = 0;
if (rb_funcall(hash, rb_intern("has_key?"), 1, id_str) == Qtrue) {
VALUE id = rb_hash_aref(hash, id_str);
write_element_with_id(id_str, id, pack_extra(buffer, check_keys));
} else if (rb_funcall(hash, rb_intern("has_key?"), 1, id_sym) == Qtrue) {
VALUE id = rb_hash_aref(hash, id_sym);
write_element_with_id(id_sym, id, pack_extra(buffer, check_keys));
}
}
else {
allow_id = 1;
// Ensure that hash doesn't contain both '_id' and :_id
if ((rb_obj_classname(hash), "Hash") == 0) {
if ((rb_funcall(hash, rb_intern("has_key?"), 1, id_str) == Qtrue) &&
(rb_funcall(hash, rb_intern("has_key?"), 1, id_sym) == Qtrue)) {
VALUE oid_sym = rb_hash_delete(hash, id_sym);
rb_funcall(hash, rb_intern("[]="), 2, id_str, oid_sym);
}
}
}
if(allow_id == 1) {
write_function = write_element_with_id;
}
else {
write_function = write_element_without_id;
}
// we have to check for an OrderedHash and handle that specially
if (strcmp(rb_obj_classname(hash), "BSON::OrderedHash") == 0) {
VALUE keys = rb_funcall(hash, rb_intern("keys"), 0);
int i;
for(i = 0; i < RARRAY_LEN(keys); i++) {
VALUE key = rb_ary_entry(keys, i);
VALUE value = rb_hash_aref(hash, key);
write_function(key, value, pack_extra(buffer, check_keys));
}
} else if (rb_obj_is_kind_of(hash, RB_HASH) == Qtrue) {
rb_hash_foreach(hash, write_function, pack_extra(buffer, check_keys));
} else {
bson_buffer_free(buffer);
rb_raise(InvalidDocument, "BSON.serialize takes a Hash but got a %s", rb_obj_classname(hash));
}
// write null byte and fill in length
SAFE_WRITE(buffer, &zero, 1);
length = bson_buffer_get_position(buffer) - start_position;
// make sure that length doesn't exceed 4MB
if (length > bson_buffer_get_max_size(buffer)) {
bson_buffer_free(buffer);
rb_raise(InvalidDocument,
"Document too large: This BSON document is limited to %d bytes.",
bson_buffer_get_max_size(buffer));
return;
}
SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&length, 4);
}
开发者ID:getaroom,项目名称:mongo-ruby-driver,代码行数:74,代码来源:cbson.c
示例12: write_element
static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
bson_buffer_t buffer = (bson_buffer_t)NUM2LL(rb_ary_entry(extra, 0));
VALUE check_keys = rb_ary_entry(extra, 1);
if (TYPE(key) == T_SYMBOL) {
// TODO better way to do this... ?
key = rb_str_new2(rb_id2name(SYM2ID(key)));
}
if (TYPE(key) != T_STRING) {
bson_buffer_free(buffer);
rb_raise(rb_eTypeError, "keys must be strings or symbols");
}
if (allow_id == 0 && strcmp("_id", RSTRING_PTR(key)) == 0) {
return ST_CONTINUE;
}
if (check_keys == Qtrue) {
int i;
if (RSTRING_LEN(key) > 0 && RSTRING_PTR(key)[0] == '$') {
bson_buffer_free(buffer);
rb_raise(InvalidKeyName, "key %s must not start with '$'", RSTRING_PTR(key));
}
for (i = 0; i < RSTRING_LEN(key); i++) {
if (RSTRING_PTR(key)[i] == '.') {
bson_buffer_free(buffer);
rb_raise(InvalidKeyName, "key %s must not contain '.'", RSTRING_PTR(key));
}
}
}
switch(TYPE(value)) {
case T_BIGNUM:
{
if (rb_funcall(value, gt_operator, 1, LL2NUM(9223372036854775807LL)) == Qtrue ||
rb_funcall(value, lt_operator, 1, LL2NUM(-9223372036854775808ULL)) == Qtrue) {
bson_buffer_free(buffer);
rb_raise(rb_eRangeError, "MongoDB can only handle 8-byte ints");
}
}
// NOTE: falls through to T_FIXNUM code
case T_FIXNUM:
{
long long ll_value;
ll_value = NUM2LL(value);
if (ll_value > 2147483647LL ||
ll_value < -2147483648LL) {
write_name_and_type(buffer, key, 0x12);
SAFE_WRITE(buffer, (char*)&ll_value, 8);
} else {
int int_value;
write_name_and_type(buffer, key, 0x10);
int_value = (int)ll_value;
SAFE_WRITE(buffer, (char*)&int_value, 4);
}
break;
}
case T_TRUE:
{
write_name_and_type(buffer, key, 0x08);
SAFE_WRITE(buffer, &one, 1);
break;
}
case T_FALSE:
{
write_name_and_type(buffer, key, 0x08);
SAFE_WRITE(buffer, &zero, 1);
break;
}
case T_FLOAT:
{
double d = NUM2DBL(value);
write_name_and_type(buffer, key, 0x01);
SAFE_WRITE(buffer, (char*)&d, 8);
break;
}
case T_NIL:
{
write_name_and_type(buffer, key, 0x0A);
break;
}
case T_HASH:
{
write_name_and_type(buffer, key, 0x03);
write_doc(buffer, value, check_keys, Qfalse);
break;
}
case T_ARRAY:
{
bson_buffer_position length_location, start_position, obj_length;
int items, i;
VALUE* values;
write_name_and_type(buffer, key, 0x04);
start_position = bson_buffer_get_position(buffer);
// save space for length
length_location = bson_buffer_save_space(buffer, 4);
//.........这里部分代码省略.........
开发者ID:getaroom,项目名称:mongo-ruby-driver,代码行数:101,代码来源:cbson.c
示例13: add_cipher_name_to_ary
static void*
add_cipher_name_to_ary(const OBJ_NAME *name, VALUE ary)
{
rb_ary_push(ary, rb_str_new2(name->name));
return NULL;
}
开发者ID:emboss,项目名称:ruby-openssl,代码行数:6,代码来源:ossl_cipher.c
示例14: util_spec_rb_sourcefile
static VALUE util_spec_rb_sourcefile(VALUE self) {
return rb_str_new2(rb_sourcefile());
}
开发者ID:DavidEGrayson,项目名称:jruby,代码行数:3,代码来源:util_spec.c
示例15: __rhoGetRuntimeDir
VALUE __rhoGetRuntimeDir(void)
{
return rb_str_new2(rho_native_reruntimepath());
}
开发者ID:yura505,项目名称:rhodes,代码行数:4,代码来源:rhosupport.c
示例16: mArray_json_transfrom
inline static VALUE mArray_json_transfrom(VALUE self, VALUE Vstate, VALUE Vdepth) {
long i, len = RARRAY_LEN(self);
VALUE shift, result;
long depth = NIL_P(Vdepth) ? 0 : FIX2LONG(Vdepth);
VALUE delim = rb_str_new2(",");
GET_STATE(Vstate);
check_max_nesting(state, depth);
if (state->check_circular) {
VALUE self_id = rb_obj_id(self);
rb_hash_aset(state->seen, self_id, Qtrue);
result = rb_str_buf_new(len);
if (RSTRING_LEN(state->array_nl)) rb_str_append(delim, state->array_nl);
shift = rb_str_times(state->indent, LONG2FIX(depth + 1));
rb_str_buf_cat2(result, "[");
OBJ_INFECT(result, self);
rb_str_buf_append(result, state->array_nl);
for (i = 0; i < len; i++) {
VALUE element = RARRAY_AT(self, i);
if (RTEST(rb_hash_aref(state->seen, rb_obj_id(element)))) {
rb_raise(eCircularDatastructure,
"circular data structures not supported!");
}
OBJ_INFECT(result, element);
if (i > 0) rb_str_buf_append(result, delim);
rb_str_buf_append(result, shift);
element = rb_funcall(element, i_to_json, 2, Vstate, LONG2FIX(depth + 1));
Check_Type(element, T_STRING);
rb_str_buf_append(result, element);
}
if (RSTRING_LEN(state->array_nl)) {
rb_str_buf_append(result, state->array_nl);
rb_str_buf_append(result, rb_str_times(state->indent, LONG2FIX(depth)));
}
rb_str_buf_cat2(result, "]");
rb_hash_delete(state->seen, self_id);
} else {
result = rb_str_buf_new(len);
OBJ_INFECT(result, self);
if (RSTRING_LEN(state->array_nl)) rb_str_append(delim, state->array_nl);
shift = rb_str_times(state->indent, LONG2FIX(depth + 1));
rb_str_buf_cat2(result, "[");
rb_str_buf_append(result, state->array_nl);
for (i = 0; i < len; i++) {
VALUE element = RARRAY_AT(self, i);
OBJ_INFECT(result, element);
if (i > 0) rb_str_buf_append(result, delim);
rb_str_buf_append(result, shift);
element = rb_funcall(element, i_to_json, 2, Vstate, LONG2FIX(depth + 1));
Check_Type(element, T_STRING);
rb_str_buf_append(result, element);
}
rb_str_buf_append(result, state->array_nl);
if (RSTRING_LEN(state->array_nl)) {
rb_str_buf_append(result, rb_str_times(state->indent, LONG2FIX(depth)));
}
rb_str_buf_cat2(result, "]");
}
return result;
}
开发者ID:alloy,项目名称:mr-experimental,代码行数:62,代码来源:generator.c
示例17: rb_RhoStdoutWrite
static VALUE rb_RhoStdoutWrite(VALUE rhoLog, VALUE str)
{
return rb_RhoLogInfo(rhoLog,rb_str_new2("APP"),str);
}
开发者ID:yura505,项目名称:rhodes,代码行数:4,代码来源:rhosupport.c
示例18: mTrueClass_to_json
/*
* call-seq: to_json(state = nil, depth = 0)
*
* Returns a JSON string for true: 'true'.
*/
static VALUE mTrueClass_to_json(int argc, VALUE *argv, VALUE self)
{
return rb_str_new2("true");
}
开发者ID:alloy,项目名称:mr-experimental,代码行数:9,代码来源:generator.c
示例19: __rhoGetUserDir
VALUE __rhoGetUserDir(void)
{
return rb_str_new2(rho_native_rhouserpath());
}
开发者ID:yura505,项目名称:rhodes,代码行数:4,代码来源:rhosupport.c
示例20: mNilClass_to_json
/*
* call-seq: to_json(state = nil, depth = 0)
*
*/
static VALUE mNilClass_to_json(int argc, VALUE *argv, VALUE self)
{
return rb_str_new2("null");
}
开发者ID:alloy,项目名称:mr-experimental,代码行数:8,代码来源:generator.c
注:本文中的rb_str_new2函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论