MCPcopy Create free account
hub / github.com/defold/defold / Clone

Function Clone

engine/dlib/src/dlib/buffer.cpp:369–408  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

367 }
368
369 Result Clone(const HBuffer src_buffer, HBuffer* out_buffer)
370 {
371 Buffer* buffer = g_BufferContext->Get(src_buffer);
372 Result res = dmBuffer::ValidateBuffer(buffer);
373 if (res != RESULT_OK)
374 {
375 return res;
376 }
377
378 dmBuffer::StreamDeclaration* streams_decl = (dmBuffer::StreamDeclaration*) alloca(buffer->m_NumStreams * sizeof(dmBuffer::StreamDeclaration));
379 for (int i = 0; i < buffer->m_NumStreams; ++i)
380 {
381 streams_decl[i].m_Name = buffer->m_Streams[i].m_Name;
382 streams_decl[i].m_Type = (ValueType) buffer->m_Streams[i].m_ValueType;
383 streams_decl[i].m_Count = buffer->m_Streams[i].m_ValueCount;
384 }
385
386 HBuffer dst_buffer;
387 res = dmBuffer::Create(buffer->m_Count, streams_decl, buffer->m_NumStreams, &dst_buffer);
388 if (res != RESULT_OK)
389 {
390 return res;
391 }
392
393 dmBuffer::Copy(dst_buffer, src_buffer);
394
395 // Clone the meta data entries
396 for (uint32_t i = 0; i < buffer->m_MetaDataArray.Size(); i++)
397 {
398 res = SetMetaData(dst_buffer,
399 buffer->m_MetaDataArray[i]->m_Name,
400 buffer->m_MetaDataArray[i]->m_Data,
401 buffer->m_MetaDataArray[i]->m_ValueCount,
402 (ValueType) buffer->m_MetaDataArray[i]->m_ValueType);
403 assert(res == RESULT_OK);
404 }
405
406 *out_buffer = dst_buffer;
407 return RESULT_OK;
408 }
409
410 Result GetStreamOffset(HBuffer buffer_handle, uint32_t index, uint32_t* offset)
411 {

Callers 2

CreateBufferFunction · 0.85
SetBufferFunction · 0.85

Calls 7

ValidateBufferFunction · 0.85
CopyFunction · 0.85
SetMetaDataFunction · 0.85
CreateFunction · 0.70
assertFunction · 0.50
GetMethod · 0.45
SizeMethod · 0.45

Tested by

no test coverage detected