Пример #1
0
static list_chunk_t *    chunk_alloc(data_t *data){ // {{{
	ssize_t                ret;
	list_chunk_t          *chunk;
	data_t                 consumed;
	
	holder_consume(ret, consumed, data);
	if(ret < 0)
		return NULL;
	
	ref_t                 *ref               = ref_t_alloc(&consumed);
	data_t                 d_ref             = DATA_PTR_REFT(ref);
	
	if(data == NULL || ref == NULL)
		return NULL;
	
	if( (chunk = malloc(sizeof(list_chunk_t))) == NULL)
		return NULL;
	
	chunk->cnext       = NULL;
	chunk->data        = d_ref;
	return chunk;
} // }}}
Пример #2
0
static ssize_t data_ref_t_convert_from(data_t *dst, fastcall_convert_from *fargs){ // {{{
	ssize_t                ret;
	
	if(dst->ptr != NULL)
		return data_ref_t_handler(dst, (fastcall_header *)fargs);  // already inited - pass to underlying data
	
	switch(fargs->format){
		case FORMAT(hash):;
			hash_t                *config;
			data_t                 data;
			
			data_get(ret, TYPE_HASHT, config, fargs->src);
			if(ret != 0)
				return -EINVAL;
			
			hash_holder_consume(ret, data, config, HK(data));
			
			return ( (dst->ptr = ref_t_alloc(&data)) == NULL ) ? -EFAULT : 0;

		default:
			break;
	}
	return -ENOSYS;
} // }}}