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
87 87
88DataColumnPtr DataTable::CreateColumn(const string& name, DataType type, string expression)88DataColumnPtr 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
93DataColumnPtr DataTable::CloneColumn(const DataColumnPtr& source)
94{
95 return CreateColumn(source->Name(), source->Type(), source->Expression());
91}96}
92 97
93int32_t DataTable::ColumnCount() const98int32_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
121DataRowPtr 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
116int32_t DataTable::RowCount() const182int32_t DataTable::RowCount() const
117{183{
118 return m_rows.size();184 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