aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/Compiler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/WixToolset.Core/Compiler.cs')
-rw-r--r--src/WixToolset.Core/Compiler.cs328
1 files changed, 164 insertions, 164 deletions
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs
index 56f6322a..e598f540 100644
--- a/src/WixToolset.Core/Compiler.cs
+++ b/src/WixToolset.Core/Compiler.cs
@@ -12,7 +12,7 @@ namespace WixToolset.Core
12 using System.Text.RegularExpressions; 12 using System.Text.RegularExpressions;
13 using System.Xml.Linq; 13 using System.Xml.Linq;
14 using WixToolset.Data; 14 using WixToolset.Data;
15 using WixToolset.Data.Tuples; 15 using WixToolset.Data.Symbols;
16 using WixToolset.Data.WindowsInstaller; 16 using WixToolset.Data.WindowsInstaller;
17 using WixToolset.Extensibility; 17 using WixToolset.Extensibility;
18 using WixToolset.Extensibility.Data; 18 using WixToolset.Extensibility.Data;
@@ -252,16 +252,16 @@ namespace WixToolset.Core
252 { 252 {
253 foreach (var section in target.Sections) 253 foreach (var section in target.Sections)
254 { 254 {
255 foreach (var tuple in section.Tuples) 255 foreach (var symbol in section.Symbols)
256 { 256 {
257 foreach (var field in tuple.Fields) 257 foreach (var field in symbol.Fields)
258 { 258 {
259 if (field?.Type == IntermediateFieldType.String) 259 if (field?.Type == IntermediateFieldType.String)
260 { 260 {
261 var data = field.AsString(); 261 var data = field.AsString();
262 if (!String.IsNullOrEmpty(data)) 262 if (!String.IsNullOrEmpty(data))
263 { 263 {
264 var resolved = this.componentIdPlaceholdersResolver.ResolveVariables(tuple.SourceLineNumbers, data, errorOnUnknown: false); 264 var resolved = this.componentIdPlaceholdersResolver.ResolveVariables(symbol.SourceLineNumbers, data, errorOnUnknown: false);
265 if (resolved.UpdatedValue) 265 if (resolved.UpdatedValue)
266 { 266 {
267 field.Set(resolved.Value); 267 field.Set(resolved.Value);
@@ -332,7 +332,7 @@ namespace WixToolset.Core
332 this.Core.Write(ErrorMessages.SearchPropertyNotUppercase(sourceLineNumbers, "Property", "Id", propertyId.Id)); 332 this.Core.Write(ErrorMessages.SearchPropertyNotUppercase(sourceLineNumbers, "Property", "Id", propertyId.Id));
333 } 333 }
334 334
335 this.Core.AddTuple(new AppSearchTuple(sourceLineNumbers, new Identifier(propertyId.Access, propertyId.Id, signature)) 335 this.Core.AddSymbol(new AppSearchSymbol(sourceLineNumbers, new Identifier(propertyId.Access, propertyId.Id, signature))
336 { 336 {
337 PropertyRef = propertyId.Id, 337 PropertyRef = propertyId.Id,
338 SignatureRef = signature 338 SignatureRef = signature
@@ -377,7 +377,7 @@ namespace WixToolset.Core
377 { 377 {
378 var section = this.Core.ActiveSection; 378 var section = this.Core.ActiveSection;
379 379
380 // Add the tuple to a separate section if requested. 380 // Add the symbol to a separate section if requested.
381 if (fragment) 381 if (fragment)
382 { 382 {
383 var id = String.Concat(this.Core.ActiveSection.Id, ".", propertyId.Id); 383 var id = String.Concat(this.Core.ActiveSection.Id, ".", propertyId.Id);
@@ -385,24 +385,24 @@ namespace WixToolset.Core
385 section = this.Core.CreateSection(id, SectionType.Fragment, this.Core.ActiveSection.Codepage, this.Context.CompilationId); 385 section = this.Core.CreateSection(id, SectionType.Fragment, this.Core.ActiveSection.Codepage, this.Context.CompilationId);
386 386
387 // Reference the property in the active section. 387 // Reference the property in the active section.
388 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Property, propertyId.Id); 388 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Property, propertyId.Id);
389 } 389 }
390 390
391 // Allow tuple to exist with no value so that PropertyRefs can be made for *Search elements 391 // Allow symbol to exist with no value so that PropertyRefs can be made for *Search elements
392 // the linker will remove these tuples before the final output is created. 392 // the linker will remove these symbols before the final output is created.
393 section.AddTuple(new PropertyTuple(sourceLineNumbers, propertyId) 393 section.AddSymbol(new PropertySymbol(sourceLineNumbers, propertyId)
394 { 394 {
395 Value = value, 395 Value = value,
396 }); 396 });
397 397
398 if (admin || hidden || secure) 398 if (admin || hidden || secure)
399 { 399 {
400 this.AddWixPropertyTuple(sourceLineNumbers, propertyId, admin, secure, hidden, section); 400 this.AddWixPropertySymbol(sourceLineNumbers, propertyId, admin, secure, hidden, section);
401 } 401 }
402 } 402 }
403 } 403 }
404 404
405 private void AddWixPropertyTuple(SourceLineNumber sourceLineNumbers, Identifier property, bool admin, bool secure, bool hidden, IntermediateSection section = null) 405 private void AddWixPropertySymbol(SourceLineNumber sourceLineNumbers, Identifier property, bool admin, bool secure, bool hidden, IntermediateSection section = null)
406 { 406 {
407 if (secure && property.Id != property.Id.ToUpperInvariant()) 407 if (secure && property.Id != property.Id.ToUpperInvariant())
408 { 408 {
@@ -416,7 +416,7 @@ namespace WixToolset.Core
416 this.Core.EnsureTable(sourceLineNumbers, WindowsInstallerTableDefinitions.Property); // Property table is always required when using WixProperty table. 416 this.Core.EnsureTable(sourceLineNumbers, WindowsInstallerTableDefinitions.Property); // Property table is always required when using WixProperty table.
417 } 417 }
418 418
419 section.AddTuple(new WixPropertyTuple(sourceLineNumbers) 419 section.AddSymbol(new WixPropertySymbol(sourceLineNumbers)
420 { 420 {
421 PropertyRef = property.Id, 421 PropertyRef = property.Id,
422 Admin = admin, 422 Admin = admin,
@@ -552,7 +552,7 @@ namespace WixToolset.Core
552 552
553 if (!this.Core.EncounteredError) 553 if (!this.Core.EncounteredError)
554 { 554 {
555 this.Core.AddTuple(new AppIdTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, appId)) 555 this.Core.AddSymbol(new AppIdSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, appId))
556 { 556 {
557 AppId = appId, 557 AppId = appId,
558 RemoteServerName = remoteServerName, 558 RemoteServerName = remoteServerName,
@@ -650,7 +650,7 @@ namespace WixToolset.Core
650 650
651 if (!this.Core.EncounteredError) 651 if (!this.Core.EncounteredError)
652 { 652 {
653 this.Core.AddTuple(new MsiAssemblyNameTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, componentId, id)) 653 this.Core.AddSymbol(new MsiAssemblyNameSymbol(sourceLineNumbers, new Identifier(AccessModifier.Private, componentId, id))
654 { 654 {
655 ComponentRef = componentId, 655 ComponentRef = componentId,
656 Name = id, 656 Name = id,
@@ -737,14 +737,14 @@ namespace WixToolset.Core
737 737
738 if (!this.Core.EncounteredError) 738 if (!this.Core.EncounteredError)
739 { 739 {
740 var tuple = this.Core.AddTuple(new BinaryTuple(sourceLineNumbers, id) 740 var symbol = this.Core.AddSymbol(new BinarySymbol(sourceLineNumbers, id)
741 { 741 {
742 Data = new IntermediateFieldPathValue { Path = sourceFile } 742 Data = new IntermediateFieldPathValue { Path = sourceFile }
743 }); 743 });
744 744
745 if (YesNoType.Yes == suppressModularization) 745 if (YesNoType.Yes == suppressModularization)
746 { 746 {
747 this.Core.AddTuple(new WixSuppressModularizationTuple(sourceLineNumbers, id)); 747 this.Core.AddSymbol(new WixSuppressModularizationSymbol(sourceLineNumbers, id));
748 } 748 }
749 } 749 }
750 750
@@ -814,7 +814,7 @@ namespace WixToolset.Core
814 814
815 if (!this.Core.EncounteredError) 815 if (!this.Core.EncounteredError)
816 { 816 {
817 this.Core.AddTuple(new IconTuple(sourceLineNumbers, id) 817 this.Core.AddSymbol(new IconSymbol(sourceLineNumbers, id)
818 { 818 {
819 Data = new IntermediateFieldPathValue { Path = sourceFile }, 819 Data = new IntermediateFieldPathValue { Path = sourceFile },
820 }); 820 });
@@ -840,7 +840,7 @@ namespace WixToolset.Core
840 { 840 {
841 case "Property": 841 case "Property":
842 property = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 842 property = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
843 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Property, property); 843 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Property, property);
844 break; 844 break;
845 default: 845 default:
846 this.Core.UnexpectedAttribute(node, attrib); 846 this.Core.UnexpectedAttribute(node, attrib);
@@ -936,7 +936,7 @@ namespace WixToolset.Core
936 936
937 if (!this.Core.EncounteredError) 937 if (!this.Core.EncounteredError)
938 { 938 {
939 this.Core.AddTuple(new WixInstanceTransformsTuple(sourceLineNumbers, id) 939 this.Core.AddSymbol(new WixInstanceTransformsSymbol(sourceLineNumbers, id)
940 { 940 {
941 PropertyId = propertyId, 941 PropertyId = propertyId,
942 ProductCode = productCode, 942 ProductCode = productCode,
@@ -973,7 +973,7 @@ namespace WixToolset.Core
973 break; 973 break;
974 case "Feature": 974 case "Feature":
975 feature = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 975 feature = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
976 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Feature, feature); 976 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Feature, feature);
977 break; 977 break;
978 case "Qualifier": 978 case "Qualifier":
979 qualifier = this.Core.GetAttributeValue(sourceLineNumbers, attrib); 979 qualifier = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
@@ -1003,7 +1003,7 @@ namespace WixToolset.Core
1003 1003
1004 if (!this.Core.EncounteredError) 1004 if (!this.Core.EncounteredError)
1005 { 1005 {
1006 this.Core.AddTuple(new PublishComponentTuple(sourceLineNumbers) 1006 this.Core.AddSymbol(new PublishComponentSymbol(sourceLineNumbers)
1007 { 1007 {
1008 ComponentId = id, 1008 ComponentId = id,
1009 Qualifier = qualifier, 1009 Qualifier = qualifier,
@@ -1187,7 +1187,7 @@ namespace WixToolset.Core
1187 1187
1188 if (!String.IsNullOrEmpty(localFileServer)) 1188 if (!String.IsNullOrEmpty(localFileServer))
1189 { 1189 {
1190 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, localFileServer); 1190 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.File, localFileServer);
1191 } 1191 }
1192 1192
1193 // Local variables used strictly for child node processing. 1193 // Local variables used strictly for child node processing.
@@ -1260,7 +1260,7 @@ namespace WixToolset.Core
1260 { 1260 {
1261 foreach (var context in contexts) 1261 foreach (var context in contexts)
1262 { 1262 {
1263 var tuple = this.Core.AddTuple(new ClassTuple(sourceLineNumbers) 1263 var symbol = this.Core.AddSymbol(new ClassSymbol(sourceLineNumbers)
1264 { 1264 {
1265 CLSID = classId, 1265 CLSID = classId,
1266 Context = context, 1266 Context = context,
@@ -1276,19 +1276,19 @@ namespace WixToolset.Core
1276 1276
1277 if (null != appId) 1277 if (null != appId)
1278 { 1278 {
1279 tuple.AppIdRef = appId; 1279 symbol.AppIdRef = appId;
1280 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.AppId, appId); 1280 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.AppId, appId);
1281 } 1281 }
1282 1282
1283 if (null != icon) 1283 if (null != icon)
1284 { 1284 {
1285 tuple.IconRef = icon; 1285 symbol.IconRef = icon;
1286 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Icon, icon); 1286 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Icon, icon);
1287 } 1287 }
1288 1288
1289 if (CompilerConstants.IntegerNotSet != iconIndex) 1289 if (CompilerConstants.IntegerNotSet != iconIndex)
1290 { 1290 {
1291 tuple.IconIndex = iconIndex; 1291 symbol.IconIndex = iconIndex;
1292 } 1292 }
1293 } 1293 }
1294 } 1294 }
@@ -1369,7 +1369,7 @@ namespace WixToolset.Core
1369 1369
1370 if (null != icon) // ClassId default icon 1370 if (null != icon) // ClassId default icon
1371 { 1371 {
1372 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, icon); 1372 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.File, icon);
1373 1373
1374 icon = String.Format(CultureInfo.InvariantCulture, "\"[#{0}]\"", icon); 1374 icon = String.Format(CultureInfo.InvariantCulture, "\"[#{0}]\"", icon);
1375 1375
@@ -1649,7 +1649,7 @@ namespace WixToolset.Core
1649 string maximum = null; 1649 string maximum = null;
1650 string minimum = null; 1650 string minimum = null;
1651 var excludeLanguages = false; 1651 var excludeLanguages = false;
1652 var maxInclusive = false; 1652 var maxInclusive = false;
1653 var minInclusive = true; 1653 var minInclusive = true;
1654 1654
1655 foreach (var attrib in node.Attributes()) 1655 foreach (var attrib in node.Attributes())
@@ -1699,7 +1699,7 @@ namespace WixToolset.Core
1699 1699
1700 if (!this.Core.EncounteredError) 1700 if (!this.Core.EncounteredError)
1701 { 1701 {
1702 this.Core.AddTuple(new UpgradeTuple(sourceLineNumbers) 1702 this.Core.AddSymbol(new UpgradeSymbol(sourceLineNumbers)
1703 { 1703 {
1704 UpgradeCode = upgradeCode, 1704 UpgradeCode = upgradeCode,
1705 VersionMin = minimum, 1705 VersionMin = minimum,
@@ -1850,7 +1850,7 @@ namespace WixToolset.Core
1850 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 1850 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
1851 } 1851 }
1852 oneChild = true; 1852 oneChild = true;
1853 var newId = this.ParseSimpleRefElement(child, TupleDefinitions.Signature); // FileSearch signatures override parent signatures 1853 var newId = this.ParseSimpleRefElement(child, SymbolDefinitions.Signature); // FileSearch signatures override parent signatures
1854 id = new Identifier(AccessModifier.Private, newId); 1854 id = new Identifier(AccessModifier.Private, newId);
1855 signature = null; 1855 signature = null;
1856 break; 1856 break;
@@ -1867,7 +1867,7 @@ namespace WixToolset.Core
1867 1867
1868 if (!this.Core.EncounteredError) 1868 if (!this.Core.EncounteredError)
1869 { 1869 {
1870 this.Core.AddTuple(new RegLocatorTuple(sourceLineNumbers, id) 1870 this.Core.AddSymbol(new RegLocatorSymbol(sourceLineNumbers, id)
1871 { 1871 {
1872 Root = root.Value, 1872 Root = root.Value,
1873 Key = key, 1873 Key = key,
@@ -1898,7 +1898,7 @@ namespace WixToolset.Core
1898 { 1898 {
1899 case "Id": 1899 case "Id":
1900 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 1900 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
1901 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.RegLocator, id); 1901 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.RegLocator, id);
1902 break; 1902 break;
1903 default: 1903 default:
1904 this.Core.UnexpectedAttribute(node, attrib); 1904 this.Core.UnexpectedAttribute(node, attrib);
@@ -2085,7 +2085,7 @@ namespace WixToolset.Core
2085 2085
2086 if (!this.Core.EncounteredError) 2086 if (!this.Core.EncounteredError)
2087 { 2087 {
2088 this.Core.AddTuple(new CCPSearchTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, signature))); 2088 this.Core.AddSymbol(new CCPSearchSymbol(sourceLineNumbers, new Identifier(AccessModifier.Private, signature)));
2089 } 2089 }
2090 } 2090 }
2091 2091
@@ -2351,10 +2351,10 @@ namespace WixToolset.Core
2351 encounteredODBCDataSource = true; 2351 encounteredODBCDataSource = true;
2352 break; 2352 break;
2353 case "ODBCDriver": 2353 case "ODBCDriver":
2354 this.ParseODBCDriverOrTranslator(child, id.Id, null, TupleDefinitionType.ODBCDriver); 2354 this.ParseODBCDriverOrTranslator(child, id.Id, null, SymbolDefinitionType.ODBCDriver);
2355 break; 2355 break;
2356 case "ODBCTranslator": 2356 case "ODBCTranslator":
2357 this.ParseODBCDriverOrTranslator(child, id.Id, null, TupleDefinitionType.ODBCTranslator); 2357 this.ParseODBCDriverOrTranslator(child, id.Id, null, SymbolDefinitionType.ODBCTranslator);
2358 break; 2358 break;
2359 case "ProgId": 2359 case "ProgId":
2360 var foundExtension = false; 2360 var foundExtension = false;
@@ -2480,7 +2480,7 @@ namespace WixToolset.Core
2480 } 2480 }
2481 2481
2482 // if there isn't an @Id attribute value, replace the placeholder with the id of the keypath. 2482 // if there isn't an @Id attribute value, replace the placeholder with the id of the keypath.
2483 // either an explicit KeyPath="yes" attribute must be specified or requirements for 2483 // either an explicit KeyPath="yes" attribute must be specified or requirements for
2484 // generatable guid must be met. 2484 // generatable guid must be met.
2485 if (componentIdPlaceholderWixVariable == id.Id) 2485 if (componentIdPlaceholderWixVariable == id.Id)
2486 { 2486 {
@@ -2505,7 +2505,7 @@ namespace WixToolset.Core
2505 // finally add the Component table row 2505 // finally add the Component table row
2506 if (!this.Core.EncounteredError) 2506 if (!this.Core.EncounteredError)
2507 { 2507 {
2508 this.Core.AddTuple(new ComponentTuple(sourceLineNumbers, id) 2508 this.Core.AddSymbol(new ComponentSymbol(sourceLineNumbers, id)
2509 { 2509 {
2510 ComponentId = guid, 2510 ComponentId = guid,
2511 DirectoryRef = directoryId, 2511 DirectoryRef = directoryId,
@@ -2525,7 +2525,7 @@ namespace WixToolset.Core
2525 2525
2526 if (multiInstance) 2526 if (multiInstance)
2527 { 2527 {
2528 this.Core.AddTuple(new WixInstanceComponentTuple(sourceLineNumbers, id) 2528 this.Core.AddSymbol(new WixInstanceComponentSymbol(sourceLineNumbers, id)
2529 { 2529 {
2530 ComponentRef = id.Id, 2530 ComponentRef = id.Id,
2531 }); 2531 });
@@ -2533,7 +2533,7 @@ namespace WixToolset.Core
2533 2533
2534 if (0 < symbols.Count) 2534 if (0 < symbols.Count)
2535 { 2535 {
2536 this.Core.AddTuple(new WixDeltaPatchSymbolPathsTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, SymbolPathType.Component, id.Id)) 2536 this.Core.AddSymbol(new WixDeltaPatchSymbolPathsSymbol(sourceLineNumbers, new Identifier(AccessModifier.Private, SymbolPathType.Component, id.Id))
2537 { 2537 {
2538 SymbolType = SymbolPathType.Component, 2538 SymbolType = SymbolPathType.Component,
2539 SymbolId = id.Id, 2539 SymbolId = id.Id,
@@ -2544,7 +2544,7 @@ namespace WixToolset.Core
2544 // Complus 2544 // Complus
2545 if (CompilerConstants.IntegerNotSet != comPlusBits) 2545 if (CompilerConstants.IntegerNotSet != comPlusBits)
2546 { 2546 {
2547 this.Core.AddTuple(new ComplusTuple(sourceLineNumbers) 2547 this.Core.AddSymbol(new ComplusSymbol(sourceLineNumbers)
2548 { 2548 {
2549 ComponentRef = id.Id, 2549 ComponentRef = id.Id,
2550 ExpType = comPlusBits, 2550 ExpType = comPlusBits,
@@ -2643,7 +2643,7 @@ namespace WixToolset.Core
2643 2643
2644 if (!this.Core.EncounteredError) 2644 if (!this.Core.EncounteredError)
2645 { 2645 {
2646 this.Core.AddTuple(new WixComponentGroupTuple(sourceLineNumbers, id)); 2646 this.Core.AddSymbol(new WixComponentGroupSymbol(sourceLineNumbers, id));
2647 2647
2648 // Add this componentGroup and its parent in WixGroup. 2648 // Add this componentGroup and its parent in WixGroup.
2649 this.Core.CreateWixGroupRow(sourceLineNumbers, parentType, parentId, ComplexReferenceChildType.ComponentGroup, id.Id); 2649 this.Core.CreateWixGroupRow(sourceLineNumbers, parentType, parentId, ComplexReferenceChildType.ComponentGroup, id.Id);
@@ -2673,7 +2673,7 @@ namespace WixToolset.Core
2673 { 2673 {
2674 case "Id": 2674 case "Id":
2675 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 2675 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2676 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixComponentGroup, id); 2676 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixComponentGroup, id);
2677 break; 2677 break;
2678 case "Primary": 2678 case "Primary":
2679 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 2679 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -2722,7 +2722,7 @@ namespace WixToolset.Core
2722 { 2722 {
2723 case "Id": 2723 case "Id":
2724 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 2724 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2725 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Component, id); 2725 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Component, id);
2726 break; 2726 break;
2727 case "Primary": 2727 case "Primary":
2728 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 2728 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -2846,7 +2846,7 @@ namespace WixToolset.Core
2846 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 2846 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
2847 } 2847 }
2848 oneChild = true; 2848 oneChild = true;
2849 var newId = this.ParseSimpleRefElement(child, TupleDefinitions.Signature); // FileSearch signatures override parent signatures 2849 var newId = this.ParseSimpleRefElement(child, SymbolDefinitions.Signature); // FileSearch signatures override parent signatures
2850 id = new Identifier(AccessModifier.Private, newId); 2850 id = new Identifier(AccessModifier.Private, newId);
2851 signature = null; 2851 signature = null;
2852 break; 2852 break;
@@ -2863,7 +2863,7 @@ namespace WixToolset.Core
2863 2863
2864 if (!this.Core.EncounteredError) 2864 if (!this.Core.EncounteredError)
2865 { 2865 {
2866 this.Core.AddTuple(new CompLocatorTuple(sourceLineNumbers, id) 2866 this.Core.AddSymbol(new CompLocatorSymbol(sourceLineNumbers, id)
2867 { 2867 {
2868 SignatureRef = id.Id, 2868 SignatureRef = id.Id,
2869 ComponentId = componentId, 2869 ComponentId = componentId,
@@ -2934,7 +2934,7 @@ namespace WixToolset.Core
2934 2934
2935 if (!this.Core.EncounteredError) 2935 if (!this.Core.EncounteredError)
2936 { 2936 {
2937 this.Core.AddTuple(new CreateFolderTuple(sourceLineNumbers) 2937 this.Core.AddSymbol(new CreateFolderSymbol(sourceLineNumbers)
2938 { 2938 {
2939 DirectoryRef = directoryId, 2939 DirectoryRef = directoryId,
2940 ComponentRef = componentId, 2940 ComponentRef = componentId,
@@ -2994,7 +2994,7 @@ namespace WixToolset.Core
2994 this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName)); 2994 this.Core.Write(ErrorMessages.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName, node.Parent.Name.LocalName));
2995 } 2995 }
2996 fileId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 2996 fileId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
2997 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, fileId); 2997 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.File, fileId);
2998 break; 2998 break;
2999 case "SourceDirectory": 2999 case "SourceDirectory":
3000 sourceDirectory = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, null); 3000 sourceDirectory = this.Core.CreateDirectoryReferenceFromInlineSyntax(sourceLineNumbers, attrib, null);
@@ -3059,7 +3059,7 @@ namespace WixToolset.Core
3059 3059
3060 if (!this.Core.EncounteredError) 3060 if (!this.Core.EncounteredError)
3061 { 3061 {
3062 this.Core.AddTuple(new MoveFileTuple(sourceLineNumbers, id) 3062 this.Core.AddSymbol(new MoveFileSymbol(sourceLineNumbers, id)
3063 { 3063 {
3064 ComponentRef = componentId, 3064 ComponentRef = componentId,
3065 SourceName = sourceName, 3065 SourceName = sourceName,
@@ -3104,7 +3104,7 @@ namespace WixToolset.Core
3104 3104
3105 if (!this.Core.EncounteredError) 3105 if (!this.Core.EncounteredError)
3106 { 3106 {
3107 this.Core.AddTuple(new DuplicateFileTuple(sourceLineNumbers, id) 3107 this.Core.AddSymbol(new DuplicateFileSymbol(sourceLineNumbers, id)
3108 { 3108 {
3109 ComponentRef = componentId, 3109 ComponentRef = componentId,
3110 FileRef = fileId, 3110 FileRef = fileId,
@@ -3158,7 +3158,7 @@ namespace WixToolset.Core
3158 } 3158 }
3159 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 3159 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3160 sourceType = CustomActionSourceType.Binary; 3160 sourceType = CustomActionSourceType.Binary;
3161 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Binary, source); // add a reference to the appropriate Binary 3161 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Binary, source); // add a reference to the appropriate Binary
3162 break; 3162 break;
3163 case "Directory": 3163 case "Directory":
3164 if (null != source) 3164 if (null != source)
@@ -3185,12 +3185,12 @@ namespace WixToolset.Core
3185 sourceType = CustomActionSourceType.File; 3185 sourceType = CustomActionSourceType.File;
3186 targetType = CustomActionTargetType.TextData; 3186 targetType = CustomActionTargetType.TextData;
3187 3187
3188 // The target can be either a formatted error string or a literal 3188 // The target can be either a formatted error string or a literal
3189 // error number. Try to convert to error number to determine whether 3189 // error number. Try to convert to error number to determine whether
3190 // to add a reference. No need to look at the value. 3190 // to add a reference. No need to look at the value.
3191 if (Int32.TryParse(target, out var ignored)) 3191 if (Int32.TryParse(target, out var ignored))
3192 { 3192 {
3193 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Error, target); 3193 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Error, target);
3194 } 3194 }
3195 break; 3195 break;
3196 case "ExeCommand": 3196 case "ExeCommand":
@@ -3238,7 +3238,7 @@ namespace WixToolset.Core
3238 } 3238 }
3239 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 3239 source = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3240 sourceType = CustomActionSourceType.File; 3240 sourceType = CustomActionSourceType.File;
3241 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, source); // add a reference to the appropriate File 3241 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.File, source); // add a reference to the appropriate File
3242 break; 3242 break;
3243 case "HideTarget": 3243 case "HideTarget":
3244 hidden = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 3244 hidden = YesNoType.Yes == this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -3459,7 +3459,7 @@ namespace WixToolset.Core
3459 3459
3460 if (!this.Core.EncounteredError) 3460 if (!this.Core.EncounteredError)
3461 { 3461 {
3462 this.Core.AddTuple(new CustomActionTuple(sourceLineNumbers, id) 3462 this.Core.AddSymbol(new CustomActionSymbol(sourceLineNumbers, id)
3463 { 3463 {
3464 ExecutionType = executionType, 3464 ExecutionType = executionType,
3465 Source = source, 3465 Source = source,
@@ -3478,7 +3478,7 @@ namespace WixToolset.Core
3478 3478
3479 if (YesNoType.Yes == suppressModularization) 3479 if (YesNoType.Yes == suppressModularization)
3480 { 3480 {
3481 this.Core.AddTuple(new WixSuppressModularizationTuple(sourceLineNumbers, id)); 3481 this.Core.AddSymbol(new WixSuppressModularizationSymbol(sourceLineNumbers, id));
3482 } 3482 }
3483 } 3483 }
3484 } 3484 }
@@ -3487,9 +3487,9 @@ namespace WixToolset.Core
3487 /// Parses a simple reference element. 3487 /// Parses a simple reference element.
3488 /// </summary> 3488 /// </summary>
3489 /// <param name="node">Element to parse.</param> 3489 /// <param name="node">Element to parse.</param>
3490 /// <param name="tupleDefinition">Tuple which contains the target of the simple reference.</param> 3490 /// <param name="symbolDefinition">Symbol which contains the target of the simple reference.</param>
3491 /// <returns>Id of the referenced element.</returns> 3491 /// <returns>Id of the referenced element.</returns>
3492 private string ParseSimpleRefElement(XElement node, IntermediateTupleDefinition tupleDefinition) 3492 private string ParseSimpleRefElement(XElement node, IntermediateSymbolDefinition symbolDefinition)
3493 { 3493 {
3494 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 3494 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
3495 string id = null; 3495 string id = null;
@@ -3502,7 +3502,7 @@ namespace WixToolset.Core
3502 { 3502 {
3503 case "Id": 3503 case "Id":
3504 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 3504 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
3505 this.Core.CreateSimpleReference(sourceLineNumbers, tupleDefinition.Name, id); 3505 this.Core.CreateSimpleReference(sourceLineNumbers, symbolDefinition.Name, id);
3506 break; 3506 break;
3507 default: 3507 default:
3508 this.Core.UnexpectedAttribute(node, attrib); 3508 this.Core.UnexpectedAttribute(node, attrib);
@@ -3565,7 +3565,7 @@ namespace WixToolset.Core
3565 this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id")); 3565 this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
3566 } 3566 }
3567 3567
3568 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.MsiPatchSequence, primaryKeys); 3568 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.MsiPatchSequence, primaryKeys);
3569 3569
3570 this.Core.ParseForExtensionElements(node); 3570 this.Core.ParseForExtensionElements(node);
3571 3571
@@ -3628,7 +3628,7 @@ namespace WixToolset.Core
3628 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 3628 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
3629 string tableId = null; 3629 string tableId = null;
3630 var unreal = false; 3630 var unreal = false;
3631 var columns = new List<WixCustomTableColumnTuple>(); 3631 var columns = new List<WixCustomTableColumnSymbol>();
3632 3632
3633 foreach (var attrib in node.Attributes()) 3633 foreach (var attrib in node.Attributes())
3634 { 3634 {
@@ -3699,9 +3699,9 @@ namespace WixToolset.Core
3699 3699
3700 if (!this.Core.EncounteredError) 3700 if (!this.Core.EncounteredError)
3701 { 3701 {
3702 var columnNames = String.Join(new string(WixCustomTableTuple.ColumnNamesSeparator, 1), columns.Select(c => c.Name)); 3702 var columnNames = String.Join(new string(WixCustomTableSymbol.ColumnNamesSeparator, 1), columns.Select(c => c.Name));
3703 3703
3704 this.Core.AddTuple(new WixCustomTableTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, tableId)) 3704 this.Core.AddSymbol(new WixCustomTableSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, tableId))
3705 { 3705 {
3706 ColumnNames = columnNames, 3706 ColumnNames = columnNames,
3707 Unreal = unreal, 3707 Unreal = unreal,
@@ -3716,7 +3716,7 @@ namespace WixToolset.Core
3716 /// <param name="child">Element to parse.</param> 3716 /// <param name="child">Element to parse.</param>
3717 /// <param name="childSourceLineNumbers">Element's SourceLineNumbers.</param> 3717 /// <param name="childSourceLineNumbers">Element's SourceLineNumbers.</param>
3718 /// <param name="tableId">Table Id.</param> 3718 /// <param name="tableId">Table Id.</param>
3719 private WixCustomTableColumnTuple ParseColumnElement(XElement child, SourceLineNumber childSourceLineNumbers, string tableId) 3719 private WixCustomTableColumnSymbol ParseColumnElement(XElement child, SourceLineNumber childSourceLineNumbers, string tableId)
3720 { 3720 {
3721 string columnName = null; 3721 string columnName = null;
3722 IntermediateFieldType? columnType = null; 3722 IntermediateFieldType? columnType = null;
@@ -3968,12 +3968,12 @@ namespace WixToolset.Core
3968 return null; 3968 return null;
3969 } 3969 }
3970 3970
3971 var attributes = primaryKey ? WixCustomTableColumnTupleAttributes.PrimaryKey : WixCustomTableColumnTupleAttributes.None; 3971 var attributes = primaryKey ? WixCustomTableColumnSymbolAttributes.PrimaryKey : WixCustomTableColumnSymbolAttributes.None;
3972 attributes |= localizable ? WixCustomTableColumnTupleAttributes.Localizable : WixCustomTableColumnTupleAttributes.None; 3972 attributes |= localizable ? WixCustomTableColumnSymbolAttributes.Localizable : WixCustomTableColumnSymbolAttributes.None;
3973 attributes |= nullable ? WixCustomTableColumnTupleAttributes.Nullable : WixCustomTableColumnTupleAttributes.None; 3973 attributes |= nullable ? WixCustomTableColumnSymbolAttributes.Nullable : WixCustomTableColumnSymbolAttributes.None;
3974 attributes |= columnUnreal ? WixCustomTableColumnTupleAttributes.Unreal : WixCustomTableColumnTupleAttributes.None; 3974 attributes |= columnUnreal ? WixCustomTableColumnSymbolAttributes.Unreal : WixCustomTableColumnSymbolAttributes.None;
3975 3975
3976 var column = this.Core.AddTuple(new WixCustomTableColumnTuple(childSourceLineNumbers, new Identifier(AccessModifier.Private, tableId, columnName)) 3976 var column = this.Core.AddSymbol(new WixCustomTableColumnSymbol(childSourceLineNumbers, new Identifier(AccessModifier.Private, tableId, columnName))
3977 { 3977 {
3978 TableRef = tableId, 3978 TableRef = tableId,
3979 Name = columnName, 3979 Name = columnName,
@@ -4038,7 +4038,7 @@ namespace WixToolset.Core
4038 4038
4039 if (!this.Core.EncounteredError) 4039 if (!this.Core.EncounteredError)
4040 { 4040 {
4041 this.Core.AddTuple(new WixCustomTableCellTuple(childSourceLineNumbers, new Identifier(AccessModifier.Private, tableId, rowId, columnName)) 4041 this.Core.AddSymbol(new WixCustomTableCellSymbol(childSourceLineNumbers, new Identifier(AccessModifier.Private, tableId, rowId, columnName))
4042 { 4042 {
4043 RowId = rowId, 4043 RowId = rowId,
4044 ColumnRef = columnName, 4044 ColumnRef = columnName,
@@ -4055,7 +4055,7 @@ namespace WixToolset.Core
4055 4055
4056 if (!this.Core.EncounteredError) 4056 if (!this.Core.EncounteredError)
4057 { 4057 {
4058 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixCustomTable, tableId); 4058 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixCustomTable, tableId);
4059 } 4059 }
4060 } 4060 }
4061 4061
@@ -4153,7 +4153,7 @@ namespace WixToolset.Core
4153 if (inlineSyntax[0].EndsWith(":")) 4153 if (inlineSyntax[0].EndsWith(":"))
4154 { 4154 {
4155 parentId = inlineSyntax[0].TrimEnd(':'); 4155 parentId = inlineSyntax[0].TrimEnd(':');
4156 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Directory, parentId); 4156 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Directory, parentId);
4157 4157
4158 pathStartsAt = 1; 4158 pathStartsAt = 1;
4159 } 4159 }
@@ -4298,7 +4298,7 @@ namespace WixToolset.Core
4298 4298
4299 if (!this.Core.EncounteredError) 4299 if (!this.Core.EncounteredError)
4300 { 4300 {
4301 this.Core.AddTuple(new DirectoryTuple(sourceLineNumbers, id) 4301 this.Core.AddSymbol(new DirectorySymbol(sourceLineNumbers, id)
4302 { 4302 {
4303 ParentDirectoryRef = parentId, 4303 ParentDirectoryRef = parentId,
4304 Name = name, 4304 Name = name,
@@ -4310,7 +4310,7 @@ namespace WixToolset.Core
4310 4310
4311 if (null != symbols) 4311 if (null != symbols)
4312 { 4312 {
4313 this.Core.AddTuple(new WixDeltaPatchSymbolPathsTuple(sourceLineNumbers, id) 4313 this.Core.AddSymbol(new WixDeltaPatchSymbolPathsSymbol(sourceLineNumbers, id)
4314 { 4314 {
4315 SymbolType = SymbolPathType.Directory, 4315 SymbolType = SymbolPathType.Directory,
4316 SymbolId = id.Id, 4316 SymbolId = id.Id,
@@ -4340,7 +4340,7 @@ namespace WixToolset.Core
4340 { 4340 {
4341 case "Id": 4341 case "Id":
4342 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 4342 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
4343 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Directory, id); 4343 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Directory, id);
4344 break; 4344 break;
4345 case "DiskId": 4345 case "DiskId":
4346 diskId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 1, Int16.MaxValue); 4346 diskId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 1, Int16.MaxValue);
@@ -4487,7 +4487,7 @@ namespace WixToolset.Core
4487 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 4487 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4488 } 4488 }
4489 oneChild = true; 4489 oneChild = true;
4490 signature = this.ParseSimpleRefElement(child, TupleDefinitions.Signature); 4490 signature = this.ParseSimpleRefElement(child, SymbolDefinitions.Signature);
4491 break; 4491 break;
4492 default: 4492 default:
4493 this.Core.UnexpectedElement(node, child); 4493 this.Core.UnexpectedElement(node, child);
@@ -4532,7 +4532,7 @@ namespace WixToolset.Core
4532 signature = id.Id; 4532 signature = id.Id;
4533 } 4533 }
4534 4534
4535 var tuple = this.Core.AddTuple(new DrLocatorTuple(sourceLineNumbers, new Identifier(access, rowId, parentSignature, path)) 4535 var symbol = this.Core.AddSymbol(new DrLocatorSymbol(sourceLineNumbers, new Identifier(access, rowId, parentSignature, path))
4536 { 4536 {
4537 SignatureRef = rowId, 4537 SignatureRef = rowId,
4538 Parent = parentSignature, 4538 Parent = parentSignature,
@@ -4541,7 +4541,7 @@ namespace WixToolset.Core
4541 4541
4542 if (CompilerConstants.IntegerNotSet != depth) 4542 if (CompilerConstants.IntegerNotSet != depth)
4543 { 4543 {
4544 tuple.Depth = depth; 4544 symbol.Depth = depth;
4545 } 4545 }
4546 } 4546 }
4547 4547
@@ -4645,7 +4645,7 @@ namespace WixToolset.Core
4645 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 4645 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
4646 } 4646 }
4647 oneChild = true; 4647 oneChild = true;
4648 signature = this.ParseSimpleRefElement(child, TupleDefinitions.Signature); 4648 signature = this.ParseSimpleRefElement(child, SymbolDefinitions.Signature);
4649 break; 4649 break;
4650 default: 4650 default:
4651 this.Core.UnexpectedElement(node, child); 4651 this.Core.UnexpectedElement(node, child);
@@ -4659,7 +4659,7 @@ namespace WixToolset.Core
4659 } 4659 }
4660 4660
4661 4661
4662 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.DrLocator, id.Id, parentSignature, path); 4662 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.DrLocator, id.Id, parentSignature, path);
4663 4663
4664 return signature; 4664 return signature;
4665 } 4665 }
@@ -4670,7 +4670,7 @@ namespace WixToolset.Core
4670 /// <param name="node">Element to parse.</param> 4670 /// <param name="node">Element to parse.</param>
4671 /// <param name="parentType">The type of parent.</param> 4671 /// <param name="parentType">The type of parent.</param>
4672 /// <param name="parentId">Optional identifer for parent feature.</param> 4672 /// <param name="parentId">Optional identifer for parent feature.</param>
4673 /// <param name="lastDisplay">Display value for last feature used to get the features to display in the same order as specified 4673 /// <param name="lastDisplay">Display value for last feature used to get the features to display in the same order as specified
4674 /// in the source code.</param> 4674 /// in the source code.</param>
4675 [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")] 4675 [SuppressMessage("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
4676 private void ParseFeatureElement(XElement node, ComplexReferenceParentType parentType, string parentId, ref int lastDisplay) 4676 private void ParseFeatureElement(XElement node, ComplexReferenceParentType parentType, string parentId, ref int lastDisplay)
@@ -4899,7 +4899,7 @@ namespace WixToolset.Core
4899 4899
4900 if (!this.Core.EncounteredError) 4900 if (!this.Core.EncounteredError)
4901 { 4901 {
4902 this.Core.AddTuple(new FeatureTuple(sourceLineNumbers, id) 4902 this.Core.AddSymbol(new FeatureSymbol(sourceLineNumbers, id)
4903 { 4903 {
4904 ParentFeatureRef = null, // this field is set in the linker 4904 ParentFeatureRef = null, // this field is set in the linker
4905 Title = title, 4905 Title = title,
@@ -4941,7 +4941,7 @@ namespace WixToolset.Core
4941 { 4941 {
4942 case "Id": 4942 case "Id":
4943 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 4943 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
4944 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Feature, id); 4944 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Feature, id);
4945 break; 4945 break;
4946 case "IgnoreParent": 4946 case "IgnoreParent":
4947 ignoreParent = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 4947 ignoreParent = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -5091,7 +5091,7 @@ namespace WixToolset.Core
5091 5091
5092 if (!this.Core.EncounteredError) 5092 if (!this.Core.EncounteredError)
5093 { 5093 {
5094 this.Core.AddTuple(new WixFeatureGroupTuple(sourceLineNumbers, id)); 5094 this.Core.AddSymbol(new WixFeatureGroupSymbol(sourceLineNumbers, id));
5095 5095
5096 //Add this FeatureGroup and its parent in WixGroup. 5096 //Add this FeatureGroup and its parent in WixGroup.
5097 this.Core.CreateWixGroupRow(sourceLineNumbers, parentType, parentId, ComplexReferenceChildType.FeatureGroup, id.Id); 5097 this.Core.CreateWixGroupRow(sourceLineNumbers, parentType, parentId, ComplexReferenceChildType.FeatureGroup, id.Id);
@@ -5121,7 +5121,7 @@ namespace WixToolset.Core
5121 { 5121 {
5122 case "Id": 5122 case "Id":
5123 id = this.Core.GetAttributeValue(sourceLineNumbers, attrib); 5123 id = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
5124 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixFeatureGroup, id); 5124 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixFeatureGroup, id);
5125 break; 5125 break;
5126 case "IgnoreParent": 5126 case "IgnoreParent":
5127 ignoreParent = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 5127 ignoreParent = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -5290,7 +5290,7 @@ namespace WixToolset.Core
5290 5290
5291 if (!this.Core.EncounteredError) 5291 if (!this.Core.EncounteredError)
5292 { 5292 {
5293 this.Core.AddTuple(new EnvironmentTuple(sourceLineNumbers, id) 5293 this.Core.AddSymbol(new EnvironmentSymbol(sourceLineNumbers, id)
5294 { 5294 {
5295 Name = name, 5295 Name = name,
5296 Value = value, 5296 Value = value,
@@ -5347,7 +5347,7 @@ namespace WixToolset.Core
5347 5347
5348 if (!this.Core.EncounteredError) 5348 if (!this.Core.EncounteredError)
5349 { 5349 {
5350 this.Core.AddTuple(new ErrorTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, id)) 5350 this.Core.AddSymbol(new ErrorSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, id))
5351 { 5351 {
5352 Message = message 5352 Message = message
5353 }); 5353 });
@@ -5436,7 +5436,7 @@ namespace WixToolset.Core
5436 { 5436 {
5437 if (!this.Core.EncounteredError) 5437 if (!this.Core.EncounteredError)
5438 { 5438 {
5439 this.Core.AddTuple(new ExtensionTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, extension, componentId)) 5439 this.Core.AddSymbol(new ExtensionSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, extension, componentId))
5440 { 5440 {
5441 Extension = extension, 5441 Extension = extension,
5442 ComponentRef = componentId, 5442 ComponentRef = componentId,
@@ -5542,11 +5542,11 @@ namespace WixToolset.Core
5542 break; 5542 break;
5543 case "AssemblyApplication": 5543 case "AssemblyApplication":
5544 assemblyApplication = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 5544 assemblyApplication = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
5545 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, assemblyApplication); 5545 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.File, assemblyApplication);
5546 break; 5546 break;
5547 case "AssemblyManifest": 5547 case "AssemblyManifest":
5548 assemblyManifest = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 5548 assemblyManifest = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
5549 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, assemblyManifest); 5549 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.File, assemblyManifest);
5550 break; 5550 break;
5551 case "BindPath": 5551 case "BindPath":
5552 bindPath = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.CanBeEmpty); 5552 bindPath = this.Core.GetAttributeValue(sourceLineNumbers, attrib, EmptyRule.CanBeEmpty);
@@ -5560,7 +5560,7 @@ namespace WixToolset.Core
5560 break; 5560 break;
5561 case "CompanionFile": 5561 case "CompanionFile":
5562 companionFile = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 5562 companionFile = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
5563 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.File, companionFile); 5563 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.File, companionFile);
5564 break; 5564 break;
5565 case "Compressed": 5565 case "Compressed":
5566 var compressedValue = this.Core.GetAttributeYesNoDefaultValue(sourceLineNumbers, attrib); 5566 var compressedValue = this.Core.GetAttributeYesNoDefaultValue(sourceLineNumbers, attrib);
@@ -5781,10 +5781,10 @@ namespace WixToolset.Core
5781 this.ParseRangeElement(child, ref ignoreOffsets, ref ignoreLengths); 5781 this.ParseRangeElement(child, ref ignoreOffsets, ref ignoreLengths);
5782 break; 5782 break;
5783 case "ODBCDriver": 5783 case "ODBCDriver":
5784 this.ParseODBCDriverOrTranslator(child, componentId, id.Id, TupleDefinitionType.ODBCDriver); 5784 this.ParseODBCDriverOrTranslator(child, componentId, id.Id, SymbolDefinitionType.ODBCDriver);
5785 break; 5785 break;
5786 case "ODBCTranslator": 5786 case "ODBCTranslator":
5787 this.ParseODBCDriverOrTranslator(child, componentId, id.Id, TupleDefinitionType.ODBCTranslator); 5787 this.ParseODBCDriverOrTranslator(child, componentId, id.Id, SymbolDefinitionType.ODBCTranslator);
5788 break; 5788 break;
5789 case "Permission": 5789 case "Permission":
5790 this.ParsePermissionElement(child, id.Id, "File"); 5790 this.ParsePermissionElement(child, id.Id, "File");
@@ -5848,17 +5848,17 @@ namespace WixToolset.Core
5848 source = null == name ? Path.Combine(source, shortName) : Path.Combine(source, name); 5848 source = null == name ? Path.Combine(source, shortName) : Path.Combine(source, name);
5849 } 5849 }
5850 5850
5851 var attributes = FileTupleAttributes.None; 5851 var attributes = FileSymbolAttributes.None;
5852 attributes |= readOnly ? FileTupleAttributes.ReadOnly : 0; 5852 attributes |= readOnly ? FileSymbolAttributes.ReadOnly : 0;
5853 attributes |= hidden ? FileTupleAttributes.Hidden : 0; 5853 attributes |= hidden ? FileSymbolAttributes.Hidden : 0;
5854 attributes |= system ? FileTupleAttributes.System : 0; 5854 attributes |= system ? FileSymbolAttributes.System : 0;
5855 attributes |= vital ? FileTupleAttributes.Vital : 0; 5855 attributes |= vital ? FileSymbolAttributes.Vital : 0;
5856 attributes |= checksum ? FileTupleAttributes.Checksum : 0; 5856 attributes |= checksum ? FileSymbolAttributes.Checksum : 0;
5857 attributes |= compressed.HasValue && compressed == true ? FileTupleAttributes.Compressed : 0; 5857 attributes |= compressed.HasValue && compressed == true ? FileSymbolAttributes.Compressed : 0;
5858 attributes |= compressed.HasValue && compressed == false ? FileTupleAttributes.Uncompressed : 0; 5858 attributes |= compressed.HasValue && compressed == false ? FileSymbolAttributes.Uncompressed : 0;
5859 attributes |= generatedShortFileName ? FileTupleAttributes.GeneratedShortFileName : 0; 5859 attributes |= generatedShortFileName ? FileSymbolAttributes.GeneratedShortFileName : 0;
5860 5860
5861 this.Core.AddTuple(new FileTuple(sourceLineNumbers, id) 5861 this.Core.AddSymbol(new FileSymbol(sourceLineNumbers, id)
5862 { 5862 {
5863 ComponentRef = componentId, 5863 ComponentRef = componentId,
5864 Name = name, 5864 Name = name,
@@ -5897,7 +5897,7 @@ namespace WixToolset.Core
5897 5897
5898 if (AssemblyType.NotAnAssembly != assemblyType) 5898 if (AssemblyType.NotAnAssembly != assemblyType)
5899 { 5899 {
5900 this.Core.AddTuple(new AssemblyTuple(sourceLineNumbers, id) 5900 this.Core.AddSymbol(new AssemblySymbol(sourceLineNumbers, id)
5901 { 5901 {
5902 ComponentRef = componentId, 5902 ComponentRef = componentId,
5903 FeatureRef = Guid.Empty.ToString("B"), 5903 FeatureRef = Guid.Empty.ToString("B"),
@@ -5911,7 +5911,7 @@ namespace WixToolset.Core
5911 5911
5912 if (CompilerConstants.IntegerNotSet != diskId) 5912 if (CompilerConstants.IntegerNotSet != diskId)
5913 { 5913 {
5914 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Media, diskId.ToString(CultureInfo.InvariantCulture.NumberFormat)); 5914 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Media, diskId.ToString(CultureInfo.InvariantCulture.NumberFormat));
5915 } 5915 }
5916 5916
5917 // If this component does not have a companion file this file is a possible keypath. 5917 // If this component does not have a companion file this file is a possible keypath.
@@ -6052,7 +6052,7 @@ namespace WixToolset.Core
6052 6052
6053 if (!this.Core.EncounteredError) 6053 if (!this.Core.EncounteredError)
6054 { 6054 {
6055 var tuple = this.Core.AddTuple(new SignatureTuple(sourceLineNumbers, id) 6055 var symbol = this.Core.AddSymbol(new SignatureSymbol(sourceLineNumbers, id)
6056 { 6056 {
6057 FileName = name ?? shortName, 6057 FileName = name ?? shortName,
6058 MinVersion = minVersion, 6058 MinVersion = minVersion,
@@ -6062,22 +6062,22 @@ namespace WixToolset.Core
6062 6062
6063 if (CompilerConstants.IntegerNotSet != minSize) 6063 if (CompilerConstants.IntegerNotSet != minSize)
6064 { 6064 {
6065 tuple.MinSize = minSize; 6065 symbol.MinSize = minSize;
6066 } 6066 }
6067 6067
6068 if (CompilerConstants.IntegerNotSet != maxSize) 6068 if (CompilerConstants.IntegerNotSet != maxSize)
6069 { 6069 {
6070 tuple.MaxSize = maxSize; 6070 symbol.MaxSize = maxSize;
6071 } 6071 }
6072 6072
6073 if (CompilerConstants.IntegerNotSet != minDate) 6073 if (CompilerConstants.IntegerNotSet != minDate)
6074 { 6074 {
6075 tuple.MinDate = minDate; 6075 symbol.MinDate = minDate;
6076 } 6076 }
6077 6077
6078 if (CompilerConstants.IntegerNotSet != maxDate) 6078 if (CompilerConstants.IntegerNotSet != maxDate)
6079 { 6079 {
6080 tuple.MaxDate = maxDate; 6080 symbol.MaxDate = maxDate;
6081 } 6081 }
6082 6082
6083 // Create a DrLocator row to associate the file with a directory 6083 // Create a DrLocator row to associate the file with a directory
@@ -6088,7 +6088,7 @@ namespace WixToolset.Core
6088 { 6088 {
6089 // Creates the DrLocator row for the directory search while 6089 // Creates the DrLocator row for the directory search while
6090 // the parent DirectorySearch creates the file locator row. 6090 // the parent DirectorySearch creates the file locator row.
6091 this.Core.AddTuple(new DrLocatorTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, parentSignature, id.Id, String.Empty)) 6091 this.Core.AddSymbol(new DrLocatorSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, parentSignature, id.Id, String.Empty))
6092 { 6092 {
6093 SignatureRef = parentSignature, 6093 SignatureRef = parentSignature,
6094 Parent = id.Id 6094 Parent = id.Id
@@ -6096,7 +6096,7 @@ namespace WixToolset.Core
6096 } 6096 }
6097 else 6097 else
6098 { 6098 {
6099 this.Core.AddTuple(new DrLocatorTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, id.Id, parentSignature, String.Empty)) 6099 this.Core.AddSymbol(new DrLocatorSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, id.Id, parentSignature, String.Empty))
6100 { 6100 {
6101 SignatureRef = id.Id, 6101 SignatureRef = id.Id,
6102 Parent = parentSignature 6102 Parent = parentSignature
@@ -6191,7 +6191,7 @@ namespace WixToolset.Core
6191 this.ParseBundleExtensionElement(child); 6191 this.ParseBundleExtensionElement(child);
6192 break; 6192 break;
6193 case "BundleExtensionRef": 6193 case "BundleExtensionRef":
6194 this.ParseSimpleRefElement(child, TupleDefinitions.WixBundleExtension); 6194 this.ParseSimpleRefElement(child, SymbolDefinitions.WixBundleExtension);
6195 break; 6195 break;
6196 case "ComplianceCheck": 6196 case "ComplianceCheck":
6197 this.ParseComplianceCheckElement(child); 6197 this.ParseComplianceCheckElement(child);
@@ -6209,7 +6209,7 @@ namespace WixToolset.Core
6209 this.ParseCustomActionElement(child); 6209 this.ParseCustomActionElement(child);
6210 break; 6210 break;
6211 case "CustomActionRef": 6211 case "CustomActionRef":
6212 this.ParseSimpleRefElement(child, TupleDefinitions.CustomAction); 6212 this.ParseSimpleRefElement(child, SymbolDefinitions.CustomAction);
6213 break; 6213 break;
6214 case "CustomTable": 6214 case "CustomTable":
6215 this.ParseCustomTableElement(child); 6215 this.ParseCustomTableElement(child);
@@ -6224,7 +6224,7 @@ namespace WixToolset.Core
6224 this.ParseEmbeddedChainerElement(child); 6224 this.ParseEmbeddedChainerElement(child);
6225 break; 6225 break;
6226 case "EmbeddedChainerRef": 6226 case "EmbeddedChainerRef":
6227 this.ParseSimpleRefElement(child, TupleDefinitions.MsiEmbeddedChainer); 6227 this.ParseSimpleRefElement(child, SymbolDefinitions.MsiEmbeddedChainer);
6228 break; 6228 break;
6229 case "EnsureTable": 6229 case "EnsureTable":
6230 this.ParseEnsureTableElement(child); 6230 this.ParseEnsureTableElement(child);
@@ -6276,7 +6276,7 @@ namespace WixToolset.Core
6276 this.ParsePropertyElement(child); 6276 this.ParsePropertyElement(child);
6277 break; 6277 break;
6278 case "PropertyRef": 6278 case "PropertyRef":
6279 this.ParseSimpleRefElement(child, TupleDefinitions.Property); 6279 this.ParseSimpleRefElement(child, SymbolDefinitions.Property);
6280 break; 6280 break;
6281 case "RelatedBundle": 6281 case "RelatedBundle":
6282 this.ParseRelatedBundleElement(child); 6282 this.ParseRelatedBundleElement(child);
@@ -6291,7 +6291,7 @@ namespace WixToolset.Core
6291 this.ParseSetVariableElement(child); 6291 this.ParseSetVariableElement(child);
6292 break; 6292 break;
6293 case "SetVariableRef": 6293 case "SetVariableRef":
6294 this.ParseSimpleRefElement(child, TupleDefinitions.WixSetVariable); 6294 this.ParseSimpleRefElement(child, SymbolDefinitions.WixSetVariable);
6295 break; 6295 break;
6296 case "SFPCatalog": 6296 case "SFPCatalog":
6297 string parentName = null; 6297 string parentName = null;
@@ -6301,7 +6301,7 @@ namespace WixToolset.Core
6301 this.ParseUIElement(child); 6301 this.ParseUIElement(child);
6302 break; 6302 break;
6303 case "UIRef": 6303 case "UIRef":
6304 this.ParseSimpleRefElement(child, TupleDefinitions.WixUI); 6304 this.ParseSimpleRefElement(child, SymbolDefinitions.WixUI);
6305 break; 6305 break;
6306 case "Upgrade": 6306 case "Upgrade":
6307 this.ParseUpgradeElement(child); 6307 this.ParseUpgradeElement(child);
@@ -6325,7 +6325,7 @@ namespace WixToolset.Core
6325 6325
6326 if (!this.Core.EncounteredError && null != id) 6326 if (!this.Core.EncounteredError && null != id)
6327 { 6327 {
6328 this.Core.AddTuple(new WixFragmentTuple(sourceLineNumbers, id)); 6328 this.Core.AddSymbol(new WixFragmentSymbol(sourceLineNumbers, id));
6329 } 6329 }
6330 } 6330 }
6331 6331
@@ -6377,7 +6377,7 @@ namespace WixToolset.Core
6377 6377
6378 if (!this.Core.EncounteredError) 6378 if (!this.Core.EncounteredError)
6379 { 6379 {
6380 this.Core.AddTuple(new LaunchConditionTuple(sourceLineNumbers) 6380 this.Core.AddSymbol(new LaunchConditionSymbol(sourceLineNumbers)
6381 { 6381 {
6382 Condition = condition, 6382 Condition = condition,
6383 Description = message 6383 Description = message
@@ -6521,7 +6521,7 @@ namespace WixToolset.Core
6521 6521
6522 if (!this.Core.EncounteredError) 6522 if (!this.Core.EncounteredError)
6523 { 6523 {
6524 this.Core.AddTuple(new IniFileTuple(sourceLineNumbers, id) 6524 this.Core.AddSymbol(new IniFileSymbol(sourceLineNumbers, id)
6525 { 6525 {
6526 FileName = this.GetMsiFilenameValue(shortName, name), 6526 FileName = this.GetMsiFilenameValue(shortName, name),
6527 DirProperty = directory, 6527 DirProperty = directory,
@@ -6688,7 +6688,7 @@ namespace WixToolset.Core
6688 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName)); 6688 this.Core.Write(ErrorMessages.TooManySearchElements(sourceLineNumbers, node.Name.LocalName));
6689 } 6689 }
6690 oneChild = true; 6690 oneChild = true;
6691 var newId = this.ParseSimpleRefElement(child, TupleDefinitions.Signature); // FileSearch signatures override parent signatures 6691 var newId = this.ParseSimpleRefElement(child, SymbolDefinitions.Signature); // FileSearch signatures override parent signatures
6692 id = new Identifier(AccessModifier.Private, newId); 6692 id = new Identifier(AccessModifier.Private, newId);
6693 signature = null; 6693 signature = null;
6694 break; 6694 break;
@@ -6705,7 +6705,7 @@ namespace WixToolset.Core
6705 6705
6706 if (!this.Core.EncounteredError) 6706 if (!this.Core.EncounteredError)
6707 { 6707 {
6708 var tuple = this.Core.AddTuple(new IniLocatorTuple(sourceLineNumbers, id) 6708 var symbol = this.Core.AddSymbol(new IniLocatorSymbol(sourceLineNumbers, id)
6709 { 6709 {
6710 SignatureRef = id.Id, 6710 SignatureRef = id.Id,
6711 FileName = this.GetMsiFilenameValue(shortName, name), 6711 FileName = this.GetMsiFilenameValue(shortName, name),
@@ -6716,7 +6716,7 @@ namespace WixToolset.Core
6716 6716
6717 if (CompilerConstants.IntegerNotSet != field) 6717 if (CompilerConstants.IntegerNotSet != field)
6718 { 6718 {
6719 tuple.Field = field; 6719 symbol.Field = field;
6720 } 6720 }
6721 } 6721 }
6722 6722
@@ -6741,7 +6741,7 @@ namespace WixToolset.Core
6741 { 6741 {
6742 case "Shared": 6742 case "Shared":
6743 shared = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 6743 shared = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
6744 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Component, shared); 6744 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Component, shared);
6745 break; 6745 break;
6746 default: 6746 default:
6747 this.Core.UnexpectedAttribute(node, attrib); 6747 this.Core.UnexpectedAttribute(node, attrib);
@@ -6763,7 +6763,7 @@ namespace WixToolset.Core
6763 6763
6764 if (!this.Core.EncounteredError) 6764 if (!this.Core.EncounteredError)
6765 { 6765 {
6766 this.Core.AddTuple(new IsolatedComponentTuple(sourceLineNumbers) 6766 this.Core.AddSymbol(new IsolatedComponentSymbol(sourceLineNumbers)
6767 { 6767 {
6768 SharedComponentRef = shared, 6768 SharedComponentRef = shared,
6769 ApplicationComponentRef = componentId 6769 ApplicationComponentRef = componentId
@@ -6805,7 +6805,7 @@ namespace WixToolset.Core
6805 { 6805 {
6806 if ("PatchCertificates" == node.Name.LocalName) 6806 if ("PatchCertificates" == node.Name.LocalName)
6807 { 6807 {
6808 this.Core.AddTuple(new MsiPatchCertificateTuple(sourceLineNumbers) 6808 this.Core.AddSymbol(new MsiPatchCertificateSymbol(sourceLineNumbers)
6809 { 6809 {
6810 PatchCertificate = name, 6810 PatchCertificate = name,
6811 DigitalCertificateRef = name, 6811 DigitalCertificateRef = name,
@@ -6813,7 +6813,7 @@ namespace WixToolset.Core
6813 } 6813 }
6814 else 6814 else
6815 { 6815 {
6816 this.Core.AddTuple(new MsiPackageCertificateTuple(sourceLineNumbers) 6816 this.Core.AddSymbol(new MsiPackageCertificateSymbol(sourceLineNumbers)
6817 { 6817 {
6818 PackageCertificate = name, 6818 PackageCertificate = name,
6819 DigitalCertificateRef = name, 6819 DigitalCertificateRef = name,
@@ -6889,7 +6889,7 @@ namespace WixToolset.Core
6889 6889
6890 if (!this.Core.EncounteredError) 6890 if (!this.Core.EncounteredError)
6891 { 6891 {
6892 this.Core.AddTuple(new MsiDigitalCertificateTuple(sourceLineNumbers, id) 6892 this.Core.AddSymbol(new MsiDigitalCertificateSymbol(sourceLineNumbers, id)
6893 { 6893 {
6894 CertData = sourceFile 6894 CertData = sourceFile
6895 }); 6895 });
@@ -6962,7 +6962,7 @@ namespace WixToolset.Core
6962 6962
6963 if (!this.Core.EncounteredError) 6963 if (!this.Core.EncounteredError)
6964 { 6964 {
6965 this.Core.AddTuple(new MsiDigitalSignatureTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, "Media", diskId)) 6965 this.Core.AddSymbol(new MsiDigitalSignatureSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, "Media", diskId))
6966 { 6966 {
6967 Table = "Media", 6967 Table = "Media",
6968 SignObject = diskId, 6968 SignObject = diskId,
@@ -7084,7 +7084,7 @@ namespace WixToolset.Core
7084 if (!this.Core.EncounteredError) 7084 if (!this.Core.EncounteredError)
7085 { 7085 {
7086 // create the row that performs the upgrade (or downgrade) 7086 // create the row that performs the upgrade (or downgrade)
7087 var tuple = this.Core.AddTuple(new UpgradeTuple(sourceLineNumbers) 7087 var symbol = this.Core.AddSymbol(new UpgradeSymbol(sourceLineNumbers)
7088 { 7088 {
7089 UpgradeCode = upgradeCode, 7089 UpgradeCode = upgradeCode,
7090 Remove = removeFeatures, 7090 Remove = removeFeatures,
@@ -7095,21 +7095,21 @@ namespace WixToolset.Core
7095 7095
7096 if (allowDowngrades) 7096 if (allowDowngrades)
7097 { 7097 {
7098 tuple.VersionMin = "0"; 7098 symbol.VersionMin = "0";
7099 tuple.Language = productLanguage; 7099 symbol.Language = productLanguage;
7100 tuple.VersionMinInclusive = true; 7100 symbol.VersionMinInclusive = true;
7101 } 7101 }
7102 else 7102 else
7103 { 7103 {
7104 tuple.VersionMax = productVersion; 7104 symbol.VersionMax = productVersion;
7105 tuple.Language = productLanguage; 7105 symbol.Language = productLanguage;
7106 tuple.VersionMaxInclusive = allowSameVersionUpgrades; 7106 symbol.VersionMaxInclusive = allowSameVersionUpgrades;
7107 } 7107 }
7108 7108
7109 // Add launch condition that blocks upgrades 7109 // Add launch condition that blocks upgrades
7110 if (blockUpgrades) 7110 if (blockUpgrades)
7111 { 7111 {
7112 this.Core.AddTuple(new LaunchConditionTuple(sourceLineNumbers) 7112 this.Core.AddSymbol(new LaunchConditionSymbol(sourceLineNumbers)
7113 { 7113 {
7114 Condition = Common.UpgradePreventedCondition, 7114 Condition = Common.UpgradePreventedCondition,
7115 Description = downgradeErrorMessage 7115 Description = downgradeErrorMessage
@@ -7119,7 +7119,7 @@ namespace WixToolset.Core
7119 // now create the Upgrade row and launch conditions to prevent downgrades (unless explicitly permitted) 7119 // now create the Upgrade row and launch conditions to prevent downgrades (unless explicitly permitted)
7120 if (!allowDowngrades) 7120 if (!allowDowngrades)
7121 { 7121 {
7122 this.Core.AddTuple(new UpgradeTuple(sourceLineNumbers) 7122 this.Core.AddSymbol(new UpgradeSymbol(sourceLineNumbers)
7123 { 7123 {
7124 UpgradeCode = upgradeCode, 7124 UpgradeCode = upgradeCode,
7125 VersionMin = productVersion, 7125 VersionMin = productVersion,
@@ -7129,7 +7129,7 @@ namespace WixToolset.Core
7129 ActionProperty = Common.DowngradeDetectedProperty 7129 ActionProperty = Common.DowngradeDetectedProperty
7130 }); 7130 });
7131 7131
7132 this.Core.AddTuple(new LaunchConditionTuple(sourceLineNumbers) 7132 this.Core.AddSymbol(new LaunchConditionSymbol(sourceLineNumbers)
7133 { 7133 {
7134 Condition = Common.DowngradePreventedCondition, 7134 Condition = Common.DowngradePreventedCondition,
7135 Description = downgradeErrorMessage 7135 Description = downgradeErrorMessage
@@ -7158,7 +7158,7 @@ namespace WixToolset.Core
7158 break; 7158 break;
7159 } 7159 }
7160 7160
7161 this.Core.ScheduleActionTuple(sourceLineNumbers, AccessModifier.Public, SequenceTable.InstallExecuteSequence, "RemoveExistingProducts", afterAction: after); 7161 this.Core.ScheduleActionSymbol(sourceLineNumbers, AccessModifier.Public, SequenceTable.InstallExecuteSequence, "RemoveExistingProducts", afterAction: after);
7162 } 7162 }
7163 } 7163 }
7164 7164
@@ -7199,7 +7199,7 @@ namespace WixToolset.Core
7199 break; 7199 break;
7200 case "DiskPrompt": 7200 case "DiskPrompt":
7201 diskPrompt = this.Core.GetAttributeValue(sourceLineNumbers, attrib); 7201 diskPrompt = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
7202 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Property, "DiskPrompt"); // ensure the output has a DiskPrompt Property defined 7202 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Property, "DiskPrompt"); // ensure the output has a DiskPrompt Property defined
7203 break; 7203 break;
7204 case "EmbedCab": 7204 case "EmbedCab":
7205 embedCab = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 7205 embedCab = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -7331,7 +7331,7 @@ namespace WixToolset.Core
7331 // add the row to the section 7331 // add the row to the section
7332 if (!this.Core.EncounteredError) 7332 if (!this.Core.EncounteredError)
7333 { 7333 {
7334 this.Core.AddTuple(new MediaTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, id)) 7334 this.Core.AddSymbol(new MediaSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, id))
7335 { 7335 {
7336 DiskId = id, 7336 DiskId = id,
7337 DiskPrompt = diskPrompt, 7337 DiskPrompt = diskPrompt,
@@ -7344,7 +7344,7 @@ namespace WixToolset.Core
7344 7344
7345 if (null != symbols) 7345 if (null != symbols)
7346 { 7346 {
7347 this.Core.AddTuple(new WixDeltaPatchSymbolPathsTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, SymbolPathType.Media, id)) 7347 this.Core.AddSymbol(new WixDeltaPatchSymbolPathsSymbol(sourceLineNumbers, new Identifier(AccessModifier.Private, SymbolPathType.Media, id))
7348 { 7348 {
7349 SymbolType = SymbolPathType.Media, 7349 SymbolType = SymbolPathType.Media,
7350 SymbolId = id.ToString(CultureInfo.InvariantCulture), 7350 SymbolId = id.ToString(CultureInfo.InvariantCulture),
@@ -7406,7 +7406,7 @@ namespace WixToolset.Core
7406 break; 7406 break;
7407 case "DiskPrompt": 7407 case "DiskPrompt":
7408 diskPrompt = this.Core.GetAttributeValue(sourceLineNumbers, attrib); 7408 diskPrompt = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
7409 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Property, "DiskPrompt"); // ensure the output has a DiskPrompt Property defined 7409 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Property, "DiskPrompt"); // ensure the output has a DiskPrompt Property defined
7410 this.Core.Write(WarningMessages.ReservedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName)); 7410 this.Core.Write(WarningMessages.ReservedAttribute(sourceLineNumbers, node.Name.LocalName, attrib.Name.LocalName));
7411 break; 7411 break;
7412 case "EmbedCab": 7412 case "EmbedCab":
@@ -7440,12 +7440,12 @@ namespace WixToolset.Core
7440 7440
7441 if (!this.Core.EncounteredError) 7441 if (!this.Core.EncounteredError)
7442 { 7442 {
7443 this.Core.AddTuple(new MediaTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, 1)) 7443 this.Core.AddSymbol(new MediaSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, 1))
7444 { 7444 {
7445 DiskId = 1 7445 DiskId = 1
7446 }); 7446 });
7447 7447
7448 this.Core.AddTuple(new WixMediaTemplateTuple(sourceLineNumbers) 7448 this.Core.AddSymbol(new WixMediaTemplateSymbol(sourceLineNumbers)
7449 { 7449 {
7450 CabinetTemplate = cabinetTemplate, 7450 CabinetTemplate = cabinetTemplate,
7451 VolumeLabel = volumeLabel, 7451 VolumeLabel = volumeLabel,
@@ -7478,7 +7478,7 @@ namespace WixToolset.Core
7478 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); 7478 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
7479 Identifier id = null; 7479 Identifier id = null;
7480 var configData = String.Empty; 7480 var configData = String.Empty;
7481 FileTupleAttributes attributes = 0; 7481 FileSymbolAttributes attributes = 0;
7482 string language = null; 7482 string language = null;
7483 string sourceFile = null; 7483 string sourceFile = null;
7484 7484
@@ -7493,12 +7493,12 @@ namespace WixToolset.Core
7493 break; 7493 break;
7494 case "DiskId": 7494 case "DiskId":
7495 diskId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 1, Int16.MaxValue); 7495 diskId = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 1, Int16.MaxValue);
7496 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.Media, diskId.ToString(CultureInfo.InvariantCulture.NumberFormat)); 7496 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.Media, diskId.ToString(CultureInfo.InvariantCulture.NumberFormat));
7497 break; 7497 break;
7498 case "FileCompression": 7498 case "FileCompression":
7499 var compress = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 7499 var compress = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
7500 attributes |= compress == YesNoType.Yes ? FileTupleAttributes.Compressed : 0; 7500 attributes |= compress == YesNoType.Yes ? FileSymbolAttributes.Compressed : 0;
7501 attributes |= compress == YesNoType.No ? FileTupleAttributes.Uncompressed : 0; 7501 attributes |= compress == YesNoType.No ? FileSymbolAttributes.Uncompressed : 0;
7502 break; 7502 break;
7503 case "Language": 7503 case "Language":
7504 language = this.Core.GetAttributeLocalizableIntegerValue(sourceLineNumbers, attrib, 0, Int16.MaxValue); 7504 language = this.Core.GetAttributeLocalizableIntegerValue(sourceLineNumbers, attrib, 0, Int16.MaxValue);
@@ -7561,7 +7561,7 @@ namespace WixToolset.Core
7561 7561
7562 if (!this.Core.EncounteredError) 7562 if (!this.Core.EncounteredError)
7563 { 7563 {
7564 var tuple = this.Core.AddTuple(new WixMergeTuple(sourceLineNumbers, id) 7564 var symbol = this.Core.AddSymbol(new WixMergeSymbol(sourceLineNumbers, id)
7565 { 7565 {
7566 DirectoryRef = directoryId, 7566 DirectoryRef = directoryId,
7567 SourceFile = sourceFile, 7567 SourceFile = sourceFile,
@@ -7571,7 +7571,7 @@ namespace WixToolset.Core
7571 FeatureRef = Guid.Empty.ToString("B") 7571 FeatureRef = Guid.Empty.ToString("B")
7572 }); 7572 });
7573 7573
7574 tuple.Set((int)WixMergeTupleFields.Language, language); 7574 symbol.Set((int)WixMergeSymbolFields.Language, language);
7575 } 7575 }
7576 } 7576 }
7577 7577
@@ -7692,7 +7692,7 @@ namespace WixToolset.Core
7692 7692
7693 if (!this.Core.EncounteredError) 7693 if (!this.Core.EncounteredError)
7694 { 7694 {
7695 this.Core.AddTuple(new ConditionTuple(sourceLineNumbers) 7695 this.Core.AddSymbol(new ConditionSymbol(sourceLineNumbers)
7696 { 7696 {
7697 FeatureRef = featureId, 7697 FeatureRef = featureId,
7698 Level = level.Value, 7698 Level = level.Value,
@@ -7722,7 +7722,7 @@ namespace WixToolset.Core
7722 { 7722 {
7723 case "Id": 7723 case "Id":
7724 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); 7724 id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
7725 this.Core.CreateSimpleReference(sourceLineNumbers, TupleDefinitions.WixMerge, id); 7725 this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixMerge, id);
7726 break; 7726 break;
7727 case "Primary": 7727 case "Primary":
7728 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib); 7728 primary = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
@@ -7815,7 +7815,7 @@ namespace WixToolset.Core
7815 7815
7816 if (!this.Core.EncounteredError) 7816 if (!this.Core.EncounteredError)
7817 { 7817 {
7818 this.Core.AddTuple(new MIMETuple(sourceLineNumbers, new Identifier(AccessModifier.Private, contentType)) 7818 this.Core.AddSymbol(new MIMESymbol(sourceLineNumbers, new Identifier(AccessModifier.Private, contentType))
7819 { 7819 {
7820 ContentType = contentType, 7820 ContentType = contentType,
7821 ExtensionRef = extension, 7821 ExtensionRef = extension,
@@ -7894,7 +7894,7 @@ namespace WixToolset.Core
7894 if (patch) 7894 if (patch)
7895 { 7895 {
7896 // /Patch/PatchProperty goes directly into MsiPatchMetadata table 7896 // /Patch/PatchProperty goes directly into MsiPatchMetadata table
7897 this.Core.AddTuple(new MsiPatchMetadataTuple(sourceLineNumbers, new Identifier(AccessModifier.Public, company, name)) 7897 this.Core.AddSymbol(new MsiPatchMetadataSymbol(sourceLineNumbers, new Identifier(AccessModifier.Public, company, name))
7898 { 7898 {
7899 Company = company, 7899 Company = company,
7900 Property = name, 7900 Property = name,
@@ -7921,7 +7921,7 @@ namespace WixToolset.Core
7921 { 7921 {
7922 if (!this.Core.EncounteredError) 7922 if (!this.Core.EncounteredError)
7923 { 7923 {
7924 this.Core.AddTuple(new PropertyTuple(sourceLineNumbers, new Identifier(AccessModifier.Private, name)) 7924 this.Core.AddSymbol(new PropertySymbol(sourceLineNumbers, new Identifier(AccessModifier.Private, name))
7925 { 7925 {
7926 Value = value 7926 Value = value
7927 }); 7927 });
@@ -7971,7 +7971,7 @@ namespace WixToolset.Core
7971 7971
7972 return id; 7972 return id;
7973 } 7973 }
7974 7974
7975 /// <summary> 7975 /// <summary>
7976 /// Parses a ReplacePatch element. 7976 /// Parses a ReplacePatch element.
7977 /// </summary> 7977 /// </summary>
@@ -8080,7 +8080,7 @@ namespace WixToolset.Core
8080 8080
8081 if (!this.Core.EncounteredError) 8081 if (!this.Core.EncounteredError)
8082 { 8082 {
8083 this.Core.AddTuple(new WixPatchRefTuple(sourceLineNumbers) 8083 this.Core.AddSymbol(new WixPatchRefSymbol(sourceLineNumbers)
8084 { 8084 {
8085 Table = "*", 8085 Table = "*",
8086 PrimaryKeys = "*", 8086 PrimaryKeys = "*",
@@ -8127,7 +8127,7 @@ namespace WixToolset.Core
8127 8127
8128 if (!this.Core.EncounteredError) 8128 if (!this.Core.EncounteredError)
8129 { 8129 {
8130 this.Core.AddTuple(new WixPatchRefTuple(sourceLineNumbers) 8130 this.Core.AddSymbol(new WixPatchRefSymbol(sourceLineNumbers)
8131 { 8131 {
8132 Table = tableName, 8132 Table = tableName,
8133 PrimaryKeys = id 8133 PrimaryKeys = id
@@ -8245,7 +8245,7 @@ namespace WixToolset.Core
8245 8245
8246 if (!this.Core.EncounteredError) 8246 if (!this.Core.EncounteredError)
8247 { 8247 {
8248 this.Core.AddTuple(new WixPatchBaselineTuple(sourceLineNumbers, id) 8248 this.Core.AddSymbol(new WixPatchBaselineSymbol(sourceLineNumbers, id)
8249 { 8249 {
8250 DiskId = diskId ?? 1, 8250 DiskId = diskId ?? 1,
8251 ValidationFlags = validationFlags, 8251 ValidationFlags = validationFlags,