aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/CompilerCore.cs
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-04-11 21:49:09 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-04-12 12:46:21 +1000
commit6d8b6f79b44b6a41a630aa3aad5a3c7f16701798 (patch)
treeb82ede9934cb7777a19e74a912c68481e76c21cd /src/WixToolset.Core/CompilerCore.cs
parentdf69d4172d3117d8b66ba51fa5ae7f4be538700d (diff)
downloadwix-6d8b6f79b44b6a41a630aa3aad5a3c7f16701798.tar.gz
wix-6d8b6f79b44b6a41a630aa3aad5a3c7f16701798.tar.bz2
wix-6d8b6f79b44b6a41a630aa3aad5a3c7f16701798.zip
General cleanup.
Try not to send strings to specify the tuple or table. Try to avoid using the Set method on tuples. Always create new tuples and add them to the section in the same line.
Diffstat (limited to 'src/WixToolset.Core/CompilerCore.cs')
-rw-r--r--src/WixToolset.Core/CompilerCore.cs62
1 files changed, 36 insertions, 26 deletions
diff --git a/src/WixToolset.Core/CompilerCore.cs b/src/WixToolset.Core/CompilerCore.cs
index 51828975..93f9276c 100644
--- a/src/WixToolset.Core/CompilerCore.cs
+++ b/src/WixToolset.Core/CompilerCore.cs
@@ -14,6 +14,7 @@ namespace WixToolset.Core
14 using System.Xml.Linq; 14 using System.Xml.Linq;
15 using WixToolset.Data; 15 using WixToolset.Data;
16 using WixToolset.Data.Tuples; 16 using WixToolset.Data.Tuples;
17 using WixToolset.Data.WindowsInstaller;
17 using WixToolset.Extensibility; 18 using WixToolset.Extensibility;
18 using WixToolset.Extensibility.Data; 19 using WixToolset.Extensibility.Data;
19 using WixToolset.Extensibility.Services; 20 using WixToolset.Extensibility.Services;
@@ -166,9 +167,10 @@ namespace WixToolset.Core
166 /// Add a tuple to the active section. 167 /// Add a tuple to the active section.
167 /// </summary> 168 /// </summary>
168 /// <param name="tuple">Tuple to add.</param> 169 /// <param name="tuple">Tuple to add.</param>
169 public void AddTuple(IntermediateTuple tuple) 170 public T AddTuple<T>(T tuple)
171 where T : IntermediateTuple
170 { 172 {
171 this.ActiveSection.Tuples.Add(tuple); 173 return this.ActiveSection.AddTuple(tuple);
172 } 174 }
173 175
174 /// <summary> 176 /// <summary>
@@ -351,23 +353,6 @@ namespace WixToolset.Core
351 } 353 }
352 354
353 /// <summary> 355 /// <summary>
354 /// Creates a tuple in the active section.
355 /// </summary>
356 /// <param name="sourceLineNumbers">Source and line number of current row.</param>
357 /// <param name="tupleType">Type of tuple to create.</param>
358 /// <param name="identifier">Optional identifier.</param>
359 /// <returns>New tuple.</returns>
360 public IntermediateTuple CreateTuple(SourceLineNumber sourceLineNumbers, TupleDefinitionType tupleType, Identifier identifier = null)
361 {
362 var tupleDefinition = TupleDefinitions.ByType(tupleType);
363 var tuple = tupleDefinition.CreateTuple(sourceLineNumbers, identifier);
364
365 this.ActiveSection.Tuples.Add(tuple);
366
367 return tuple;
368 }
369
370 /// <summary>
371 /// Creates directories using the inline directory syntax. 356 /// Creates directories using the inline directory syntax.
372 /// </summary> 357 /// </summary>
373 /// <param name="sourceLineNumbers">Source line information.</param> 358 /// <param name="sourceLineNumbers">Source line information.</param>
@@ -394,27 +379,38 @@ namespace WixToolset.Core
394 } 379 }
395 380
396 /// <summary> 381 /// <summary>
397 /// Create a WixSimpleReference row in the active section. 382 /// Create a WixSimpleReferenceTuple in the active section.
398 /// </summary> 383 /// </summary>
399 /// <param name="sourceLineNumbers">Source line information for the row.</param> 384 /// <param name="sourceLineNumbers">Source line information for the row.</param>
400 /// <param name="tableName">The table name of the simple reference.</param> 385 /// <param name="tupleName">The tuple name of the simple reference.</param>
401 /// <param name="primaryKeys">The primary keys of the simple reference.</param> 386 /// <param name="primaryKeys">The primary keys of the simple reference.</param>
402 public void CreateSimpleReference(SourceLineNumber sourceLineNumbers, string tableName, params string[] primaryKeys) 387 public void CreateSimpleReference(SourceLineNumber sourceLineNumbers, string tupleName, params string[] primaryKeys)
403 { 388 {
404 if (!this.EncounteredError) 389 if (!this.EncounteredError)
405 { 390 {
406 string joinedKeys = String.Join("/", primaryKeys); 391 var joinedKeys = String.Join("/", primaryKeys);
407 string id = String.Concat(tableName, ":", joinedKeys); 392 var id = String.Concat(tupleName, ":", joinedKeys);
408 393
409 // If this simple reference hasn't been added to the active section already, add it. 394 // If this simple reference hasn't been added to the active section already, add it.
410 if (this.activeSectionSimpleReferences.Add(id)) 395 if (this.activeSectionSimpleReferences.Add(id))
411 { 396 {
412 this.parseHelper.CreateSimpleReference(this.ActiveSection, sourceLineNumbers, tableName, primaryKeys); 397 this.parseHelper.CreateSimpleReference(this.ActiveSection, sourceLineNumbers, tupleName, primaryKeys);
413 } 398 }
414 } 399 }
415 } 400 }
416 401
417 /// <summary> 402 /// <summary>
403 /// Create a WixSimpleReferenceTuple in the active section.
404 /// </summary>
405 /// <param name="sourceLineNumbers">Source line information for the row.</param>
406 /// <param name="tupleDefinition">The tuple definition of the simple reference.</param>
407 /// <param name="primaryKeys">The primary keys of the simple reference.</param>
408 public void CreateSimpleReference(SourceLineNumber sourceLineNumbers, IntermediateTupleDefinition tupleDefinition, params string[] primaryKeys)
409 {
410 this.CreateSimpleReference(sourceLineNumbers, tupleDefinition.Name, primaryKeys);
411 }
412
413 /// <summary>
418 /// A row in the WixGroup table is added for this child node and its parent node. 414 /// A row in the WixGroup table is added for this child node and its parent node.
419 /// </summary> 415 /// </summary>
420 /// <param name="sourceLineNumbers">Source line information for the row.</param> 416 /// <param name="sourceLineNumbers">Source line information for the row.</param>
@@ -431,7 +427,7 @@ namespace WixToolset.Core
431 } 427 }
432 428
433 /// <summary> 429 /// <summary>
434 /// Add the appropriate rows to make sure that the given table shows up 430 /// Add the appropriate tuples to make sure that the given table shows up
435 /// in the resulting output. 431 /// in the resulting output.
436 /// </summary> 432 /// </summary>
437 /// <param name="sourceLineNumbers">Source line numbers.</param> 433 /// <param name="sourceLineNumbers">Source line numbers.</param>
@@ -445,6 +441,20 @@ namespace WixToolset.Core
445 } 441 }
446 442
447 /// <summary> 443 /// <summary>
444 /// Add the appropriate tuples to make sure that the given table shows up
445 /// in the resulting output.
446 /// </summary>
447 /// <param name="sourceLineNumbers">Source line numbers.</param>
448 /// <param name="tableDefinition">Definition of the table to ensure existance of.</param>
449 public void EnsureTable(SourceLineNumber sourceLineNumbers, TableDefinition tableDefinition)
450 {
451 if (!this.EncounteredError)
452 {
453 this.parseHelper.EnsureTable(this.ActiveSection, sourceLineNumbers, tableDefinition);
454 }
455 }
456
457 /// <summary>
448 /// Get an attribute value. 458 /// Get an attribute value.
449 /// </summary> 459 /// </summary>
450 /// <param name="sourceLineNumbers">Source line information about the owner element.</param> 460 /// <param name="sourceLineNumbers">Source line information about the owner element.</param>