From aefa8d4ddd4289ed00227ee618d5622e603719b4 Mon Sep 17 00:00:00 2001 From: Ben Farnham Date: Wed, 23 Oct 2024 14:29:12 +0200 Subject: [PATCH 1/3] modified template to create compiling code in the case that a devicelogic class has no valid devicelogic parent --- Device/templates/designToDeviceBaseHeader.jinja | 6 +++--- FrameworkInternals/DesignInspector.py | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Device/templates/designToDeviceBaseHeader.jinja b/Device/templates/designToDeviceBaseHeader.jinja index e7f07566..1244012a 100644 --- a/Device/templates/designToDeviceBaseHeader.jinja +++ b/Device/templates/designToDeviceBaseHeader.jinja @@ -20,9 +20,9 @@ {# Piotr Nikiel #} {% macro get_parent_struct(class_name) %} - {% set parent = designInspector.get_parent(class_name) %} - {% if parent == None -%} - struct{/*No exact Parent of the class*/} + {% set parent_class_name = designInspector.get_parent(class_name) %} + {%- if parent_class_name == None or not designInspector.class_has_legit_device_parent(parent_class_name) -%} + struct{/*No Device Logic for parent {{parent_class_name}} of {{class_name}}*/} {%- else -%} D{{parent}} {%- endif -%} diff --git a/FrameworkInternals/DesignInspector.py b/FrameworkInternals/DesignInspector.py index b1f2822e..90d719b6 100644 --- a/FrameworkInternals/DesignInspector.py +++ b/FrameworkInternals/DesignInspector.py @@ -114,9 +114,7 @@ def class_has_legit_device_parent(self, class_name): return False # referenced from multiple parents, so far sure no unique parent if has_objects_origins[0] == "Root": return True # Root by definition has device logic - if not self.class_has_device_logic(has_objects_origins[0]): - return False - return True + return self.class_has_device_logic(has_objects_origins[0]) def get_parent(self, class_name): """Returns parent class name or None if device-logic parent is not applicable""" From 93f8b1418708c3249ad8601d8af81e0f3437a391 Mon Sep 17 00:00:00 2001 From: Ben Farnham Date: Wed, 23 Oct 2024 16:23:33 +0200 Subject: [PATCH 2/3] reverted, same as master --- FrameworkInternals/DesignInspector.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/FrameworkInternals/DesignInspector.py b/FrameworkInternals/DesignInspector.py index 90d719b6..b1f2822e 100644 --- a/FrameworkInternals/DesignInspector.py +++ b/FrameworkInternals/DesignInspector.py @@ -114,7 +114,9 @@ def class_has_legit_device_parent(self, class_name): return False # referenced from multiple parents, so far sure no unique parent if has_objects_origins[0] == "Root": return True # Root by definition has device logic - return self.class_has_device_logic(has_objects_origins[0]) + if not self.class_has_device_logic(has_objects_origins[0]): + return False + return True def get_parent(self, class_name): """Returns parent class name or None if device-logic parent is not applicable""" From 312c300ce577735f562f78518766b8608d00501b Mon Sep 17 00:00:00 2001 From: Ben Farnham Date: Wed, 23 Oct 2024 16:30:11 +0200 Subject: [PATCH 3/3] inverted if/else logic - think positive --- Device/templates/designToDeviceBaseHeader.jinja | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Device/templates/designToDeviceBaseHeader.jinja b/Device/templates/designToDeviceBaseHeader.jinja index 1244012a..3424f201 100644 --- a/Device/templates/designToDeviceBaseHeader.jinja +++ b/Device/templates/designToDeviceBaseHeader.jinja @@ -21,10 +21,10 @@ {% macro get_parent_struct(class_name) %} {% set parent_class_name = designInspector.get_parent(class_name) %} - {%- if parent_class_name == None or not designInspector.class_has_legit_device_parent(parent_class_name) -%} - struct{/*No Device Logic for parent {{parent_class_name}} of {{class_name}}*/} - {%- else -%} + {%- if parent_class_name != None and designInspector.class_has_legit_device_parent(parent_class_name) -%} D{{parent}} + {%- else -%} + struct{/*No Device Logic for parent {{parent_class_name}} of {{class_name}}*/} {%- endif -%} {% endmacro %}