MCPcopy Create free account
hub / github.com/carbonengine/trinity / DetermineCopyFunc

Method DetermineCopyFunc

trinity/TriValueBinding.cpp:438–759  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

436}
437
438size_t TriValueBinding::DetermineCopyFunc( const Be::VarEntry* srcEntry, const Be::VarEntry* dstEntry, size_t dataSize, bool sourceFloatArrayAsFloat, bool destFloatArrayAsFloat )
439{
440 if( sourceFloatArrayAsFloat && srcEntry->mType != Be::FLOATARRAY )
441 {
442 CCP_LOGERR( "TriValueBinding \"%s\": float swizzle (.xyzw) on a non-array source value \"%s\"", m_name.c_str(), srcEntry->mName );
443 return dataSize;
444 }
445 if( destFloatArrayAsFloat && dstEntry->mType != Be::FLOATARRAY )
446 {
447 CCP_LOGERR( "TriValueBinding \"%s\": float swizzle (.xyzw) on a non-array destination value \"%s\"", m_name.c_str(), dstEntry->mName );
448 return dataSize;
449 }
450
451 if( srcEntry->mType == dstEntry->mType )
452 {
453 switch( srcEntry->mType )
454 {
455 case Be::BYTE:
456 m_copyFunc = TransformAndCopy<uint8_t>;
457 dataSize = 1;
458 break;
459
460 case Be::BOOL:
461 m_copyFunc = TransformAndCopy<bool>;
462 dataSize = 1;
463 break;
464
465 case Be::SHORT:
466 m_copyFunc = TransformAndCopy<int16_t>;
467 dataSize = 2;
468 break;
469
470 case Be::LONG:
471 m_copyFunc = TransformAndCopy<int32_t>;
472 dataSize = 4;
473 break;
474
475 case Be::FLOAT:
476 m_copyFunc = TransformAndCopy<float>;
477 dataSize = 4;
478 break;
479
480 case Be::DOUBLE:
481 m_copyFunc = TransformAndCopy<double, double, double>;
482 dataSize = 8;
483 break;
484
485 case Be::INT64:
486 m_copyFunc = Copy<int64_t>;
487 dataSize = 8;
488 break;
489
490 case Be::FLOATARRAY:
491 if( sourceFloatArrayAsFloat )
492 {
493 if( destFloatArrayAsFloat )
494 {
495 m_copyFunc = TransformAndCopy<float>;

Callers

nothing calls this directly

Calls 1

QueryInterfaceMethod · 0.80

Tested by

no test coverage detected