Exemplo n.º 1
0
Arquivo: string.c Projeto: richwu/tbox
tb_char_t const* tb_string_cstrncpy(tb_string_ref_t string, tb_char_t const* s, tb_size_t n)
{
    // check
    tb_assert_and_check_return_val(string && s && n, tb_null);

    tb_char_t* p = (tb_char_t*)tb_buffer_memncpy(string, (tb_byte_t const*)s, n + 1);
    if (p) p[tb_string_size(string)] = '\0';
    return p;
}
Exemplo n.º 2
0
Arquivo: data.c Projeto: luxuan/tbox
tb_bool_t tb_object_data_setp(tb_object_ref_t object, tb_pointer_t addr, tb_size_t size)
{
    // check
    tb_object_data_t* data = tb_object_data_cast(object);
    tb_assert_and_check_return_val(data && addr, tb_false);

    // data
    tb_buffer_memncpy(&data->buffer, (tb_byte_t const*)addr, size);

    // ok
    return tb_true;
}
Exemplo n.º 3
0
/* //////////////////////////////////////////////////////////////////////////////////////
 * main
 */ 
tb_int_t tb_demo_memory_buffer_main(tb_int_t argc, tb_char_t** argv)
{
    tb_buffer_t b;
    tb_buffer_init(&b);

    tb_buffer_memncpy(&b, (tb_byte_t const*)"hello ", 6);
    tb_buffer_memncat(&b, (tb_byte_t const*)"world", 6);
    tb_trace_i("%s", tb_buffer_data(&b));

    tb_buffer_exit(&b);

    return 0;
}
Exemplo n.º 4
0
Arquivo: data.c Projeto: luxuan/tbox
tb_object_ref_t tb_object_data_init_from_data(tb_pointer_t addr, tb_size_t size)
{
    // make
    tb_object_data_t* data = tb_object_data_init_base();
    tb_assert_and_check_return_val(data, tb_null);

    // init buffer
    if (!tb_buffer_init(&data->buffer))
    {
        tb_object_data_exit((tb_object_ref_t)data);
        return tb_null;
    }

    // copy data
    if (addr && size) tb_buffer_memncpy(&data->buffer, (tb_byte_t const*)addr, size);

    // ok
    return (tb_object_ref_t)data;
}
Exemplo n.º 5
0
tb_byte_t* tb_buffer_memncat(tb_buffer_t* buffer, tb_byte_t const* b, tb_size_t n)
{   
    // check
    tb_assert_and_check_return_val(buffer && b, tb_null);
    
    // check
    tb_check_return_val(n, tb_buffer_data(buffer));

    // is null?
    tb_size_t p = tb_buffer_size(buffer);
    if (!p) return tb_buffer_memncpy(buffer, b, n);

    // resize
    tb_byte_t* d = tb_buffer_resize(buffer, p + n);
    tb_assert_and_check_return_val(d, tb_null);

    // memcat
    tb_memcpy(d + p, b, n);

    // ok?
    return d;
}