| 41 | { |
| 42 | |
| 43 | class DelimitedTextIterator : public vtkTextCodec::OutputIterator |
| 44 | { |
| 45 | public: |
| 46 | typedef std::forward_iterator_tag iterator_category; |
| 47 | typedef vtkTypeUInt32 value_type; |
| 48 | typedef std::string::difference_type difference_type; |
| 49 | typedef value_type* pointer; |
| 50 | typedef value_type& reference; |
| 51 | |
| 52 | DelimitedTextIterator(vtkTable* outputTable, vtkIdType maxRecords, vtkIdType headerLines, |
| 53 | vtkIdType columnHeadersOnLine, vtkIdType skipColumnNames) |
| 54 | : MaxRecords(maxRecords) |
| 55 | // first two lines are title + column names |
| 56 | , MaxRecordIndex(maxRecords + headerLines) |
| 57 | , WhiteSpaceOnlyString(true) |
| 58 | , OutputTable(outputTable) |
| 59 | , CurrentRecordIndex(0) |
| 60 | , CurrentFieldIndex(0) |
| 61 | , HeaderLines(headerLines) |
| 62 | , ColumnNamesOnLine(columnHeadersOnLine) |
| 63 | , SkipColumnNames(skipColumnNames) |
| 64 | , RecordAdjacent(true) |
| 65 | , MergeConsDelims(true) |
| 66 | , ProcessEscapeSequence(false) |
| 67 | , UseStringDelimiter(true) |
| 68 | , WithinString(0) |
| 69 | { |
| 70 | // how records (e.g. lines) are separated |
| 71 | RecordDelimiters.insert('\n'); |
| 72 | RecordDelimiters.insert('\r'); |
| 73 | |
| 74 | // how fields (e.g. entries) are separated |
| 75 | FieldDelimiters.insert(' '); |
| 76 | FieldDelimiters.insert('\t'); |
| 77 | |
| 78 | // how string entries are separated |
| 79 | StringDelimiters.insert('"'); |
| 80 | StringDelimiters.insert(' '); |
| 81 | |
| 82 | // what is whitespace |
| 83 | Whitespace.insert(' '); |
| 84 | Whitespace.insert('\t'); |
| 85 | } |
| 86 | |
| 87 | ~DelimitedTextIterator() override |
| 88 | { |
| 89 | // Ensure that all table columns have the same length ... |
| 90 | for (vtkIdType i = 0; i != this->OutputTable->GetNumberOfColumns(); ++i) |
| 91 | { |
| 92 | if (this->OutputTable->GetColumn(i)->GetNumberOfTuples() != |
| 93 | this->OutputTable->GetColumn(0)->GetNumberOfTuples()) |
| 94 | { |
| 95 | this->OutputTable->GetColumn(i)->Resize( |
| 96 | this->OutputTable->GetColumn(0)->GetNumberOfTuples()); |
| 97 | } |
| 98 | } |
| 99 | } |
| 100 |
nothing calls this directly
no test coverage detected