mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
using System.Linq;
|
|
using ZoneCodeGenerator.Domain;
|
|
using ZoneCodeGenerator.Persistence;
|
|
|
|
namespace ZoneCodeGenerator.Parsing.CommandFile.PostProcessor
|
|
{
|
|
class PostProcessorUsages : IDataPostProcessor
|
|
{
|
|
public bool PostProcess(IDataRepository repository)
|
|
{
|
|
foreach (var dataTypeWithMembers in repository.GetAllStructs()
|
|
.AsEnumerable<DataTypeWithMembers>()
|
|
.Concat(repository.GetAllUnions()))
|
|
{
|
|
var information = repository.GetInformationFor(dataTypeWithMembers);
|
|
|
|
foreach (var memberInformation in information.OrderedMembers)
|
|
{
|
|
if (memberInformation.StructureType == null) continue;
|
|
|
|
memberInformation.StructureType.Usages.Add(information);
|
|
|
|
if (memberInformation.IsNonEmbeddedReference)
|
|
memberInformation.StructureType.NonEmbeddedReferenceExists = true;
|
|
|
|
if (memberInformation.IsSinglePointerReference)
|
|
memberInformation.StructureType.SinglePointerReferenceExists = true;
|
|
|
|
if (memberInformation.IsArrayPointerReference)
|
|
memberInformation.StructureType.ArrayPointerReferenceExists = true;
|
|
|
|
if (memberInformation.IsArrayReference)
|
|
memberInformation.StructureType.ArrayReferenceExists = true;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
} |