static void rewriteFile(const std::string& output_path, std::deque<std::string>& file_lines, const GuardMap& guard_map) { for (auto it = guard_map.rbegin(); it != guard_map.rend(); ++it) { const Location& loc = it->first; const DeclarationAvailability& avail = it->second; std::string condition = generateGuardCondition(avail); if (condition.empty()) { continue; } std::string prologue = "\n#if "s + condition + "\n"; std::string epilogue = "\n#endif /* " + condition + " */\n"; file_lines[loc.end.line - 1].insert(loc.end.column, epilogue); file_lines[loc.start.line - 1].insert(loc.start.column - 1, prologue); } printf("Preprocessing %s...\n", output_path.c_str()); writeFileLines(output_path, file_lines); }