From 69b15d96cebdbb7201b1849b4f62786633d70b8d Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 1 Nov 2017 10:56:09 -0700 Subject: Introduce WiX Intermediate Representation --- .../Tuples/WixComplexReferenceTuple.cs | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/WixToolset.Data/Tuples/WixComplexReferenceTuple.cs (limited to 'src/WixToolset.Data/Tuples/WixComplexReferenceTuple.cs') diff --git a/src/WixToolset.Data/Tuples/WixComplexReferenceTuple.cs b/src/WixToolset.Data/Tuples/WixComplexReferenceTuple.cs new file mode 100644 index 00000000..46de9aa9 --- /dev/null +++ b/src/WixToolset.Data/Tuples/WixComplexReferenceTuple.cs @@ -0,0 +1,86 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolset.Data +{ + using WixToolset.Data.Tuples; + + public static partial class TupleDefinitions + { + public static readonly IntermediateTupleDefinition WixComplexReference = new IntermediateTupleDefinition( + TupleDefinitionType.WixComplexReference, + new[] + { + new IntermediateFieldDefinition(nameof(WixComplexReferenceTupleFields.Parent), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixComplexReferenceTupleFields.ParentAttributes), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixComplexReferenceTupleFields.ParentLanguage), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixComplexReferenceTupleFields.Child), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixComplexReferenceTupleFields.ChildAttributes), IntermediateFieldType.String), + new IntermediateFieldDefinition(nameof(WixComplexReferenceTupleFields.Attributes), IntermediateFieldType.Bool), + }, + typeof(WixComplexReferenceTuple)); + } +} + +namespace WixToolset.Data.Tuples +{ + using System; + + public enum WixComplexReferenceTupleFields + { + Parent, + ParentAttributes, + ParentLanguage, + Child, + ChildAttributes, + Attributes, + } + + public class WixComplexReferenceTuple : IntermediateTuple + { + public WixComplexReferenceTuple() : base(TupleDefinitions.WixComplexReference, null, null) + { + } + + public WixComplexReferenceTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.WixComplexReference, sourceLineNumber, id) + { + } + + public IntermediateField this[WixComplexReferenceTupleFields index] => this.Fields[(int)index]; + + public string Parent + { + get => (string)this.Fields[(int)WixComplexReferenceTupleFields.Parent]?.Value; + set => this.Set((int)WixComplexReferenceTupleFields.Parent, value); + } + + public ComplexReferenceParentType ParentType + { + get => (ComplexReferenceParentType)Enum.Parse(typeof(ComplexReferenceParentType), (string)this.Fields[(int)WixComplexReferenceTupleFields.ParentAttributes]?.Value, true); + set => this.Set((int)WixComplexReferenceTupleFields.ParentAttributes, value.ToString()); + } + + public string ParentLanguage + { + get => (string)this.Fields[(int)WixComplexReferenceTupleFields.ParentLanguage]?.Value; + set => this.Set((int)WixComplexReferenceTupleFields.ParentLanguage, value); + } + + public string Child + { + get => (string)this.Fields[(int)WixComplexReferenceTupleFields.Child]?.Value; + set => this.Set((int)WixComplexReferenceTupleFields.Child, value); + } + + public ComplexReferenceChildType ChildType + { + get => (ComplexReferenceChildType)Enum.Parse(typeof(ComplexReferenceChildType), (string)this.Fields[(int)WixComplexReferenceTupleFields.ChildAttributes]?.Value, true); + set => this.Set((int)WixComplexReferenceTupleFields.ChildAttributes, value.ToString()); + } + + public bool IsPrimary + { + get => (bool)this.Fields[(int)WixComplexReferenceTupleFields.Attributes]?.Value; + set => this.Set((int)WixComplexReferenceTupleFields.Attributes, value); + } + } +} \ No newline at end of file -- cgit v1.2.3-55-g6feb