Showing the changes to Source/Libraries/TimeSeriesPlatformLibrary/Data/DataTable.cpp (1 of 3 files). Show all
Unified · Split
| @@ -87,7 +87,12 @@ const DataColumnPtr& DataTable::operator[](int32_t index) const · 86 unmodified lines | |||
| 87 | 87 | ||
| 88 | DataColumnPtr DataTable::CreateColumn(const string& name, DataType type, string expression) | 88 | DataColumnPtr DataTable::CreateColumn(const string& name, DataType type, string expression) |
| 89 | { | 89 | { |
| 90 | return NewSharedPtr<DataColumn, DataTablePtr, string, DataType>(shared_from_this(), name, type, expression); | 90 | return NewSharedPtr<DataColumn, DataTablePtr, string, DataType>(shared_from_this(), name, type, std::move(expression)); |
| 91 | } | ||
| 92 | |||
| 93 | DataColumnPtr DataTable::CloneColumn(const DataColumnPtr& source) | ||
| 94 | { | ||
| 95 | return CreateColumn(source->Name(), source->Type(), source->Expression()); | ||
| 91 | } | 96 | } |
| 92 | 97 | ||
| 93 | int32_t DataTable::ColumnCount() const | 98 | int32_t DataTable::ColumnCount() const |
| @@ -113,6 +118,67 @@ DataRowPtr DataTable::CreateRow() · 19 unmodified lines | |||
| 113 | return NewSharedPtr<DataRow, DataTablePtr>(shared_from_this()); | 118 | return NewSharedPtr<DataRow, DataTablePtr>(shared_from_this()); |
| 114 | } | 119 | } |
| 115 | 120 | ||
| 121 | DataRowPtr DataTable::CloneRow(const DataRowPtr& source) | ||
| 122 | { | ||
| 123 | DataRowPtr row = CreateRow(); | ||
| 124 | |||
| 125 | for (size_t i = 0; i < m_columns.size(); i++) | ||
| 126 | { | ||
| 127 | switch (m_columns[i]->m_type) | ||
| 128 | { | ||
| 129 | case DataType::String: | ||
| 130 | row->SetStringValue(i, source->ValueAsString(i)); | ||
| 131 | break; | ||
| 132 | case DataType::Boolean: | ||
| 133 | row->SetBooleanValue(i, source->ValueAsBoolean(i)); | ||
| 134 | break; | ||
| 135 | case DataType::DateTime: | ||
| 136 | row->SetDateTimeValue(i, source->ValueAsDateTime(i)); | ||
| 137 | break; | ||
| 138 | case DataType::Single: | ||
| 139 | row->SetSingleValue(i, source->ValueAsSingle(i)); | ||
| 140 | break; | ||
| 141 | case DataType::Double: | ||
| 142 | row->SetDoubleValue(i, source->ValueAsDouble(i)); | ||
| 143 | break; | ||
| 144 | case DataType::Decimal: | ||
| 145 | row->SetDecimalValue(i, source->ValueAsDecimal(i)); | ||
| 146 | break; | ||
| 147 | case DataType::Guid: | ||
| 148 | row->SetGuidValue(i, source->ValueAsGuid(i)); | ||
| 149 | break; | ||
| 150 | case DataType::Int8: | ||
| 151 | row->SetInt8Value(i, source->ValueAsInt8(i)); | ||
| 152 | break; | ||
| 153 | case DataType::Int16: | ||
| 154 | row->SetInt16Value(i, source->ValueAsInt16(i)); | ||
| 155 | break; | ||
| 156 | case DataType::Int32: | ||
| 157 | row->SetInt32Value(i, source->ValueAsInt32(i)); | ||
| 158 | break; | ||
| 159 | case DataType::Int64: | ||
| 160 | row->SetInt64Value(i, source->ValueAsInt64(i)); | ||
| 161 | break; | ||
| 162 | case DataType::UInt8: | ||
| 163 | row->SetUInt8Value(i, source->ValueAsUInt8(i)); | ||
| 164 | break; | ||
| 165 | case DataType::UInt16: | ||
| 166 | row->SetUInt16Value(i, source->ValueAsUInt16(i)); | ||
| 167 | break; | ||
| 168 | case DataType::UInt32: | ||
| 169 | row->SetUInt32Value(i, source->ValueAsUInt32(i)); | ||
| 170 | break; | ||
| 171 | case DataType::UInt64: | ||
| 172 | row->SetUInt64Value(i, source->ValueAsUInt64(i)); | ||
| 173 | break; | ||
| 174 | default: | ||
| 175 | throw DataSetException("Unexpected column data type encountered"); | ||
| 176 | } | ||
| 177 | } | ||
| 178 | |||
| 179 | return row; | ||
| 180 | } | ||
| 181 | |||
| 116 | int32_t DataTable::RowCount() const | 182 | int32_t DataTable::RowCount() const |
| 117 | { | 183 | { |
| 118 | return m_rows.size(); | 184 | return m_rows.size(); |