void operator()(const adobe::line_position_t& position, const adobe::array_t& conditional, const adobe::adam_callback_suite_t::relation_t* first, const adobe::adam_callback_suite_t::relation_t* last, const std::string& brief, const std::string& detailed) { if (instrument_positions) { std::cerr << position.stream_name() << ":" << position.line_number_m << ":" << position.line_start_m << ":" << position.position_m << ":"; if (position.line_start_m) { std::cerr << " \"" << std::string(m_str.begin() + position.line_start_m, m_str.begin() + position.position_m) << "\""; } std::cerr << "\n"; } else { #if REQUIRE_EXACT_MATCH push_back(m_array, position.stream_name()); push_back(m_array, position.line_number_m); push_back(m_array, std::size_t(position.line_start_m)); push_back(m_array, std::size_t(position.position_m)); #endif } push_back(m_array, conditional); while (first != last) { push_back(m_array, first->name_m); if (instrument_positions) { std::cerr << first->position_m.stream_name() << ":" << first->position_m.line_number_m << ":" << first->position_m.line_start_m << ":" << first->position_m.position_m << ":"; if (position.line_start_m) { std::cerr << " \"" << std::string(m_str.begin() + first->position_m.line_start_m, m_str.begin() + first->position_m.position_m) << "\""; } std::cerr << "\n"; } else { #if REQUIRE_EXACT_MATCH push_back(m_array, first->position_m.stream_name()); push_back(m_array, first->position_m.line_number_m); push_back(m_array, std::size_t(first->position_m.line_start_m)); push_back(m_array, std::size_t(first->position_m.position_m)); #endif } push_back(m_array, first->expression_m); push_back(m_array, first->detailed_m); push_back(m_array, first->brief_m); ++first; } #if REQUIRE_EXACT_MATCH push_back(m_array, brief); push_back(m_array, detailed); #endif }
void operator()(adobe::name_t cell_name, bool linked, const adobe::line_position_t& position1, const adobe::array_t& initializer, const adobe::line_position_t& position2, const adobe::array_t& expression, const std::string& brief, const std::string& detailed) { push_back(m_array, cell_name); push_back(m_array, linked); if (instrument_positions) { std::cerr << position1.stream_name() << ":" << position1.line_number_m << ":" << position1.line_start_m << ":" << position1.position_m << ":"; if (position1.line_start_m) { std::cerr << " \"" << std::string(m_str.begin() + position1.line_start_m, m_str.begin() + position1.position_m) << "\""; } std::cerr << "\n"; } else { #if REQUIRE_EXACT_MATCH push_back(m_array, position1.stream_name()); push_back(m_array, position1.line_number_m); push_back(m_array, std::size_t(position1.line_start_m)); push_back(m_array, std::size_t(position1.position_m)); #endif } push_back(m_array, initializer); if (instrument_positions) { std::cerr << position2.stream_name() << ":" << position2.line_number_m << ":" << position2.line_start_m << ":" << position2.position_m << ":"; if (position2.line_start_m) { std::cerr << " \"" << std::string(m_str.begin() + position2.line_start_m, m_str.begin() + position2.position_m) << "\""; } std::cerr << "\n"; } else { #if REQUIRE_EXACT_MATCH push_back(m_array, position2.stream_name()); push_back(m_array, position2.line_number_m); push_back(m_array, std::size_t(position2.line_start_m)); push_back(m_array, std::size_t(position2.position_m)); #endif } push_back(m_array, expression); #if REQUIRE_EXACT_MATCH push_back(m_array, brief); push_back(m_array, detailed); #endif }
void operator()(adobe::adam_callback_suite_t::cell_type_t type, adobe::name_t cell_name, const adobe::line_position_t& position, const adobe::array_t& expr_or_init, const std::string& brief, const std::string& detailed) { std::string type_str; switch (type) { case adobe::adam_callback_suite_t::input_k: type_str = "input_k"; case adobe::adam_callback_suite_t::output_k: type_str = "output_k"; case adobe::adam_callback_suite_t::constant_k: type_str = "constant_k"; case adobe::adam_callback_suite_t::logic_k: type_str = "logic_k"; case adobe::adam_callback_suite_t::invariant_k: type_str = "invariant_k"; } push_back(m_array, type_str); push_back(m_array, cell_name); if (instrument_positions) { std::cerr << position.stream_name() << ":" << position.line_number_m << ":" << position.line_start_m << ":" << position.position_m << ":"; if (position.line_start_m) { std::cerr << " \"" << std::string(m_str.begin() + position.line_start_m, m_str.begin() + position.position_m) << "\""; } std::cerr << "\n"; } else { #if REQUIRE_EXACT_MATCH push_back(m_array, position.stream_name()); push_back(m_array, position.line_number_m); push_back(m_array, std::size_t(position.line_start_m)); push_back(m_array, std::size_t(position.position_m)); #endif } push_back(m_array, expr_or_init); #if REQUIRE_EXACT_MATCH push_back(m_array, brief); push_back(m_array, detailed); #endif }
boost::any operator()(const boost::any& parent, const adobe::line_position_t& parse_location, adobe::name_t name, const adobe::array_t& parameters, const std::string& brief, const std::string& detailed) { // Note that we are forced to ignore parent if (instrument_positions) { std::cerr << parse_location.stream_name() << ":" << parse_location.line_number_m << ":" << parse_location.line_start_m << ":" << parse_location.position_m << ":"; if (parse_location.line_start_m) { std::cerr << " \"" << std::string(m_str.begin() + parse_location.line_start_m, m_str.begin() + parse_location.position_m) << "\""; } std::cerr << "\n"; } else { #if REQUIRE_EXACT_MATCH push_back(m_array, parse_location.stream_name()); push_back(m_array, parse_location.line_number_m); push_back(m_array, std::size_t(parse_location.line_start_m)); push_back(m_array, std::size_t(parse_location.position_m)); #endif } push_back(m_array, name); push_back(m_array, parameters); #if REQUIRE_EXACT_MATCH push_back(m_array, brief); push_back(m_array, detailed); #endif return parent; }