MCPcopy Create free account
hub / github.com/audacity/audacity / dbdataValue

Function dbdataValue

lib-src/sqlite/shell.c:10747–10800  ·  view source on GitHub ↗

** Load a value of type eType from buffer pData and use it to set the ** result of context object pCtx. */

Source from the content-addressed store, hash-verified

10745** result of context object pCtx.
10746*/
10747static void dbdataValue(
10748 sqlite3_context *pCtx,
10749 int eType,
10750 u8 *pData,
10751 int nData
10752){
10753 if( eType>=0 && dbdataValueBytes(eType)<=nData ){
10754 switch( eType ){
10755 case 0:
10756 case 10:
10757 case 11:
10758 sqlite3_result_null(pCtx);
10759 break;
10760
10761 case 8:
10762 sqlite3_result_int(pCtx, 0);
10763 break;
10764 case 9:
10765 sqlite3_result_int(pCtx, 1);
10766 break;
10767
10768 case 1: case 2: case 3: case 4: case 5: case 6: case 7: {
10769 sqlite3_uint64 v = (signed char)pData[0];
10770 pData++;
10771 switch( eType ){
10772 case 7:
10773 case 6: v = (v<<16) + (pData[0]<<8) + pData[1]; pData += 2;
10774 case 5: v = (v<<16) + (pData[0]<<8) + pData[1]; pData += 2;
10775 case 4: v = (v<<8) + pData[0]; pData++;
10776 case 3: v = (v<<8) + pData[0]; pData++;
10777 case 2: v = (v<<8) + pData[0]; pData++;
10778 }
10779
10780 if( eType==7 ){
10781 double r;
10782 memcpy(&r, &v, sizeof(r));
10783 sqlite3_result_double(pCtx, r);
10784 }else{
10785 sqlite3_result_int64(pCtx, (sqlite3_int64)v);
10786 }
10787 break;
10788 }
10789
10790 default: {
10791 int n = ((eType-12) / 2);
10792 if( eType % 2 ){
10793 sqlite3_result_text(pCtx, (const char*)pData, n, SQLITE_TRANSIENT);
10794 }else{
10795 sqlite3_result_blob(pCtx, pData, n, SQLITE_TRANSIENT);
10796 }
10797 }
10798 }
10799 }
10800}
10801
10802/*
10803** Move an sqlite_dbdata or sqlite_dbptr cursor to the next entry.

Callers 1

dbdataColumnFunction · 0.85

Calls 1

dbdataValueBytesFunction · 0.85

Tested by

no test coverage detected