设为首页 加入收藏

TOP

c 实现IO流(二)
2015-01-22 21:30:50 来源: 作者: 【 】 浏览:156
Tags:实现
len; return ret; } void fs_stream_free_output( struct fs_output_stream* stream){ fs_free(stream->data); fs_free(stream); } void fs_stream_write_byte( struct fs_output_stream* stream, BYTE v){ fs_stream_write_data(stream, (BYTE*)&v, sizeof(BYTE)); } void fs_stream_write_uint32( struct fs_output_stream* stream, uint32_t v){ fs_stream_write_data(stream, (BYTE*)&v, sizeof(uint32_t)); } void fs_stream_write_uint16( struct fs_output_stream* stream, uint16_t v){ fs_stream_write_data(stream, (BYTE*)&v, sizeof(uint16_t)); } void fs_stream_write_int32( struct fs_output_stream* stream, int32_t v){ fs_stream_write_data(stream, (BYTE*)&v, sizeof(int32_t)); } void fs_stream_write_int16( struct fs_output_stream* stream, int16_t v){ fs_stream_write_data(stream, (BYTE*)&v, sizeof(int16_t)); } void fs_stream_write_float( struct fs_output_stream* stream, float v){ fs_stream_write_data(stream, (BYTE*)&v, sizeof(float)); } void fs_stream_write_double( struct fs_output_stream* stream, double v){ fs_stream_write_data(stream, (BYTE*)&v, sizeof(double)); } void fs_stream_write_data( struct fs_output_stream* stream, BYTE* data, size_t len ){ while(stream->pos + len > stream->buff_len){ void* data = fs_realloc(stream->data, stream->buff_len << 1); stream->data = data; stream->buff_len = stream->buff_len << 1; } memcpy(stream->data + stream->pos, data, len); stream->pos += len; } const BYTE* fs_stream_get_dataptr( struct fs_output_stream* stream){ return stream->data; } size_t fs_stream_get_len( struct fs_output_stream* stream){ return stream->pos; } size_t fs_stream_output_sub( struct fs_output_stream* stream, size_t start, size_t len ){ memcpy(stream->data, stream->data + start, len); stream->pos = len; return len; } struct fs_input_stream* fs_create_input_stream(const BYTE* data, size_t len){ struct fs_input_stream* ret = (struct fs_input_stream*)fs_malloc(sizeof(*ret)); fs_zero(ret, sizeof(*ret)); fs_input_stream_set_data(ret, data, len); return ret; } struct fs_input_stream* fs_create_input_stream_with_copy(const BYTE* data, size_t len){ struct fs_input_stream* ret = (struct fs_input_stream*)fs_malloc(sizeof(*ret)); fs_zero(ret, sizeof(*ret)); fs_input_stream_set_data_copy(ret, data, len); return ret; } void fs_input_stream_set_data( struct fs_input_stream* stream, const BYTE* data, size_t len){ if(stream->data){ if(stream->copy){ fs_free(stream->data); } } stream->data = (BYTE*)data; stream->pos = 0; stream->len = len; stream->copy = fs_false; } void fs_input_stream_set_data_copy( struct fs_input_stream* stream, const BYTE* data, size_t len){ if(stream->data){ if(stream->copy){ fs_free(stream->data); } } stream->data = (BYTE*)fs_malloc(len); stream->pos = 0; stream->len = len; stream->copy = fs_true; memcpy(stream->data, data, len); } size_t fs_input_stream_get_len( struct fs_input_stream* stream){ return stream->len; } void fs_input_stream_set_order( struct fs_input_stream* stream, BYTE order){ stream->byte_order = order; } void fs_stream_free_input( struct fs_input_stream* stream){ if(stream->copy){ fs_free(stream->data); } fs_free(stream); } #define _stream_read(TYPE)\ TYPE v = 0; \ memcpy(&v, stream->data + stream->pos, sizeof(v)); \ stream->pos += sizeof(v); \ return v; BYTE fs_stream_read_byte( struct fs_input_stream* stream){ _stream_read(BYTE); } uint32_t fs_stream_read_uint32( struct fs_input_stream* stream){ _st
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇objective-c copy mutableCopy 拷.. 下一篇C语言学习_三分查找

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: