diff --git a/packages/seacas/applications/epu/epu.C b/packages/seacas/applications/epu/epu.C index 79134fd827..dd5d6cdae1 100644 --- a/packages/seacas/applications/epu/epu.C +++ b/packages/seacas/applications/epu/epu.C @@ -1452,13 +1452,14 @@ int epu(SystemInterface &interFace, int start_part, int part_count, int cycle, T } for (int ig = 0; ig < global_vars.count(InOut::IN); ig++) { if (proc_global_values[ig] != global_values[ig]) { - fmt::print(stderr, - fmt::runtime("At step {:{}}, Global Variable {:{}}, P{:0{}} = {:15.8g}, P{:0{}} = " - "{:15.8g}\n"), - time_step + 1, ts_max + 1, ig + 1, - get_width(global_vars.count(InOut::IN)), start_part, - get_width(interFace.processor_count()), start_part + p, - get_width(interFace.processor_count()), proc_global_values[ig]); + fmt::print( + stderr, + fmt::runtime( + "At step {:{}}, Global Variable {:{}}, P{:0{}} = {:15.8g}, P{:0{}} = " + "{:15.8g}\n"), + time_step + 1, ts_max + 1, ig + 1, get_width(global_vars.count(InOut::IN)), + start_part, get_width(interFace.processor_count()), start_part + p, + get_width(interFace.processor_count()), proc_global_values[ig]); } } } diff --git a/packages/seacas/applications/exodiff/edge_block.C b/packages/seacas/applications/exodiff/edge_block.C index 6696ecdf98..afc198e2e2 100644 --- a/packages/seacas/applications/exodiff/edge_block.C +++ b/packages/seacas/applications/exodiff/edge_block.C @@ -50,12 +50,13 @@ template void Edge_Block::entity_load_params() if (num_edges_per_elmt < 0 || num_attr < 0) { Error(fmt::format( - fmt::runtime("Edge_Block::entity_load_params(): Data appears corrupt for edge block {}!\n" - "\tnum elmts = {}\n" - "\tnum edges per elmt = {}\n" - "\tnum attributes = {}\n" - " ... Aborting...\n"), - fmt::group_digits(numEntity), num_edges_per_elmt, num_attr)); + fmt::runtime( + "Edge_Block::entity_load_params(): Data appears corrupt for edge block {}!\n" + "\tnum elmts = {}\n" + "\tnum edges per elmt = {}\n" + "\tnum attributes = {}\n" + " ... Aborting...\n"), + fmt::group_digits(numEntity), num_edges_per_elmt, num_attr)); } } diff --git a/packages/seacas/applications/exodiff/exo_block.C b/packages/seacas/applications/exodiff/exo_block.C index 4eb93464c7..072936673a 100644 --- a/packages/seacas/applications/exodiff/exo_block.C +++ b/packages/seacas/applications/exodiff/exo_block.C @@ -53,12 +53,13 @@ template void Exo_Block::entity_load_params() elmt_type = block.topology; if (num_nodes_per_elmt < 0 || num_attr < 0) { - Error(fmt::format(fmt::runtime("Exo_Block::entity_load_params(): Data appears corrupt for block {}!\n" - "\tnum elmts = {}\n" - "\tnum nodes per elmt = {}\n" - "\tnum attributes = {}\n" - " ... Aborting...\n"), - fmt::group_digits(numEntity), num_nodes_per_elmt, num_attr)); + Error(fmt::format( + fmt::runtime("Exo_Block::entity_load_params(): Data appears corrupt for block {}!\n" + "\tnum elmts = {}\n" + "\tnum nodes per elmt = {}\n" + "\tnum attributes = {}\n" + " ... Aborting...\n"), + fmt::group_digits(numEntity), num_nodes_per_elmt, num_attr)); } } diff --git a/packages/seacas/applications/exodiff/face_block.C b/packages/seacas/applications/exodiff/face_block.C index d8d8b7a21f..ed1d6ebe23 100644 --- a/packages/seacas/applications/exodiff/face_block.C +++ b/packages/seacas/applications/exodiff/face_block.C @@ -50,11 +50,12 @@ template void Face_Block::entity_load_params() if (num_faces_per_elmt < 0 || num_attr < 0) { Error(fmt::format( - fmt::runtime("Face_Block::entity_load_params(): Data appears corrupt for face block {}!\n" - "\tnum elmts = {}\n" - "\tnum faces per elmt = {}\n" - "\tnum attributes = {}\n" - " ... Aborting...\n"), + fmt::runtime( + "Face_Block::entity_load_params(): Data appears corrupt for face block {}!\n" + "\tnum elmts = {}\n" + "\tnum faces per elmt = {}\n" + "\tnum attributes = {}\n" + " ... Aborting...\n"), fmt::group_digits(numEntity), num_faces_per_elmt, num_attr)); } } diff --git a/packages/seacas/applications/exomatlab/exomatlab.C b/packages/seacas/applications/exomatlab/exomatlab.C index 5afd22d835..ddc61e4eb6 100644 --- a/packages/seacas/applications/exomatlab/exomatlab.C +++ b/packages/seacas/applications/exomatlab/exomatlab.C @@ -51,7 +51,7 @@ namespace { // ======================================================================== namespace { - std::string codename; + std::string codename; } // namespace int main(int argc, char *argv[]) diff --git a/packages/seacas/libraries/ioss/src/Ioss_Utils.C b/packages/seacas/libraries/ioss/src/Ioss_Utils.C index 3e23ae9f25..2e2257fd7b 100644 --- a/packages/seacas/libraries/ioss/src/Ioss_Utils.C +++ b/packages/seacas/libraries/ioss/src/Ioss_Utils.C @@ -940,9 +940,10 @@ void Ioss::Utils::calculate_sideblock_membership(IntVector &face_is_ } } -int64_t Ioss::Utils::get_side_offset(const Ioss::ElementTopology * parent_topo, const Ioss::ElementTopology * side_topo) +int64_t Ioss::Utils::get_side_offset(const Ioss::ElementTopology *parent_topo, + const Ioss::ElementTopology *side_topo) { - int64_t side_offset = 0; + int64_t side_offset = 0; if ((side_topo != nullptr) && (parent_topo != nullptr)) { int side_topo_dim = side_topo->parametric_dimension(); int elem_topo_dim = parent_topo->parametric_dimension(); diff --git a/packages/seacas/libraries/ioss/src/Ioss_Utils.h b/packages/seacas/libraries/ioss/src/Ioss_Utils.h index a805262806..97a6e12a1c 100644 --- a/packages/seacas/libraries/ioss/src/Ioss_Utils.h +++ b/packages/seacas/libraries/ioss/src/Ioss_Utils.h @@ -500,7 +500,8 @@ namespace Ioss { * \param[in] sb Compute the offset for element sides in this SideBlock * \returns The offset. */ - IOSS_NODISCARD static int64_t get_side_offset(const Ioss::ElementTopology * parent_topo, const Ioss::ElementTopology * side_topo); + IOSS_NODISCARD static int64_t get_side_offset(const Ioss::ElementTopology *parent_topo, + const Ioss::ElementTopology *side_topo); IOSS_NODISCARD static int64_t get_side_offset(const Ioss::SideBlock *sb); diff --git a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMesh.C b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMesh.C index b5c5ab8bbb..b705a791ea 100644 --- a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMesh.C +++ b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMesh.C @@ -291,24 +291,24 @@ namespace Iocatalyst { return (extents.i + offset) * (extents.j + offset) * (extents.k + offset); } - std::map* BlockMesh::getTransientCellFieldMap() + std::map *BlockMesh::getTransientCellFieldMap() { return &(this->transientCellFields); } - std::map* BlockMesh::getTransientPointFieldMap() + std::map *BlockMesh::getTransientPointFieldMap() { return &(this->transientPointFields); } void BlockMesh::addTransientCellField(std::string f_name, double f_value) { - this->transientCellFields.insert({ f_name, f_value }); + this->transientCellFields.insert({f_name, f_value}); } void BlockMesh::addTransientPointField(std::string f_name, double f_value) { - this->transientPointFields.insert({ f_name, f_value }); + this->transientPointFields.insert({f_name, f_value}); } } // namespace Iocatalyst diff --git a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMesh.h b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMesh.h index ba5c4caa21..f2ff3ce0f1 100644 --- a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMesh.h +++ b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMesh.h @@ -82,11 +82,11 @@ namespace Iocatalyst { static Extent getCoordsForID(ID id, Extent bounds); static ID getIDfromCoords(Extent coords, Extent bounds); - void addTransientCellField(std::string f_name, double f_value); - void addTransientPointField(std::string f_name, double f_value); + void addTransientCellField(std::string f_name, double f_value); + void addTransientPointField(std::string f_name, double f_value); - std::map* getTransientCellFieldMap(); - std::map* getTransientPointFieldMap(); + std::map *getTransientCellFieldMap(); + std::map *getTransientPointFieldMap(); private: Partition partition; diff --git a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSet.C b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSet.C index 9a7d870851..1107360638 100644 --- a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSet.C +++ b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSet.C @@ -12,8 +12,8 @@ #include #include #include -#include #include +#include #include #include @@ -41,12 +41,12 @@ namespace Iocatalyst { CatalystManager::getInstance().reset(); iop.isCatalyst = true; - //Cat Writes + // Cat Writes writeIOSSFile(iop); Ioss::PropertyManager cdbProps = Ioss::PropertyManager(iop.dbProps); cdbProps.add(Ioss::Property("CATALYST_CONDUIT_NODE", iop.getCatalystConduitNode())); - //Cat Reads here + // Cat Reads here Ioss::DatabaseIO *cdbi = Ioss::IOFactory::create(CATALYST_DATABASE_TYPE, CATALYST_DUMMY_DATABASE, Ioss::READ_RESTART, Ioss::ParallelUtils::comm_world(), cdbProps); @@ -70,20 +70,20 @@ namespace Iocatalyst { Ioss::copy_database(cir, cor, options); } - Ioss::DatabaseIO* BlockMeshSet::getCatalystDatabase(IOSSparams &iop) + Ioss::DatabaseIO *BlockMeshSet::getCatalystDatabase(IOSSparams &iop) { CatalystManager::getInstance().reset(); iop.isCatalyst = true; - - //Write to Cat database + + // Write to Cat database writeIOSSFile(iop); Ioss::PropertyManager cdbProps = Ioss::PropertyManager(iop.dbProps); - //Get Conduit + // Get Conduit cdbProps.add(Ioss::Property("CATALYST_CONDUIT_NODE", iop.getCatalystConduitNode())); - //Read to Cat Database + // Read to Cat Database Ioss::DatabaseIO *cdbi = Ioss::IOFactory::create(CATALYST_DATABASE_TYPE, CATALYST_DUMMY_DATABASE, Ioss::READ_RESTART, Ioss::ParallelUtils::comm_world(), cdbProps); @@ -107,7 +107,7 @@ namespace Iocatalyst { void BlockMeshSet::openIOSSDatabase(IOSSparams &iop) { Ioss::PropertyManager properties = Ioss::PropertyManager(iop.dbProps); - std::string dbType = iop.dbType; + std::string dbType = iop.dbType; if (iop.isCatalyst) { dbType = CATALYST_DATABASE_TYPE; } @@ -258,7 +258,8 @@ namespace Iocatalyst { void BlockMeshSet::writeStructuredTransientFieldDefinitions(IOSSparams &iop) { for (auto bm : bms) { - //Modify this to access field dict in "bm" and populate ioss block with those fields (as well). + // Modify this to access field dict in "bm" and populate ioss block with those fields (as + // well). auto iossBlock = iop.region->get_structured_block(getStructuredBlockName(bm.getID())); iossBlock->field_add(Ioss::Field(IOSS_CELL_FIELD, Ioss::Field::REAL, IOSS_SCALAR_STORAGE, Ioss::Field::TRANSIENT)); @@ -359,7 +360,7 @@ namespace Iocatalyst { auto nodeBlock = iop.region->get_node_block("nodeblock"); nodeBlock->field_add(Ioss::Field(IOSS_POINT_FIELD, Ioss::Field::REAL, IOSS_SCALAR_STORAGE, Ioss::Field::TRANSIENT)); - + writeUnstructuredAddedTransientFields(bm, iop); } } @@ -373,23 +374,21 @@ namespace Iocatalyst { void BlockMeshSet::writeUnstructuredAddedCellTransientFields(BlockMesh bm, IOSSparams &iop) { auto cell_fields = bm.getTransientCellFieldMap(); - auto elemBlock = iop.region->get_element_block(getUnstructuredBlockName(bm.getID())); - for (auto itr = cell_fields->begin(); itr != cell_fields->end(); ++itr) - { - elemBlock->field_add(Ioss::Field(itr->first, Ioss::Field::REAL, IOSS_SCALAR_STORAGE, - Ioss::Field::TRANSIENT)); - } + auto elemBlock = iop.region->get_element_block(getUnstructuredBlockName(bm.getID())); + for (auto itr = cell_fields->begin(); itr != cell_fields->end(); ++itr) { + elemBlock->field_add( + Ioss::Field(itr->first, Ioss::Field::REAL, IOSS_SCALAR_STORAGE, Ioss::Field::TRANSIENT)); + } } void BlockMeshSet::writeUnstructuredAddedPointTransientFields(BlockMesh bm, IOSSparams &iop) { auto point_fields = bm.getTransientPointFieldMap(); - auto nodeBlock = iop.region->get_node_block("nodeblock"); - for (auto itr = point_fields->begin(); itr != point_fields->end(); ++itr) - { - nodeBlock->field_add(Ioss::Field(itr->first, Ioss::Field::REAL, IOSS_SCALAR_STORAGE, - Ioss::Field::TRANSIENT)); - } + auto nodeBlock = iop.region->get_node_block("nodeblock"); + for (auto itr = point_fields->begin(); itr != point_fields->end(); ++itr) { + nodeBlock->field_add( + Ioss::Field(itr->first, Ioss::Field::REAL, IOSS_SCALAR_STORAGE, Ioss::Field::TRANSIENT)); + } } void BlockMeshSet::writeUnstructuredTransientBulkData(IOSSparams &iop) @@ -422,36 +421,36 @@ namespace Iocatalyst { writeUnstructuredAddedPointTransientFieldsBulkData(bm, iop); } - void BlockMeshSet::writeUnstructuredAddedCellTransientFieldsBulkData(BlockMesh bm, IOSSparams &iop) + void BlockMeshSet::writeUnstructuredAddedCellTransientFieldsBulkData(BlockMesh bm, + IOSSparams &iop) { auto cell_fields = bm.getTransientCellFieldMap(); - auto elemBlock = iop.region->get_element_block(getUnstructuredBlockName(bm.getID())); + auto elemBlock = iop.region->get_element_block(getUnstructuredBlockName(bm.getID())); std::vector values; - for (auto itr = cell_fields->begin(); itr != cell_fields->end(); ++itr) - { + for (auto itr = cell_fields->begin(); itr != cell_fields->end(); ++itr) { int num_elements = elemBlock->get_field(itr->first).raw_count(); for (int j = 0; j < num_elements; j++) { - values.push_back(itr->second + j*0.1); + values.push_back(itr->second + j * 0.1); } elemBlock->put_field_data(itr->first, values); values.clear(); - } + } } - void BlockMeshSet::writeUnstructuredAddedPointTransientFieldsBulkData(BlockMesh bm, IOSSparams &iop) + void BlockMeshSet::writeUnstructuredAddedPointTransientFieldsBulkData(BlockMesh bm, + IOSSparams &iop) { - auto point_fields = bm.getTransientPointFieldMap(); - auto nodeBlock = iop.region->get_node_block("nodeblock"); + auto point_fields = bm.getTransientPointFieldMap(); + auto nodeBlock = iop.region->get_node_block("nodeblock"); std::vector values; - for (auto itr = point_fields->begin(); itr != point_fields->end(); ++itr) - { + for (auto itr = point_fields->begin(); itr != point_fields->end(); ++itr) { int num_nodes = nodeBlock->get_field(itr->first).raw_count(); for (int j = 0; j < num_nodes; j++) { - values.push_back(itr->second + j*0.1); + values.push_back(itr->second + j * 0.1); } nodeBlock->put_field_data(itr->first, values); values.clear(); - } + } } std::string BlockMeshSet::getStructuredBlockName(int index) diff --git a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSet.h b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSet.h index bc98721fe3..6e84a0fe55 100644 --- a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSet.h +++ b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSet.h @@ -26,8 +26,10 @@ namespace Iocatalyst { class IOSSparams { public: - IOSSparams(const std::string &fileName, const std::string &dbType, Ioss::PropertyManager dbProps = {}) - : fileName(fileName), dbType(dbType), databaseIO(nullptr), isCatalyst(false), dbProps(dbProps) + IOSSparams(const std::string &fileName, const std::string &dbType, + Ioss::PropertyManager dbProps = {}) + : fileName(fileName), dbType(dbType), databaseIO(nullptr), isCatalyst(false), + dbProps(dbProps) { } bool isStructured() { return dbType == CGNS_DATABASE_TYPE; } @@ -45,12 +47,12 @@ namespace Iocatalyst { IOSSparams(); }; - void addBlockMesh(const BlockMesh &blockMesh); - void writeIOSSFile(IOSSparams &iop); - void writeCatalystIOSSFile(IOSSparams &iop); - Ioss::DatabaseIO* getCatalystDatabase(IOSSparams &iop); - - int getNumLocalPointsInMeshSet(); + void addBlockMesh(const BlockMesh &blockMesh); + void writeIOSSFile(IOSSparams &iop); + void writeCatalystIOSSFile(IOSSparams &iop); + Ioss::DatabaseIO *getCatalystDatabase(IOSSparams &iop); + + int getNumLocalPointsInMeshSet(); std::string getStructuredBlockName(int index); std::string getStructuredNodeBlockName(int index); diff --git a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSetTest.C b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSetTest.C index 98b155b038..89accb1eb4 100644 --- a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSetTest.C +++ b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_BlockMeshSetTest.C @@ -43,8 +43,8 @@ TEST_F(Iocatalyst_DatabaseIOTest, AddTransientFieldToBlockMesh) addBlockMesh(bmOne); - std::string exodusFileName = - "AddTransientFieldToBlockMesh" + CATALYST_TEST_FILE_NP + std::to_string(part.size) + EXODUS_FILE_EXTENSION; + std::string exodusFileName = "AddTransientFieldToBlockMesh" + CATALYST_TEST_FILE_NP + + std::to_string(part.size) + EXODUS_FILE_EXTENSION; Iocatalyst::BlockMeshSet::IOSSparams iop(exodusFileName, EXODUS_DATABASE_TYPE); bmSet.writeIOSSFile(iop); } \ No newline at end of file diff --git a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_ConduitReadTest.C b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_ConduitReadTest.C index e8a35adc6c..bd730d7a65 100644 --- a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_ConduitReadTest.C +++ b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_ConduitReadTest.C @@ -122,7 +122,6 @@ TEST_F(Iocatalyst_DatabaseIOTest, CellIdsAndCellNodeIds) EXPECT_EQ(cidBuff[0], 1); EXPECT_EQ(cidBuff[cids.raw_count() - 1], 256); - auto cnids = sb->get_fieldref("cell_node_ids"); EXPECT_TRUE(cnids.get_type() == Ioss::Field::INTEGER); std::vector cnidsBuff(cnids.raw_count()); diff --git a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_DatabaseIOTest.C b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_DatabaseIOTest.C index ac2bafb855..d1efac0b9f 100644 --- a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_DatabaseIOTest.C +++ b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_DatabaseIOTest.C @@ -196,11 +196,11 @@ Iocatalyst_DatabaseIOTest::getCatalystDatabaseFromConduit(conduit_cpp::Node & Ioss::DatabaseIO *Iocatalyst_DatabaseIOTest::getDatabaseOnReadFromFileName( const std::string &fileName, const std::string &iossDatabaseType, Ioss::PropertyManager dbProps) { - Ioss::PropertyManager dbaseProps = Ioss::PropertyManager(dbProps); - auto inputFileName = fileName; - Ioss::ParallelUtils pu; - int numRanks = pu.parallel_size(); - int rank = pu.parallel_rank(); + Ioss::PropertyManager dbaseProps = Ioss::PropertyManager(dbProps); + auto inputFileName = fileName; + Ioss::ParallelUtils pu; + int numRanks = pu.parallel_size(); + int rank = pu.parallel_rank(); if (iossDatabaseType == EXODUS_DATABASE_TYPE && numRanks > 1) { inputFileName += "." + std::to_string(numRanks) + "." + std::to_string(rank); } diff --git a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_ElementBlockTest.C b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_ElementBlockTest.C index 9c8fec4c2d..e4f6fd8ebe 100644 --- a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_ElementBlockTest.C +++ b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_ElementBlockTest.C @@ -12,11 +12,9 @@ #include #include #include +#include #include #include -#include - - TEST_F(Iocatalyst_DatabaseIOTest, WriteThreeElementBlocksWith24Cells) { @@ -81,22 +79,24 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_ENABLE_FIELD_RECOGNITION_ON) bm.addTransientCellField("foo_y", 3); bm.addTransientCellField("foo_z", 4); - addBlockMesh(bm); Ioss::PropertyManager iossProp; iossProp.add(Ioss::Property("ENABLE_FIELD_RECOGNITION", "ON")); - Ioss::DatabaseIO *exo_d = writeAndGetExodusDatabaseOnRead("test_eb_1_enable_field_recog", iossProp); + Ioss::DatabaseIO *exo_d = + writeAndGetExodusDatabaseOnRead("test_eb_1_enable_field_recog", iossProp); Iocatalyst::BlockMeshSet::IOSSparams iop("cat", EXODUS_DATABASE_TYPE, iossProp); Ioss::DatabaseIO *cat_d = bmSet.getCatalystDatabase(iop); - if(cat_d == nullptr){ EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; } + if (cat_d == nullptr) { + EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; + } Ioss::Region cat_reg(cat_d); - + Ioss::Region exo_reg(exo_d); - + auto cat_elemBlock = cat_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); auto exo_elemBlock = exo_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); @@ -106,28 +106,28 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_ENABLE_FIELD_RECOGNITION_ON) bool cat_foo_exists = cat_elemBlock->field_exists("foo"); EXPECT_TRUE(exo_foo_exists); EXPECT_TRUE(cat_foo_exists); - if(exo_foo_exists && cat_foo_exists) + if (exo_foo_exists && cat_foo_exists) EXPECT_TRUE(exo_elemBlock->get_field("foo") == cat_elemBlock->get_field("foo")); - - //Check field data for equality - auto cat_field = cat_elemBlock->get_fieldref("foo"); + + // Check field data for equality + auto cat_field = cat_elemBlock->get_fieldref("foo"); std::vector dcBuffer(cat_field.get_size()); cat_elemBlock->get_field_data("foo", Data(dcBuffer), dcBuffer.size()); exo_reg.begin_state(1); - auto exo_field = exo_elemBlock->get_fieldref("foo"); + auto exo_field = exo_elemBlock->get_fieldref("foo"); std::vector deBuffer(exo_field.get_size()); exo_elemBlock->get_field_data("foo", Data(deBuffer), deBuffer.size()); EXPECT_EQ(dcBuffer, deBuffer); - //Check foo_x doesn't exist + // Check foo_x doesn't exist bool exo_foo_x_exists = exo_elemBlock->field_exists("foo_x"); bool cat_foo_x_exists = cat_elemBlock->field_exists("foo_x"); EXPECT_FALSE(exo_foo_x_exists); EXPECT_FALSE(cat_foo_x_exists); } -//Sanity Test +// Sanity Test TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_ENABLE_FIELD_RECOGNITION_OFF) { Iocatalyst::BlockMesh bm; @@ -137,22 +137,24 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_ENABLE_FIELD_RECOGNITION_OFF) bm.addTransientCellField("foo_y", 3); bm.addTransientCellField("foo_z", 4); - addBlockMesh(bm); Ioss::PropertyManager iossProp; iossProp.add(Ioss::Property("ENABLE_FIELD_RECOGNITION", "OFF")); - Ioss::DatabaseIO *exo_d = writeAndGetExodusDatabaseOnRead("test_eb_1_enable_field_recog", iossProp); - + Ioss::DatabaseIO *exo_d = + writeAndGetExodusDatabaseOnRead("test_eb_1_enable_field_recog", iossProp); + Iocatalyst::BlockMeshSet::IOSSparams iop("cat", EXODUS_DATABASE_TYPE, iossProp); Ioss::DatabaseIO *cat_d = bmSet.getCatalystDatabase(iop); - if(cat_d == nullptr){ EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; } + if (cat_d == nullptr) { + EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; + } Ioss::Region cat_reg(cat_d); - + Ioss::Region exo_reg(exo_d); - + auto cat_elemBlock = cat_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); auto exo_elemBlock = exo_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); @@ -162,12 +164,10 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_ENABLE_FIELD_RECOGNITION_OFF) bool cat_foo_x_exists = cat_elemBlock->field_exists("foo_x"); EXPECT_TRUE(exo_foo_x_exists); EXPECT_TRUE(cat_foo_x_exists); - if(exo_foo_x_exists && cat_foo_x_exists) + if (exo_foo_x_exists && cat_foo_x_exists) EXPECT_TRUE(exo_elemBlock->get_field("foo_x") == cat_elemBlock->get_field("foo_x")); - } - TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_IGNORE_REALN_FIELDS_ON) { Iocatalyst::BlockMesh bm; @@ -177,22 +177,24 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_IGNORE_REALN_FIELDS_ON) bm.addTransientCellField("foo_2", 3); bm.addTransientCellField("foo_3", 4); - addBlockMesh(bm); Ioss::PropertyManager iossProp; iossProp.add(Ioss::Property("IGNORE_REALN_FIELDS", "ON")); - Ioss::DatabaseIO *exo_d = writeAndGetExodusDatabaseOnRead("test_eb_1_ignore_realn_fields", iossProp); + Ioss::DatabaseIO *exo_d = + writeAndGetExodusDatabaseOnRead("test_eb_1_ignore_realn_fields", iossProp); Iocatalyst::BlockMeshSet::IOSSparams iop("cat", EXODUS_DATABASE_TYPE, iossProp); Ioss::DatabaseIO *cat_d = bmSet.getCatalystDatabase(iop); - if(cat_d == nullptr){ EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; } + if (cat_d == nullptr) { + EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; + } Ioss::Region cat_reg(cat_d); - + Ioss::Region exo_reg(exo_d); - + auto cat_elemBlock = cat_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); auto exo_elemBlock = exo_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); @@ -202,9 +204,8 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_IGNORE_REALN_FIELDS_ON) bool cat_foo_1_exists = cat_elemBlock->field_exists("foo_1"); EXPECT_TRUE(exo_foo_1_exists); EXPECT_TRUE(cat_foo_1_exists); - if(exo_foo_1_exists && cat_foo_1_exists) + if (exo_foo_1_exists && cat_foo_1_exists) EXPECT_TRUE(exo_elemBlock->get_field("foo_1") == cat_elemBlock->get_field("foo_1")); - } TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_IGNORE_REALN_FIELDS_OFF) @@ -216,22 +217,24 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_IGNORE_REALN_FIELDS_OFF) bm.addTransientCellField("foo_2", 2); bm.addTransientCellField("foo_3", 4); - addBlockMesh(bm); Ioss::PropertyManager iossProp; iossProp.add(Ioss::Property("IGNORE_REALN_FIELDS", "OFF")); - Ioss::DatabaseIO *exo_d = writeAndGetExodusDatabaseOnRead("test_eb_1_ignore_realn_fields_off", iossProp); + Ioss::DatabaseIO *exo_d = + writeAndGetExodusDatabaseOnRead("test_eb_1_ignore_realn_fields_off", iossProp); Iocatalyst::BlockMeshSet::IOSSparams iop("cat", EXODUS_DATABASE_TYPE, iossProp); Ioss::DatabaseIO *cat_d = bmSet.getCatalystDatabase(iop); - if(cat_d == nullptr){ EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; } + if (cat_d == nullptr) { + EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; + } Ioss::Region cat_reg(cat_d); - + Ioss::Region exo_reg(exo_d); - + auto cat_elemBlock = cat_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); auto exo_elemBlock = exo_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); @@ -241,20 +244,19 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_IGNORE_REALN_FIELDS_OFF) bool cat_foo_exists = cat_elemBlock->field_exists("foo"); EXPECT_TRUE(exo_foo_exists); EXPECT_TRUE(cat_foo_exists); - if(exo_foo_exists && cat_foo_exists) + if (exo_foo_exists && cat_foo_exists) EXPECT_TRUE(exo_elemBlock->get_field("foo") == cat_elemBlock->get_field("foo")); - - //Check field data for equality - auto cat_field = cat_elemBlock->get_fieldref("foo"); + + // Check field data for equality + auto cat_field = cat_elemBlock->get_fieldref("foo"); std::vector dcBuffer(cat_field.get_size()); cat_elemBlock->get_field_data("foo", Data(dcBuffer), dcBuffer.size()); exo_reg.begin_state(1); - auto exo_field = exo_elemBlock->get_fieldref("foo"); + auto exo_field = exo_elemBlock->get_fieldref("foo"); std::vector deBuffer(exo_field.get_size()); exo_elemBlock->get_field_data("foo", Data(deBuffer), deBuffer.size()); EXPECT_EQ(dcBuffer, deBuffer); - } TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_FIELD_SUFFIX_SEPARATOR) @@ -269,23 +271,23 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_FIELD_SUFFIX_SEPARATOR) bm.addTransientCellField("bar:y", 6); bm.addTransientCellField("bar:z", 7); - addBlockMesh(bm); Ioss::PropertyManager iossProp; iossProp.add(Ioss::Property("FIELD_SUFFIX_SEPARATOR", ":")); - + Ioss::DatabaseIO *exo_d = writeAndGetExodusDatabaseOnRead("test_eb_1_field_suf_sep", iossProp); Iocatalyst::BlockMeshSet::IOSSparams iop("cat", EXODUS_DATABASE_TYPE, iossProp); - Ioss::DatabaseIO *cat_d = bmSet.getCatalystDatabase(iop); + Ioss::DatabaseIO *cat_d = bmSet.getCatalystDatabase(iop); - - if(cat_d == nullptr){ EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; } + if (cat_d == nullptr) { + EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; + } Ioss::Region cat_reg(cat_d); - + Ioss::Region exo_reg(exo_d); - + auto cat_elemBlock = cat_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); auto exo_elemBlock = exo_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); @@ -295,27 +297,26 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_FIELD_SUFFIX_SEPARATOR) bool cat_foo_x_exists = cat_elemBlock->field_exists("foo_x"); EXPECT_TRUE(exo_foo_x_exists); EXPECT_TRUE(cat_foo_x_exists); - if(exo_foo_x_exists && cat_foo_x_exists) + if (exo_foo_x_exists && cat_foo_x_exists) EXPECT_TRUE(exo_elemBlock->get_field("foo_x") == cat_elemBlock->get_field("foo_x")); - + bool exo_bar_exists = exo_elemBlock->field_exists("bar"); bool cat_bar_exists = cat_elemBlock->field_exists("bar"); EXPECT_TRUE(exo_bar_exists); EXPECT_TRUE(cat_bar_exists); - if(exo_bar_exists && cat_bar_exists) + if (exo_bar_exists && cat_bar_exists) EXPECT_TRUE(exo_elemBlock->get_field("bar") == cat_elemBlock->get_field("bar")); - - //Check bar field data for equality - auto cat_field = cat_elemBlock->get_fieldref("bar"); + + // Check bar field data for equality + auto cat_field = cat_elemBlock->get_fieldref("bar"); std::vector dcBuffer(cat_field.get_size()); cat_elemBlock->get_field_data("bar", Data(dcBuffer), dcBuffer.size()); exo_reg.begin_state(1); - auto exo_field = exo_elemBlock->get_fieldref("bar"); + auto exo_field = exo_elemBlock->get_fieldref("bar"); std::vector deBuffer(exo_field.get_size()); exo_elemBlock->get_field_data("bar", Data(deBuffer), deBuffer.size()); EXPECT_EQ(dcBuffer, deBuffer); - } TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_FIELD_STRIP_TRAILING_UNDERSCORE) @@ -333,17 +334,20 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_FIELD_STRIP_TRAILING_UNDERSCORE) iossProp.add(Ioss::Property("FIELD_STRIP_TRAILING_UNDERSCORE", "ON")); iossProp.add(Ioss::Property("FIELD_SUFFIX_SEPARATOR", "")); - Ioss::DatabaseIO *exo_d = writeAndGetExodusDatabaseOnRead("test_eb_1_field_strip_tr_unders", iossProp); + Ioss::DatabaseIO *exo_d = + writeAndGetExodusDatabaseOnRead("test_eb_1_field_strip_tr_unders", iossProp); Iocatalyst::BlockMeshSet::IOSSparams iop("cat", EXODUS_DATABASE_TYPE, iossProp); Ioss::DatabaseIO *cat_d = bmSet.getCatalystDatabase(iop); - if(cat_d == nullptr){ EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; } + if (cat_d == nullptr) { + EXPECT_TRUE(false) << "Catalyst db unable to initialize on read"; + } Ioss::Region cat_reg(cat_d); - + Ioss::Region exo_reg(exo_d); - + auto cat_elemBlock = cat_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); auto exo_elemBlock = exo_reg.get_element_block(bmSet.getUnstructuredBlockName(bm.getID())); @@ -353,23 +357,22 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_FIELD_STRIP_TRAILING_UNDERSCORE) bool cat_foo_exists = cat_elemBlock->field_exists("foo"); EXPECT_TRUE(exo_foo_exists); EXPECT_TRUE(cat_foo_exists); - if(exo_foo_exists && cat_foo_exists) + if (exo_foo_exists && cat_foo_exists) EXPECT_TRUE(exo_elemBlock->get_field("foo") == cat_elemBlock->get_field("foo")); - - //Check field data for equality - auto cat_field = cat_elemBlock->get_fieldref("foo"); + + // Check field data for equality + auto cat_field = cat_elemBlock->get_fieldref("foo"); std::vector dcBuffer(cat_field.get_size()); cat_elemBlock->get_field_data("foo", Data(dcBuffer), dcBuffer.size()); exo_reg.begin_state(1); - auto exo_field = exo_elemBlock->get_fieldref("foo"); + auto exo_field = exo_elemBlock->get_fieldref("foo"); std::vector deBuffer(exo_field.get_size()); exo_elemBlock->get_field_data("foo", Data(deBuffer), deBuffer.size()); EXPECT_EQ(dcBuffer, deBuffer); - } -//Read from file. Can. Or available exodus file in test suite. +// Read from file. Can. Or available exodus file in test suite. TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_SURFACE_SPLIT_TYPE) { Iocatalyst::BlockMesh bm; @@ -377,34 +380,37 @@ TEST_F(Iocatalyst_DatabaseIOTest, Exodus_Prop_SURFACE_SPLIT_TYPE) addBlockMesh(bm); - //If write and read have same split type, we can handle. Else no. + // If write and read have same split type, we can handle. Else no. Ioss::PropertyManager iossProp; iossProp.add(Ioss::Property("SURFACE_SPLIT_TYPE", "BLOCK")); std::string exoFile = "can.ex2"; - + conduit_cpp::Node c_node = getConduitFromExodusFile(exoFile, iossProp); Ioss::DatabaseIO *cat_d = getCatalystDatabaseFromConduit(c_node, iossProp); - if(cat_d == nullptr){ EXPECT_TRUE(false) << "Catalyst db unable to initialize"; } - + if (cat_d == nullptr) { + EXPECT_TRUE(false) << "Catalyst db unable to initialize"; + } + Ioss::Region cat_reg(cat_d); - + Ioss::SideSetContainer cat_sideSets = cat_reg.get_sidesets(); checkEntityContainerZeroCopyFields(cat_sideSets); - - EXPECT_TRUE(cat_sideSets.empty())<<"Cat sidesets not empty when different SURFACE_SPLIT_TYPE"; + + EXPECT_TRUE(cat_sideSets.empty()) << "Cat sidesets not empty when different SURFACE_SPLIT_TYPE"; Ioss::PropertyManager iossProp_s; iossProp_s.add(Ioss::Property("SURFACE_SPLIT_TYPE", "TOPOLOGY")); cat_d = getCatalystDatabaseFromConduit(c_node, iossProp_s); - if(cat_d == nullptr){ EXPECT_TRUE(false) << "Catalyst db unable to initialize"; } + if (cat_d == nullptr) { + EXPECT_TRUE(false) << "Catalyst db unable to initialize"; + } Ioss::Region cat_reg_same(cat_d); - - cat_sideSets = cat_reg_same.get_sidesets(); - EXPECT_TRUE(!cat_sideSets.empty())<<"Cat sidesets empty when identical SURFACE_SPLIT_TYPE"; + cat_sideSets = cat_reg_same.get_sidesets(); + EXPECT_TRUE(!cat_sideSets.empty()) << "Cat sidesets empty when identical SURFACE_SPLIT_TYPE"; } diff --git a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_TestDriverMain.C b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_TestDriverMain.C index 7d0e88549f..33c32ac8b6 100644 --- a/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_TestDriverMain.C +++ b/packages/seacas/libraries/ioss/src/catalyst_tests/Iocatalyst_TestDriverMain.C @@ -5,9 +5,9 @@ // See packages/seacas/LICENSE for details #include "iocatalyst_export.h" -#include -#include #include +#include +#include #ifdef SEACAS_HAVE_MPI #include diff --git a/packages/seacas/libraries/ioss/src/main/io_shell.C b/packages/seacas/libraries/ioss/src/main/io_shell.C index 3fea37bced..e5a3032b99 100644 --- a/packages/seacas/libraries/ioss/src/main/io_shell.C +++ b/packages/seacas/libraries/ioss/src/main/io_shell.C @@ -260,12 +260,12 @@ namespace { } if (!interFace.groupName.empty()) { - std::string group_path = "/" + interFace.groupName; - bool success = dbi->open_group(group_path); + std::string group_path = "/" + interFace.groupName; + bool success = dbi->open_group(group_path); if (!success) { if (rank == 0) { - fmt::print(stderr, "ERROR: Unable to open group '{}' in file '{}'\n", - group_path, inpfile); + fmt::print(stderr, "ERROR: Unable to open group '{}' in file '{}'\n", group_path, + inpfile); } return; } diff --git a/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMesh.C b/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMesh.C index 34b966e51f..6393bf319f 100644 --- a/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMesh.C +++ b/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMesh.C @@ -879,9 +879,9 @@ namespace Iotm { if (nullptr == sideset) return; - SideBlockInfo info = sideset->get_side_block_info(sideBlockName); - Ioss::ElementTopology* topology = Ioss::ElementTopology::factory(info.elementTopology, true); - Ioss::ElementTopology* side_topology = Ioss::ElementTopology::factory(info.sideTopology, true); + SideBlockInfo info = sideset->get_side_block_info(sideBlockName); + Ioss::ElementTopology *topology = Ioss::ElementTopology::factory(info.elementTopology, true); + Ioss::ElementTopology *side_topology = Ioss::ElementTopology::factory(info.sideTopology, true); int sideOffset = Ioss::Utils::get_side_offset(topology, side_topology); diff --git a/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMeshAdjacencyGraph.h b/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMeshAdjacencyGraph.h index 1ef266eb32..ac51339d92 100644 --- a/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMeshAdjacencyGraph.h +++ b/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMeshAdjacencyGraph.h @@ -364,7 +364,8 @@ namespace Iotm { std::vector sideNodes = get_sorted_side_nodes(adjacency.elementIndex, adjacency.side); - for (int otherSide = 1; otherSide <= get_element_topology(neighborElementIndex).num_face_sides(); + for (int otherSide = 1; + otherSide <= get_element_topology(neighborElementIndex).num_face_sides(); ++otherSide) { std::vector otherSideNodes = get_sorted_side_nodes(neighborElementIndex, otherSide); diff --git a/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMeshTopologyMapping.h b/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMeshTopologyMapping.h index d005a7d24b..e6a6f6d859 100644 --- a/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMeshTopologyMapping.h +++ b/packages/seacas/libraries/ioss/src/text_mesh/Iotm_TextMeshTopologyMapping.h @@ -92,10 +92,7 @@ namespace Iotm { return topology->number_boundaries(); } - int num_sides() const - { - return sideTopologies.size(); - } + int num_sides() const { return sideTopologies.size(); } // Side references are one-based bool valid_side(unsigned side) const @@ -588,7 +585,8 @@ namespace Iotm { if (!entry.initialized) { entry.set_valid_spatial_dimensions({false, false, false, true}); - entry.set_side_topologies({tri_3_factory(), tri_3_factory(), line_2_factory(), line_2_factory(), line_2_factory()}); + entry.set_side_topologies({tri_3_factory(), tri_3_factory(), line_2_factory(), + line_2_factory(), line_2_factory()}); entry.initialized = true; } @@ -601,7 +599,8 @@ namespace Iotm { if (!entry.initialized) { entry.set_valid_spatial_dimensions({false, false, false, true}); - entry.set_side_topologies({tri_4_factory(), tri_4_factory(), line_2_factory(), line_2_factory(), line_2_factory()}); + entry.set_side_topologies({tri_4_factory(), tri_4_factory(), line_2_factory(), + line_2_factory(), line_2_factory()}); entry.initialized = true; } @@ -614,7 +613,8 @@ namespace Iotm { if (!entry.initialized) { entry.set_valid_spatial_dimensions({false, false, false, true}); - entry.set_side_topologies({tri_6_factory(), tri_6_factory(), line_3_factory(), line_3_factory(), line_3_factory()}); + entry.set_side_topologies({tri_6_factory(), tri_6_factory(), line_3_factory(), + line_3_factory(), line_3_factory()}); entry.initialized = true; } @@ -632,7 +632,8 @@ namespace Iotm { if (!entry.initialized) { entry.set_valid_spatial_dimensions({false, false, false, true}); - entry.set_side_topologies({quad_4_factory(), quad_4_factory(), line_2_factory(), line_2_factory(), line_2_factory(), line_2_factory()}); + entry.set_side_topologies({quad_4_factory(), quad_4_factory(), line_2_factory(), + line_2_factory(), line_2_factory(), line_2_factory()}); entry.initialized = true; } @@ -645,7 +646,8 @@ namespace Iotm { if (!entry.initialized) { entry.set_valid_spatial_dimensions({false, false, false, true}); - entry.set_side_topologies({quad_8_factory(), quad_8_factory(), line_3_factory(), line_3_factory(), line_3_factory(), line_3_factory()}); + entry.set_side_topologies({quad_8_factory(), quad_8_factory(), line_3_factory(), + line_3_factory(), line_3_factory(), line_3_factory()}); entry.initialized = true; } @@ -658,7 +660,8 @@ namespace Iotm { if (!entry.initialized) { entry.set_valid_spatial_dimensions({false, false, false, true}); - entry.set_side_topologies({quad_9_factory(), quad_9_factory(), line_3_factory(), line_3_factory(), line_3_factory(), line_3_factory()}); + entry.set_side_topologies({quad_9_factory(), quad_9_factory(), line_3_factory(), + line_3_factory(), line_3_factory(), line_3_factory()}); entry.initialized = true; } diff --git a/packages/seacas/libraries/ioss/src/visualization/catalyst/cgns/CatalystCGNSMesh.h b/packages/seacas/libraries/ioss/src/visualization/catalyst/cgns/CatalystCGNSMesh.h index 0358a120c2..ac48d4ee9d 100644 --- a/packages/seacas/libraries/ioss/src/visualization/catalyst/cgns/CatalystCGNSMesh.h +++ b/packages/seacas/libraries/ioss/src/visualization/catalyst/cgns/CatalystCGNSMesh.h @@ -7,12 +7,12 @@ #ifndef __CATALYST_CGNS_MESH_H #define __CATALYST_CGNS_MESH_H +#include "vtkNew.h" +#include "vtkPartitionedDataSetCollection.h" #include #include #include #include -#include "vtkPartitionedDataSetCollection.h" -#include "vtkNew.h" class vtkStructuredGrid; @@ -28,7 +28,7 @@ namespace Iovs_cgns { ~CatalystCGNSMesh(); - void PerformCoProcessing(std::vector & error_and_warning_codes, + void PerformCoProcessing(std::vector &error_and_warning_codes, std::vector &error_and_warning_messages); void SetTimeData(double currentTime, int timeStep); @@ -39,30 +39,29 @@ namespace Iovs_cgns { void Delete(); - void AddStructuredZoneData(const ZoneData& zoneData); + void AddStructuredZoneData(const ZoneData &zoneData); vtkPartitionedDataSetCollection *getPartitionedDataSetCollection(); private: - CatalystCGNSMesh(); - CatalystCGNSMesh(const CatalystCGNSMesh &) = delete; + CatalystCGNSMesh(const CatalystCGNSMesh &) = delete; CatalystCGNSMesh &operator=(const CatalystCGNSMesh &) = delete; std::map zone_id_to_zone_location_map; vtkNew vpdc; - Iovs::CatalystManager *catManager = nullptr; - bool writeCatalystMesh; - std::string catalystMeshFilePrefix; - CatalystPipelineInfo catalystPipelineInfo; - const std::string ASSEMBLY_LABEL = "label"; - const std::string ASSEMBLY_ROOT_NAME = "IOSS"; - const std::string ASSEMBLY_STRUCTURED_BLOCKS = "structured_blocks"; - const int PDS_STRUCTURED_GRID_INDEX = 0; - int getStructuredBlocksAssemblyNode(); - void createPartitionedDataSet(const ZoneData& zoneData, vtkStructuredGrid* sg); - vtkStructuredGrid* getStucturedGrid(const ZoneData& zoneData); + Iovs::CatalystManager *catManager = nullptr; + bool writeCatalystMesh; + std::string catalystMeshFilePrefix; + CatalystPipelineInfo catalystPipelineInfo; + const std::string ASSEMBLY_LABEL = "label"; + const std::string ASSEMBLY_ROOT_NAME = "IOSS"; + const std::string ASSEMBLY_STRUCTURED_BLOCKS = "structured_blocks"; + const int PDS_STRUCTURED_GRID_INDEX = 0; + int getStructuredBlocksAssemblyNode(); + void createPartitionedDataSet(const ZoneData &zoneData, vtkStructuredGrid *sg); + vtkStructuredGrid *getStucturedGrid(const ZoneData &zoneData); }; } // namespace Iovs_cgns diff --git a/packages/seacas/libraries/ioss/src/visualization/catalyst/exodus/CatalystExodusMesh.h b/packages/seacas/libraries/ioss/src/visualization/catalyst/exodus/CatalystExodusMesh.h index 337846b11e..11d770f087 100644 --- a/packages/seacas/libraries/ioss/src/visualization/catalyst/exodus/CatalystExodusMesh.h +++ b/packages/seacas/libraries/ioss/src/visualization/catalyst/exodus/CatalystExodusMesh.h @@ -138,12 +138,12 @@ namespace Iovs_exodus { bool UnderscoreVectors; bool ApplyDisplacements; CatalystPipelineInfo catalystPipelineInfo; - const std::string ASSEMBLY_LABEL = "label"; - const std::string ASSEMBLY_ROOT_NAME = "IOSS"; - const std::string ASSEMBLY_ELEMENT_BLOCKS = "element_blocks"; - const int PDS_UNSTRUCTURED_GRID_INDEX = 0; - int getElementBlocksAssemblyNode(); - vtkUnstructuredGrid* getUnstructuredGrid(int blockId); + const std::string ASSEMBLY_LABEL = "label"; + const std::string ASSEMBLY_ROOT_NAME = "IOSS"; + const std::string ASSEMBLY_ELEMENT_BLOCKS = "element_blocks"; + const int PDS_UNSTRUCTURED_GRID_INDEX = 0; + int getElementBlocksAssemblyNode(); + vtkUnstructuredGrid *getUnstructuredGrid(int blockId); }; } // namespace Iovs_exodus diff --git a/packages/seacas/libraries/ioss/src/visualization/catalyst/manager/CatalystMeshWriter.h b/packages/seacas/libraries/ioss/src/visualization/catalyst/manager/CatalystMeshWriter.h index 199a34807e..462961c559 100644 --- a/packages/seacas/libraries/ioss/src/visualization/catalyst/manager/CatalystMeshWriter.h +++ b/packages/seacas/libraries/ioss/src/visualization/catalyst/manager/CatalystMeshWriter.h @@ -13,29 +13,28 @@ class vtkDataObject; namespace Iovs { -class CatalystMeshWriter { - -public: + class CatalystMeshWriter + { + public: CatalystMeshWriter(); ~CatalystMeshWriter(); bool outputCatalystMeshOneFileON(); - void setOutputCatalystMeshOneFilePrefix(std::string & prefix); + void setOutputCatalystMeshOneFilePrefix(std::string &prefix); bool outputCatalystMeshFilePerProcON(); - void setOutputCatalystMeshFilePerProcPrefix(std::string & prefix); - - void writeCatalystMeshOneFile(vtkDataObject* dobj, int timeStep); - void writeCatalystMeshFilePerProc(vtkDataObject* dobj, int timeStep); + void setOutputCatalystMeshFilePerProcPrefix(std::string &prefix); -private: + void writeCatalystMeshOneFile(vtkDataObject *dobj, int timeStep); + void writeCatalystMeshFilePerProc(vtkDataObject *dobj, int timeStep); - bool catalystMeshOneFile; - bool catalystMeshFilePerProc; + private: + bool catalystMeshOneFile; + bool catalystMeshFilePerProc; std::string catalystMeshOneFilePrefix; std::string catalystMeshFilePerProcPrefix; -}; + }; } // namespace Iovs diff --git a/packages/seacas/libraries/ioss/src/visualization/catalyst/parser/PhactoriParserInterface.h b/packages/seacas/libraries/ioss/src/visualization/catalyst/parser/PhactoriParserInterface.h index 36bfd66658..a2b763802b 100644 --- a/packages/seacas/libraries/ioss/src/visualization/catalyst/parser/PhactoriParserInterface.h +++ b/packages/seacas/libraries/ioss/src/visualization/catalyst/parser/PhactoriParserInterface.h @@ -14,42 +14,43 @@ namespace Iovs { -class PhactoriParserInterface { - -public: - - enum VarType { - SCALAR, - VECTOR, - TENSOR, - ALLTYPE, - SCALAR_USED, - VECTOR_USED, - TENSOR_USED, - ALLTYPE_USED + class PhactoriParserInterface + { + + public: + enum VarType { + SCALAR, + VECTOR, + TENSOR, + ALLTYPE, + SCALAR_USED, + VECTOR_USED, + TENSOR_USED, + ALLTYPE_USED + }; + + typedef std::map varMap; + typedef std::pair idRange; + + struct ParseInfo + { + varMap nodeVars; + varMap elementVars; + varMap globalVars; + bool checkNodeIDRange = false; + idRange nodeIDRange; + bool checkElementIDRange = false; + idRange elementIDRange; + std::string separator = "_"; + std::string jsonParseResult = ""; + bool parseFailed = true; + }; + + static void parseFile(const std::string &filepath, ParseInfo &pinfo); + + static void parseString(const std::string &s, ParseInfo &pinfo); }; - typedef std::map varMap; - typedef std::pair idRange; - - struct ParseInfo { - varMap nodeVars; - varMap elementVars; - varMap globalVars; - bool checkNodeIDRange = false; - idRange nodeIDRange; - bool checkElementIDRange = false; - idRange elementIDRange; - std::string separator = "_"; - std::string jsonParseResult = ""; - bool parseFailed = true; - }; - - static void parseFile(const std::string &filepath, ParseInfo &pinfo); - - static void parseString(const std::string &s, ParseInfo &pinfo); -}; - } // namespace Iovs #endif diff --git a/packages/seacas/libraries/ioss/src/visualization/catalyst/test/Catch2/catch.hpp b/packages/seacas/libraries/ioss/src/visualization/catalyst/test/Catch2/catch.hpp index 0384171ae4..d34e50834e 100644 --- a/packages/seacas/libraries/ioss/src/visualization/catalyst/test/Catch2/catch.hpp +++ b/packages/seacas/libraries/ioss/src/visualization/catalyst/test/Catch2/catch.hpp @@ -12,88 +12,88 @@ #define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED // start catch.hpp - #define CATCH_VERSION_MAJOR 2 #define CATCH_VERSION_MINOR 13 #define CATCH_VERSION_PATCH 4 #ifdef __clang__ -# pragma clang system_header +#pragma clang system_header #elif defined __GNUC__ -# pragma GCC system_header +#pragma GCC system_header #endif // start catch_suppress_warnings.h #ifdef __clang__ -# ifdef __ICC // icpc defines the __clang__ macro -# pragma warning(push) -# pragma warning(disable: 161 1682) -# else // __ICC -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wpadded" -# pragma clang diagnostic ignored "-Wswitch-enum" -# pragma clang diagnostic ignored "-Wcovered-switch-default" -# endif +#ifdef __ICC // icpc defines the __clang__ macro +#pragma warning(push) +#pragma warning(disable : 161 1682) +#else // __ICC +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpadded" +#pragma clang diagnostic ignored "-Wswitch-enum" +#pragma clang diagnostic ignored "-Wcovered-switch-default" +#endif #elif defined __GNUC__ - // Because REQUIREs trigger GCC's -Wparentheses, and because still - // supported version of g++ have only buggy support for _Pragmas, - // Wparentheses have to be suppressed globally. -# pragma GCC diagnostic ignored "-Wparentheses" // See #674 for details - -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wunused-variable" -# pragma GCC diagnostic ignored "-Wpadded" +// Because REQUIREs trigger GCC's -Wparentheses, and because still +// supported version of g++ have only buggy support for _Pragmas, +// Wparentheses have to be suppressed globally. +#pragma GCC diagnostic ignored "-Wparentheses" // See #674 for details + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-variable" +#pragma GCC diagnostic ignored "-Wpadded" #endif // end catch_suppress_warnings.h #if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER) -# define CATCH_IMPL -# define CATCH_CONFIG_ALL_PARTS +#define CATCH_IMPL +#define CATCH_CONFIG_ALL_PARTS #endif // In the impl file, we want to have access to all parts of the headers // Can also be used to sanely support PCHs #if defined(CATCH_CONFIG_ALL_PARTS) -# define CATCH_CONFIG_EXTERNAL_INTERFACES -# if defined(CATCH_CONFIG_DISABLE_MATCHERS) -# undef CATCH_CONFIG_DISABLE_MATCHERS -# endif -# if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER) -# define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER -# endif +#define CATCH_CONFIG_EXTERNAL_INTERFACES +#if defined(CATCH_CONFIG_DISABLE_MATCHERS) +#undef CATCH_CONFIG_DISABLE_MATCHERS +#endif +#if !defined(CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER) +#define CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER +#endif #endif #if !defined(CATCH_CONFIG_IMPL_ONLY) // start catch_platform.h #ifdef __APPLE__ -# include -# if TARGET_OS_OSX == 1 -# define CATCH_PLATFORM_MAC -# elif TARGET_OS_IPHONE == 1 -# define CATCH_PLATFORM_IPHONE -# endif +#include +#if TARGET_OS_OSX == 1 +#define CATCH_PLATFORM_MAC +#elif TARGET_OS_IPHONE == 1 +#define CATCH_PLATFORM_IPHONE +#endif #elif defined(linux) || defined(__linux) || defined(__linux__) -# define CATCH_PLATFORM_LINUX +#define CATCH_PLATFORM_LINUX -#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || defined(__MINGW32__) -# define CATCH_PLATFORM_WINDOWS +#elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) || \ + defined(__MINGW32__) +#define CATCH_PLATFORM_WINDOWS #endif // end catch_platform.h #ifdef CATCH_IMPL -# ifndef CLARA_CONFIG_MAIN -# define CLARA_CONFIG_MAIN_NOT_DEFINED -# define CLARA_CONFIG_MAIN -# endif +#ifndef CLARA_CONFIG_MAIN +#define CLARA_CONFIG_MAIN_NOT_DEFINED +#define CLARA_CONFIG_MAIN +#endif #endif // start catch_user_interfaces.h namespace Catch { - unsigned int rngSeed(); + unsigned int rngSeed(); } // end catch_user_interfaces.h @@ -122,30 +122,30 @@ namespace Catch { #ifdef __cplusplus -# if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L) -# define CATCH_CPP14_OR_GREATER -# endif +#if (__cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L) +#define CATCH_CPP14_OR_GREATER +#endif -# if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) -# define CATCH_CPP17_OR_GREATER -# endif +#if (__cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) +#define CATCH_CPP17_OR_GREATER +#endif #endif // We have to avoid both ICC and Clang, because they try to mask themselves // as gcc, and we want only GCC in this block #if defined(__GNUC__) && !defined(__clang__) && !defined(__ICC) && !defined(__CUDACC__) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic push" ) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "GCC diagnostic pop" ) +#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma("GCC diagnostic push") +#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma("GCC diagnostic pop") -# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) +#define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) #endif #if defined(__clang__) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic push" ) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma( "clang diagnostic pop" ) +#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION _Pragma("clang diagnostic push") +#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION _Pragma("clang diagnostic pop") // As of this writing, IBM XL's implementation of __builtin_constant_p has a bug // which results in calls to destructors being emitted for each temporary, @@ -158,62 +158,64 @@ namespace Catch { // ``` // // Therefore, `CATCH_INTERNAL_IGNORE_BUT_WARN` is not implemented. -# if !defined(__ibmxl__) && !defined(__CUDACC__) -# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) (void)__builtin_constant_p(__VA_ARGS__) /* NOLINT(cppcoreguidelines-pro-type-vararg, hicpp-vararg) */ -# endif +#if !defined(__ibmxl__) && !defined(__CUDACC__) +#define CATCH_INTERNAL_IGNORE_BUT_WARN(...) \ + (void)__builtin_constant_p( \ + __VA_ARGS__) /* NOLINT(cppcoreguidelines-pro-type-vararg, hicpp-vararg) */ +#endif -# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wexit-time-destructors\"" ) \ - _Pragma( "clang diagnostic ignored \"-Wglobal-constructors\"") +#define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wexit-time-destructors\"") \ + _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wparentheses\"" ) +#define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wparentheses\"") -# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wunused-variable\"" ) +#define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wunused-variable\"") -# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"" ) +#define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wgnu-zero-variadic-macro-arguments\"") -# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ - _Pragma( "clang diagnostic ignored \"-Wunused-template\"" ) +#define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS \ + _Pragma("clang diagnostic ignored \"-Wunused-template\"") #endif // __clang__ //////////////////////////////////////////////////////////////////////////////// // Assume that non-Windows platforms support posix signals by default #if !defined(CATCH_PLATFORM_WINDOWS) - #define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS +#define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS #endif //////////////////////////////////////////////////////////////////////////////// // We know some environments not to support full POSIX signals #if defined(__CYGWIN__) || defined(__QNX__) || defined(__EMSCRIPTEN__) || defined(__DJGPP__) - #define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS +#define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS #endif #ifdef __OS400__ -# define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS -# define CATCH_CONFIG_COLOUR_NONE +#define CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS +#define CATCH_CONFIG_COLOUR_NONE #endif //////////////////////////////////////////////////////////////////////////////// // Android somehow still does not support std::to_string #if defined(__ANDROID__) -# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING -# define CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE +#define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING +#define CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE #endif //////////////////////////////////////////////////////////////////////////////// // Not all Windows environments support SEH properly #if defined(__MINGW32__) -# define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH +#define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH #endif //////////////////////////////////////////////////////////////////////////////// // PS4 #if defined(__ORBIS__) -# define CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE +#define CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE #endif //////////////////////////////////////////////////////////////////////////////// @@ -222,64 +224,64 @@ namespace Catch { // Required for some versions of Cygwin to declare gettimeofday // see: http://stackoverflow.com/questions/36901803/gettimeofday-not-declared-in-this-scope-cygwin -# define _BSD_SOURCE +#define _BSD_SOURCE // some versions of cygwin (most) do not support std::to_string. Use the libstd check. // https://gcc.gnu.org/onlinedocs/gcc-4.8.2/libstdc++/api/a01053_source.html line 2812-2813 -# if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ - && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) +#if !((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) && \ + !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) -# define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING +#define CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING -# endif +#endif #endif // __CYGWIN__ //////////////////////////////////////////////////////////////////////////////// // Visual C++ #if defined(_MSC_VER) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma( warning(push) ) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma( warning(pop) ) +#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION __pragma(warning(push)) +#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION __pragma(warning(pop)) // Universal Windows platform does not support SEH // Or console colours (or console at all...) -# if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) -# define CATCH_CONFIG_COLOUR_NONE -# else -# define CATCH_INTERNAL_CONFIG_WINDOWS_SEH -# endif +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) +#define CATCH_CONFIG_COLOUR_NONE +#else +#define CATCH_INTERNAL_CONFIG_WINDOWS_SEH +#endif // MSVC traditional preprocessor needs some workaround for __VA_ARGS__ // _MSVC_TRADITIONAL == 0 means new conformant preprocessor // _MSVC_TRADITIONAL == 1 means old traditional non-conformant preprocessor -# if !defined(__clang__) // Handle Clang masquerading for msvc -# if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) -# define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -# endif // MSVC_TRADITIONAL -# endif // __clang__ +#if !defined(__clang__) // Handle Clang masquerading for msvc +#if !defined(_MSVC_TRADITIONAL) || (defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL) +#define CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR +#endif // MSVC_TRADITIONAL +#endif // __clang__ #endif // _MSC_VER #if defined(_REENTRANT) || defined(_MSC_VER) // Enable async processing, as -pthread is specified or no additional linking is required -# define CATCH_INTERNAL_CONFIG_USE_ASYNC +#define CATCH_INTERNAL_CONFIG_USE_ASYNC #endif // _MSC_VER //////////////////////////////////////////////////////////////////////////////// // Check if we are compiled with -fno-exceptions or equivalent #if defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND) -# define CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED +#define CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED #endif //////////////////////////////////////////////////////////////////////////////// // DJGPP #ifdef __DJGPP__ -# define CATCH_INTERNAL_CONFIG_NO_WCHAR +#define CATCH_INTERNAL_CONFIG_NO_WCHAR #endif // __DJGPP__ //////////////////////////////////////////////////////////////////////////////// // Embarcadero C++Build #if defined(__BORLANDC__) - #define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN +#define CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN #endif //////////////////////////////////////////////////////////////////////////////// @@ -289,8 +291,8 @@ namespace Catch { // handled by it. // Otherwise all supported compilers support COUNTER macro, // but user still might want to turn it off -#if ( !defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L ) - #define CATCH_INTERNAL_CONFIG_COUNTER +#if (!defined(__JETBRAINS_IDE__) || __JETBRAINS_IDE__ >= 20170300L) +#define CATCH_INTERNAL_CONFIG_COUNTER #endif //////////////////////////////////////////////////////////////////////////////// @@ -299,9 +301,9 @@ namespace Catch { // This means that it is detected as Windows, but does not provide // the same set of capabilities as real Windows does. #if defined(UNDER_RTSS) || defined(RTX64_BUILD) - #define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH - #define CATCH_INTERNAL_CONFIG_NO_ASYNC - #define CATCH_CONFIG_COLOUR_NONE +#define CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH +#define CATCH_INTERNAL_CONFIG_NO_ASYNC +#define CATCH_CONFIG_COLOUR_NONE #endif #if !defined(_GLIBCXX_USE_C99_MATH_TR1) @@ -310,248 +312,271 @@ namespace Catch { // Various stdlib support checks that require __has_include #if defined(__has_include) - // Check if string_view is available and usable - #if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW - #endif - - // Check if optional is available and usable - # if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL - # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) - - // Check if byte is available and usable - # if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # include - # if __cpp_lib_byte > 0 - # define CATCH_INTERNAL_CONFIG_CPP17_BYTE - # endif - # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) - - // Check if variant is available and usable - # if __has_include() && defined(CATCH_CPP17_OR_GREATER) - # if defined(__clang__) && (__clang_major__ < 8) - // work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 - // fix should be in clang 8, workaround in libstdc++ 8.2 - # include - # if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) - # define CATCH_CONFIG_NO_CPP17_VARIANT - # else - # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT - # endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) - # else - # define CATCH_INTERNAL_CONFIG_CPP17_VARIANT - # endif // defined(__clang__) && (__clang_major__ < 8) - # endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) +// Check if string_view is available and usable +#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +#define CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW +#endif + +// Check if optional is available and usable +#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +#define CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL +#endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) + +// Check if byte is available and usable +#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +#include +#if __cpp_lib_byte > 0 +#define CATCH_INTERNAL_CONFIG_CPP17_BYTE +#endif +#endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) + +// Check if variant is available and usable +#if __has_include() && defined(CATCH_CPP17_OR_GREATER) +#if defined(__clang__) && (__clang_major__ < 8) +// work around clang bug with libstdc++ https://bugs.llvm.org/show_bug.cgi?id=31852 +// fix should be in clang 8, workaround in libstdc++ 8.2 +#include +#if defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) +#define CATCH_CONFIG_NO_CPP17_VARIANT +#else +#define CATCH_INTERNAL_CONFIG_CPP17_VARIANT +#endif // defined(__GLIBCXX__) && defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE < 9) +#else +#define CATCH_INTERNAL_CONFIG_CPP17_VARIANT +#endif // defined(__clang__) && (__clang_major__ < 8) +#endif // __has_include() && defined(CATCH_CPP17_OR_GREATER) #endif // defined(__has_include) -#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && !defined(CATCH_CONFIG_COUNTER) -# define CATCH_CONFIG_COUNTER +#if defined(CATCH_INTERNAL_CONFIG_COUNTER) && !defined(CATCH_CONFIG_NO_COUNTER) && \ + !defined(CATCH_CONFIG_COUNTER) +#define CATCH_CONFIG_COUNTER #endif -#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && !defined(CATCH_CONFIG_WINDOWS_SEH) && !defined(CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH) -# define CATCH_CONFIG_WINDOWS_SEH +#if defined(CATCH_INTERNAL_CONFIG_WINDOWS_SEH) && !defined(CATCH_CONFIG_NO_WINDOWS_SEH) && \ + !defined(CATCH_CONFIG_WINDOWS_SEH) && !defined(CATCH_INTERNAL_CONFIG_NO_WINDOWS_SEH) +#define CATCH_CONFIG_WINDOWS_SEH #endif -// This is set by default, because we assume that unix compilers are posix-signal-compatible by default. -#if defined(CATCH_INTERNAL_CONFIG_POSIX_SIGNALS) && !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_POSIX_SIGNALS) -# define CATCH_CONFIG_POSIX_SIGNALS +// This is set by default, because we assume that unix compilers are posix-signal-compatible by +// default. +#if defined(CATCH_INTERNAL_CONFIG_POSIX_SIGNALS) && \ + !defined(CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS) && !defined(CATCH_CONFIG_NO_POSIX_SIGNALS) && \ + !defined(CATCH_CONFIG_POSIX_SIGNALS) +#define CATCH_CONFIG_POSIX_SIGNALS #endif -// This is set by default, because we assume that compilers with no wchar_t support are just rare exceptions. -#if !defined(CATCH_INTERNAL_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_WCHAR) -# define CATCH_CONFIG_WCHAR +// This is set by default, because we assume that compilers with no wchar_t support are just rare +// exceptions. +#if !defined(CATCH_INTERNAL_CONFIG_NO_WCHAR) && !defined(CATCH_CONFIG_NO_WCHAR) && \ + !defined(CATCH_CONFIG_WCHAR) +#define CATCH_CONFIG_WCHAR #endif -#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING) -# define CATCH_CONFIG_CPP11_TO_STRING +#if !defined(CATCH_INTERNAL_CONFIG_NO_CPP11_TO_STRING) && \ + !defined(CATCH_CONFIG_NO_CPP11_TO_STRING) && !defined(CATCH_CONFIG_CPP11_TO_STRING) +#define CATCH_CONFIG_CPP11_TO_STRING #endif -#if defined(CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_NO_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_CPP17_OPTIONAL) -# define CATCH_CONFIG_CPP17_OPTIONAL +#if defined(CATCH_INTERNAL_CONFIG_CPP17_OPTIONAL) && !defined(CATCH_CONFIG_NO_CPP17_OPTIONAL) && \ + !defined(CATCH_CONFIG_CPP17_OPTIONAL) +#define CATCH_CONFIG_CPP17_OPTIONAL #endif -#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW) -# define CATCH_CONFIG_CPP17_STRING_VIEW +#if defined(CATCH_INTERNAL_CONFIG_CPP17_STRING_VIEW) && \ + !defined(CATCH_CONFIG_NO_CPP17_STRING_VIEW) && !defined(CATCH_CONFIG_CPP17_STRING_VIEW) +#define CATCH_CONFIG_CPP17_STRING_VIEW #endif -#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && !defined(CATCH_CONFIG_CPP17_VARIANT) -# define CATCH_CONFIG_CPP17_VARIANT +#if defined(CATCH_INTERNAL_CONFIG_CPP17_VARIANT) && !defined(CATCH_CONFIG_NO_CPP17_VARIANT) && \ + !defined(CATCH_CONFIG_CPP17_VARIANT) +#define CATCH_CONFIG_CPP17_VARIANT #endif -#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && !defined(CATCH_CONFIG_CPP17_BYTE) -# define CATCH_CONFIG_CPP17_BYTE +#if defined(CATCH_INTERNAL_CONFIG_CPP17_BYTE) && !defined(CATCH_CONFIG_NO_CPP17_BYTE) && \ + !defined(CATCH_CONFIG_CPP17_BYTE) +#define CATCH_CONFIG_CPP17_BYTE #endif #if defined(CATCH_CONFIG_EXPERIMENTAL_REDIRECT) -# define CATCH_INTERNAL_CONFIG_NEW_CAPTURE +#define CATCH_INTERNAL_CONFIG_NEW_CAPTURE #endif -#if defined(CATCH_INTERNAL_CONFIG_NEW_CAPTURE) && !defined(CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NEW_CAPTURE) -# define CATCH_CONFIG_NEW_CAPTURE +#if defined(CATCH_INTERNAL_CONFIG_NEW_CAPTURE) && \ + !defined(CATCH_INTERNAL_CONFIG_NO_NEW_CAPTURE) && !defined(CATCH_CONFIG_NO_NEW_CAPTURE) && \ + !defined(CATCH_CONFIG_NEW_CAPTURE) +#define CATCH_CONFIG_NEW_CAPTURE #endif #if !defined(CATCH_INTERNAL_CONFIG_EXCEPTIONS_ENABLED) && !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) -# define CATCH_CONFIG_DISABLE_EXCEPTIONS +#define CATCH_CONFIG_DISABLE_EXCEPTIONS #endif -#if defined(CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_NO_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_POLYFILL_ISNAN) -# define CATCH_CONFIG_POLYFILL_ISNAN +#if defined(CATCH_INTERNAL_CONFIG_POLYFILL_ISNAN) && !defined(CATCH_CONFIG_NO_POLYFILL_ISNAN) && \ + !defined(CATCH_CONFIG_POLYFILL_ISNAN) +#define CATCH_CONFIG_POLYFILL_ISNAN #endif -#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_INTERNAL_CONFIG_NO_ASYNC) && !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC) -# define CATCH_CONFIG_USE_ASYNC +#if defined(CATCH_INTERNAL_CONFIG_USE_ASYNC) && !defined(CATCH_INTERNAL_CONFIG_NO_ASYNC) && \ + !defined(CATCH_CONFIG_NO_USE_ASYNC) && !defined(CATCH_CONFIG_USE_ASYNC) +#define CATCH_CONFIG_USE_ASYNC #endif -#if defined(CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_NO_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_ANDROID_LOGWRITE) -# define CATCH_CONFIG_ANDROID_LOGWRITE +#if defined(CATCH_INTERNAL_CONFIG_ANDROID_LOGWRITE) && \ + !defined(CATCH_CONFIG_NO_ANDROID_LOGWRITE) && !defined(CATCH_CONFIG_ANDROID_LOGWRITE) +#define CATCH_CONFIG_ANDROID_LOGWRITE #endif -#if defined(CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_NO_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_GLOBAL_NEXTAFTER) -# define CATCH_CONFIG_GLOBAL_NEXTAFTER +#if defined(CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER) && \ + !defined(CATCH_CONFIG_NO_GLOBAL_NEXTAFTER) && !defined(CATCH_CONFIG_GLOBAL_NEXTAFTER) +#define CATCH_CONFIG_GLOBAL_NEXTAFTER #endif // Even if we do not think the compiler has that warning, we still have // to provide a macro that can be used by the code. #if !defined(CATCH_INTERNAL_START_WARNINGS_SUPPRESSION) -# define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION +#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION #endif #if !defined(CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION) -# define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION +#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION #endif #if !defined(CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS #endif #if !defined(CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS #endif #if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS #endif #if !defined(CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS #endif // The goal of this macro is to avoid evaluation of the arguments, but // still have the compiler warn on problems inside... #if !defined(CATCH_INTERNAL_IGNORE_BUT_WARN) -# define CATCH_INTERNAL_IGNORE_BUT_WARN(...) +#define CATCH_INTERNAL_IGNORE_BUT_WARN(...) #endif #if defined(__APPLE__) && defined(__apple_build_version__) && (__clang_major__ < 10) -# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS +#undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS #elif defined(__clang__) && (__clang_major__ < 5) -# undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS +#undef CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS #endif #if !defined(CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS) -# define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS +#define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS #endif #if defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) -#define CATCH_TRY if ((true)) -#define CATCH_CATCH_ALL if ((false)) +#define CATCH_TRY if ((true)) +#define CATCH_CATCH_ALL if ((false)) #define CATCH_CATCH_ANON(type) if ((false)) #else -#define CATCH_TRY try -#define CATCH_CATCH_ALL catch (...) +#define CATCH_TRY try +#define CATCH_CATCH_ALL catch (...) #define CATCH_CATCH_ANON(type) catch (type) #endif -#if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) +#if defined(CATCH_INTERNAL_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) && \ + !defined(CATCH_CONFIG_NO_TRADITIONAL_MSVC_PREPROCESSOR) && \ + !defined(CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR) #define CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR #endif // end catch_compiler_capabilities.h -#define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line -#define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) +#define INTERNAL_CATCH_UNIQUE_NAME_LINE2(name, line) name##line +#define INTERNAL_CATCH_UNIQUE_NAME_LINE(name, line) INTERNAL_CATCH_UNIQUE_NAME_LINE2(name, line) #ifdef CATCH_CONFIG_COUNTER -# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ ) +#define INTERNAL_CATCH_UNIQUE_NAME(name) INTERNAL_CATCH_UNIQUE_NAME_LINE(name, __COUNTER__) #else -# define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ ) +#define INTERNAL_CATCH_UNIQUE_NAME(name) INTERNAL_CATCH_UNIQUE_NAME_LINE(name, __LINE__) #endif +#include #include #include -#include // We need a dummy global operator<< so we can bring it into Catch namespace later -struct Catch_global_namespace_dummy {}; -std::ostream& operator<<(std::ostream&, Catch_global_namespace_dummy); +struct Catch_global_namespace_dummy +{ +}; +std::ostream &operator<<(std::ostream &, Catch_global_namespace_dummy); namespace Catch { - struct CaseSensitive { enum Choice { - Yes, - No - }; }; - - class NonCopyable { - NonCopyable( NonCopyable const& ) = delete; - NonCopyable( NonCopyable && ) = delete; - NonCopyable& operator = ( NonCopyable const& ) = delete; - NonCopyable& operator = ( NonCopyable && ) = delete; - - protected: - NonCopyable(); - virtual ~NonCopyable(); - }; - - struct SourceLineInfo { - - SourceLineInfo() = delete; - SourceLineInfo( char const* _file, std::size_t _line ) noexcept - : file( _file ), - line( _line ) - {} - - SourceLineInfo( SourceLineInfo const& other ) = default; - SourceLineInfo& operator = ( SourceLineInfo const& ) = default; - SourceLineInfo( SourceLineInfo&& ) noexcept = default; - SourceLineInfo& operator = ( SourceLineInfo&& ) noexcept = default; - - bool empty() const noexcept { return file[0] == '\0'; } - bool operator == ( SourceLineInfo const& other ) const noexcept; - bool operator < ( SourceLineInfo const& other ) const noexcept; - - char const* file; - std::size_t line; - }; - - std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); - - // Bring in operator<< from global namespace into Catch namespace - // This is necessary because the overload of operator<< above makes - // lookup stop at namespace Catch - using ::operator<<; - - // Use this in variadic streaming macros to allow - // >> +StreamEndStop - // as well as - // >> stuff +StreamEndStop - struct StreamEndStop { - std::string operator+() const; - }; - template - T const& operator + ( T const& value, StreamEndStop ) { - return value; - } -} + struct CaseSensitive + { + enum Choice { Yes, No }; + }; + + class NonCopyable + { + NonCopyable(NonCopyable const &) = delete; + NonCopyable(NonCopyable &&) = delete; + NonCopyable &operator=(NonCopyable const &) = delete; + NonCopyable &operator=(NonCopyable &&) = delete; + + protected: + NonCopyable(); + virtual ~NonCopyable(); + }; + + struct SourceLineInfo + { + + SourceLineInfo() = delete; + SourceLineInfo(char const *_file, std::size_t _line) noexcept : file(_file), line(_line) {} + + SourceLineInfo(SourceLineInfo const &other) = default; + SourceLineInfo &operator=(SourceLineInfo const &) = default; + SourceLineInfo(SourceLineInfo &&) noexcept = default; + SourceLineInfo &operator=(SourceLineInfo &&) noexcept = default; + + bool empty() const noexcept { return file[0] == '\0'; } + bool operator==(SourceLineInfo const &other) const noexcept; + bool operator<(SourceLineInfo const &other) const noexcept; + + char const *file; + std::size_t line; + }; + + std::ostream &operator<<(std::ostream &os, SourceLineInfo const &info); + + // Bring in operator<< from global namespace into Catch namespace + // This is necessary because the overload of operator<< above makes + // lookup stop at namespace Catch + using ::operator<<; + + // Use this in variadic streaming macros to allow + // >> +StreamEndStop + // as well as + // >> stuff +StreamEndStop + struct StreamEndStop + { + std::string operator+() const; + }; + template T const &operator+(T const &value, StreamEndStop) { return value; } +} // namespace Catch -#define CATCH_INTERNAL_LINEINFO \ - ::Catch::SourceLineInfo( __FILE__, static_cast( __LINE__ ) ) +#define CATCH_INTERNAL_LINEINFO \ + ::Catch::SourceLineInfo(__FILE__, static_cast(__LINE__)) // end catch_common.h namespace Catch { - struct RegistrarForTagAliases { - RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); - }; + struct RegistrarForTagAliases + { + RegistrarForTagAliases(char const *alias, char const *tag, SourceLineInfo const &lineInfo); + }; } // end namespace Catch -#define CATCH_REGISTER_TAG_ALIAS( alias, spec ) \ - CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ - CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ - namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } \ - CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION +#define CATCH_REGISTER_TAG_ALIAS(alias, spec) \ + CATCH_INTERNAL_START_WARNINGS_SUPPRESSION \ + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS \ + namespace { \ + Catch::RegistrarForTagAliases \ + INTERNAL_CATCH_UNIQUE_NAME(AutoRegisterTagAlias)(alias, spec, CATCH_INTERNAL_LINEINFO); \ + } \ + CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION // end catch_tag_alias_autoregistrar.h // start catch_test_registry.h @@ -562,143 +587,146 @@ namespace Catch { namespace Catch { - class TestSpec; + class TestSpec; - struct ITestInvoker { - virtual void invoke () const = 0; - virtual ~ITestInvoker(); - }; + struct ITestInvoker + { + virtual void invoke() const = 0; + virtual ~ITestInvoker(); + }; - class TestCase; - struct IConfig; + class TestCase; + struct IConfig; - struct ITestCaseRegistry { - virtual ~ITestCaseRegistry(); - virtual std::vector const& getAllTests() const = 0; - virtual std::vector const& getAllTestsSorted( IConfig const& config ) const = 0; - }; + struct ITestCaseRegistry + { + virtual ~ITestCaseRegistry(); + virtual std::vector const &getAllTests() const = 0; + virtual std::vector const &getAllTestsSorted(IConfig const &config) const = 0; + }; - bool isThrowSafe( TestCase const& testCase, IConfig const& config ); - bool matchTest( TestCase const& testCase, TestSpec const& testSpec, IConfig const& config ); - std::vector filterTests( std::vector const& testCases, TestSpec const& testSpec, IConfig const& config ); - std::vector const& getAllTestCasesSorted( IConfig const& config ); + bool isThrowSafe(TestCase const &testCase, IConfig const &config); + bool matchTest(TestCase const &testCase, TestSpec const &testSpec, IConfig const &config); + std::vector filterTests(std::vector const &testCases, + TestSpec const &testSpec, IConfig const &config); + std::vector const &getAllTestCasesSorted(IConfig const &config); -} +} // namespace Catch // end catch_interfaces_testcase.h // start catch_stringref.h +#include #include -#include #include -#include +#include namespace Catch { - /// A non-owning string class (similar to the forthcoming std::string_view) - /// Note that, because a StringRef may be a substring of another string, - /// it may not be null terminated. - class StringRef { - public: - using size_type = std::size_t; - using const_iterator = const char*; + /// A non-owning string class (similar to the forthcoming std::string_view) + /// Note that, because a StringRef may be a substring of another string, + /// it may not be null terminated. + class StringRef + { + public: + using size_type = std::size_t; + using const_iterator = const char *; - private: - static constexpr char const* const s_empty = ""; + private: + static constexpr char const *const s_empty = ""; - char const* m_start = s_empty; - size_type m_size = 0; + char const *m_start = s_empty; + size_type m_size = 0; - public: // construction - constexpr StringRef() noexcept = default; + public: // construction + constexpr StringRef() noexcept = default; - StringRef( char const* rawChars ) noexcept; + StringRef(char const *rawChars) noexcept; - constexpr StringRef( char const* rawChars, size_type size ) noexcept - : m_start( rawChars ), - m_size( size ) - {} + constexpr StringRef(char const *rawChars, size_type size) noexcept + : m_start(rawChars), m_size(size) + { + } - StringRef( std::string const& stdString ) noexcept - : m_start( stdString.c_str() ), - m_size( stdString.size() ) - {} + StringRef(std::string const &stdString) noexcept + : m_start(stdString.c_str()), m_size(stdString.size()) + { + } - explicit operator std::string() const { - return std::string(m_start, m_size); - } + explicit operator std::string() const { return std::string(m_start, m_size); } - public: // operators - auto operator == ( StringRef const& other ) const noexcept -> bool; - auto operator != (StringRef const& other) const noexcept -> bool { - return !(*this == other); - } + public: // operators + auto operator==(StringRef const &other) const noexcept -> bool; + auto operator!=(StringRef const &other) const noexcept -> bool { return !(*this == other); } - auto operator[] ( size_type index ) const noexcept -> char { - assert(index < m_size); - return m_start[index]; - } + auto operator[](size_type index) const noexcept -> char + { + assert(index < m_size); + return m_start[index]; + } - public: // named queries - constexpr auto empty() const noexcept -> bool { - return m_size == 0; - } - constexpr auto size() const noexcept -> size_type { - return m_size; - } + public: // named queries + constexpr auto empty() const noexcept -> bool { return m_size == 0; } + constexpr auto size() const noexcept -> size_type { return m_size; } - // Returns the current start pointer. If the StringRef is not - // null-terminated, throws std::domain_exception - auto c_str() const -> char const*; + // Returns the current start pointer. If the StringRef is not + // null-terminated, throws std::domain_exception + auto c_str() const -> char const *; - public: // substrings and searches - // Returns a substring of [start, start + length). - // If start + length > size(), then the substring is [start, size()). - // If start > size(), then the substring is empty. - auto substr( size_type start, size_type length ) const noexcept -> StringRef; + public: // substrings and searches + // Returns a substring of [start, start + length). + // If start + length > size(), then the substring is [start, size()). + // If start > size(), then the substring is empty. + auto substr(size_type start, size_type length) const noexcept -> StringRef; - // Returns the current start pointer. May not be null-terminated. - auto data() const noexcept -> char const*; + // Returns the current start pointer. May not be null-terminated. + auto data() const noexcept -> char const *; - constexpr auto isNullTerminated() const noexcept -> bool { - return m_start[m_size] == '\0'; - } + constexpr auto isNullTerminated() const noexcept -> bool { return m_start[m_size] == '\0'; } - public: // iterators - constexpr const_iterator begin() const { return m_start; } - constexpr const_iterator end() const { return m_start + m_size; } - }; + public: // iterators + constexpr const_iterator begin() const { return m_start; } + constexpr const_iterator end() const { return m_start + m_size; } + }; - auto operator += ( std::string& lhs, StringRef const& sr ) -> std::string&; - auto operator << ( std::ostream& os, StringRef const& sr ) -> std::ostream&; + auto operator+=(std::string &lhs, StringRef const &sr) -> std::string &; + auto operator<<(std::ostream &os, StringRef const &sr) -> std::ostream &; - constexpr auto operator "" _sr( char const* rawChars, std::size_t size ) noexcept -> StringRef { - return StringRef( rawChars, size ); - } + constexpr auto operator"" _sr(char const *rawChars, std::size_t size) noexcept -> StringRef + { + return StringRef(rawChars, size); + } } // namespace Catch -constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) noexcept -> Catch::StringRef { - return Catch::StringRef( rawChars, size ); +constexpr auto operator"" _catch_sr(char const *rawChars, + std::size_t size) noexcept -> Catch::StringRef +{ + return Catch::StringRef(rawChars, size); } // end catch_stringref.h // start catch_preprocessor.hpp - #define CATCH_RECURSION_LEVEL0(...) __VA_ARGS__ -#define CATCH_RECURSION_LEVEL1(...) CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL2(...) CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL3(...) CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL4(...) CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__))) -#define CATCH_RECURSION_LEVEL5(...) CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL1(...) \ + CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL2(...) \ + CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL3(...) \ + CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL4(...) \ + CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__))) +#define CATCH_RECURSION_LEVEL5(...) \ + CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__))) #ifdef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR #define INTERNAL_CATCH_EXPAND_VARGS(...) __VA_ARGS__ // MSVC needs more evaluations -#define CATCH_RECURSION_LEVEL6(...) CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__))) -#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__)) +#define CATCH_RECURSION_LEVEL6(...) \ + CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(CATCH_RECURSION_LEVEL5(__VA_ARGS__))) +#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL6(CATCH_RECURSION_LEVEL6(__VA_ARGS__)) #else -#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL5(__VA_ARGS__) +#define CATCH_RECURSE(...) CATCH_RECURSION_LEVEL5(__VA_ARGS__) #endif #define CATCH_REC_END(...) @@ -707,41 +735,55 @@ constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) n #define CATCH_EMPTY() #define CATCH_DEFER(id) id CATCH_EMPTY() -#define CATCH_REC_GET_END2() 0, CATCH_REC_END -#define CATCH_REC_GET_END1(...) CATCH_REC_GET_END2 -#define CATCH_REC_GET_END(...) CATCH_REC_GET_END1 +#define CATCH_REC_GET_END2() 0, CATCH_REC_END +#define CATCH_REC_GET_END1(...) CATCH_REC_GET_END2 +#define CATCH_REC_GET_END(...) CATCH_REC_GET_END1 #define CATCH_REC_NEXT0(test, next, ...) next CATCH_REC_OUT -#define CATCH_REC_NEXT1(test, next) CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0) -#define CATCH_REC_NEXT(test, next) CATCH_REC_NEXT1(CATCH_REC_GET_END test, next) - -#define CATCH_REC_LIST0(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST1(f, x, peek, ...) , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST2(f, x, peek, ...) f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ ) - -#define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) , f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD) ) ( f, userdata, peek, __VA_ARGS__ ) -#define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...) f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ ) - -// Applies the function macro `f` to each of the remaining parameters, inserts commas between the results, -// and passes userdata as the first parameter to each invocation, -// e.g. CATCH_REC_LIST_UD(f, x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c) -#define CATCH_REC_LIST_UD(f, userdata, ...) CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) - -#define CATCH_REC_LIST(f, ...) CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) +#define CATCH_REC_NEXT1(test, next) CATCH_DEFER(CATCH_REC_NEXT0)(test, next, 0) +#define CATCH_REC_NEXT(test, next) CATCH_REC_NEXT1(CATCH_REC_GET_END test, next) + +#define CATCH_REC_LIST0(f, x, peek, ...) \ + , f(x) CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST1))(f, peek, __VA_ARGS__) +#define CATCH_REC_LIST1(f, x, peek, ...) \ + , f(x) CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST0))(f, peek, __VA_ARGS__) +#define CATCH_REC_LIST2(f, x, peek, ...) \ + f(x) CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST1))(f, peek, __VA_ARGS__) + +#define CATCH_REC_LIST0_UD(f, userdata, x, peek, ...) \ + , f(userdata, x) \ + CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD))(f, userdata, peek, __VA_ARGS__) +#define CATCH_REC_LIST1_UD(f, userdata, x, peek, ...) \ + , f(userdata, x) \ + CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD))(f, userdata, peek, __VA_ARGS__) +#define CATCH_REC_LIST2_UD(f, userdata, x, peek, ...) \ + f(userdata, x) \ + CATCH_DEFER(CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD))(f, userdata, peek, __VA_ARGS__) + +// Applies the function macro `f` to each of the remaining parameters, inserts commas between the +// results, and passes userdata as the first parameter to each invocation, e.g. CATCH_REC_LIST_UD(f, +// x, a, b, c) evaluates to f(x, a), f(x, b), f(x, c) +#define CATCH_REC_LIST_UD(f, userdata, ...) \ + CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) + +#define CATCH_REC_LIST(f, ...) \ + CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0)) #define INTERNAL_CATCH_EXPAND1(param) INTERNAL_CATCH_EXPAND2(param) -#define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO## __VA_ARGS__ -#define INTERNAL_CATCH_DEF(...) INTERNAL_CATCH_DEF __VA_ARGS__ +#define INTERNAL_CATCH_EXPAND2(...) INTERNAL_CATCH_NO##__VA_ARGS__ +#define INTERNAL_CATCH_DEF(...) INTERNAL_CATCH_DEF __VA_ARGS__ #define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF #define INTERNAL_CATCH_STRINGIZE(...) INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__) #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR #define INTERNAL_CATCH_STRINGIZE2(...) #__VA_ARGS__ -#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) +#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) \ + INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) #else -// MSVC is adding extra space and needs another indirection to expand INTERNAL_CATCH_NOINTERNAL_CATCH_DEF +// MSVC is adding extra space and needs another indirection to expand +// INTERNAL_CATCH_NOINTERNAL_CATCH_DEF #define INTERNAL_CATCH_STRINGIZE2(...) INTERNAL_CATCH_STRINGIZE3(__VA_ARGS__) #define INTERNAL_CATCH_STRINGIZE3(...) #__VA_ARGS__ -#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) (INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) + 1) +#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param) \ + (INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param)) + 1) #endif #define INTERNAL_CATCH_MAKE_NAMESPACE2(...) ns_##__VA_ARGS__ @@ -750,588 +792,955 @@ constexpr auto operator "" _catch_sr( char const* rawChars, std::size_t size ) n #define INTERNAL_CATCH_REMOVE_PARENS(...) INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__) #ifndef CATCH_CONFIG_TRADITIONAL_MSVC_PREPROCESSOR -#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) decltype(get_wrapper()) -#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)) +#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) \ + decltype(get_wrapper()) +#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) \ + INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__)) #else -#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) INTERNAL_CATCH_EXPAND_VARGS(decltype(get_wrapper())) -#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) INTERNAL_CATCH_EXPAND_VARGS(INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))) +#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...) \ + INTERNAL_CATCH_EXPAND_VARGS( \ + decltype(get_wrapper())) +#define INTERNAL_CATCH_MAKE_TYPE_LIST(...) \ + INTERNAL_CATCH_EXPAND_VARGS( \ + INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))) #endif -#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...)\ - CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST,__VA_ARGS__) +#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...) \ + CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST, __VA_ARGS__) #define INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_0) INTERNAL_CATCH_REMOVE_PARENS(_0) -#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1) -#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2) -#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3) -#define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4) -#define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5) -#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _3, _4, _5, _6) -#define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7) -#define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8) -#define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9) -#define INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) +#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1) +#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2) +#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3) +#define INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0, _1, _2, _3, _4) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4) +#define INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0, _1, _2, _3, _4, _5) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5) +#define INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0, _1, _2, _3, _4, _5, _6) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _3, _4, _5, _6) +#define INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0, _1, _2, _3, _4, _5, _6, _7) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7) +#define INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), \ + INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8) +#define INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), \ + INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9) +#define INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) \ + INTERNAL_CATCH_REMOVE_PARENS(_0), \ + INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) #define INTERNAL_CATCH_VA_NARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...) N -#define INTERNAL_CATCH_TYPE_GEN\ - template struct TypeList {};\ - template\ - constexpr auto get_wrapper() noexcept -> TypeList { return {}; }\ - template class...> struct TemplateTypeList{};\ - template class...Cs>\ - constexpr auto get_wrapper() noexcept -> TemplateTypeList { return {}; }\ - template\ - struct append;\ - template\ - struct rewrap;\ - template class, typename...>\ - struct create;\ - template class, typename>\ - struct convert;\ - \ - template \ - struct append { using type = T; };\ - template< template class L1, typename...E1, template class L2, typename...E2, typename...Rest>\ - struct append, L2, Rest...> { using type = typename append, Rest...>::type; };\ - template< template class L1, typename...E1, typename...Rest>\ - struct append, TypeList, Rest...> { using type = L1; };\ - \ - template< template class Container, template class List, typename...elems>\ - struct rewrap, List> { using type = TypeList>; };\ - template< template class Container, template class List, class...Elems, typename...Elements>\ - struct rewrap, List, Elements...> { using type = typename append>, typename rewrap, Elements...>::type>::type; };\ - \ - template