本文整理汇总了C++中ITableWorkspace_sptr::setRowCount方法的典型用法代码示例。如果您正苦于以下问题:C++ ITableWorkspace_sptr::setRowCount方法的具体用法?C++ ITableWorkspace_sptr::setRowCount怎么用?C++ ITableWorkspace_sptr::setRowCount使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ITableWorkspace_sptr
的用法示例。
在下文中一共展示了ITableWorkspace_sptr::setRowCount方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createOutputWorkspace
Workspace_sptr GeneralDomainCreator::createOutputWorkspace(
const std::string &baseName, IFunction_sptr function,
boost::shared_ptr<FunctionDomain> domain,
boost::shared_ptr<FunctionValues> values,
const std::string &outputWorkspacePropertyName) {
if (function->getValuesSize(*domain) != values->size()) {
throw std::runtime_error("Failed to create output workspace: domain and "
"values object don't match.");
}
size_t rowCount = domain->size();
if (rowCount == 0) {
auto &generalFunction = dynamic_cast<IFunctionGeneral &>(*function);
rowCount = generalFunction.getDefaultDomainSize();
}
ITableWorkspace_sptr outputWorkspace;
auto inputWorkspace = getInputWorkspace();
// Clone the data and domain columns from inputWorkspace to outputWorkspace.
if (inputWorkspace) {
// Collect the names of columns to clone
std::vector<std::string> columnsToClone;
for (auto &propName : m_domainColumnNames) {
auto columnName = m_manager->getPropertyValue(propName);
columnsToClone.push_back(columnName);
}
for (auto &propName : m_dataColumnNames) {
auto columnName = m_manager->getPropertyValue(propName);
columnsToClone.push_back(columnName);
}
outputWorkspace = inputWorkspace->cloneColumns(columnsToClone);
if (rowCount != outputWorkspace->rowCount()) {
throw std::runtime_error("Cloned workspace has wrong number of rows.");
}
// Add columns with the calculated data
size_t i0 = 0;
for (auto &propName : m_dataColumnNames) {
auto dataColumnName = m_manager->getPropertyValue(propName);
auto calcColumnName = dataColumnName + "_calc";
auto column = outputWorkspace->addColumn("double", calcColumnName);
for (size_t row = 0; row < rowCount; ++row) {
auto value = values->getCalculated(i0 + row);
column->fromDouble(row, value);
}
i0 += rowCount;
}
} else {
outputWorkspace = API::WorkspaceFactory::Instance().createTable();
outputWorkspace->setRowCount(rowCount);
size_t i0 = 0;
for (auto &propName : m_dataColumnNames) {
auto calcColumnName = m_manager->getPropertyValue(propName);
if (calcColumnName.empty()) {
calcColumnName = propName;
}
auto column = outputWorkspace->addColumn("double", calcColumnName);
for (size_t row = 0; row < rowCount; ++row) {
auto value = values->getCalculated(i0 + row);
column->fromDouble(row, value);
}
i0 += rowCount;
}
}
if (!outputWorkspacePropertyName.empty()) {
declareProperty(
new API::WorkspaceProperty<API::ITableWorkspace>(
outputWorkspacePropertyName, "", Kernel::Direction::Output),
"Name of the output Workspace holding resulting simulated values");
m_manager->setPropertyValue(outputWorkspacePropertyName,
baseName + "Workspace");
m_manager->setProperty(outputWorkspacePropertyName, outputWorkspace);
}
return outputWorkspace;
}