您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ sqlite3_value_text函数代码示例

51自学网 2021-06-03 08:16:04
  C++
这篇教程C++ sqlite3_value_text函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中sqlite3_value_text函数的典型用法代码示例。如果您正苦于以下问题:C++ sqlite3_value_text函数的具体用法?C++ sqlite3_value_text怎么用?C++ sqlite3_value_text使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了sqlite3_value_text函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: lowerFunc

static void lowerFunc(sqlite3_context *context, int argc, sqlite3_value **argv){  char *z1;  const char *z2;  int i, n;  if( argc<1 || SQLITE_NULL==sqlite3_value_type(argv[0]) ) return;  z2 = (char*)sqlite3_value_text(argv[0]);  n = sqlite3_value_bytes(argv[0]);  /* Verify that the call to _bytes() does not invalidate the _text() pointer */  assert( z2==(char*)sqlite3_value_text(argv[0]) );  if( z2 ){    z1 = contextMalloc(context, ((i64)n)+1);    if( z1 ){      memcpy(z1, z2, n+1);      for(i=0; z1[i]; i++){        z1[i] = tolower(z1[i]);      }      sqlite3_result_text(context, z1, -1, sqlite3_free);    }  }}
开发者ID:KnowNo,项目名称:test-code-backup,代码行数:20,


示例2: OGRSQLITE_hstore_get_value

staticvoid OGRSQLITE_hstore_get_value(sqlite3_context* pContext,                                CPL_UNUSED int argc,                                sqlite3_value** argv){    if( sqlite3_value_type (argv[0]) != SQLITE_TEXT ||        sqlite3_value_type (argv[1]) != SQLITE_TEXT )    {        sqlite3_result_null (pContext);        return;    }    const char* pszHStore = (const char*)sqlite3_value_text(argv[0]);    const char* pszSearchedKey = (const char*)sqlite3_value_text(argv[1]);    char* pszValue = OGRHStoreGetValue(pszHStore, pszSearchedKey);    if( pszValue != NULL )        sqlite3_result_text( pContext, pszValue, -1, CPLFree );    else        sqlite3_result_null( pContext );}
开发者ID:drownedout,项目名称:datamap,代码行数:20,


示例3: substrFunc

/*** Implementation of the substr() function.**** substr(x,p1,p2)  returns p2 characters of x[] beginning with p1.** p1 is 1-indexed.  So substr(x,1,1) returns the first character** of x.  If x is text, then we actually count UTF-8 characters.** If x is a blob, then we count bytes.**** If p1 is negative, then we begin abs(p1) from the end of x[].*/static void substrFunc(  sqlite3_context *context,  int argc,  sqlite3_value **argv){  const unsigned char *z;  const unsigned char *z2;  int len;  int p0type;  i64 p1, p2;  assert( argc==3 );  p0type = sqlite3_value_type(argv[0]);  if( p0type==SQLITE_BLOB ){    len = sqlite3_value_bytes(argv[0]);    z = sqlite3_value_blob(argv[0]);    if( z==0 ) return;    assert( len==sqlite3_value_bytes(argv[0]) );  }else{    z = sqlite3_value_text(argv[0]);    if( z==0 ) return;    len = 0;    for(z2=z; *z2; len++){      SQLITE_SKIP_UTF8(z2);    }  }  p1 = sqlite3_value_int(argv[1]);  p2 = sqlite3_value_int(argv[2]);  if( p1<0 ){    p1 += len;    if( p1<0 ){      p2 += p1;      p1 = 0;    }  }else if( p1>0 ){    p1--;  }  if( p1+p2>len ){    p2 = len-p1;  }  if( p0type!=SQLITE_BLOB ){    while( *z && p1 ){      SQLITE_SKIP_UTF8(z);      p1--;    }    for(z2=z; *z2 && p2; p2--){      SQLITE_SKIP_UTF8(z2);    }    sqlite3_result_text(context, (char*)z, z2-z, SQLITE_TRANSIENT);  }else{    if( p2<0 ) p2 = 0;    sqlite3_result_blob(context, (char*)&z[p1], p2, SQLITE_TRANSIENT);  }}
开发者ID:ChunHungLiu,项目名称:Reclass-2015,代码行数:64,


示例4: sqlite3VdbeMemExpandBlob

/**************************** sqlite3_value_  ********************************* The following routines extract information from a Mem or sqlite3_value** structure.*/const void *sqlite3_value_blob(sqlite3_value *pVal){  Mem *p = (Mem*)pVal;  if( p->flags & (MEM_Blob|MEM_Str) ){    sqlite3VdbeMemExpandBlob(p);    p->flags &= ~MEM_Str;    p->flags |= MEM_Blob;    return p->n ? p->z : 0;  }else{    return sqlite3_value_text(pVal);  }}
开发者ID:CompassHXM,项目名称:h-store,代码行数:15,


示例5: my_bit_count

/* * unsigned int v; // count the number of bits set in v * unsigned int c; // c accumulates the total bits set in v * for (c = 0; v; c++) * { *   v &= v - 1; // clear the least significant bit set *   } */extern void my_bit_count(sqlite3_context * context,                         int               argc,                         sqlite3_value  ** argv) {    int             i;    char           *binstring;    unsigned char  *val;    int             sz;    unsigned int    v;    unsigned int    cnt = 0;    unsigned int    c;    int             ok = 1;            _ksu_null_if_null_param(argc, argv);    binstring = (char *)sqlite3_value_text(argv[0]);    if (*binstring == 'b') {      binstring++;      while (ok && *binstring) {        switch(*binstring) {           case '0':                break;           case '1':                cnt++;                break;           default: // Not a binary string representation                cnt = 0;                ok = 0;                break;        }        binstring++;      }      if (ok) {        sqlite3_result_int(context, cnt);        return;      }    }    if (sqlite3_value_type(argv[0]) == SQLITE_INTEGER) {       v = (unsigned int)sqlite3_value_int(argv[0]);       // Brian Kernighan's method       for (cnt = 0; v; cnt++) {          v &= v - 1; // clear the least significant bit set       }    } else {       sz = sqlite3_value_bytes(argv[0]);       val = (unsigned char *)sqlite3_value_blob(argv[0]);       for (i = 0; i < sz; i++) {         v = (unsigned int)val[i];         for (c = 0; v; c++) {           v &= v - 1;         }         cnt += c;       }    }    sqlite3_result_int(context, cnt);} 
开发者ID:sfaroult,项目名称:sqlite_libs,代码行数:62,


示例6: icuCaseFunc16

/*** Implementations of scalar functions for case mapping - upper() and ** lower(). Function upper() converts its input to upper-case (ABC).** Function lower() converts to lower-case (abc).**** ICU provides two types of case mapping, "general" case mapping and** "language specific". Refer to ICU documentation for the differences** between the two.**** To utilise "general" case mapping, the upper() or lower() scalar ** functions are invoked with one argument:****     upper('ABC') -> 'abc'**     lower('abc') -> 'ABC'**** To access ICU "language specific" case mapping, upper() or lower()** should be invoked with two arguments. The second argument is the name** of the locale to use. Passing an empty string ("") or SQL NULL value** as the second argument is the same as invoking the 1 argument version** of upper() or lower().****     lower('I', 'en_us') -> 'i'**     lower('I', 'tr_tr') -> '/u131' (small dotless i)**** http://www.icu-project.org/userguide/posix.html#case_mappings*/static void icuCaseFunc16(sqlite3_context *p, int nArg, sqlite3_value **apArg){  const UChar *zInput;            /* Pointer to input string */  UChar *zOutput = 0;             /* Pointer to output buffer */  int nInput;                     /* Size of utf-16 input string in bytes */  int nOut;                       /* Size of output buffer in bytes */  int cnt;  int bToUpper;                   /* True for toupper(), false for tolower() */  UErrorCode status;  const char *zLocale = 0;  assert(nArg==1 || nArg==2);  bToUpper = (sqlite3_user_data(p)!=0);  if( nArg==2 ){    zLocale = (const char *)sqlite3_value_text(apArg[1]);  }  zInput = sqlite3_value_text16(apArg[0]);  if( !zInput ){    return;  }  nOut = nInput = sqlite3_value_bytes16(apArg[0]);  if( nOut==0 ){    sqlite3_result_text16(p, "", 0, SQLITE_STATIC);    return;  }  for(cnt=0; cnt<2; cnt++){    UChar *zNew = sqlite3_realloc(zOutput, nOut);    if( zNew==0 ){      sqlite3_free(zOutput);      sqlite3_result_error_nomem(p);      return;    }    zOutput = zNew;    status = U_ZERO_ERROR;    if( bToUpper ){      nOut = 2*u_strToUpper(zOutput,nOut/2,zInput,nInput/2,zLocale,&status);    }else{      nOut = 2*u_strToLower(zOutput,nOut/2,zInput,nInput/2,zLocale,&status);    }    if( U_SUCCESS(status) ){      sqlite3_result_text16(p, zOutput, nOut, xFree);    }else if( status==U_BUFFER_OVERFLOW_ERROR ){      assert( cnt==0 );      continue;    }else{      icuFunctionError(p, bToUpper ? "u_strToUpper" : "u_strToLower", status);    }    return;  }  assert( 0 );     /* Unreachable */}
开发者ID:chinesemanbobo,项目名称:PPDemo,代码行数:79,


示例7: listStep

static void listStep(sqlite3_context *context, int argc, sqlite3_value **argv){  Ltx *p;  int i;  std::string d="";  if( argc<1 )      return;  p = (Ltx *) sqlite3_aggregate_context(context, sizeof(*p));  if ( p->cnt == 0)    {      if (sscntL >= MAXSSL )        { 	  fprintf(stderr,"Above in listStep increase MAXSSL size/n");          exit(1);	}    p->sscnt=sscntL;    sscntL++;    ssL[p->sscnt].str("");    ssL[p->sscnt] << "(";    }	else {      d=",";    }  p->cnt++;     //ssL[p->sscnt] << "(" <<  p->cnt<< "," << sqlite3_value_text(argv[0]) << ")";  ssL[p->sscnt] << d <<  sqlite3_value_text(argv[0]);  d=",";  if (p->cnt == 1)   {    for(i=1; i< argc; ++i) {     p->cnt++;     ssL[p->sscnt] << d  << sqlite3_value_text(argv[i]) ;      }    }}
开发者ID:abhishekbh,项目名称:SQLite-Rank-Extension,代码行数:40,


示例8: scoreFunc

static void scoreFunc(    sqlite3_context *context,    int argc,    sqlite3_value **argv) {    const char* needle = sqlite3_value_text(argv[0]);    const char* haystack = sqlite3_value_text(argv[1]);    int match1 = -1, match1_len, needle_len;    match_fuzzy(needle, haystack, &match1, &match1_len, &needle_len);    if (match1 == -1) {        sqlite3_result_int(context, 0);        return;    }    if (needle_len == match1_len) { // exact match        sqlite3_result_int(context, score_exact(            match1, match1_len, haystack        ));        return;    }    int best = score_fuzzy(match1, match1_len, haystack);    int last_index_of_dot = -1, i;    for (i = 0; haystack[i] != 0; ++i) {        if (haystack[i] == '.') last_index_of_dot = i;    }    if (last_index_of_dot != -1) {        int match2 = -1, match2_len;        match_fuzzy(            needle, haystack + last_index_of_dot + 1, &match2, &match2_len,            0        );        if (match2 != -1) {            best = max(best,                score_fuzzy(match2, match2_len, haystack + last_index_of_dot + 1)            );        }    }    sqlite3_result_int(context, best);}
开发者ID:jkozera,项目名称:zest-travis-testing,代码行数:40,


示例9: scalarFunc

/*** Implementation of the SQL scalar function for accessing the underlying ** hash table. This function may be called as follows:****   SELECT <function-name>(<key-name>);**   SELECT <function-name>(<key-name>, <pointer>);**** where <function-name> is the name passed as the second argument** to the sqlite3Fts3InitHashTable() function (e.g. 'fts3_tokenizer').**** If the <pointer> argument is specified, it must be a blob value** containing a pointer to be stored as the hash data corresponding** to the string <key-name>. If <pointer> is not specified, then** the string <key-name> must already exist in the has table. Otherwise,** an error is returned.**** Whether or not the <pointer> argument is specified, the value returned** is a blob containing the pointer stored as the hash data corresponding** to string <key-name> (after the hash-table is updated, if applicable).*/static void scalarFunc(  sqlite3_context *context,  int argc,  sqlite3_value **argv){  Fts3Hash *pHash;  void *pPtr = 0;  const unsigned char *zName;  int nName;  assert( argc==1 || argc==2 );  pHash = (Fts3Hash *)sqlite3_user_data(context);  zName = sqlite3_value_text(argv[0]);  nName = sqlite3_value_bytes(argv[0])+1;  if( argc==2 ){#ifdef SQLITE_ENABLE_FTS3_TOKENIZER    void *pOld;    int n = sqlite3_value_bytes(argv[1]);    if( zName==0 || n!=sizeof(pPtr) ){      sqlite3_result_error(context, "argument type mismatch", -1);      return;    }    pPtr = *(void **)sqlite3_value_blob(argv[1]);    pOld = sqlite3Fts3HashInsert(pHash, (void *)zName, nName, pPtr);    if( pOld==pPtr ){      sqlite3_result_error(context, "out of memory", -1);      return;    }#else    sqlite3_result_error(context, "fts3tokenize: "         "disabled - rebuild with -DSQLITE_ENABLE_FTS3_TOKENIZER", -1    );    return;#endif /* SQLITE_ENABLE_FTS3_TOKENIZER */  }else  {    if( zName ){      pPtr = sqlite3Fts3HashFind(pHash, zName, nName);    }    if( !pPtr ){      char *zErr = sqlite3_mprintf("unknown tokenizer: %s", zName);      sqlite3_result_error(context, zErr, -1);      sqlite3_free(zErr);      return;    }  }  sqlite3_result_blob(context, (void *)&pPtr, sizeof(pPtr), SQLITE_TRANSIENT);}
开发者ID:Amazeus-Mozart,项目名称:sqlcipher,代码行数:72,


示例10: jarowinkler_wrapper

/* wrapper for Jaro-Winkler string comparison */void jarowinkler_wrapper(sqlite3_context *ctx, int n_values, sqlite3_value **value){	// check for NULL values, return NULL if any of the input strings is NULL	if(sqlite3_value_type(value[0]) == SQLITE_NULL ||   	 sqlite3_value_type(value[1]) == SQLITE_NULL)  {		sqlite3_result_null(ctx);		return;	}  const unsigned char *str1 = sqlite3_value_text(value[0]);  const unsigned char *str2 = sqlite3_value_text(value[1]);	#ifdef DEBUG 	  Rprintf("String 1: %s/n", str1);		Rprintf("String 2: %s/n", str2);	#endif  double result;  result = jarowinkler_core(str1, str2, 1.0/3, 1.0/3, 1.0/3, 0.5);	#ifdef DEBUG  	Rprintf("Ergebnis des Stringvergleichs: %f/n", result);  #endif  sqlite3_result_double(ctx, result);}
开发者ID:rforge,项目名称:recordlinkage,代码行数:23,


示例11: function

void function(sqlite3_context* ctx, int nargs, sqlite3_value** values){    int i; const char *msg;    fprintf(stdout, "function() : Called with %i arguments/n", nargs);    for(i=0; i < nargs; i++) {        fprintf( stdout, "    arg %i: value=%-7s type=%i/n", i,                  sqlite3_value_text(values[i]),                  sqlite3_value_type(values[i]));    }    if(strcmp(sqlite3_value_text(values[0]), "fail") == 0) {        msg = "function() : Failing because you told me to.";        sqlite3_result_error(ctx, msg, strlen(msg));        fprintf(stdout, "/n");        return;    }    fprintf(stdout, "/n");    sqlite3_result_int(ctx, 0);}
开发者ID:PengJi,项目名称:sql_prac,代码行数:22,


示例12: lowerFunc

static void lowerFunc(sqlite3_context *context, int argc, sqlite3_value **argv){  unsigned char *z;  int i;  if( argc<1 || SQLITE_NULL==sqlite3_value_type(argv[0]) ) return;  z = sqliteMalloc(sqlite3_value_bytes(argv[0])+1);  if( z==0 ) return;  strcpy((char*)z, (char*)sqlite3_value_text(argv[0]));  for(i=0; z[i]; i++){    z[i] = tolower(z[i]);  }  sqlite3_result_text(context, (char*)z, -1, SQLITE_TRANSIENT);  sqliteFree(z);}
开发者ID:f059074251,项目名称:interested,代码行数:13,


示例13: assert

/**************************** sqlite3_value_  ********************************* The following routines extract information from a Mem or sqlite3_value** structure.*/const void *sqlite3_value_blob(sqlite3_value *pVal){  Mem *p = (Mem*)pVal;  if( p->flags & (MEM_Blob|MEM_Str) ){    if( sqlite3VdbeMemExpandBlob(p)!=SQLITE_OK ){      assert( p->flags==MEM_Null && p->z==0 );      return 0;    }    p->flags |= MEM_Blob;    return p->n ? p->z : 0;  }else{    return sqlite3_value_text(pVal);  }}
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:17,


示例14: OGR2SQLITE_ogr_SetConfigOption

staticvoid OGR2SQLITE_ogr_SetConfigOption(sqlite3_context* pContext,                                    int argc, sqlite3_value** argv){    if( sqlite3_value_type (argv[0]) != SQLITE_TEXT )    {        sqlite3_result_null (pContext);        return;    }    if( sqlite3_value_type (argv[1]) != SQLITE_TEXT &&            sqlite3_value_type (argv[1]) != SQLITE_NULL )    {        sqlite3_result_null (pContext);        return;    }    const char* pszKey = (const char*)sqlite3_value_text(argv[0]);    const char* pszVal = (sqlite3_value_type (argv[1]) == SQLITE_TEXT) ?                         (const char*)sqlite3_value_text(argv[1]) : NULL;    CPLSetConfigOption(pszKey, pszVal);    sqlite3_result_null (pContext);}
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:22,


示例15: renameTableFunc

/*** This function is used by SQL generated to implement the ** ALTER TABLE command. The first argument is the text of a CREATE TABLE or** CREATE INDEX command. The second is a table name. The table name in ** the CREATE TABLE or CREATE INDEX statement is replaced with the second** argument and the result returned. Examples:**** sqlite_rename_table('CREATE TABLE abc(a, b, c)', 'def')**     -> 'CREATE TABLE def(a, b, c)'**** sqlite_rename_table('CREATE INDEX i ON abc(a)', 'def')**     -> 'CREATE INDEX i ON def(a, b, c)'*/static void renameTableFunc(  sqlite3_context *context,  int argc,  sqlite3_value **argv){  unsigned char const *zSql = sqlite3_value_text(argv[0]);  unsigned char const *zTableName = sqlite3_value_text(argv[1]);  int token;  Token tname;  unsigned char const *zCsr = zSql;  int len = 0;  char *zRet;  /* The principle used to locate the table name in the CREATE TABLE   ** statement is that the table name is the first token that is immediatedly  ** followed by a left parenthesis - TK_LP.  */  if( zSql ){    do {      /* Store the token that zCsr points to in tname. */      tname.z = zCsr;      tname.n = len;      /* Advance zCsr to the next token. Store that token type in 'token',      ** and it's length in 'len' (to be used next iteration of this loop).      */      do {        zCsr += len;        len = sqlite3GetToken(zCsr, &token);      } while( token==TK_SPACE );      assert( len>0 );    } while( token!=TK_LP );    zRet = sqlite3MPrintf("%.*s%Q%s", tname.z - zSql, zSql,        zTableName, tname.z+tname.n);    sqlite3_result_text(context, zRet, -1, sqlite3FreeX);  }}
开发者ID:DrEastex,项目名称:Platinum,代码行数:52,


示例16: sqlite_regexp

void sqlite_regexp(sqlite3_context* context, int argc, sqlite3_value** values) {	int ret;	regex_t regex;	char* reg = (char*)sqlite3_value_text(values[0]);	char* text = (char*)sqlite3_value_text(values[1]);	if ( argc != 2 || reg == 0 || text == 0) {		sqlite3_result_error(context, "SQL function regexp() called with invalid arguments./n", -1);		return;	}	ret = regcomp(&regex, reg, REG_EXTENDED | REG_NOSUB);	if ( ret != 0 ) {		sqlite3_result_error(context, "error compiling regular expression", -1);		return;	}	ret = regexec(&regex, text , 0, NULL, 0);	regfree(&regex);	sqlite3_result_int(context, (ret != REG_NOMATCH));}
开发者ID:Jubei-Mitsuyoshi,项目名称:aaa-aircrack-ng-cuda,代码行数:22,


示例17: icuLikeFunc

/*** Implementation of the like() SQL function.  This function implements** the build-in LIKE operator.  The first argument to the function is the** pattern and the second argument is the string.  So, the SQL statements:****       A LIKE B**** is implemented as like(B, A). If there is an escape character E, ****       A LIKE B ESCAPE E**** is mapped to like(B, A, E).*/static void icuLikeFunc(  sqlite3_context *context,   int argc,   sqlite3_value **argv){  const unsigned char *zA = sqlite3_value_text(argv[0]);  const unsigned char *zB = sqlite3_value_text(argv[1]);  UChar32 uEsc = 0;  /* Limit the length of the LIKE or GLOB pattern to avoid problems  ** of deep recursion and N*N behavior in patternCompare().  */  if( sqlite3_value_bytes(argv[0])>SQLITE_MAX_LIKE_PATTERN_LENGTH ){    sqlite3_result_error(context, "LIKE or GLOB pattern too complex", -1);    return;  }  if( argc==3 ){    /* The escape character string must consist of a single UTF-8 character.    ** Otherwise, return an error.    */    int nE= sqlite3_value_bytes(argv[2]);    const unsigned char *zE = sqlite3_value_text(argv[2]);    int i = 0;    if( zE==0 ) return;    U8_NEXT(zE, i, nE, uEsc);    if( i!=nE){      sqlite3_result_error(context,           "ESCAPE expression must be a single character", -1);      return;    }  }  if( zA && zB ){    sqlite3_result_int(context, icuLikeCompare(zA, zB, uEsc));  }}
开发者ID:520060628,项目名称:Sqlite3.07.14,代码行数:51,


示例18: ik_sqlite3_value_text

ikptrik_sqlite3_value_text (ikptr s_value, ikpcb * pcb){#ifdef HAVE_SQLITE3_VALUE_TEXT  sqlite3_value *	value = IK_SQLITE_VALUE(s_value);  const void *		data;  int			bytes;  bytes = sqlite3_value_bytes(value);  data  = sqlite3_value_text(value);  return ika_bytevector_from_memory_block(pcb, data, bytes);#else  feature_failure(__func__);#endif}
开发者ID:marcomaggi,项目名称:vicare-sqlite,代码行数:14,


示例19: lastNChars

/*  Get the last n characters from a string This is motivated by pulling the year from the end of a string such as   USA:22 September 1986  to get 1986 */void lastNChars(sqlite3_context *context, int argc, sqlite3_value **argv){    const char * str;    const char *ptr;    str = sqlite3_value_text(argv[0]);    int n = sqlite3_value_int(argv[1]);    int len = strlen(str);    if(n > 0) {        n = MIN(len, n);	ptr = str +  len - n ;	sqlite3_result_text(context, ptr, -1, SQLITE_TRANSIENT);    }}
开发者ID:duncantl,项目名称:RSQLiteUDF,代码行数:20,


示例20: scalarFunc

  SQLITE_EXTENSION_INIT1#endif#include "fts3Int.h"#include <assert.h>#include <string.h>static void scalarFunc(  sqlite3_context *context,  int argc,  sqlite3_value **argv){  Fts3Hash *pHash;  void *pPtr = 0;  const unsigned char *zName;  int nName;  assert( argc==1 || argc==2 );  pHash = (Fts3Hash *)sqlite3_user_data(context);  zName = sqlite3_value_text(argv[0]);  nName = sqlite3_value_bytes(argv[0])+1;  if( argc==2 ){    void *pOld;    int n = sqlite3_value_bytes(argv[1]);    if( n!=sizeof(pPtr) ){      sqlite3_result_error(context, "argument type mismatch", -1);      return;    }    pPtr = *(void **)sqlite3_value_blob(argv[1]);    pOld = sqlite3Fts3HashInsert(pHash, (void *)zName, nName, pPtr);    if( pOld==pPtr ){      sqlite3_result_error(context, "out of memory", -1);      return;    }  }else{    pPtr = sqlite3Fts3HashFind(pHash, zName, nName);    if( !pPtr ){      char *zErr = sqlite3_mprintf("unknown tokenizer: %s", zName);      sqlite3_result_error(context, zErr, -1);      sqlite3_free(zErr);      return;    }  }  sqlite3_result_blob(context, (void *)&pPtr, sizeof(pPtr), SQLITE_TRANSIENT);}
开发者ID:qtekfun,项目名称:htcDesire820Kernel,代码行数:49,


示例21: pg_bool_or_step

extern void pg_bool_or_step(sqlite3_context *context,                            int              argc,                            sqlite3_value  **argv) {  CONTEXT_T *ctx;  int        typ;  int        val;  typ = sqlite3_value_type(argv[0]);  if (typ != SQLITE_NULL) {    if (typ == SQLITE_INTEGER) {      val = sqlite3_value_int(argv[0]);      if ((val != 0) && (val != 1)) {        ksu_err_msg(context, KSU_ERR_INV_DATATYPE, "bool_or");        return;      }    } else {      char *p = (char *)sqlite3_value_text(argv[0]);      int   len = strlen(p);      if (len == 1) {        if (toupper(*p) == 'T') {          val = 1;        } else if (toupper(*p) == 'F') {          val = 0;        } else {          ksu_err_msg(context, KSU_ERR_INV_DATATYPE, "bool_or");          return;        }      } else if (strcasecmp(p, "true") == 0) {        val = 1;      } else if (strcasecmp(p, "false") == 0) {        val = 0;      } else {        ksu_err_msg(context, KSU_ERR_INV_DATATYPE, "bool_or");        return;      }    }    val = sqlite3_value_int64(argv[0]);    ctx = (CONTEXT_T *)sqlite3_aggregate_context(context, sizeof(CONTEXT_T));    if (ctx) {      if (ctx->n == 0) {        ctx->boolval = val;      } else {        ctx->boolval |= val;      }      (ctx->n)++;    }  }}
开发者ID:sfaroult,项目名称:sqlite_libs,代码行数:49,


示例22: assert

/*** Return UTF-8 encoded English language explanation of the most recent** error.*/const char *sqlite3_errmsg(sqlite3 *db){  const char *z;  assert( !sqlite3MallocFailed() );  if( !db ){    return sqlite3ErrStr(SQLITE_NOMEM);  }  if( sqlite3SafetyCheck(db) || db->errCode==SQLITE_MISUSE ){    return sqlite3ErrStr(SQLITE_MISUSE);  }  z = (char*)sqlite3_value_text(db->pErr);  if( z==0 ){    z = sqlite3ErrStr(db->errCode);  }  return z;}
开发者ID:3rdexp,项目名称:jezzitest,代码行数:19,


示例23: OGR2SQLITE_ogr_version

staticvoid OGR2SQLITE_ogr_version(sqlite3_context* pContext,                            int argc, sqlite3_value** argv){    if( argc == 0 || sqlite3_value_type (argv[0]) != SQLITE_TEXT )    {        sqlite3_result_text( pContext, GDAL_RELEASE_NAME, -1, SQLITE_STATIC );    }    else    {        sqlite3_result_text( pContext,                             GDALVersionInfo((const char*)sqlite3_value_text(argv[0])),                             -1, SQLITE_TRANSIENT );    }}
开发者ID:rashadkm,项目名称:lib_gdal,代码行数:15,


示例24: icuLoadCollation

/*** Implementation of the scalar function icu_load_collation().**** This scalar function is used to add ICU collation based collation ** types to an SQLite database connection. It is intended to be called** as follows:****     SELECT icu_load_collation(<locale>, <collation-name>);**** Where <locale> is a string containing an ICU locale identifier (i.e.** "en_AU", "tr_TR" etc.) and <collation-name> is the name of the** collation sequence to create.*/static void icuLoadCollation(  sqlite3_context *p,   int nArg,   sqlite3_value **apArg){  sqlite3 *db = (sqlite3 *)sqlite3_user_data(p);  UErrorCode status = U_ZERO_ERROR;  const char *zLocale;      /* Locale identifier - (eg. "jp_JP") */  const char *zName;        /* SQL Collation sequence name (eg. "japanese") */  UCollator *pUCollator;    /* ICU library collation object */  int rc;                   /* Return code from sqlite3_create_collation_x() */  assert(nArg==2);  (void)nArg; /* Unused parameter */  zLocale = (const char *)sqlite3_value_text(apArg[0]);  zName = (const char *)sqlite3_value_text(apArg[1]);  if( !zLocale || !zName ){    return;  }  pUCollator = ucol_open(zLocale, &status);  if( !U_SUCCESS(status) ){    icuFunctionError(p, "ucol_open", status);    return;  }  assert(p);  rc = sqlite3_create_collation_v2(db, zName, SQLITE_UTF16, (void *)pUCollator,       icuCollationColl, icuCollationDel  );  if( rc!=SQLITE_OK ){    ucol_close(pUCollator);    sqlite3_result_error(p, "Error registering collation function", -1);  }}
开发者ID:chinesemanbobo,项目名称:PPDemo,代码行数:49,


示例25: likeFunc

/*** Implementation of the like() SQL function.  This function implements** the build-in LIKE operator.  The first argument to the function is the** pattern and the second argument is the string.  So, the SQL statements:****       A LIKE B**** is implemented as like(B,A).**** If the pointer retrieved by via a call to sqlite3_user_data() is** not NULL, then this function uses UTF-16. Otherwise UTF-8.*/static void likeFunc(  sqlite3_context *context,   int argc,   sqlite3_value **argv){  const unsigned char *zA = sqlite3_value_text(argv[0]);  const unsigned char *zB = sqlite3_value_text(argv[1]);  int escape = 0;  if( argc==3 ){    /* The escape character string must consist of a single UTF-8 character.    ** Otherwise, return an error.    */    const unsigned char *zEsc = sqlite3_value_text(argv[2]);    if( sqlite3utf8CharLen(zEsc, -1)!=1 ){      sqlite3_result_error(context,           "ESCAPE expression must be a single character", -1);      return;    }    escape = sqlite3ReadUtf8(zEsc);  }  if( zA && zB ){    sqlite3_result_int(context, patternCompare(zA, zB, &likeInfo, escape));  }}
开发者ID:webmaster4world,项目名称:manual-indexing,代码行数:36,


示例26: my_dayofweek

extern void  my_dayofweek(sqlite3_context * context,                          int               argc,                          sqlite3_value ** argv) {   KSU_TIME_T  t;   KSU_TM_T   *tmptr;   KSU_TM_T    mydate;   _ksu_null_if_null_param(argc, argv);   if (my_is_datetime((const char *)sqlite3_value_text(argv[0]), &t, 0)       && ((tmptr = ksu_localtime(t, &mydate)) != (KSU_TM_T *)NULL)) {     sqlite3_result_int(context, 1 + (int)tmptr->wday);   } else {     sqlite3_result_null(context);   }}
开发者ID:sfaroult,项目名称:sqlite_libs,代码行数:15,


示例27: fts5StorageDeleteFromIndex

/*** If a row with rowid iDel is present in the %_content table, add the** delete-markers to the FTS index necessary to delete it. Do not actually** remove the %_content row at this time though.*/static int fts5StorageDeleteFromIndex(  Fts5Storage *p,   i64 iDel,   sqlite3_value **apVal){  Fts5Config *pConfig = p->pConfig;  sqlite3_stmt *pSeek = 0;        /* SELECT to read row iDel from %_data */  int rc;                         /* Return code */  int rc2;                        /* sqlite3_reset() return code */  int iCol;  Fts5InsertCtx ctx;  if( apVal==0 ){    rc = fts5StorageGetStmt(p, FTS5_STMT_LOOKUP, &pSeek, 0);    if( rc!=SQLITE_OK ) return rc;    sqlite3_bind_int64(pSeek, 1, iDel);    if( sqlite3_step(pSeek)!=SQLITE_ROW ){      return sqlite3_reset(pSeek);    }  }  ctx.pStorage = p;  ctx.iCol = -1;  rc = sqlite3Fts5IndexBeginWrite(p->pIndex, 1, iDel);  for(iCol=1; rc==SQLITE_OK && iCol<=pConfig->nCol; iCol++){    if( pConfig->abUnindexed[iCol-1]==0 ){      const char *zText;      int nText;      if( pSeek ){        zText = (const char*)sqlite3_column_text(pSeek, iCol);        nText = sqlite3_column_bytes(pSeek, iCol);      }else{        zText = (const char*)sqlite3_value_text(apVal[iCol-1]);        nText = sqlite3_value_bytes(apVal[iCol-1]);      }      ctx.szCol = 0;      rc = sqlite3Fts5Tokenize(pConfig, FTS5_TOKENIZE_DOCUMENT,           zText, nText, (void*)&ctx, fts5StorageInsertCallback      );      p->aTotalSize[iCol-1] -= (i64)ctx.szCol;    }  }  p->nTotalRow--;  rc2 = sqlite3_reset(pSeek);  if( rc==SQLITE_OK ) rc = rc2;  return rc;}
开发者ID:Amazeus-Mozart,项目名称:sqlcipher,代码行数:53,


示例28: delete_file

static void delete_file(sqlite3_context * context, int argc, sqlite3_value ** argv){    if (argc != 1) {        sqlite3_result_int(context, 0);        return;    }    char const * path = (char const *)sqlite3_value_text(argv[0]);    // Don't allow ".." in paths    if (path == NULL || strstr(path, "/../") != NULL) {        sqlite3_result_null(context);        return;    }    // We only allow deleting files in the EXTERNAL_STORAGE path, or one of the    // SECONDARY_STORAGE paths    bool good_path = false;    char const * external_storage = getenv("EXTERNAL_STORAGE");    if (external_storage && strncmp(external_storage, path, strlen(external_storage)) == 0) {        good_path = true;    } else {        // check SECONDARY_STORAGE, which should be a colon separated list of paths        char const * secondary_paths = getenv("SECONDARY_STORAGE");        while (secondary_paths && secondary_paths[0]) {            const char* colon = strchr(secondary_paths, ':');            int length = (colon ? colon - secondary_paths : strlen(secondary_paths));            if (strncmp(secondary_paths, path, length) == 0) {                good_path = true;            }            secondary_paths += length;            while (*secondary_paths == ':') secondary_paths++;        }    }    if (!good_path) {        sqlite3_result_null(context);        return;    }    int err = unlink(path);    if (err != -1) {        // No error occured, return true        sqlite3_result_int(context, 1);    } else {        // An error occured, return false        sqlite3_result_int(context, 0);    }}
开发者ID:nining,项目名称:platform_external_sqlite,代码行数:48,



注:本文中的sqlite3_value_text函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ sqlite3_value_type函数代码示例
C++ sqlite3_value_int64函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。