22 #include "svn_revision.h"     26   #include "blosc/blosc.h"    53 #define MSG_PURESTRING                  -2    54 #define MSG_NOERROR                     -1    56 #define MSG_INVALIDDBHANDLE              1    57 #define MSG_IMPOSSIBLE                   2    59 #define MSG_INVALIDARG                   4    60 #define MSG_CLOSINGFILES                 5    61 #define MSG_CANTCOPYSTRING               6    62 #define MSG_NOOPENARG                    7    63 #define MSG_NOFREESLOT                   8    64 #define MSG_CANTOPEN                     9    65 #define MSG_DBNOTOPEN                   10    66 #define MSG_INVQUERY                    11    67 #define MSG_CANTCREATEOUTPUT            12    68 #define MSG_UNKNWNDBTYPE                13    69 #define MSG_BUSYTIMEOUTFAIL             14    70 #define MSG_MSGUNIQUEWARN               15    71 #define MSG_UNEXPECTEDARG               16    72 #define MSG_MISSINGARGL                 17    73 #define MSG_ERRMEMORY                   18    74 #define MSG_UNSUPPVARTYPE               19    75 #define MSG_UNSUPPTBH                   20       76 #define MSG_ERRPLATFORMDETECT           21    77 #define MSG_WARNDIFFARCH                22    78 #define MSG_BLOBTOOBIG                  23    79 #define MSG_ERRCOMPRESSION              24    80 #define MSG_UNKCOMPRESSOR               25    81 #define MSG_ERRCOMPRARG                 26    82 #define MSG_ERRCOMPRLOGMINVALS          27    83 #define MSG_ERRUNKOPENMODE              28    84 #define MSG_ERRUNKTHREADMODE            29    85 #define MSG_ERRCANTCLOSE                30    86 #define MSG_ERRCLOSEDBS                 31    87 #define MSG_ERRNOTSUPPORTED             32    88 #define MSG_EXTENSION_EN                33    89 #define MSG_EXTENSION_DIS               34    90 #define MSG_EXTENSION_FAIL              35    91 #define MSG_MISSINGARG                  36    92 #define MSG_MISSINGARG_CELL             37    93 #define MSG_MISSINGARG_STRUCT           38    94 #define MSG_NUMARGEXPCT                 39    95 #define MSG_SINGLECELLNOTALLOWED        40    96 #define MSG_SINGLESTRUCTNOTALLOWED      41    97 #define MSG_ERRVARNAME                  42    98 #define MSG_STREAMINGNEEDTYBLOBS        43    99 #define MSG_STREAMINGNOTSUPPORTED       44   100 #define MSG_RESULTTYPE                  45   101 #define MSG_DBID_SUPFLOUS               46   102 #define MSG_FCNHARGEXPCT                47   103 #define MSG_LITERALARGEXPCT             48   104 #define MSG_RECURSIVECALL               49   105 #define MSG_INVALIDFUNCTION             50   106 #define MSG_ERRNULLDBID                 51   107 #define MSG_ERRINTERNAL                 52   108 #define MSG_ABORTED                     53   136         m_msgId        = MSG_NOERROR;
   150     void set( 
const char* strMsg, 
const char* strId = NULL )
   158             m_msgId       = MSG_PURESTRING;
   159             m_static_msg  = strMsg;
   172     void set( 
char* strMsg, 
const char* strId = NULL )
   182             m_msgId       = MSG_PURESTRING;
   186             _snprintf( m_shared_msg, 
sizeof(m_shared_msg), 
"%s", strMsg );
   197     void set( 
int iMessageNr, 
const char* strId = NULL )
   199          m_msgId = iMessageNr;
   201          if( iMessageNr == MSG_NOERROR )
   221          va_start( va, strId );
   224          m_msgId = iMessageNr;
   229             vsnprintf( m_shared_msg, 
sizeof( m_shared_msg ), message, va );
   246          va_start( va, strId );
   248          m_msgId = MSG_PURESTRING;
   253             vsnprintf( m_shared_msg, 
sizeof( m_shared_msg ), fmt, va );
   266     const char* 
get( 
const char** errId = NULL )
   311     "(c) 2008-2017 by Martin Kortmann <mail@kortmann.de>\n"   312     "                 Andreas Martin  <andimartin@users.sourceforge.net>\n"   313     "based on SQLite Version %s - http://www.sqlite.org\n"   314     "mksqlite utilizes:\n"   315     " - DEELX perl compatible regex engine Version " DEELX_VERSION_STRING 
" (Sswater@gmail.com)\n"   316     " - BLOSC/LZ4 " BLOSC_VERSION_STRING 
" compression algorithm (Francesc Alted / Yann Collett) \n"   317     " - MD5 Message-Digest Algorithm (RFC 1321) implementation by Alexander Peslyak\n"   320     "invalid database handle",
   321     "function not possible",
   322     "usage: mksqlite([dbid,] command [, databasefile])\n",
   323     "no or wrong argument",
   324     "mksqlite: closing open databases",
   325     "can\'t copy string in getstring()",
   326     "open without database name",
   327     "no free database handle available",
   328     "cannot open database (check access privileges and existence of database)",
   330     "invalid query string (semicolon?)",
   331     "cannot create output matrix",
   332     "unknown SQLITE data type",
   333     "cannot set busy timeout",
   334     "could not build unique field name for %s",
   335     "unexpected arguments passed",
   336     "missing argument list",
   337     "memory allocation error",
   338     "unsupported variable type",
   339     "unknown/unsupported typed blob header",
   340     "error while detecting the type of computer you are using",
   341     "BLOB stored on different type of computer",
   342     "BLOB exceeds maximum allowed size",
   343     "error while compressing data",
   344     "unknown compressor",
   345     "chosen compressor accepts 'double' type only",
   346     "chosen compressor accepts positive values only",
   347     "unknown open modus (only 'ro', 'rw' or 'rwc' accepted)",
   348     "unknown threading mode (only 'single', 'multi' or 'serial' accepted)",
   349     "cannot close connection",
   350     "not all connections could be closed",
   351     "this Matlab version doesn't support this feature",
   352     "extension loading enabled for this db",
   353     "extension loading disabled for this db",
   354     "failed to set extension loading feature",
   355     "more argument(s) expected",
   356     "more argument(s) expected (maybe matrix argument given, instead of a cell array?)",
   357     "missing field in argument for SQL parameter '%s'",
   358     "numeric argument expected",
   359     "single cell argument not allowed when streaming is enabled while multiple\nSQL parameters are used or parameter wrapping is enabled, too",
   360     "single struct argument not allowed when streaming is enabled while multiple\nSQL parameters are used or parameter wrapping is enabled, too",
   361     "unable to create fieldname from column name",
   362     "streaming of variables needs typed BLOBs! Streaming is off",
   363     "streaming not supported in this MATLAB version",
   365     "database ID is given, but superflous!",
   366     "function handle expected!",
   367     "string argument expected!",
   368     "recursive application-defined functions not allowed!",
   370     "dbid of 0 only allowed for commands 'open' and 'close'!",
   382     "(c) 2008-2017 by Martin Kortmann <mail@kortmann.de>\n"   383     "                 Andreas Martin  <andimartin@users.sourceforge.net>\n"   384     "basierend auf SQLite Version %s - http://www.sqlite.org\n"   385     "mksqlite verwendet:\n"   386     " - DEELX perl kompatible regex engine Version " DEELX_VERSION_STRING 
" (Sswater@gmail.com)\n"   387     " - BLOSC/LZ4 " BLOSC_VERSION_STRING 
" zur Datenkompression (Francesc Alted / Yann Collett) \n"   388     " - MD5 Message-Digest Algorithm (RFC 1321) Implementierung von Alexander Peslyak\n"   391     "ungueltiger Datenbankhandle",
   392     "Funktion nicht moeglich",
   393     "Verwendung: mksqlite([dbid,] Befehl [, Datenbankdatei])\n",
   394     "kein oder falsches Argument uebergeben",
   395     "mksqlite: Die noch geoeffneten Datenbanken wurden geschlossen",
   396     "getstring() kann keine neue Zeichenkette erstellen",
   397     "Open Befehl ohne Datenbanknamen",
   398     "kein freier Datenbankhandle verfuegbar",
   399     "Datenbank konnte nicht geoeffnet werden (ggf. Zugriffsrechte oder Existenz der Datenbank pruefen)",
   400     "Datenbank nicht geoeffnet",
   401     "ungueltiger query String (Semikolon?)",
   402     "kann Ausgabematrix nicht erstellen",
   403     "unbekannter SQLITE Datentyp",
   404     "busytimeout konnte nicht gesetzt werden",
   405     "konnte keinen eindeutigen Bezeichner fuer Feld %s bilden",
   406     "Argumentliste zu lang",
   407     "keine Argumentliste angegeben",
   408     "Fehler im Speichermanagement", 
   409     "nicht unterstuetzter Variablentyp",
   410     "unbekannter oder nicht unterstuetzter typisierter BLOB Header",
   411     "Fehler beim Identifizieren der Computerarchitektur",
   412     "BLOB wurde mit abweichender Computerarchitektur erstellt",
   414     "Fehler waehrend der Kompression aufgetreten",
   415     "unbekannte Komprimierung",
   416     "gewaehlter Kompressor erlaubt nur Datentyp 'double'",
   417     "gewaehlter Kompressor erlaubt nur positive Werte",
   418     "unbekannter Zugriffmodus (nur 'ro', 'rw' oder 'rwc' moeglich)",
   419     "unbekannter Threadingmodus (nur 'single', 'multi' oder 'serial' moeglich)",
   420     "die Datenbank kann nicht geschlossen werden",
   421     "nicht alle Datenbanken konnten geschlossen werden",
   422     "Feature wird von dieser Matlab Version nicht unterstuetzt",
   423     "DLL Erweiterungen fuer diese db aktiviert",
   424     "DLL Erweiterungen fuer diese db deaktiviert",
   425     "Einstellung fuer DLL Erweiterungen nicht moeglich",
   426     "Argumentliste zu kurz",
   427     "Argumentliste zu kurz (moeglicherweise eine Matrix statt Cell-Array uebergeben?)",
   428     "Feld fuer SQL Parameter '%s' fehlt",
   429     "numerischer Parameter erwartet",
   430     "einzelnes Argument vom Typ Cell nicht erlaubt, bei aktiviertem Streaming mit\nmehreren SQL Parametern oder ebenfalls aktiviertem Parameter Wrapping",
   431     "einzelnes Argument vom Typ Struct nicht erlaubt, bei aktiviertem Streaming mit\nmehreren SQL Parametern oder ebenfalls aktiviertem Parameter Wrapping",
   432     "aus dem Spaltennamen konnte kein gueltiger Feldname erzeugt werden",
   433     "fuer das Streamen von Variablen sind typisierte BLOBS erforderlich! Streaming ist ausgeschaltet",
   434     "Streaming wird von dieser MATLAB Version nicht unterstuetzt",
   436     "Datenbank ID wurde angegeben, ist fuer diesen Befehl jedoch ueberfluessig! ", 
   437     "Funktionshandle erwartet! ",
   438     "String Argument erwartet! ",
   439     "unzulaessiger rekursiver Funktionsaufruf! ",
   440     "ungueltige Funktion! ",
   441     "0 als dbid ist nur fuer die Befehle 'open' und 'close' erlaubt! ",
   443     "Ausfuehrung abgebrochen (Ctrl+C)!",
   487                 return "Unbekanner Fehler!";
   489                 return "Unspecified error!"; 
 char m_shared_msg[1024]
(Shared) text buffer for non-const (generated) messages 
 
bool setLocale(int iLang)
Sets the current locale. 
 
void warn(int iMessageNr)
Omits a warning with the current error message. 
 
void set_printf(int iMessageNr, const char *strId,...)
Set error message by identifier (translations available) with printf arguments. 
 
static const char * messages_0[]
Message table for english translations (Language==0) 
 
Global configuration settings and defaults. 
 
const char * getLocaleMsg(int iMsgNr)
Returns the translation for a defined message. 
 
void set_printf(const char *fmt, const char *strId,...)
Set error message by format string with arguments. 
 
const char * STR_RESULT_TYPES[]
Text representations. 
 
static const char * messages_1[]
Message table for german translations (Language=1) 
 
bool isPending()
Returns true, if the current error message is still not handled. 
 
void clear()
Reset error message. 
 
static const char ** messages[]
Message Tables. 
 
Helperclass for error message transport. 
 
int getLocale()
Get current locale id. 
 
static int Language
Number of language in use. 
 
const char * m_err_id
Holds the error id (for MATLAB exception handling f.e., see MSG_IDS) 
 
const char * m_static_msg
Holds pointer to static message text. 
 
#define CONFIG_MKSQLITE_VERSION_STRING
mksqlite version string 
 
int getMsgId()
Get the current message identifier. 
 
int m_msgId
Message ID (see Message Identifiers) 
 
bool m_isPending
Message has still to be handled if this flag is set.