@joebigelow / wix-1 / commits / 28f41d1a

Implement optimized simple reference creation

Rob Mensching committed Jul 10, 2020 at 23:09 UTC 28f41d1afec40d79459402fbed21f6c237768adb
2 files changed +46 -1
src/WixToolset.Core/CompilerCore.cs
+31
@@ -376,6 +376,26 @@ namespace WixToolset.Core
376 return this.parseHelper.CreateRegistrySymbol(this.ActiveSection, sourceLineNumbers, root, key, name, value, componentId, true);
377 }
378
379 + /// <summary>
380 + /// Create a WixSimpleReferenceSymbol in the active section.
381 + /// </summary>
382 + /// <param name="sourceLineNumbers">Source line information for the row.</param>
383 + /// <param name="symbolName">The symbol name of the simple reference.</param>
384 + /// <param name="primaryKey">The primary key of the simple reference.</param>
385 + public void CreateSimpleReference(SourceLineNumber sourceLineNumbers, string symbolName, string primaryKey)
386 + {
387 + if (!this.EncounteredError)
388 + {
389 + var id = String.Concat(symbolName, ":", primaryKey);
390 +
391 + // If this simple reference hasn't been added to the active section already, add it.
392 + if (this.activeSectionSimpleReferences.Add(id))
393 + {
394 + this.parseHelper.CreateSimpleReference(this.ActiveSection, sourceLineNumbers, symbolName, primaryKey);
395 + }
396 + }
397 + }
398 +
399 /// <summary>
400 /// Create a WixSimpleReferenceSymbol in the active section.
401 /// </summary>
@@ -397,6 +417,17 @@ namespace WixToolset.Core
417 }
418 }
419
420 + /// <summary>
421 + /// Create a WixSimpleReferenceSymbol in the active section.
422 + /// </summary>
423 + /// <param name="sourceLineNumbers">Source line information for the row.</param>
424 + /// <param name="symbolDefinition">The symbol definition of the simple reference.</param>
425 + /// <param name="primaryKey">The primary key of the simple reference.</param>
426 + public void CreateSimpleReference(SourceLineNumber sourceLineNumbers, IntermediateSymbolDefinition symbolDefinition, string primaryKey)
427 + {
428 + this.CreateSimpleReference(sourceLineNumbers, symbolDefinition.Name, primaryKey);
429 + }
430 +
431 /// <summary>
432 /// Create a WixSimpleReferenceSymbol in the active section.
433 /// </summary>
src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs
+15 -1
@@ -225,6 +225,15 @@ namespace WixToolset.Core.ExtensibilityServices
225 return symbol.Id;
226 }
227
228 + public void CreateSimpleReference(IntermediateSection section, SourceLineNumber sourceLineNumbers, string symbolName, string primaryKey)
229 + {
230 + section.AddSymbol(new WixSimpleReferenceSymbol(sourceLineNumbers)
231 + {
232 + Table = symbolName,
233 + PrimaryKeys = primaryKey
234 + });
235 + }
236 +
237 public void CreateSimpleReference(IntermediateSection section, SourceLineNumber sourceLineNumbers, string symbolName, params string[] primaryKeys)
238 {
239 section.AddSymbol(new WixSimpleReferenceSymbol(sourceLineNumbers)
@@ -234,6 +243,11 @@ namespace WixToolset.Core.ExtensibilityServices
243 });
244 }
245
246 + public void CreateSimpleReference(IntermediateSection section, SourceLineNumber sourceLineNumbers, IntermediateSymbolDefinition symbolDefinition, string primaryKey)
247 + {
248 + this.CreateSimpleReference(section, sourceLineNumbers, symbolDefinition.Name, primaryKey);
249 + }
250 +
251 public void CreateSimpleReference(IntermediateSection section, SourceLineNumber sourceLineNumbers, IntermediateSymbolDefinition symbolDefinition, params string[] primaryKeys)
252 {
253 this.CreateSimpleReference(section, sourceLineNumbers, symbolDefinition.Name, primaryKeys);
@@ -849,7 +863,7 @@ namespace WixToolset.Core.ExtensibilityServices
863 }
864 else if (allowRelative)
865 {
852 - return filename.IndexOfAny(Common.IllegalRelativeLongFilenameCharacters) == -1;
866 + return filename.IndexOfAny(Common.IllegalRelativeLongFilenameCharacters) == -1;
867 }
868 else
869 {