# -*- coding: utf-8 -*- # # QAPI error classes # # Copyright (c) 2017-2019 Red Hat Inc. # # Authors: # Markus Armbruster # Marc-André Lureau # # This work is licensed under the terms of the GNU GPL, version 2. # See the COPYING file in the top-level directory. class QAPIError(Exception): def __init__(self, info, col, msg): Exception.__init__(self) self.info = info self.col = col self.msg = msg def __str__(self): loc = str(self.info) if self.col is not None: assert self.info.line is not None loc += ':%s' % self.col return loc + ': ' + self.msg class QAPIParseError(QAPIError): def __init__(self, parser, msg): col = 1 for ch in parser.src[parser.line_pos:parser.pos]: if ch == '\t': col = (col + 7) % 8 + 1 else: col += 1 super().__init__(parser.info, col, msg) class QAPISemError(QAPIError): def __init__(self, info, msg): super().__init__(info, None, msg)