# Copyright (c) Barefoot Networks, Inc.
# Licensed under the Apache License, Version 2.0 (the "License")

class CompilationException(Exception):
    """Signals an error during compilation"""
    def __init__(self, isBug, format, *message):        
        # isBug: indicates that this is a compiler bug
        super(CompilationException, self).__init__()
        
        assert isinstance(format, str)
        assert isinstance(isBug, bool)
        self.message = message
        self.format = format
        self.isBug = isBug

    def show(self):
        # TODO: format this message nicely
        return self.format.format(*self.message)


class NotSupportedException(Exception):
    archError = " not supported by EBPF"

    def __init__(self, format, *message):
        super(NotSupportedException, self).__init__()

        assert isinstance(format, str)
        self.message = message
        self.format = format

    def show(self):
        # TODO: format this message nicely
        return (self.format + NotSupportedException.archError).format(
            *self.message)
