Ignore:
Timestamp:
09/12/13 19:39:21 (7 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Check the values of discrete features in Orange.data.Table constructor.

(references #1322)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source/orange/cls_example.cpp

    r11662 r11697  
    8888      if (li == Py_None) { 
    8989        *(ei++) = (*vi)->DK(); 
    90       } 
    91          
    92       else if (PyString_Check(li)) 
     90      } else if (PyString_Check(li)) { 
    9391          (*vi)->str2val(string(PyString_AsString(li)), *(ei++)); 
    94  
    95       else if ((*vi)->varType==TValue::INTVAR) { 
    96         if (PyInt_Check(li)) 
    97           *(ei++)=TValue(int(PyInt_AsLong(li))); 
    98         else { 
    99           PyErr_Format(PyExc_TypeError, "attribute no. %i (%s) is ordinal, string value expected", pos, (*vi)->get_name().c_str()); 
     92      } else if ((*vi)->varType==TValue::INTVAR) { 
     93        if (PyInt_Check(li)) { 
     94          TEnumVariable * enumvar = dynamic_cast<TEnumVariable *>(vi->getUnwrappedPtr()); 
     95          int value = int(PyInt_AsLong(li)); 
     96          if (value < 0 || value >= enumvar->noOfValues()) { 
     97            PyErr_Format(PyExc_ValueError, 
     98                         "value index %i out of range (0 - %i) at attribute no %i (%s)", 
     99                         value, enumvar->noOfValues() - 1, pos, enumvar->get_name().c_str()); 
     100            return false; 
     101          } 
     102          *(ei++) = TValue(value); 
     103        } else { 
     104          PyErr_Format(PyExc_TypeError, "attribute no. %i (%s) is ordinal, string or int value expected", pos, (*vi)->get_name().c_str()); 
    100105          return false; 
    101106        } 
Note: See TracChangeset for help on using the changeset viewer.