void mchar_async_init(mchar_async_t *mchar_async, size_t chunk_len, size_t char_size) { if(char_size < 4096) char_size = 4096; mchar_async->origin_size = char_size; mchar_async->chunks_size = chunk_len; mchar_async->chunks_pos_size = 1024; mchar_async->chunks = (mchar_async_chunk_t**)myhtml_calloc(mchar_async->chunks_pos_size, sizeof(mchar_async_chunk_t*)); mchar_async->chunks[0] = (mchar_async_chunk_t*)myhtml_calloc(mchar_async->chunks_size, sizeof(mchar_async_chunk_t)); mchar_async_cache_init(&mchar_async->chunk_cache); mchar_async->nodes_length = 0; mchar_async->nodes_size = 64; mchar_async->nodes = (mchar_async_node_t*)myhtml_calloc(mchar_async->nodes_size, sizeof(mchar_async_node_t)); mchar_async->nodes_cache_length = 0; mchar_async->nodes_cache_size = mchar_async->nodes_size; mchar_async->nodes_cache = (size_t*)myhtml_malloc(mchar_async->nodes_cache_size * sizeof(size_t)); mchar_async_clean(mchar_async); mchar_async->mcsync = mcsync_create(); }
mcobject_async_status_t mcobject_async_init(mcobject_async_t *mcobj_async, size_t chunk_len, size_t obj_size_by_one_chunk, size_t struct_size) { mcobj_async->origin_size = obj_size_by_one_chunk; mcobj_async->struct_size = struct_size; mcobj_async->struct_size_sn = struct_size + sizeof(size_t); mcobj_async->chunks_pos_length = 0; mcobj_async->chunks_pos_size = 128; mcobj_async->chunks_size = chunk_len; mcobj_async->chunks = (mcobject_async_chunk_t**)mycalloc(mcobj_async->chunks_pos_size, sizeof(mcobject_async_chunk_t*)); if(mcobj_async->chunks == NULL) return MCOBJECT_ASYNC_STATUS_CHUNK_ERROR_MEMORY_ALLOCATION; mcobject_async_chunk_up(mcobj_async); mcobj_async->chunk_cache_size = mcobj_async->chunks_size; mcobj_async->chunk_cache = (mcobject_async_chunk_t**)mycalloc(mcobj_async->chunk_cache_size, sizeof(mcobject_async_chunk_t*)); if(mcobj_async->chunk_cache == NULL) return MCOBJECT_ASYNC_STATUS_CHUNK_CACHE_ERROR_MEMORY_ALLOCATION; mcobj_async->nodes_length = 0; mcobj_async->nodes_size = 64; mcobj_async->nodes = (mcobject_async_node_t*)mycalloc(mcobj_async->nodes_size, sizeof(mcobject_async_node_t)); if(mcobj_async->nodes == NULL) return MCOBJECT_ASYNC_STATUS_NODES_ERROR_MEMORY_ALLOCATION; mcobj_async->nodes_cache_length = 0; mcobj_async->nodes_cache_size = mcobj_async->nodes_size; mcobj_async->nodes_cache = (size_t*)mymalloc(mcobj_async->nodes_cache_size * sizeof(size_t)); if(mcobj_async->nodes_cache == NULL) return MCOBJECT_ASYNC_STATUS_NODES_ERROR_MEMORY_ALLOCATION; mcobject_async_clean(mcobj_async); mcobj_async->mcsync = mcsync_create(); return MCOBJECT_ASYNC_STATUS_OK; }