// // h64e-model.c // H64E-2 // // Created by dianshi on 3/13/20. // Copyright © 2020 dianshi. All rights reserved. // #include "h64e-model.h" int h64e_si_init(H64E_stream_in *in, int32_t size) { in->size = size; in->cur_size = 0; in->buf = malloc(size); return 0; } //return amount of copied bytes int h64e_si_data_in(H64E_stream_in *in, uint8_t *data, int32_t size) { int32_t start = in->cur_size; int32_t end = start+size; int32_t len = 0; if (end > in->size) { end = in->size; } len = end-start; memcpy(&in->buf[start], data, len); in->cur_size += len; return (int)len; } int h64e_si_data_out(H64E_stream_in *in, uint8_t *data, int32_t size) { int32_t len=0; int32_t i=0; if (size < in->cur_size) { len = size; } else { len = in->cur_size; } //memcpy(data,&in->buf[0],len); for (i=0;ibuf[i]; } memmove(&in->buf[0],&in->buf[len],len); in->cur_size -= len; return len; } int h64e_si_len(H64E_stream_in *in) { return in->cur_size; } int h64e_so_init(H64E_stream_out *out, int32_t size) { out->size = size; out->cur_size = 0; out->buf = malloc(size); return 0; } int h64e_so_data_in(H64E_stream_out *out, uint8_t *data, int32_t size) { int32_t start = out->cur_size; int32_t end = start+size; int32_t len = 0; if (end > out->size) { end = out->size; } len = end-start; memcpy(&out->buf[start], data, len); out->cur_size += len; return (int)len; } int h64e_so_data_out(H64E_stream_out *out, uint8_t *data, int32_t size) { int32_t len=0; int32_t i=0; if (size < out->cur_size) { len = size; } else { len = out->cur_size; } //memcpy(data,&in->buf[0],len); for (i=0;ibuf[i]; } memmove(&out->buf[0],&out->buf[len],len); out->cur_size -= len; return len; } int h64e_so_ready(H64E_stream_out *out) { int ret = 0; return ret; } int h64e_so_len(H64E_stream_out *out) { return out->cur_size; }