def add_line_mark_for_op(cls, b: GtkSource.Buffer, ssb_filename: str,
                          opcode_addr: int, name: str, category: str,
                          is_for_macro_call: bool):
     m = cls._get_opcode_mark(b, ssb_filename, opcode_addr,
                              is_for_macro_call)
     if m is not None:
         b.create_source_mark(name, category, b.get_iter_at_mark(m))
 def add_breakpoint_line_mark(cls, b: GtkSource.Buffer, ssb_filename: str,
                              opcode_offset: int, category: str):
     ms = []
     m: Gtk.TextMark = cls._get_opcode_mark(b, ssb_filename, opcode_offset,
                                            True)
     if m is not None:
         ms.append(m)
     m = cls._get_opcode_mark(b, ssb_filename, opcode_offset, False)
     if m is not None:
         ms.append(m)
     for i, m in enumerate(ms):
         line_iter = b.get_iter_at_line(b.get_iter_at_mark(m).get_line())
         lm: Gtk.TextMark = b.get_mark(
             f'for:opcode_<<<{ssb_filename}>>>_{opcode_offset}_{i}')
         if lm is not None:
             return
         b.create_source_mark(
             f'for:opcode_<<<{ssb_filename}>>>_{opcode_offset}_{i}',
             category, line_iter)