aboutsummaryrefslogtreecommitdiff
path: root/src/api/wix/WixToolset.Data/Symbols/WixPackageSymbol.cs
blob: e17200332d5bcec0546d25b2471efc6d26ad89f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// 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.Symbols;

    public static partial class SymbolDefinitions
    {
        public static readonly IntermediateSymbolDefinition WixPackage = new IntermediateSymbolDefinition(
            SymbolDefinitionType.WixPackage,
            new[]
            {
                new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.PackageId), IntermediateFieldType.String),
                new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.UpgradeCode), IntermediateFieldType.String),
                new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Name), IntermediateFieldType.String),
                new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Language), IntermediateFieldType.String),
                new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Version), IntermediateFieldType.String),
                new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Manufacturer), IntermediateFieldType.String),
                new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Attributes), IntermediateFieldType.Number),
                new IntermediateFieldDefinition(nameof(WixPackageSymbolFields.Codepage), IntermediateFieldType.String),
            },
            typeof(WixPackageSymbol));
    }
}

namespace WixToolset.Data.Symbols
{
    using System;

    public enum WixPackageSymbolFields
    {
        PackageId,
        UpgradeCode,
        Name,
        Language,
        Version,
        Manufacturer,
        Attributes,
        Codepage,
    }

    [Flags]
    public enum WixPackageAttributes
    {
        None = 0x0,
        PerMachine = 0x1,
    }

    public class WixPackageSymbol : IntermediateSymbol
    {
        public WixPackageSymbol() : base(SymbolDefinitions.WixPackage, null, null)
        {
        }

        public WixPackageSymbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base(SymbolDefinitions.WixPackage, sourceLineNumber, id)
        {
        }

        public IntermediateField this[WixPackageSymbolFields index] => this.Fields[(int)index];

        public string PackageId
        {
            get => (string)this.Fields[(int)WixPackageSymbolFields.PackageId];
            set => this.Set((int)WixPackageSymbolFields.PackageId, value);
        }

        public string UpgradeCode
        {
            get => (string)this.Fields[(int)WixPackageSymbolFields.UpgradeCode];
            set => this.Set((int)WixPackageSymbolFields.UpgradeCode, value);
        }

        public string Name
        {
            get => (string)this.Fields[(int)WixPackageSymbolFields.Name];
            set => this.Set((int)WixPackageSymbolFields.Name, value);
        }

        public string Language
        {
            get => (string)this.Fields[(int)WixPackageSymbolFields.Language];
            set => this.Set((int)WixPackageSymbolFields.Language, value);
        }

        public string Version
        {
            get => (string)this.Fields[(int)WixPackageSymbolFields.Version];
            set => this.Set((int)WixPackageSymbolFields.Version, value);
        }

        public string Manufacturer
        {
            get => (string)this.Fields[(int)WixPackageSymbolFields.Manufacturer];
            set => this.Set((int)WixPackageSymbolFields.Manufacturer, value);
        }

        public WixPackageAttributes Attributes
        {
            get => (WixPackageAttributes)this.Fields[(int)WixPackageSymbolFields.Attributes].AsNumber();
            set => this.Set((int)WixPackageSymbolFields.Attributes, (int)value);
        }

        public string Codepage
        {
            get => (string)this.Fields[(int)WixPackageSymbolFields.Codepage];
            set => this.Set((int)WixPackageSymbolFields.Codepage, value);
        }

        public bool PerMachine => (this.Attributes & WixPackageAttributes.PerMachine) == WixPackageAttributes.PerMachine;
    }
}