aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core/CompilerCore.cs
diff options
context:
space:
mode:
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>