DDS_SampleInfo * DDS_SampleInfoSeq_allocbuf ( DDS_unsigned_long len ) { return (DDS_SampleInfo *) gapi_sampleInfoSeq_allocbuf ( (gapi_unsigned_long) len ); }
void _DataReaderCopy ( gapi_dataSampleSeq *samples, gapi_readerInfo *info) { unsigned int i, len; gapi_fooSeq *data_seq = info->data_buffer; gapi_sampleInfoSeq *info_seq = info->info_buffer; void *dst; if (samples) { if (samples->_length > info->max_samples) { len = info->max_samples; } else { len = samples->_length; } if (len > 0) { if (data_seq->_buffer == NULL) { if (!info->copy_cache) { data_seq->_buffer = info->alloc_buffer( len); } else { data_seq->_buffer = gapi_copyOutAllocBuffer( info->copy_cache, len); } memset(data_seq->_buffer,0,info->alloc_size*len); data_seq->_maximum = len; data_seq->_release = FALSE; info_seq->_buffer = gapi_sampleInfoSeq_allocbuf(len); info_seq->_maximum = len; info_seq->_release = FALSE; if (*info->loan_registry == NULL) { *info->loan_registry = (void *)gapi_loanRegistry_new(); } gapi_loanRegistry_register((gapi_loanRegistry)*info->loan_registry, data_seq->_buffer, info_seq->_buffer); } { C_STRUCT(gapi_dstInfo) dstInfo; dstInfo.copyProgram = info->copy_cache; for ( i = 0; i < len; i++ ) { dst = &data_seq->_buffer[i*info->alloc_size]; if (info->copy_cache){ dstInfo.dst = dst; dstInfo.buf = data_seq->_buffer; info->copy_out (samples->_buffer[i].data, &dstInfo); } else { info->copy_out (samples->_buffer[i].data, dst); } info_seq->_buffer[i] = samples->_buffer[i].info; } } } data_seq->_length = len; info_seq->_length = len; info->num_samples = len; } }