Index: toltcl/generic/toltableset.cpp
===================================================================
--- toltcl/generic/toltableset.cpp	(revision 1b5b24e974d86af9fe62a4722f3cb84c5cff2d2a)
+++ toltcl/generic/toltableset.cpp	(revision 6d7779d88a35f4606432b88f2eceba8b66c4516b)
@@ -3,5 +3,5 @@
                     GNU/tolTcl Library
 
-   Copyright (C) 2001, 2002, 2003 - Bayes DecisiÃ³n, SL
+   Copyright (C) 2001, 2002, 2003 - Bayes Decisión, SL
 
    This program is free software; you can redistribute it and/or modify
@@ -35,8 +35,6 @@
 
 #include <tol/tol_bcommon.h>
-#include <tol/tol_bstruct.h>
 #include <tol/tol_bdatgra.h>
 #include <tol/tol_bmatgra.h>
-#include <tol/tol_bvmatgra.h>
 #include <tol/tol_bsetgra.h>
 #include <tol/tol_btxtgra.h>
@@ -121,5 +119,5 @@
   int AppendUnknown();
   int AppendEmptyReal();
-  int AppendText( const char * txt );
+  int AppendText( char * txt );
   /* prepend functions */
   int PrependReal( Tcl_Interp * interp, double v );
@@ -127,5 +125,5 @@
   int PrependUnknown();
   int PrependEmptyReal();
-  int PrependText( const char * txt );
+  int PrependText( char * txt );
 private:
   Tcl_DString dsName;
@@ -163,4 +161,5 @@
     return interp;
   }
+
   int GetRows() {
     return rows;
@@ -259,8 +258,8 @@
 class Tol_TableMatrix : public Tol_Table {
 public:
-  Tol_TableMatrix(Tcl_Interp * _interp, char * matname, BMatrix<double> *mat,
+  Tol_TableMatrix(Tcl_Interp * _interp, char * matname, BMat * mat,
                   Tcl_Obj * obj_result);
 protected:
-  int Build(BMatrix<double> *mat, Tcl_Obj * obj_result);  
+  int Build(BMat * mat, Tcl_Obj * obj_result);  
 };
 
@@ -559,5 +558,5 @@
  */
 
-int Tol_ColumnData::AppendText( const char * txt )
+int Tol_ColumnData::AppendText( char * txt )
 {
 #ifdef _DEBUG_TABLE_
@@ -576,5 +575,5 @@
  */
 
-int Tol_ColumnData::PrependText( const char * txt )
+int Tol_ColumnData::PrependText( char * txt )
 {
 #ifdef _DEBUG_TABLE_
@@ -1600,5 +1599,5 @@
  */
 
-Tol_TableMatrix::Tol_TableMatrix(Tcl_Interp * _interp, char * matname, BMatrix<double> *mat,
+Tol_TableMatrix::Tol_TableMatrix(Tcl_Interp * _interp, char * matname, BMat * mat,
                                  Tcl_Obj * obj_result)
   : Tol_Table(_interp, matname)
@@ -1613,5 +1612,5 @@
  */
 
-int Tol_TableMatrix::Build(BMatrix<double> *mat, Tcl_Obj * obj_result)
+int Tol_TableMatrix::Build(BMat * mat, Tcl_Obj * obj_result)
 {
   Tol_ColumnData * ptrCol;
@@ -1633,6 +1632,5 @@
         Tcl_IncrRefCount(rowsNames[row]=Tcl_NewStringObj(buffer, -1));
       }
-      BDat dat((*mat)(row,col));
-      ptrCol->AppendBDat(interp, dat);
+      ptrCol->AppendBDat(interp,(*mat)(row,col));
     }
   }
@@ -1675,5 +1673,6 @@
 
   // syn = Tol_GetObjFromReference( interp, GraSet(), setref, obj_result );
-  if (!(syn=Tol_ResolveObject(interp, objref, obj_result))) {
+  if (!(syn=Tol_ResolveObject(interp, objref, ismat?GraMatrix():GraSet()))) {
+    Tcl_AppendObjToObj(obj_result,Tcl_GetObjResult(interp));    
     return TCL_ERROR;
   }
@@ -1684,28 +1683,11 @@
   Tol_Table * ptrTable;
   if (ismat) {
-    BMatrix<double> vmat;
-    BMatrix<double> &theMat = vmat;
-    if (syn->Grammar()==GraVMatrix()) {
-      BVMat &V = VMat((BSyntaxObject *)syn);
-      V.GetDMat(vmat);
-    } else if (syn->Grammar()==GraMatrix()) {
-      theMat = ((DMat&)Mat((BSyntaxObject *)syn));
-    } else {  
-      Tcl_AppendStringsToObj( obj_result, Tcl_GetString(objref),
-                              " is not a valid Matrix|VMatrix object", NULL );    
-      return TCL_ERROR;
-    }
-    
+    BMat * ptrMat = &(((BUserMat*)syn)->Contens());
     ptrTable = new Tol_TableMatrix( interp, objname.Buffer(),
-                                    &theMat, obj_result );
-  } else if ( syn->Grammar()==GraSet() ) {
-    
-    BSet *ptrSet = &(Set((BSyntaxObject*)syn));
+                                    ptrMat, obj_result );
+  } else {
+    BSet * ptrSet = &(((BUserSet*)syn)->Contens());
     ptrTable = new Tol_TableSet( interp, objname.Buffer(),
                                  ptrSet, obj_result );
-  } else {  
-    Tcl_AppendStringsToObj( obj_result, Tcl_GetString(objref),
-                            " is not a valid Set object", NULL );    
-    return TCL_ERROR;
   }
   if ( ptrTable->CmdStatus() != TCL_OK ) {
@@ -1714,5 +1696,4 @@
   }
   ptrTable->CreateCommand(tblname);
-  
   return TCL_OK;
 }
