// Copyright (C) 2017 Jonathan Müller // This file is subject to the license terms in the LICENSE file // found in the top-level directory of this distribution. #ifndef CPPAST_TEST_PARSER_HPP_INCLUDED #define CPPAST_TEST_PARSER_HPP_INCLUDED #include #include #include #include #include void write_file(const char* name, const char* code) { std::ofstream file(name); file << code; } std::unique_ptr parse(const cppast::cpp_entity_index& idx, const char* name, const char* code) { using namespace cppast; write_file(name, code); libclang_compile_config config; config.set_flags(cpp_standard::cpp_latest); libclang_parser p; return p.parse(idx, name, config); } template unsigned test_visit(const cppast::cpp_file& file, Func f) { auto count = 0u; cppast::visit(file, [&](const cppast::cpp_entity& e, cppast::visitor_info) { if (e.kind() == T::kind()) { auto& obj = static_cast(e); f(obj); ++count; } return true; }); return count; } #endif // CPPAST_TEST_PARSER_HPP_INCLUDED