! * return \c true if the column has a valid value in the row \row. */
| 856 | * return \c true if the column has a valid value in the row \row. |
| 857 | */ |
| 858 | bool Column::hasValueAt(int row) const { |
| 859 | bool foundValue = false; |
| 860 | switch (columnMode()) { |
| 861 | case ColumnMode::Double: { |
| 862 | foundValue = !std::isnan(doubleAt(row)); |
| 863 | break; |
| 864 | } |
| 865 | case ColumnMode::Text: { |
| 866 | foundValue = !textAt(row).isEmpty(); |
| 867 | break; |
| 868 | } |
| 869 | case ColumnMode::Integer: |
| 870 | case ColumnMode::BigInt: |
| 871 | // integer values are always valid |
| 872 | foundValue = true; |
| 873 | break; |
| 874 | case ColumnMode::DateTime: |
| 875 | case ColumnMode::Month: |
| 876 | case ColumnMode::Day: { |
| 877 | foundValue = dateTimeAt(row).isValid(); |
| 878 | break; |
| 879 | } |
| 880 | } |
| 881 | |
| 882 | return foundValue; |
| 883 | } |
| 884 | |
| 885 | /* |
| 886 | * set item at i to col[j] for same columnMode() |
no test coverage detected