Index: toltcl/generic/tolaccess.cpp
===================================================================
--- toltcl/generic/tolaccess.cpp	(revision aedc343691383d64a782ce7f2813a54a2a1f3e0f)
+++ toltcl/generic/tolaccess.cpp	(revision b0f638254db4ecece57db6fc3d349cd6c70105e0)
@@ -825,4 +825,14 @@
 }
 
+inline void SAVE_SET_STRING( Tcl_Obj **obj, const char* str )
+{
+  if (Tcl_IsShared( *obj ) ) {
+    Tcl_DecrRefCount( *obj );
+    *obj = Tcl_NewStringObj( str, -1 );
+    Tcl_IncrRefCount( *obj );
+  } else 
+    Tcl_SetStringObj( *obj, str,-1 );
+}
+
 class ContainerIterator
 {
@@ -1096,5 +1106,5 @@
   datav[ OBJ_SUBTYPE ]    = Tcl_NewStringObj( "subtype", -1 );
   datav[ OBJ_SUBTYPEV ]   = Tcl_NewObj( );
-  datav[ OBJ_STRUCT ]     = Tcl_NewStringObj( "struct", -1 );
+  datav[ OBJ_STRUCT ]     = Tcl_NewObj( );
   datav[ OBJ_STRUCTV ]    = Tcl_NewObj( );
 
@@ -1192,13 +1202,24 @@
         Tcl_IncrRefCount( datav[ OBJ_SUBTYPEV ] );
       } else
-        Tcl_SetIntObj( datav[ OBJ_SUBTYPEV ],set_i->SubType( ) );
+        Tcl_SetIntObj( datav[ OBJ_SUBTYPEV ], set_i->SubType( ) );
         
-      /* STRUCT INFO */
+      /* STRUCT OR CLASS INFO */
       // asume que dstr esta a longitud 0
-      if ( set_i->Struct( ) ) {
-        btxt = set_i->Struct( )->Name( );
-        Tcl_ExternalToUtfDString( NULL, btxt, -1, &dstr );
+      if ( syn_i->Grammar() == GraNameBlock() ) {
+        SAVE_SET_STRING( datav + OBJ_STRUCT, "class" );
+        const BNameBlock& nb = ((BUserNameBlock*)(syn_i))->Contens();
+        const BClass* cls = nb.Class( );
+        if ( cls ) {
+          btxt = cls->FullName();
+          Tcl_ExternalToUtfDString( NULL, btxt, -1, &dstr );
+        }
+      } else {
+        SAVE_SET_STRING( datav + OBJ_STRUCT, "struct" );
+        if ( set_i->Struct( ) ) {
+          btxt = set_i->Struct( )->Name( );
+          Tcl_ExternalToUtfDString( NULL, btxt, -1, &dstr );
+        }
       }
-      SAVE_SET_STRING( datav + OBJ_PATHV, &dstr ); 
+      SAVE_SET_STRING( datav + OBJ_STRUCTV, &dstr ); 
       Tcl_DStringFree( &dstr );
       datac = NUM_OBJS;
@@ -2248,5 +2269,5 @@
 }
 
-/* ojo info debe tener espacio para 7 Tcl_Obj como maximo */
+/* ojo info debe tener espacio para 9 Tcl_Obj como maximo */
 /* retorna cuantos Tcl_Obj creo */
 
@@ -2320,11 +2341,20 @@
       
     /* STRUCTURE */
-    if ( ptrSet->Struct() ) {
+    if ( var->Grammar() == GraNameBlock() ) {
+      const BNameBlock& nb = ((BUserNameBlock*)(var))->Contens();
+      const BClass* cls = nb.Class( );
+      if ( cls ) {
+        info[8] = Tcl_NewStringObj( cls->FullName().String(), -1 );
+      } else {
+        info[8] = Tcl_NewStringObj( NULL, 0 );
+      }
+    } else if ( ptrSet->Struct() ) {
       BText btxt( ptrSet->Struct()->Name() );
       Tcl_ExternalToUtfDString(NULL,btxt,-1,&dstr);
       info[8] = Tcl_NewStringObj( Tcl_DStringValue(&dstr), -1 );
       Tcl_DStringFree( &dstr );
-    } else
+    } else {
       info[8] = Tcl_NewStringObj( NULL, 0 );
+    }
     infoc = 9;
   } else
