Diff
Not logged in

Differences From:

File src/th_lang.c part of check-in [4ee9e31a2d] - Add the TH1 code to the source tree and makefile. But do not yet make any calls to TH1. by drh on 2008-02-13 15:04:49. Also file src/th_lang.c part of check-in [588bb7cd73] - Merged to ed26056bb5. by aku on 2008-02-24 18:50:35. [view]

To:

File src/th_lang.c part of check-in [0c99a1554a] - Modify the TH1 script interperter to use native characters rather than unsigned characters. Fix a bug in the combobox extension command of TH1. by drh on 2008-10-24 16:36:34. [view]

@@ -13,11 +13,9 @@
 #include <string.h>
 #include <assert.h>
 
 int Th_WrongNumArgs(Th_Interp *interp, const char *zMsg){
-  Th_ErrorMessage(interp,
-      "wrong # args: should be \"", (const uchar*)zMsg, -1
-  );
+  Th_ErrorMessage(interp, "wrong # args: should be \"", zMsg, -1);
   return TH_ERROR;
 }
 
 /*
@@ -28,9 +26,9 @@
 static int catch_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int rc;
 
@@ -40,9 +38,9 @@
 
   rc = Th_Eval(interp, 0, argv[1], -1);
   if( argc==3 ){
     int nResult;
-    const uchar *zResult = Th_GetResult(interp, &nResult);
+    const char *zResult = Th_GetResult(interp, &nResult);
     Th_SetVar(interp, argv[2], argl[2], zResult, nResult);
   }
 
   Th_SetResultInt(interp, rc);
@@ -57,17 +55,17 @@
 static int if_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int rc = TH_OK;
 
   int iCond;           /* Result of evaluating expression */
   int i;
 
-  const uchar *zResult;
+  const char *zResult;
   int nResult;
 
   if( argc<3 ){
     goto wrong_args;
@@ -104,9 +102,9 @@
 static int expr_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   if( argc!=2 ){
     return Th_WrongNumArgs(interp, "expr expression");
@@ -119,9 +117,9 @@
 ** Evaluate the th1 script (zBody, nBody) in the local stack frame.
 ** Return the result of the evaluation, except if the result
 ** is TH_CONTINUE, return TH_OK instead.
 */
-static int eval_loopbody(Th_Interp *interp, const uchar *zBody, int nBody){
+static int eval_loopbody(Th_Interp *interp, const char *zBody, int nBody){
   int rc = Th_Eval(interp, 0, zBody, nBody);
   if( rc==TH_CONTINUE ){
     rc = TH_OK;
   }
@@ -136,9 +134,9 @@
 static int for_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int rc;
   int iCond;
@@ -171,12 +169,12 @@
 static int list_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
-  int *argl
-){
-  uchar *zList = 0;
+  const char **argv,
+  int *argl
+){
+  char *zList = 0;
   int nList = 0;
   int i;
 
   for(i=1; i<argc; i++){
@@ -197,15 +195,15 @@
 static int lindex_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int iElem;
   int rc;
 
-  uchar **azElem;
+  char **azElem;
   int *anElem;
   int nCount;
 
   if( argc!=3 ){
@@ -237,9 +235,9 @@
 static int llength_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int nElem;
   int rc;
@@ -264,9 +262,9 @@
 static int set_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   if( argc!=2 && argc!=3 ){
     return Th_WrongNumArgs(interp, "set varname ?value?");
@@ -286,16 +284,16 @@
 */
 typedef struct ProcDefn ProcDefn;
 struct ProcDefn {
   int nParam;                /* Number of formal (non "args") parameters */
-  uchar **azParam;           /* Parameter names */
+  char **azParam;           /* Parameter names */
   int *anParam;              /* Lengths of parameter names */
-  uchar **azDefault;         /* Default values */
+  char **azDefault;         /* Default values */
   int *anDefault;            /* Lengths of default values */
   int hasArgs;               /* True if there is an "args" parameter */
-  uchar *zProgram;           /* Body of proc */
+  char *zProgram;           /* Body of proc */
   int nProgram;              /* Number of bytes at zProgram */
-  uchar *zUsage;             /* Usage message */
+  char *zUsage;             /* Usage message */
   int nUsage;                /* Number of bytes at zUsage */
 };
 
 /* This structure is used to temporarily store arguments passed to an
@@ -304,9 +302,9 @@
 */
 typedef struct ProcArgs ProcArgs;
 struct ProcArgs {
   int argc;
-  const uchar **argv;
+  const char **argv;
   int *argl;
 };
 
 /*
@@ -328,21 +326,21 @@
   */
   if( (pArgs->argc>(p->nParam+1) && !p->hasArgs)
    || (pArgs->argc<=(p->nParam) && !p->azDefault[pArgs->argc-1])
   ){
-    uchar *zUsage = 0;
+    char *zUsage = 0;
     int nUsage = 0;
     Th_StringAppend(interp, &zUsage, &nUsage, pArgs->argv[0], pArgs->argl[0]);
     Th_StringAppend(interp, &zUsage, &nUsage, p->zUsage, p->nUsage);
-    Th_StringAppend(interp, &zUsage, &nUsage, (const uchar *)"", 1);
+    Th_StringAppend(interp, &zUsage, &nUsage, (const char *)"", 1);
     Th_WrongNumArgs(interp, zUsage);
     Th_Free(interp, zUsage);
     return TH_ERROR;
   }
 
   /* Populate the formal proc parameters. */
   for(i=0; i<p->nParam; i++){
-    const uchar *zVal;
+    const char *zVal;
     int nVal;
     if( pArgs->argc>(i+1) ){
       zVal = pArgs->argv[i+1];
       nVal = pArgs->argl[i+1];
@@ -354,14 +352,14 @@
   }
 
   /* Populate the "args" parameter, if it exists */
   if( p->hasArgs ){
-    uchar *zArgs = 0;
+    char *zArgs = 0;
     int nArgs = 0;
     for(i=p->nParam+1; i<pArgs->argc; i++){
       Th_ListAppend(interp, &zArgs, &nArgs, pArgs->argv[i], pArgs->argl[i]);
     }
-    Th_SetVar(interp, (const uchar *)"args", -1, zArgs, nArgs);
+    Th_SetVar(interp, (const char *)"args", -1, zArgs, nArgs);
   }
 
   Th_SetResult(interp, 0, 0);
   return Th_Eval(interp, 0, p->zProgram, p->nProgram);
@@ -375,9 +373,9 @@
 static int proc_call1(
   Th_Interp *interp,
   void *pContext,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int rc;
 
@@ -420,9 +418,9 @@
 static int proc_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int rc;
   char *zName;
@@ -429,15 +427,15 @@
 
   ProcDefn *p;
   int nByte;
   int i;
-  uchar *zSpace;
-
-  uchar **azParam;
+  char *zSpace;
+
+  char **azParam;
   int *anParam;
   int nParam;
 
-  uchar *zUsage = 0;               /* Build up a usage message here */
+  char *zUsage = 0;               /* Build up a usage message here */
   int nUsage = 0;                  /* Number of bytes at zUsage */
 
   if( argc!=4 ){
     return Th_WrongNumArgs(interp, "proc name arglist code");
@@ -447,10 +445,10 @@
   }
 
   /* Allocate the new ProcDefn structure. */
   nByte = sizeof(ProcDefn) +                        /* ProcDefn structure */
-      (sizeof(uchar *) + sizeof(int)) * nParam +    /* azParam, anParam */
-      (sizeof(uchar *) + sizeof(int)) * nParam +    /* azDefault, anDefault */
+      (sizeof(char *) + sizeof(int)) * nParam +    /* azParam, anParam */
+      (sizeof(char *) + sizeof(int)) * nParam +    /* azDefault, anDefault */
       argl[3] +                                     /* zProgram */
       argl[2];     /* Space for copies of parameter names and default values */
   p = (ProcDefn *)Th_Malloc(interp, nByte);
 
@@ -463,19 +461,19 @@
     nParam--;
   }
 
   p->nParam    = nParam;
-  p->azParam   = (uchar **)&p[1];
+  p->azParam   = (char **)&p[1];
   p->anParam   = (int *)&p->azParam[nParam];
-  p->azDefault = (uchar **)&p->anParam[nParam];
+  p->azDefault = (char **)&p->anParam[nParam];
   p->anDefault = (int *)&p->azDefault[nParam];
-  p->zProgram = (uchar *)&p->anDefault[nParam];
+  p->zProgram = (char *)&p->anDefault[nParam];
   memcpy(p->zProgram, argv[3], argl[3]);
   p->nProgram = argl[3];
   zSpace = &p->zProgram[p->nProgram];
 
   for(i=0; i<nParam; i++){
-    uchar **az;
+    char **az;
     int *an;
     int n;
     if( Th_SplitList(interp, azParam[i], anParam[i], &az, &an, &n) ){
       goto error_out;
@@ -496,27 +494,27 @@
       memcpy(zSpace, az[1], an[1]);
       zSpace += an[1];
     }
 
-    Th_StringAppend(interp, &zUsage, &nUsage, (const uchar *)" ", 1);
+    Th_StringAppend(interp, &zUsage, &nUsage, (const char *)" ", 1);
     if( n==2 ){
-      Th_StringAppend(interp, &zUsage, &nUsage, (const uchar *)"?", 1);
+      Th_StringAppend(interp, &zUsage, &nUsage, (const char *)"?", 1);
       Th_StringAppend(interp, &zUsage, &nUsage, az[0], an[0]);
-      Th_StringAppend(interp, &zUsage, &nUsage, (const uchar *)"?", 1);
+      Th_StringAppend(interp, &zUsage, &nUsage, (const char *)"?", 1);
     }else{
       Th_StringAppend(interp, &zUsage, &nUsage, az[0], an[0]);
     }
 
     Th_Free(interp, az);
   }
-  assert( zSpace-(uchar *)p<=nByte );
+  assert( zSpace-(char *)p<=nByte );
 
   /* If there is an "args" parameter, append it to the end of the usage
   ** message. Set ProcDefn.zUsage to point at the usage message. It will
   ** be freed along with the rest of the proc-definition by proc_del().
   */
   if( p->hasArgs ){
-    Th_StringAppend(interp, &zUsage, &nUsage, (const uchar *)" ?args...?", -1);
+    Th_StringAppend(interp, &zUsage, &nUsage, (const char *)" ?args...?", -1);
   }
   p->zUsage = zUsage;
   p->nUsage = nUsage;
 
@@ -544,9 +542,9 @@
 static int rename_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   if( argc!=3 ){
     return Th_WrongNumArgs(interp, "rename oldcmd newcmd");
@@ -565,9 +563,9 @@
 static int simple_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   if( argc!=1 && argc!=2 ){
     return Th_WrongNumArgs(interp, "return ?value?");
@@ -586,9 +584,9 @@
 static int return_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int iCode = TH_RETURN;
   if( argc<1 || argc>4 ){
@@ -611,12 +609,12 @@
 **
 **   string compare STRING1 STRING2
 */
 static int string_compare_command(
-  Th_Interp *interp, void *ctx, int argc, const uchar **argv, int *argl
-){
-  const uchar *zRight; int nRight;
-  const uchar *zLeft; int nLeft;
+  Th_Interp *interp, void *ctx, int argc, const char **argv, int *argl
+){
+  const char *zRight; int nRight;
+  const char *zLeft; int nLeft;
 
   int i;
   int iRes = 0;
 
@@ -647,13 +645,13 @@
 **
 **   string first NEEDLE HAYSTACK
 */
 static int string_first_command(
-  Th_Interp *interp, void *ctx, int argc, const uchar **argv, int *argl
-){
-  const uchar *zNeedle;
+  Th_Interp *interp, void *ctx, int argc, const char **argv, int *argl
+){
+  const char *zNeedle;
   int nNeedle;
-  const uchar *zHaystack;
+  const char *zHaystack;
   int nHaystack;
   int i;
   int iRes;
 
@@ -681,9 +679,9 @@
 **
 **   string is CLASS STRING
 */
 static int string_is_command(
-  Th_Interp *interp, void *ctx, int argc, const uchar **argv, int *argl
+  Th_Interp *interp, void *ctx, int argc, const char **argv, int *argl
 ){
   int i;
   int iRes = 1;
   if( argc!=4 ){
@@ -708,13 +706,13 @@
 **
 **   string last NEEDLE HAYSTACK
 */
 static int string_last_command(
-  Th_Interp *interp, void *ctx, int argc, const uchar **argv, int *argl
-){
-  const uchar *zNeedle;
+  Th_Interp *interp, void *ctx, int argc, const char **argv, int *argl
+){
+  const char *zNeedle;
   int nNeedle;
-  const uchar *zHaystack;
+  const char *zHaystack;
   int nHaystack;
   int i;
   int iRes;
 
@@ -742,9 +740,9 @@
 **
 **   string length STRING
 */
 static int string_length_command(
-  Th_Interp *interp, void *ctx, int argc, const uchar **argv, int *argl
+  Th_Interp *interp, void *ctx, int argc, const char **argv, int *argl
 ){
   if( argc!=3 ){
     return Th_WrongNumArgs(interp, "string length string");
   }
@@ -756,9 +754,9 @@
 **
 **   string range STRING FIRST LAST
 */
 static int string_range_command(
-  Th_Interp *interp, void *ctx, int argc, const uchar **argv, int *argl
+  Th_Interp *interp, void *ctx, int argc, const char **argv, int *argl
 ){
   int iStart;
   int iEnd;
 
@@ -789,14 +787,14 @@
 **
 **   string repeat STRING COUNT
 */
 static int string_repeat_command(
-  Th_Interp *interp, void *ctx, int argc, const uchar **argv, int *argl
+  Th_Interp *interp, void *ctx, int argc, const char **argv, int *argl
 ){
   int n;
   int i;
   int nByte;
-  uchar *zByte;
+  char *zByte;
 
   if( argc!=4 ){
     return Th_WrongNumArgs(interp, "string repeat string n");
   }
@@ -820,9 +818,9 @@
 **
 **   info exists VAR
 */
 static int info_exists_command(
-  Th_Interp *interp, void *ctx, int argc, const uchar **argv, int *argl
+  Th_Interp *interp, void *ctx, int argc, const char **argv, int *argl
 ){
   int rc;
 
   if( argc!=3 ){
@@ -841,9 +839,9 @@
 static int unset_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   if( argc!=2 ){
     return Th_WrongNumArgs(interp, "unset var");
@@ -854,15 +852,15 @@
 int Th_CallSubCommand(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl,
   Th_SubCommand *aSub
 ){
   int i;
   for(i=0; aSub[i].zName; i++){
-    uchar *zName = (uchar *)aSub[i].zName;
+    char *zName = (char *)aSub[i].zName;
     if( th_strlen(zName)==argl[1] && 0==memcmp(zName, argv[1], argl[1]) ){
       return aSub[i].xProc(interp, ctx, argc, argv, argl);
     }
   }
@@ -885,9 +883,9 @@
 static int string_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   Th_SubCommand aSub[] = {
     { "compare", string_compare_command },
@@ -910,9 +908,9 @@
 static int info_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   Th_SubCommand aSub[] = {
     { "exists",  info_exists_command },
@@ -929,9 +927,9 @@
 ** and leave an error message in the interpreter result.
 */
 static int thToFrame(
   Th_Interp *interp,
-  const uchar *zFrame,
+  const char *zFrame,
   int nFrame,
   int *piFrame
 ){
   int iFrame;
@@ -958,9 +956,9 @@
 static int uplevel_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int iFrame = -1;
 
@@ -981,9 +979,9 @@
 static int upvar_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int iVar = 1;
   int iFrame = -1;
@@ -1014,9 +1012,9 @@
 static int breakpoint_command(
   Th_Interp *interp,
   void *ctx,
   int argc,
-  const uchar **argv,
+  const char **argv,
   int *argl
 ){
   int cnt = 0;
   cnt++;