Class: String

Inherits:
Object
  • Object
show all
Defined in:
(unknown)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_j_bytes(a) ⇒ Object



4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
# File 'ext/primitive/primitive.c', line 4324

static VALUE
r_String_from_j_bytes(VALUE self, VALUE a)
{
  if (TYPE(a) == T_DATA && RBASIC(a)->klass == r_ByteArray) {
    ByteArray *p;
    Data_Get_Struct(a, ByteArray, p);
    return rb_str_new((char*) p->data, p->length);
  }
  rb_raise(rb_eTypeError, "expected byte[]");
}

Instance Method Details

#to_j_bytesObject



4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
# File 'ext/primitive/primitive.c', line 4334

static VALUE
r_String_to_j_bytes(VALUE self)
{
  long len = RSTRING_LEN(self);
  if (len > 0x000000007FFFFFFFL)
    rb_raise(rb_eRangeError, "string too big");
  int32_t n = (int32_t) len;
  char *data = RSTRING_PTR(self);
  ByteArray *p = xmalloc(sizeof(ByteArray) + sizeof(int8_t) * (size_t) n);
  if (p == NULL)
    rb_raise(rb_eNoMemError, "NoMemoryError");
  p->length = n;
  int32_t i;
  for (i = 0; i < n; i += 1)
    p->data[i] = data[i];
  return Data_Wrap_Struct(r_ByteArray, NULL, NULL, p);
}