diff options
| author | Rob Mensching <rob@firegiant.com> | 2017-09-17 15:35:20 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2017-09-17 16:00:11 -0700 |
| commit | d3d3649a68cb1fa589fdd987a6690dbd5d671f0d (patch) | |
| tree | 44fe37ee352b7e3a355cc1e08b1d7d5988c14cc0 /src/WixToolset.Core/Preprocess | |
| parent | a62610d23d6feb98be3b1e529a4e81b19d77d9d8 (diff) | |
| download | wix-d3d3649a68cb1fa589fdd987a6690dbd5d671f0d.tar.gz wix-d3d3649a68cb1fa589fdd987a6690dbd5d671f0d.tar.bz2 wix-d3d3649a68cb1fa589fdd987a6690dbd5d671f0d.zip | |
Initial code commit
Diffstat (limited to 'src/WixToolset.Core/Preprocess')
| -rw-r--r-- | src/WixToolset.Core/Preprocess/IfContext.cs | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/src/WixToolset.Core/Preprocess/IfContext.cs b/src/WixToolset.Core/Preprocess/IfContext.cs new file mode 100644 index 00000000..64b5bd91 --- /dev/null +++ b/src/WixToolset.Core/Preprocess/IfContext.cs | |||
| @@ -0,0 +1,110 @@ | |||
| 1 | // 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. | ||
| 2 | |||
| 3 | namespace WixToolset.Preprocess | ||
| 4 | { | ||
| 5 | using System; | ||
| 6 | |||
| 7 | /// <summary> | ||
| 8 | /// Current state of the if context. | ||
| 9 | /// </summary> | ||
| 10 | internal enum IfState | ||
| 11 | { | ||
| 12 | /// <summary>Context currently in unknown state.</summary> | ||
| 13 | Unknown, | ||
| 14 | |||
| 15 | /// <summary>Context currently inside if statement.</summary> | ||
| 16 | If, | ||
| 17 | |||
| 18 | /// <summary>Context currently inside elseif statement..</summary> | ||
| 19 | ElseIf, | ||
| 20 | |||
| 21 | /// <summary>Conext currently inside else statement.</summary> | ||
| 22 | Else, | ||
| 23 | } | ||
| 24 | |||
| 25 | /// <summary> | ||
| 26 | /// Context for an if statement in the preprocessor. | ||
| 27 | /// </summary> | ||
| 28 | internal sealed class IfContext | ||
| 29 | { | ||
| 30 | private bool active; | ||
| 31 | private bool keep; | ||
| 32 | private bool everKept; | ||
| 33 | private IfState state; | ||
| 34 | |||
| 35 | /// <summary> | ||
| 36 | /// Creates a default if context object, which are used for if's within an inactive preprocessor block | ||
| 37 | /// </summary> | ||
| 38 | public IfContext() | ||
| 39 | { | ||
| 40 | this.active = false; | ||
| 41 | this.keep = false; | ||
| 42 | this.everKept = true; | ||
| 43 | this.state = IfState.If; | ||
| 44 | } | ||
| 45 | |||
| 46 | /// <summary> | ||
| 47 | /// Creates an if context object. | ||
| 48 | /// </summary> | ||
| 49 | /// <param name="active">Flag if context is currently active.</param> | ||
| 50 | /// <param name="keep">Flag if context is currently true.</param> | ||
| 51 | /// <param name="state">State of context to start in.</param> | ||
| 52 | public IfContext(bool active, bool keep, IfState state) | ||
| 53 | { | ||
| 54 | this.active = active; | ||
| 55 | this.keep = keep; | ||
| 56 | this.everKept = keep; | ||
| 57 | this.state = state; | ||
| 58 | } | ||
| 59 | |||
| 60 | /// <summary> | ||
| 61 | /// Gets and sets if this if context is currently active. | ||
| 62 | /// </summary> | ||
| 63 | /// <value>true if context is active.</value> | ||
| 64 | public bool Active | ||
| 65 | { | ||
| 66 | get { return this.active; } | ||
| 67 | set { this.active = value; } | ||
| 68 | } | ||
| 69 | |||
| 70 | /// <summary> | ||
| 71 | /// Gets and sets if context is current true. | ||
| 72 | /// </summary> | ||
| 73 | /// <value>true if context is currently true.</value> | ||
| 74 | public bool IsTrue | ||
| 75 | { | ||
| 76 | get | ||
| 77 | { | ||
| 78 | return this.keep; | ||
| 79 | } | ||
| 80 | |||
| 81 | set | ||
| 82 | { | ||
| 83 | this.keep = value; | ||
| 84 | if (this.keep) | ||
| 85 | { | ||
| 86 | this.everKept = true; | ||
| 87 | } | ||
| 88 | } | ||
| 89 | } | ||
| 90 | |||
| 91 | /// <summary> | ||
| 92 | /// Gets if the context was ever true. | ||
| 93 | /// </summary> | ||
| 94 | /// <value>True if context was ever true.</value> | ||
| 95 | public bool WasEverTrue | ||
| 96 | { | ||
| 97 | get { return this.everKept; } | ||
| 98 | } | ||
| 99 | |||
| 100 | /// <summary> | ||
| 101 | /// Gets the current state of the if context. | ||
| 102 | /// </summary> | ||
| 103 | /// <value>Current state of context.</value> | ||
| 104 | public IfState IfState | ||
| 105 | { | ||
| 106 | get { return this.state; } | ||
| 107 | set { this.state = value; } | ||
| 108 | } | ||
| 109 | } | ||
| 110 | } | ||
