from functools import wraps

import nac3embedded


__all__ = ["kernel", "portable"]


def kernel(function):
    @wraps(function)
    def run_on_core(self, *args, **kwargs):
        nac3 = nac3embedded.NAC3()
        nac3.register_host_object(self)
        nac3.compile_method(self, function.__name__)
    return run_on_core


def portable(function):
    return fn