public bool TryAddTupleToOutputMatchingTableDefinitions(IntermediateTuple tuple, Output output, TableDefinition[] tableDefinitions) { var tableDefinition = tableDefinitions.FirstOrDefault(t => t.Name == tuple.Definition.Name); if (tableDefinition == null) { return(false); } var table = output.EnsureTable(tableDefinition); var row = table.CreateRow(tuple.SourceLineNumbers); for (var i = 0; i < tuple.Fields.Length; ++i) { if (i < tableDefinition.Columns.Length) { var column = tableDefinition.Columns[i]; switch (column.Type) { case ColumnType.Number: row[i] = tuple.AsNumber(i); break; default: row[i] = tuple.AsString(i); break; } } } return(true); }
private void AddTupleDefaultly(IntermediateTuple tuple, Output output) { if (!this.TableDefinitions.TryGet(tuple.Definition.Name, out var tableDefinition)) { return; } var table = output.EnsureTable(tableDefinition); var row = table.CreateRow(tuple.SourceLineNumbers); for (var i = 0; i < tuple.Fields.Length; ++i) { if (i < tableDefinition.Columns.Length) { var column = tableDefinition.Columns[i]; switch (column.Type) { case ColumnType.Number: row[i] = tuple.AsNumber(i); break; default: row[i] = tuple.AsString(i); break; } } } }
public static IntermediateField Set(this IntermediateTuple tuple, int index, string value) { var definition = tuple.Definition.FieldDefinitions[index]; var field = tuple.Fields[index].Set(definition, value); return(tuple.Fields[index] = field); }
public virtual bool TryAddTupleToOutput(IntermediateTuple tuple, Output output) { if (this.TableDefinitionsForTuples != null) { return(this.BackendHelper.TryAddTupleToOutputMatchingTableDefinitions(tuple, output, this.TableDefinitionsForTuples)); } return(false); }
private void AddTupleFromExtension(IntermediateTuple tuple, Output output) { foreach (var extension in this.BackendExtensions) { if (extension.TryAddTupleToOutput(tuple, output)) { break; } } }
public Item(IntermediateTuple row, string type, string id) { this.Row = row; this.Type = type; this.Id = id; this.Key = ItemCollection.CreateKeyFromTypeId(type, id); afterItems = new ItemCollection(); beforeItems = new ItemCollection(); flattenedAfterItems = false; }
public static bool IsIdentical(this IntermediateTuple first, IntermediateTuple second) { var identical = (first.Definition.Type == second.Definition.Type && first.Definition.Name == second.Definition.Name && first.Definition.FieldDefinitions.Length == second.Definition.FieldDefinitions.Length); for (int i = 0; identical && i < first.Definition.FieldDefinitions.Length; ++i) { var firstField = first[i]; var secondField = second[i]; identical = (firstField.AsString() == secondField.AsString()); } return(identical); }
public override bool TryAddTupleToOutput(IntermediateTuple tuple, Output output) { #if ALTERNATIVE_TO_USING_HELPER switch (tuple.Definition.Name) { case TupleDefinitions.ExampleName: { var table = output.EnsureTable(ExampleTableDefinitions.ExampleTable); var row = table.CreateRow(tuple.SourceLineNumbers); row[0] = tuple[0].AsString(); row[1] = tuple[1].AsString(); } return(true); } return(false); #else return(this.BackendHelper.TryAddTupleToOutputMatchingTableDefinitions(tuple, output, ExampleTableDefinitions.All)); #endif }
/// <summary> /// Basic constructor for struct /// </summary> /// <param name="row">Row for the field.</param> /// <param name="field">Field needing further resolution.</param> public DelayedField(IntermediateTuple row, IntermediateField field) { this.Row = row; this.Field = field; }
public static bool AsBool(this IntermediateTuple tuple, int index) { return(tuple?.Fields[index].AsBool() ?? false); }
public static string AsString(this IntermediateTuple tuple, int index) { return(tuple?.Fields[index].AsString()); }
public static int?AsNullableNumber(this IntermediateTuple tuple, int index) { return(tuple?.Fields[index].AsNullableNumber()); }
public static int AsNumber(this IntermediateTuple tuple, int index) { return(tuple?.Fields[index].AsNumber() ?? 0); }
public static bool?AsNullableBool(this IntermediateTuple tuple, int index) { return(tuple?.Fields[index].AsNullableBool()); }
public override bool TryAddTupleToOutput(IntermediateTuple tuple, WindowsInstallerData output) => this.BackendHelper.TryAddTupleToOutputMatchingTableDefinitions(tuple, output, this.TableDefinitionsForTuples, true);