From 0db6f90980e4cf8fce9d4d129b8db0af139e68be Mon Sep 17 00:00:00 2001 From: Jan Date: Sun, 22 Dec 2019 16:16:21 +0100 Subject: [PATCH] ZoneCodeGenerator: Add computations to check for dynamic array sizes and partially loaded structures --- .../Generating/Computations/MemberComputations.cs | 9 +++++++++ .../Generating/Computations/StructureComputations.cs | 3 +++ 2 files changed, 12 insertions(+) diff --git a/src/ZoneCodeGenerator/Generating/Computations/MemberComputations.cs b/src/ZoneCodeGenerator/Generating/Computations/MemberComputations.cs index e2507ad4..77f18198 100644 --- a/src/ZoneCodeGenerator/Generating/Computations/MemberComputations.cs +++ b/src/ZoneCodeGenerator/Generating/Computations/MemberComputations.cs @@ -84,6 +84,15 @@ namespace ZoneCodeGenerator.Generating.Computations information.Parent.OrderedMembers.LastOrDefault(member => !member.IsLeaf && !member.Computations.ShouldIgnore) == information; + public bool HasDynamicArraySize => information.Member.VariableType.References + .OfType() + .Any(array => array.DynamicSize != null); + + public bool IsBarrier => HasDynamicArraySize || + information.StructureType != null && + information.StructureType != information.Parent && + information.StructureType.Computations.Barrier != null; + public MemberReferenceComputations References => new MemberReferenceComputations(information); public MemberComputations(MemberInformation information) diff --git a/src/ZoneCodeGenerator/Generating/Computations/StructureComputations.cs b/src/ZoneCodeGenerator/Generating/Computations/StructureComputations.cs index 687a716a..b538c1ca 100644 --- a/src/ZoneCodeGenerator/Generating/Computations/StructureComputations.cs +++ b/src/ZoneCodeGenerator/Generating/Computations/StructureComputations.cs @@ -12,6 +12,9 @@ namespace ZoneCodeGenerator.Generating.Computations public bool IsUsed => information.Usages.Any(); + public MemberInformation Barrier => + information.OrderedMembers.FirstOrDefault(memberInformation => memberInformation.Computations.IsBarrier); + public StructureComputations(StructureInformation information) { this.information = information;