Changeset b0f6382 in tol


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

refs #1449, including name of struct or class if the object is a Set or NameBlock, for (3.2)

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • toltcl/generic/tolaccess.cpp

    raedc343 rb0f6382  
    825825}
    826826
     827inline void SAVE_SET_STRING( Tcl_Obj **obj, const char* str )
     828{
     829  if (Tcl_IsShared( *obj ) ) {
     830    Tcl_DecrRefCount( *obj );
     831    *obj = Tcl_NewStringObj( str, -1 );
     832    Tcl_IncrRefCount( *obj );
     833  } else
     834    Tcl_SetStringObj( *obj, str,-1 );
     835}
     836
    827837class ContainerIterator
    828838{
    … …  
    10961106  datav[ OBJ_SUBTYPE ]    = Tcl_NewStringObj( "subtype", -1 );
    10971107  datav[ OBJ_SUBTYPEV ]   = Tcl_NewObj( );
    1098   datav[ OBJ_STRUCT ]     = Tcl_NewStringObj( "struct", -1 );
     1108  datav[ OBJ_STRUCT ]     = Tcl_NewObj( );
    10991109  datav[ OBJ_STRUCTV ]    = Tcl_NewObj( );
    11001110
    … …  
    11921202        Tcl_IncrRefCount( datav[ OBJ_SUBTYPEV ] );
    11931203      } else
    1194         Tcl_SetIntObj( datav[ OBJ_SUBTYPEV ],set_i->SubType( ) );
     1204        Tcl_SetIntObj( datav[ OBJ_SUBTYPEV ], set_i->SubType( ) );
    11951205       
    1196       /* STRUCT INFO */
     1206      /* STRUCT OR CLASS INFO */
    11971207      // asume que dstr esta a longitud 0
    1198       if ( set_i->Struct( ) ) {
    1199         btxt = set_i->Struct( )->Name( );
    1200         Tcl_ExternalToUtfDString( NULL, btxt, -1, &dstr );
     1208      if ( syn_i->Grammar() == GraNameBlock() ) {
     1209        SAVE_SET_STRING( datav + OBJ_STRUCT, "class" );
     1210        const BNameBlock& nb = ((BUserNameBlock*)(syn_i))->Contens();
     1211        const BClass* cls = nb.Class( );
     1212        if ( cls ) {
     1213          btxt = cls->FullName();
     1214          Tcl_ExternalToUtfDString( NULL, btxt, -1, &dstr );
     1215        }
     1216      } else {
     1217        SAVE_SET_STRING( datav + OBJ_STRUCT, "struct" );
     1218        if ( set_i->Struct( ) ) {
     1219          btxt = set_i->Struct( )->Name( );
     1220          Tcl_ExternalToUtfDString( NULL, btxt, -1, &dstr );
     1221        }
    12011222      }
    1202       SAVE_SET_STRING( datav + OBJ_PATHV, &dstr );
     1223      SAVE_SET_STRING( datav + OBJ_STRUCTV, &dstr );
    12031224      Tcl_DStringFree( &dstr );
    12041225      datac = NUM_OBJS;
    … …  
    22482269}
    22492270
    2250 /* ojo info debe tener espacio para 7 Tcl_Obj como maximo */
     2271/* ojo info debe tener espacio para 9 Tcl_Obj como maximo */
    22512272/* retorna cuantos Tcl_Obj creo */
    22522273
    … …  
    23202341     
    23212342    /* STRUCTURE */
    2322     if ( ptrSet->Struct() ) {
     2343    if ( var->Grammar() == GraNameBlock() ) {
     2344      const BNameBlock& nb = ((BUserNameBlock*)(var))->Contens();
     2345      const BClass* cls = nb.Class( );
     2346      if ( cls ) {
     2347        info[8] = Tcl_NewStringObj( cls->FullName().String(), -1 );
     2348      } else {
     2349        info[8] = Tcl_NewStringObj( NULL, 0 );
     2350      }
     2351    } else if ( ptrSet->Struct() ) {
    23232352      BText btxt( ptrSet->Struct()->Name() );
    23242353      Tcl_ExternalToUtfDString(NULL,btxt,-1,&dstr);
    23252354      info[8] = Tcl_NewStringObj( Tcl_DStringValue(&dstr), -1 );
    23262355      Tcl_DStringFree( &dstr );
    2327     } else
     2356    } else {
    23282357      info[8] = Tcl_NewStringObj( NULL, 0 );
     2358    }
    23292359    infoc = 9;
    23302360  } else
Note: See TracChangeset for help on using the changeset viewer.