Example #1
0
DDS_SampleInfo *
DDS_SampleInfoSeq_allocbuf (
    DDS_unsigned_long len
)
{
    return (DDS_SampleInfo *)
           gapi_sampleInfoSeq_allocbuf (
               (gapi_unsigned_long) len
           );

}
Example #2
0
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;
    }
}