当前位置: 首页>>代码示例>>C++>>正文


C++ irept::line方法代码示例

本文整理汇总了C++中irept::line方法的典型用法代码示例。如果您正苦于以下问题:C++ irept::line方法的具体用法?C++ irept::line怎么用?C++ irept::line使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在irept的用法示例。


在下文中一共展示了irept::line方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: get_code

void get_code(const irept &location, std::string &dest)
{
  dest = "";

  const irep_idt &file = location.file();
  const irep_idt &line = location.line();

  if(file == "" || line == "")
    return;

  std::ifstream in(file.c_str());

  if(!in)
    return;

  int line_int = atoi(line.c_str());

  int line_start = line_int - 3, line_end = line_int + 3;

  if(line_start <= 1)
    line_start = 1;

  // skip line_start-1 lines

  for(int l = 0; l < line_start - 1; l++)
  {
    std::string tmp;
    std::getline(in, tmp);
  }

  // read till line_end

  std::list<linet> lines;

  for(int l = line_start; l <= line_end && in; l++)
  {
    lines.emplace_back();

    std::string &line = lines.back().text;
    std::getline(in, line);

    if(!line.empty() && line[line.size() - 1] == '\r')
      line.resize(line.size() - 1);

    lines.back().line_number = l;
  }

  // remove empty lines at the end and at the beginning

  for(std::list<linet>::iterator it = lines.begin(); it != lines.end();)
  {
    if(is_empty_str(it->text))
      it = lines.erase(it);
    else
      break;
  }

  for(std::list<linet>::iterator it = lines.end(); it != lines.begin();)
  {
    it--;

    if(is_empty_str(it->text))
      it = lines.erase(it);
    else
      break;
  }

  // strip space
  strip_space(lines);

  // build dest

  for(auto &line : lines)
  {
    std::string line_no = i2string(line.line_number);

    while(line_no.size() < 4)
      line_no = " " + line_no;

    std::string tmp = line_no + "  " + escape_latex(line.text, true);

    if(line.line_number == line_int)
      tmp = emphasize(tmp);

    dest += tmp + "\n";
  }
}
开发者ID:esbmc,项目名称:esbmc,代码行数:87,代码来源:document_subgoals.cpp


注:本文中的irept::line方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。