"count": @var{count},
"line_number": @var{line_number},
"unexecuted_block": @var{unexecuted_block}
+ "function_name": @var{function_name},
@}
@end smallexample
(not all statements on the line are executed)
@end itemize
+@item
+@var{function_name}: a name of a function this @var{line} belongs to
+(for a line with an inlined statements can be not set)
+
Each @var{branch} has the following form:
@smallexample
return optind;
}
-/* Output intermediate LINE sitting on LINE_NUM to JSON OBJECT. */
+/* Output intermediate LINE sitting on LINE_NUM to JSON OBJECT.
+ Add FUNCTION_NAME to the LINE. */
static void
output_intermediate_json_line (json::array *object,
- line_info *line, unsigned line_num)
+ line_info *line, unsigned line_num,
+ const char *function_name)
{
if (!line->exists)
return;
json::object *lineo = new json::object ();
lineo->set ("line_number", new json::number (line_num));
+ if (function_name != NULL)
+ lineo->set ("function_name", new json::string (function_name));
lineo->set ("count", new json::number (line->count));
lineo->set ("unexecuted_block",
new json::literal (line->has_unexecuted_block));
json::array *lineso = new json::array ();
root->set ("lines", lineso);
+ function_info *last_non_group_fn = NULL;
+
for (unsigned line_num = 1; line_num <= src->lines.size (); line_num++)
{
vector<function_info *> *fns = src->get_functions_at_location (line_num);
for (vector<function_info *>::iterator it2 = fns->begin ();
it2 != fns->end (); it2++)
{
+ if (!(*it2)->is_group)
+ last_non_group_fn = *it2;
+
vector<line_info> &lines = (*it2)->lines;
for (unsigned i = 0; i < lines.size (); i++)
{
line_info *line = &lines[i];
- output_intermediate_json_line (lineso, line, line_num + i);
+ output_intermediate_json_line (lineso, line, line_num + i,
+ (*it2)->m_name);
}
}
/* Follow with lines associated with the source file. */
if (line_num < src->lines.size ())
- output_intermediate_json_line (lineso, &src->lines[line_num], line_num);
+ output_intermediate_json_line (lineso, &src->lines[line_num], line_num,
+ (last_non_group_fn != NULL
+ ? last_non_group_fn->m_name : NULL));
}
}