コード例 #1
0
ファイル: string-buffer.c プロジェクト: fairy-prj/fairy
VALUE
rb_fairy_string_buffer_clear(VALUE self)
{
  fairy_string_buffer_t *sb;
  GetFairyStringBufferPtr(self, sb);

  sb->size = 0;
  rb_fairy_fixnum_buffer_clear(sb->string_sizes);
  rb_str_replace(sb->buffer, rb_str_new2(""));

  return self;
  
}
コード例 #2
0
ファイル: buffer.c プロジェクト: CodeMonkeySteve/msgpack-ruby
size_t msgpack_buffer_read_to_string_nonblock(msgpack_buffer_t* b, VALUE string, size_t length)
{
    size_t avail = msgpack_buffer_top_readable_size(b);

#ifndef DISABLE_BUFFER_READ_REFERENCE_OPTIMIZE
    /* optimize */
    if(length <= avail && RSTRING_LEN(string) == 0 &&
            b->head->mapped_string != NO_MAPPED_STRING &&
            length >= b->read_reference_threshold) {
        VALUE s = _msgpack_buffer_refer_head_mapped_string(b, length);
#ifndef HAVE_RB_STR_REPLACE
        /* TODO MRI 1.8 */
        rb_funcall(string, s_replace, 1, s);
#else
        rb_str_replace(string, s);
#endif
        /* here doesn't have to call ENCODING_SET because
         * encoding of s is always ASCII-8BIT */
        _msgpack_buffer_consumed(b, length);
        return length;
    }
#endif

    size_t const length_orig = length;

    while(true) {
        if(length <= avail) {
            rb_str_buf_cat(string, b->read_buffer, length);
            _msgpack_buffer_consumed(b, length);
            return length_orig;
        }

        rb_str_buf_cat(string, b->read_buffer, avail);
        length -= avail;

        if(!_msgpack_buffer_shift_chunk(b)) {
            return length_orig - length;
        }

        avail = msgpack_buffer_top_readable_size(b);
    }
}
コード例 #3
0
ファイル: guess.c プロジェクト: wanabe/guess4r
VALUE guess4r_enc__guess_region_set(VALUE klass, VALUE str) {
  return rb_str_replace(guess4r_enc__guess_region(klass), str);
}