Sha256: 902307faa581236951753937eff335236dd088abf3dcdeb272c6869b8174ae90

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 KB

Contents

MOAPI mo_value moapi_bytes_new(const char *src, size_t len)
{
	return (mo_value)rb_str_new(src, len);
}

MOAPI mo_value moapi_str_new(const char *src, size_t len, enum msgpack_enc_t encoding)
{
	int index = 0;
	VALUE str;

	if (encoding < sizeof(mochilo_enc_lookup)/sizeof(mochilo_enc_lookup[0]))
		index = rb_enc_find_index(mochilo_enc_lookup[encoding]);

	str = rb_str_new(src, len);
	rb_enc_set_index(str, index);

	return (mo_value)str;
}

MOAPI mo_value moapi_array_new(size_t array_size)
{
	return (mo_value)rb_ary_new2(array_size);
}

MOAPI void moapi_array_append(mo_value array, mo_value element)
{
	rb_ary_push((VALUE)array, (VALUE)element);
}

MOAPI mo_value moapi_hash_new(void)
{
	return (mo_value)rb_hash_new();
}

MOAPI void moapi_hash_set(mo_value hash, mo_value key, mo_value val)
{
	rb_hash_aset((VALUE)hash, (VALUE)key, (VALUE)val);
}

MOAPI mo_value moapi_uint64_new(uint64_t value)
{
	return (mo_value)rb_ull2inum((long long)value);
}

MOAPI mo_value moapi_int64_new(int64_t value)
{
	return (mo_value)rb_ll2inum(value);
}

MOAPI mo_value moapi_atom_new(enum msgpack_t type)
{
	switch (type) {
		case MSGPACK_T_NIL: return (mo_value)Qnil;
		case MSGPACK_T_TRUE: return (mo_value)Qtrue;
		case MSGPACK_T_FALSE: return (mo_value)Qfalse;
		default: return NULL;
	}
}

MOAPI mo_value moapi_double_new(double d)
{
	return (mo_value)rb_float_new(d);
}


#define moapi_uint8_new(n) (mo_value)INT2FIX((int)n)
#define moapi_uint16_new(n) (mo_value)INT2FIX((int)n)
#define moapi_uint32_new(n) (mo_value)ULONG2NUM((unsigned long)n)

#define moapi_int8_new(n) (mo_value)INT2FIX((int)n)
#define moapi_int16_new(n) (mo_value)INT2FIX((int)n)
#define moapi_int32_new(n) (mo_value)LONG2FIX((long)n)

#define moapi_float_new moapi_double_new

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mochilo-2.0 ext/mochilo/mochilo_api.h