Changeset eb21277 in tol for toltcl


Ignore:
Timestamp:
Feb 24, 2012, 12:51:07 PM (15 years ago)
Author:
Jorge Pérez <josp.jorge@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
aedc343
Parents:
904521e
Message:

fixes #1449, the new reference has the form ADDRESS 90E6520:0:8CA6B90:0:8BB2450:0:2:4:3

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@4190 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • toltcl/generic/tolaccess.cpp

    r904521e reb21277  
    634634      }
    635635    } else {
    636       if (n==2) {
    637         // look global var in grammar
    638         BGrammar * gra;
    639         gra = BGrammar::FindByName(type);
    640         if (!gra) {
    641           Tcl_AppendStringsToObj(obj_result, "\"",
    642                                                    type,
    643                                                    "\" isn't a grammar", NULL);
    644           return NULL;
     636      if ( n==2 ) {
     637        if ( !strcasecmp( type, "ADDRESS" ) ) {
     638          return
     639            BSyntaxObject::GetObjectFromAddress( Tcl_GetString( items[1] ) );
     640        } else {
     641          // look global var in grammar
     642          BGrammar * gra;
     643          gra = BGrammar::FindByName(type);
     644          if (!gra) {
     645            Tcl_AppendStringsToObj(obj_result, "\"",
     646                                   type,
     647                                   "\" isn't a grammar", NULL);
     648            return NULL;
     649          }
     650          Tcl_DString dstr;
     651          Tcl_DStringInit(&dstr);
     652          Tcl_UtfToExternalDString(NULL,Tcl_GetString(items[1]),-1,&dstr);
     653          if (!(syn = gra->FINDVARIABLE(Tcl_DStringValue(&dstr))))
     654            Tcl_AppendStringsToObj(obj_result, "variable '",
     655                                   obj_ref, "' not found in grammar '",
     656                                   gra->Name().String(), "'", NULL);
     657          Tcl_DStringFree(&dstr);
     658          /* found and matched */
     659          return syn;
    645660        }
    646         Tcl_DString dstr;
    647         Tcl_DStringInit(&dstr);
    648         Tcl_UtfToExternalDString(NULL,Tcl_GetString(items[1]),-1,&dstr);
    649         if (!(syn = gra->FINDVARIABLE(Tcl_DStringValue(&dstr))))
    650           Tcl_AppendStringsToObj(obj_result, "variable '",
    651                                  obj_ref, "' not found in grammar '",
    652                                  gra->Name().String(), "'", NULL);
    653         Tcl_DStringFree(&dstr);
    654         /* found and matched */
    655         return syn;
     661      } else {
     662        Tcl_AppendStringsToObj(obj_result,
     663                               "invalid object reference in ResolveObject",
     664                               NULL);
    656665      }
    657666    }
    658667  } else {
    659668      Tcl_AppendStringsToObj(obj_result,
    660                              "incorrect object reference in ResolveObject",
     669                             "invalid object reference in ResolveObject",
    661670                             NULL);
    662671  }
Note: See TracChangeset for help on using the changeset viewer.