History

TimeSeriesPlatformLibrary: Added CloneColumn and CloneRow functions to DataTable.

J. Ritchie Carroll committed 7 years ago

Commit bee65f51 parent 97023ee3 files · +79 −8Browse files

Showing the changes to Source/Libraries/TimeSeriesPlatformLibrary/Data/DataTable.cpp (1 of 3 files). Show all

Unified · Split

Source/Libraries/TimeSeriesPlatformLibrary/Data/DataTable.cpp+67−1
@@ -87,7 +87,12 @@ const DataColumnPtr& DataTable::operator[](int32_t index) const · 86 unmodified lines
8787
8888 DataColumnPtr DataTable::CreateColumn(const string& name, DataType type, string expression)
8989 {
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());
9196 }
9297
9398 int32_t DataTable::ColumnCount() const
@@ -113,6 +118,67 @@ DataRowPtr DataTable::CreateRow() · 19 unmodified lines
113118 return NewSharedPtr<DataRow, DataTablePtr>(shared_from_this());
114119 }
115120
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+
116182 int32_t DataTable::RowCount() const
117183 {
118184 return m_rows.size();

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t