1: #line 290 "tanglers.ipk" 2: #--------------------------------------------------------- 3: # c++ tangler: write to a file, insert source line numbers 4: # using '#line' pre-processor directives 5: from interscript.tanglers.base import tangler_base 6: import re 7: 8: class cpp_tangler(tangler_base): 9: def __init__(self,sink,weaver): 10: tangler_base.__init__(self,sink,weaver) 11: self.matchid = re.compile('^[^A-Za-z_]*([A-Za-z_][A-Za-z_0-9]*)(.*)$') 12: self.language = 'C++' 13: 14: def writeline(self,data,file,count,inhibit_sref=0): 15: tangler_base.writeline(self,data,file,count,inhibit_sref) 16: 17: def write_comment(self,line): 18: self._writeline('// '+line) 19: 20: def start_section(self, file, count): 21: data = '#line '+str(count)+' '+'"'+file+'"' 22: self._writeline(data) 23: if self.weaver: 24: self.weaver.echotangle(self.sink.lines_written,data) 25: 26: def get_comment_tangler(self): 27: return cpp_comment_tangler(self.sink, weaver) 28: 29: def get_string_tangler(self,eol,width): 30: return c_string_tangler(self.sink,self.weaver,eol,width) 31: 32: