From 50f27d79170449f42fb8ba888ebbee4c35d1b634 Mon Sep 17 00:00:00 2001 From: Stephan Seitz <stephan.seitz@fau.de> Date: Sat, 30 Mar 2019 13:55:54 +0100 Subject: [PATCH] Add pystencils.data_types.address_of --- pystencils/data_types.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/pystencils/data_types.py b/pystencils/data_types.py index 7bdc9d340..93ef5c1c7 100644 --- a/pystencils/data_types.py +++ b/pystencils/data_types.py @@ -14,6 +14,33 @@ from pystencils.utils import all_equal from sympy.logic.boolalg import Boolean +# noinspection PyPep8Naming +class address_of(sp.Function): + is_Atom = True + + def __new__(cls, arg): + obj = sp.Function.__new__(cls, arg) + return obj + + @property + def canonical(self): + if hasattr(self.args[0], 'canonical'): + return self.args[0].canonical + else: + raise NotImplementedError() + + @property + def is_commutative(self): + return self.args[0].is_commutative + + @property + def dtype(self): + if hasattr(self.args[0], 'dtype'): + return PointerType(self.args[0].dtype, restrict=True) + else: + return PointerType('void', restrict=True) + + # noinspection PyPep8Naming class cast_func(sp.Function): is_Atom = True -- GitLab