Skip to content
Snippets Groups Projects
Commit 273f40d7 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Fix C++ syntax thanks to clang and simplify interface

Remove legacy "in code" output.
It is still possible to create output files directly from C++, but
quantities have to be added one by one, not at construction anymore.
parent 620c8a5b
Branches
Tags
1 merge request!145git subrepo clone git@gitlab.com:OlMon/org-themes.git packages/org-themes
......@@ -101,41 +101,6 @@ class OutputNamedItemDataSet
// provided order
std::vector<std::pair<std::string, ItemDataVariant>> m_name_itemvariant_list;
template <typename DataType,
ItemType item_type,
typename ConnectivityPtr,
template <typename DataTypeT, ItemType item_type_t, typename ConnectivityPtrT>
typename ItemDataT,
typename... Args>
PUGS_FORCEINLINE constexpr void
_doInsert(const NamedItemData<DataType, item_type, ConnectivityPtr, ItemDataT>& named_item_data)
{
for (auto& [name, itemvariant] : m_name_itemvariant_list) {
if (name == named_item_data.name()) {
std::ostringstream error_msg;
error_msg << "duplicate name '" << rang::fgB::yellow << name << rang::fg::reset << "' in name output list";
throw NormalError(error_msg.str());
}
}
m_name_itemvariant_list.push_back(std::make_pair(named_item_data.name(), named_item_data.itemData()));
}
template <typename DataType,
ItemType item_type,
typename ConnectivityPtr,
template <typename DataTypeT, ItemType item_type_t, typename ConnectivityPtrT>
typename ItemDataT,
typename... Args>
PUGS_FORCEINLINE constexpr void
_unpackVariadicInput(const NamedItemData<DataType, item_type, ConnectivityPtr, ItemDataT>& named_item_data,
Args&&... args)
{
_doInsert(named_item_data);
if constexpr (sizeof...(args) > 0) {
this->_unpackVariadicInput(std::forward<Args>(args)...);
}
}
public:
auto
begin() const
......@@ -157,17 +122,14 @@ class OutputNamedItemDataSet
void
add(const NamedItemData<DataType, item_type, ConnectivityPtr, ItemDataT>& named_item_data)
{
_doInsert(named_item_data);
for (auto& [name, itemvariant] : m_name_itemvariant_list) {
if (name == named_item_data.name()) {
std::ostringstream error_msg;
error_msg << "duplicate name '" << rang::fgB::yellow << name << rang::fg::reset << "' in name output list";
throw NormalError(error_msg.str());
}
template <typename... DataType,
ItemType... item_type,
typename... ConnectivityPtr,
template <typename DataTypeT, ItemType item_type_t, typename ConnectivityPtrT>
typename... ItemDataT>
OutputNamedItemDataSet(NamedItemData<DataType, item_type, ConnectivityPtr, ItemDataT>... named_item_data)
{
_unpackVariadicInput(named_item_data...);
}
m_name_itemvariant_list.push_back(std::make_pair(named_item_data.name(), named_item_data.itemData()));
}
OutputNamedItemDataSet(const OutputNamedItemDataSet&) = default;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment