Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
sqliteicu.c File Reference
#include <unicode/utypes.h>
#include <unicode/uregex.h>
#include <unicode/ustring.h>
#include <unicode/ucol.h>
#include <assert.h>
#include "sqlite3ext.h"
+ Include dependency graph for sqliteicu.c:

Macros

#define SQLITE_DIRECTONLY   0x000080000
 
#define SQLITE_INNOCUOUS   0x000200000
 
#define SQLITE_MAX_LIKE_PATTERN_LENGTH   50000
 
#define SQLITE_ICU_READ_UTF8(zIn, c)
 
#define SQLITE_ICU_SKIP_UTF8(zIn)
 
#define SQLITEICU_EXTRAFLAGS   (SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS)
 

Functions

static void icuFunctionError (sqlite3_context *pCtx, const char *zName, UErrorCode e)
 
static void xFree (void *p)
 
static int icuLikeCompare (const uint8_t *zPattern, const uint8_t *zString, const UChar32 uEsc)
 
static void icuLikeFunc (sqlite3_context *context, int argc, sqlite3_value **argv)
 
static void icuRegexpDelete (void *p)
 
static void icuRegexpFunc (sqlite3_context *p, int nArg, sqlite3_value **apArg)
 
static void icuCaseFunc16 (sqlite3_context *p, int nArg, sqlite3_value **apArg)
 
static void icuCollationDel (void *pCtx)
 
static int icuCollationColl (void *pCtx, int nLeft, const void *zLeft, int nRight, const void *zRight)
 
static void icuLoadCollation (sqlite3_context *p, int nArg, sqlite3_value **apArg)
 
int sqlite3IcuInit (sqlite3 *db)
 
int sqlite3_icu_init (sqlite3 *db, char **pzErrMsg, const sqlite3_api_routines *pApi)
 

Variables

static const unsigned char icuUtf8Trans1 []
 

Macro Definition Documentation

◆ SQLITE_DIRECTONLY

#define SQLITE_DIRECTONLY   0x000080000

◆ SQLITE_ICU_READ_UTF8

#define SQLITE_ICU_READ_UTF8 (   zIn,
 
)
Value:
c = *(zIn++); \
if( c>=0xc0 ){ \
c = icuUtf8Trans1[c-0xc0]; \
while( (*zIn & 0xc0)==0x80 ){ \
c = (c<<6) + (0x3f & *(zIn++)); \
} \
}
static const unsigned char icuUtf8Trans1[]
Definition sqliteicu.c:94

◆ SQLITE_ICU_SKIP_UTF8

#define SQLITE_ICU_SKIP_UTF8 (   zIn)
Value:
assert( *zIn ); \
if( *(zIn++)>=0xc0 ){ \
while( (*zIn & 0xc0)==0x80 ){zIn++;} \
}

◆ SQLITE_INNOCUOUS

#define SQLITE_INNOCUOUS   0x000200000

◆ SQLITE_MAX_LIKE_PATTERN_LENGTH

#define SQLITE_MAX_LIKE_PATTERN_LENGTH   50000

◆ SQLITEICU_EXTRAFLAGS

#define SQLITEICU_EXTRAFLAGS   (SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS)

Function Documentation

◆ icuCaseFunc16()

static void icuCaseFunc16 ( sqlite3_context *  p,
int  nArg,
sqlite3_value **  apArg 
)
static

References icuFunctionError(), and xFree().

Referenced by sqlite3IcuInit().

◆ icuCollationColl()

static int icuCollationColl ( void pCtx,
int  nLeft,
const void zLeft,
int  nRight,
const void zRight 
)
static

Referenced by icuLoadCollation().

◆ icuCollationDel()

static void icuCollationDel ( void pCtx)
static

Referenced by icuLoadCollation().

◆ icuFunctionError()

static void icuFunctionError ( sqlite3_context *  pCtx,
const char *  zName,
UErrorCode  e 
)
static

◆ icuLikeCompare()

static int icuLikeCompare ( const uint8_t *  zPattern,
const uint8_t *  zString,
const UChar32  uEsc 
)
static

◆ icuLikeFunc()

static void icuLikeFunc ( sqlite3_context *  context,
int  argc,
sqlite3_value **  argv 
)
static

◆ icuLoadCollation()

static void icuLoadCollation ( sqlite3_context *  p,
int  nArg,
sqlite3_value **  apArg 
)
static

◆ icuRegexpDelete()

static void icuRegexpDelete ( void p)
static

Referenced by icuRegexpFunc().

◆ icuRegexpFunc()

static void icuRegexpFunc ( sqlite3_context *  p,
int  nArg,
sqlite3_value **  apArg 
)
static

References icuFunctionError(), icuRegexpDelete(), and void().

Referenced by sqlite3IcuInit().

◆ sqlite3_icu_init()

int sqlite3_icu_init ( sqlite3 *  db,
char **  pzErrMsg,
const sqlite3_api_routines *  pApi 
)

References sqlite3IcuInit().

◆ sqlite3IcuInit()

◆ xFree()

static void xFree ( void p)
static

Referenced by icuCaseFunc16().

Variable Documentation

◆ icuUtf8Trans1

const unsigned char icuUtf8Trans1[]
static
Initial value:
= {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x00, 0x00,
}