let dump_html fmt cil_visitor =
  (* Activate tagging for html *)
  Format.pp_set_formatter_tag_functions fmt html_tag_functions;
  Format.pp_set_tags fmt true;

  let pr_row s fmt n =
    Format.fprintf fmt
      "@{<tr>@[<v 1>@ @{<td class=\"entry\">%s@}@ @{<td class=\"stat\">%d@}@]@ @} " s n
  in
  let pr_stats fmt visitor =
    let metrics = visitor#get_metrics in
    Format.fprintf fmt "@[<v 0>@{<table>%a@}@]"
      (fun fmt metrics ->
        List.iter2 (fun text value -> pr_row text fmt value)
          ["SLOC""Number of if statements""Number of assignments";
           "Number of loops""Number of calls""Number of gotos";
           "Number of pointer accesses";]
          [metrics.cslocs; metrics.cifs; metrics.cassigns;
           metrics.cloops; metrics.ccalls; metrics.cgotos;
           metrics.cptrs;]) metrics
  in
  let pr_prelude fmt cil_visitor =
    Format.fprintf fmt "@[<v 0>@{<div>@ @{<h1>@{<span>Metrics@}@}@ @{<h2>Synthetic results@}@ <br/>@ @{<span>Defined function(s)@} (%d): <br/>@ @[&nbsp; %a@]@ <br/>@ <br/>@ @{<span>Undefined function(s)@} (%d):@ <br/>@ @[&nbsp; %a@]@ <br>@ <br/>@ @{<span>Potential entry point(s)@} (%d):@ <br/>@ @[&nbsp; %a@]@ <br/>@ <br/>@ @}@]"
      (VInfoMap.map_cardinal cil_visitor#fundef_calls)
      (Metrics_base.pretty_set VInfoMap.iter) cil_visitor#fundef_calls
      (VInfoMap.map_cardinal cil_visitor#fundecl_calls)
      (Metrics_base.pretty_set VInfoMap.iter) cil_visitor#fundecl_calls
      (Metrics_base.number_entry_points VInfoMap.fold
         cil_visitor#fundef_calls)
      (Metrics_base.pretty_entry_points VInfoMap.iter)
      cil_visitor#fundef_calls
  in
  let pr_detailed_results fmt cil_visitor =
    Format.fprintf fmt "@[<v 0>@{<div style=\"text-align: left;\">@[<v 2>@ @{<h2>Detailed results@}@ @[<v 0>%a@ @]@]@}"
      (fun fmt cil_visitor -> cil_visitor#print_stats fmt) cil_visitor
  in
  Format.fprintf fmt "@[<v 0><!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\"http://www.w3.org/TR/html4/strict.dtd\">@ @{<html>@ @{<head>@ @{<title>%s@}@ <meta content=\"text/html; charset=iso-8859-1\" http-equiv=\"Content-Type\"/>@ @{<style type=\"text/css\">%s@}@ @}@ @{<body>@[<v 2>@ %a@ %a@ %a@ @]@}@}@]@?"
    "Metrics"
    Css_html.css
    pr_prelude cil_visitor
    pr_stats cil_visitor
    pr_detailed_results cil_visitor;