ColumnDefinition::ColumnDefinition(const ColumnDefinition& coldef){
    if(coldef.__bool__())
    {
        Ilwis::ColumnDefinition* ilwDef = coldef.ptr().get();
        if(ilwDef->isValid())
            _ilwisColDef.reset(new Ilwis::ColumnDefinition(*ilwDef));
    }
}
 PyObject* Table::columns() const{
     Ilwis::ITable tbl = this->ptr()->as<Ilwis::Table>();
     PyObject* list = newPyTuple(tbl->columnCount());
     for(int i = 0; i < tbl->columnCount(); i++){
         Ilwis::ColumnDefinition coldef = tbl->columndefinition(i);
         if (!setTupleItem(list, i, PyUnicodeFromString(coldef.name().toStdString().data())))
             throw Ilwis::ErrorObject(QString("internal conversion error while trying to add '%1' to list of columns").arg(tbl->columndefinition(i).name()));
     }
     return list;
 }
 std::vector<std::string> Table::columns() const{
     Ilwis::ITable tbl = this->ptr()->as<Ilwis::Table>();
     std::vector<std::string> vector;
     for(int i = 0; i < tbl->columnCount(); i++){
         Ilwis::ColumnDefinition coldef = tbl->columndefinition(i);
         vector.push_back( coldef.name().toStdString() );
         //if (!setTupleItem(list, i, PyUnicodeFromString(coldef.name().toStdString().data())))
             //throw Ilwis::ErrorObject(QString("internal conversion error while trying to add '%1' to list of columns").arg(tbl->columndefinition(i).name()));
     }
     return vector;
 }
AttributeModel::AttributeModel(const Ilwis::ColumnDefinition& def, QObject *parent, const Ilwis::IIlwisObject& obj) :
    QObject(parent),
    _coldefinition(def),
    _owner(obj)
{
    if ( def.isValid() && def.datadef().domain()->ilwisType() == itITEMDOMAIN && def.datadef().domain()->valueType() != itINDEXEDITEM) {
        if (!def.datadef().domain()->range().isNull()) {
            QString defset = def.datadef().domain()->range()->toString();
            defset = defset.mid(defset.indexOf(":") + 1);
            _attributeValuesDefaultRange = defset.split("|");
        }
        if (!def.datadef().range().isNull()) {
            QString defset = def.datadef().domain()->range()->toString();
            defset = defset.mid(defset.indexOf(":") + 1);
            _attributeValuesActualRange = defset.split("|");
        }
    }
}