// Boost.Geometry Index // Rtree tests generator // Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland. // This file was modified by Oracle on 2021. // Modifications copyright (c) 2021, Oracle and/or its affiliates. // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include int main() { typedef boost::tuple CT; std::vector coordinate_types; coordinate_types.push_back(boost::make_tuple("double", "d")); //coordinate_types.push_back(boost::make_tuple("int", "i")); //coordinate_types.push_back(boost::make_tuple("float", "f")); std::vector dimensions; dimensions.push_back("2"); dimensions.push_back("3"); typedef boost::tuple P; std::vector

parameters; parameters.push_back(boost::make_tuple("bgi::linear<5, 2>()", "lin")); parameters.push_back(boost::make_tuple("bgi::dynamic_linear(5, 2)", "dlin")); parameters.push_back(boost::make_tuple("bgi::quadratic<5, 2>()", "qua")); parameters.push_back(boost::make_tuple("bgi::dynamic_quadratic(5, 2)", "dqua")); parameters.push_back(boost::make_tuple("bgi::rstar<5, 2>()", "rst")); parameters.push_back(boost::make_tuple("bgi::dynamic_rstar(5, 2)","drst")); std::vector indexables; indexables.push_back("p"); indexables.push_back("b"); indexables.push_back("s"); typedef std::pair TS; std::vector testsets; testsets.push_back(std::make_pair("testset::modifiers", "mod")); testsets.push_back(std::make_pair("testset::queries", "que")); testsets.push_back(std::make_pair("testset::additional", "add")); for (P const& p : parameters) { for (TS const& ts : testsets) { for (std::string const& i : indexables) { for (std::string const& d : dimensions) { // If the I is Segment, generate only for 2d if ( i == "s" && d != "2" ) { continue; } for (CT const& c : coordinate_types) { std::string filename = std::string() + "rtree_" + boost::get<1>(p) + '_' + ts.second + '_' + i + d + boost::get<1>(c) + ".cpp"; std::ofstream f(filename.c_str(), std::ios::trunc); f << "// Boost.Geometry Index\n" << "// Unit Test\n" << "\n" << "// Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland.\n" << "\n" << "// Use, modification and distribution is subject to the Boost Software License,\n" << "// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at\n" << "// http://www.boost.org/LICENSE_1_0.txt)\n" << "\n"; f << "#include \n" << "\n"; std::string indexable_type; std::string point_type = std::string("bg::model::point<") + boost::get<0>(c) + ", " + d + ", bg::cs::cartesian>"; if ( i == "p" ) indexable_type = point_type; else if ( i == "b" ) indexable_type = std::string("bg::model::box< ") + point_type + " >"; else if ( i == "s" ) indexable_type = std::string("bg::model::segment< ") + point_type + " >"; else BOOST_ASSERT(false); f << "int test_main(int, char* [])\n" << "{\n" << " typedef " << indexable_type << " Indexable;\n" << " " << ts.first << "(" << boost::get<0>(p) << ", std::allocator());\n" << " return 0;\n" << "}\n"; } } } } } return 0; }