_os.println("SMAP");
_os.println(lineMap.getDestFilename());
_os.println(_sourceType);
_os.println("*S " + _sourceType);
IntMap fileMap = new IntMap();
_os.println("*F");
Iterator<LineMap.Line> iter = lineMap.iterator();
while (iter.hasNext()) {
LineMap.Line line = iter.next();
String filename = line.getSourceFilename();
int index = fileMap.get(filename);
if (index < 0) {
index = fileMap.size() + 1;
fileMap.put(filename, index);
if (filename.indexOf('/') >= 0) {
int p = filename.lastIndexOf('/');
_os.println("+ " + index + " " + filename.substring(p + 1));
// XXX: _os.println(filename);
if (filename.startsWith("/"))
_os.println(filename.substring(1));
else
_os.println(filename);
}
else
_os.println(index + " " + filename);
}
}
_os.println("*L");
int size = lineMap.size();
int lastIndex = 0;
for (int i = 0; i < size; i++) {
LineMap.Line line = lineMap.get(i);
String filename = line.getSourceFilename();
int index = fileMap.get(filename);
String fileMarker = "";
_os.print(line.getSourceLine());
_os.print("#" + index);