74 for(std::list<linet>::const_iterator it=lines.begin();
75 it!=lines.end(); it++)
77 for(std::size_t j=0; j<strip && j<it->text.size(); j++)
87 for(std::list<linet>::iterator it=lines.begin();
88 it!=lines.end(); it++)
90 if(it->text.size()>=strip)
91 it->text=std::string(it->text, strip, std::string::npos);
94 it->text=std::string(it->text, 0,
MAXWIDTH);
103 for(std::size_t i=0; i<s.size(); i++)
105 if(s[i]==
'\\' || s[i]==
'{' || s[i]==
'}')
109 (s[i]==
'_' || s[i]==
'$' || s[i]==
'~' ||
110 s[i]==
'^' || s[i]==
'%' || s[i]==
'#' ||
124 for(std::size_t i=0; i<s.size(); i++)
128 case '&': dest+=
"&";
break;
129 case '<': dest+=
"<";
break;
130 case '>': dest+=
">";
break;
140 for(std::size_t i=0; i<s.size(); i++)
162 dest+=
"ERROR: unable to open ";
170 int line_start=line_int-3,
178 for(
int l=0; l<line_start-1; l++)
181 std::getline(in, tmp);
186 std::list<linet> lines;
188 for(
int l=line_start; l<=line_end && in; l++)
190 lines.push_back(
linet());
192 std::string &line=lines.back().text;
193 std::getline(in, line);
195 if(!line.empty() && line[line.size()-1]==
'\r')
196 line.resize(line.size()-1);
198 lines.back().line_number=l;
203 for(std::list<linet>::iterator it=lines.begin();
212 for(std::list<linet>::iterator it=lines.end();
228 for(std::list<linet>::iterator it=lines.begin();
229 it!=lines.end(); it++)
238 while(line_no.size()<4)
245 if(it->line_number==line_int)
246 tmp=
"{\\ttb{}"+tmp+
"}";
251 while(line_no.size()<4)
252 line_no=
" "+line_no;
254 line_no+
" ";
258 if(it->line_number==line_int)
259 tmp=
"<em>"+tmp+
"</em>";
272 typedef std::map<source_locationt, doc_claimt> claim_sett;
273 claim_sett claim_set;
279 for(
const auto &instruction : goto_program.
instructions)
281 if(instruction.is_assert())
283 const auto &source_location = instruction.source_location();
286 new_source_location.
set_file(source_location.get_file());
287 new_source_location.
set_line(source_location.get_line());
288 new_source_location.
set_function(source_location.get_function());
290 claim_set[new_source_location].comment_set.insert(
291 source_location.get_comment());
296 for(claim_sett::const_iterator it=claim_set.begin();
297 it!=claim_set.end(); it++)
301 std::string code =
get_code(source_location);
306 out <<
"\\claimlocation{File "
314 for(std::set<irep_idt>::const_iterator
315 s_it=it->second.comment_set.begin();
316 s_it!=it->second.comment_set.end();
323 out <<
"\\begin{alltt}\\claimcode\n"
332 out <<
"<div class=\"claim\">\n"
333 <<
"<div class=\"location\">File "
341 for(std::set<irep_idt>::const_iterator
342 s_it=it->second.comment_set.begin();
343 s_it!=it->second.comment_set.end();
345 out <<
"<div class=\"description\">\n"
351 out <<
"<div class=\"code\">\n"
353 <<
"</div> <!-- code -->\n";
355 out <<
"</div> <!-- claim -->\n";