/// <summary> /// Compares two complex references without considering the primary bit. /// </summary> /// <param name="obj">Complex reference to compare to.</param> /// <returns>Zero if the objects are equivalent, negative number if the provided object is less, positive if greater.</returns> public int CompareToWithoutConsideringPrimary(object obj) { WixComplexReferenceRow other = obj as WixComplexReferenceRow; if (null == other) { throw new ArgumentException("Expected ComplexReference type.", "obj"); } int comparison = this.ChildType - other.ChildType; if (0 == comparison) { comparison = this.ChildId.CompareTo(other.ChildId); if (0 == comparison) { comparison = this.ParentType - other.ParentType; if (0 == comparison) { string thisParentLanguage = null == this.ParentLanguage ? String.Empty : this.ParentLanguage; string otherParentLanguage = null == other.ParentLanguage ? String.Empty : other.ParentLanguage; comparison = thisParentLanguage.CompareTo(otherParentLanguage); if (0 == comparison) { comparison = this.ParentId.CompareTo(other.ParentId); } } } } return(comparison); }
public int CompareToWithoutConsideringPrimary(object obj) { WixComplexReferenceRow other = obj as WixComplexReferenceRow; if (null == other) { throw new ArgumentException(WixStrings.EXP_ExpectedComplexReferenceType, "obj"); } int comparison = this.ChildType - other.ChildType; if (0 == comparison) { comparison = String.Compare(this.ChildId, other.ChildId, StringComparison.Ordinal); if (0 == comparison) { comparison = this.ParentType - other.ParentType; if (0 == comparison) { string thisParentLanguage = null == this.ParentLanguage ? String.Empty : this.ParentLanguage; string otherParentLanguage = null == other.ParentLanguage ? String.Empty : other.ParentLanguage; comparison = String.Compare(thisParentLanguage, otherParentLanguage, StringComparison.Ordinal); if (0 == comparison) { comparison = String.Compare(this.ParentId, other.ParentId, StringComparison.Ordinal); } } } } return(comparison); }
/// <summary> /// Changes all of the parent references to point to the passed in parent reference. /// </summary> /// <param name="parent">New parent complex reference.</param> internal void Reparent(WixComplexReferenceRow parent) { this.ParentId = parent.ParentId; this.ParentLanguage = parent.ParentLanguage; this.ParentType = parent.ParentType; if (!this.IsPrimary) { this.IsPrimary = parent.IsPrimary; } }
/// <summary> /// Creates a shallow copy of the ComplexReference. /// </summary> /// <returns>A shallow copy of the ComplexReference.</returns> internal WixComplexReferenceRow Clone() { WixComplexReferenceRow wixComplexReferenceRow = new WixComplexReferenceRow(this.SourceLineNumbers, this.Table); wixComplexReferenceRow.ParentType = this.ParentType; wixComplexReferenceRow.ParentId = this.ParentId; wixComplexReferenceRow.ParentLanguage = this.ParentLanguage; wixComplexReferenceRow.ChildType = this.ChildType; wixComplexReferenceRow.ChildId = this.ChildId; wixComplexReferenceRow.IsPrimary = this.IsPrimary; return(wixComplexReferenceRow); }
/// <summary> /// Creates a new row in the table. /// </summary> /// <param name="sourceLineNumbers">Original source lines for this row.</param> /// <param name="add">Specifies whether to only create the row or add it to the table automatically.</param> /// <returns>Row created in table.</returns> public Row CreateRow(SourceLineNumberCollection sourceLineNumbers, bool add) { Row row; switch (this.Name) { case "BBControl": row = new BBControlRow(sourceLineNumbers, this); break; case "ChainMsiPackage": row = new ChainMsiPackageRow(sourceLineNumbers, this); break; case "Component": row = new ComponentRow(sourceLineNumbers, this); break; case "Control": row = new ControlRow(sourceLineNumbers, this); break; case "File": row = new FileRow(sourceLineNumbers, this); break; case "Media": row = new MediaRow(sourceLineNumbers, this); break; case "PayloadInfo": row = new PayloadInfoRow(sourceLineNumbers, this); break; case "Upgrade": row = new UpgradeRow(sourceLineNumbers, this); break; case "Variable": row = new VariableRow(sourceLineNumbers, this); break; case "WixAction": row = new WixActionRow(sourceLineNumbers, this); break; case "WixApprovedExeForElevation": row = new WixApprovedExeForElevationRow(sourceLineNumbers, this); break; case "WixBundle": row = new WixBundleRow(sourceLineNumbers, this); break; case "WixBundlePatchTargetCode": row = new WixBundlePatchTargetCodeRow(sourceLineNumbers, this); break; case "WixBundleUpdate": row = new WixBundleUpdateRow(sourceLineNumbers, this); break; case "WixCatalog": row = new WixCatalogRow(sourceLineNumbers, this); break; case "WixCommandLine": row = new WixCommandLineRow(sourceLineNumbers, this); break; case "WixComplexReference": row = new WixComplexReferenceRow(sourceLineNumbers, this); break; case "WixFile": row = new WixFileRow(sourceLineNumbers, this); break; case "WixMedia": row = new WixMediaRow(sourceLineNumbers, this); break; case "WixMediaTemplate": row = new WixMediaTemplateRow(sourceLineNumbers, this); break; case "WixMerge": row = new WixMergeRow(sourceLineNumbers, this); break; case "WixProperty": row = new WixPropertyRow(sourceLineNumbers, this); break; case "WixSimpleReference": row = new WixSimpleReferenceRow(sourceLineNumbers, this); break; case "WixUpdateRegistration": row = new WixUpdateRegistrationRow(sourceLineNumbers, this); break; case "WixVariable": row = new WixVariableRow(sourceLineNumbers, this); break; default: row = new Row(sourceLineNumbers, this); break; } if (add) { this.rows.Add(row); } return(row); }
/// <summary> /// Creates a new row in the table. /// </summary> /// <param name="sourceLineNumbers">Original source lines for this row.</param> /// <param name="add">Specifies whether to only create the row or add it to the table automatically.</param> /// <returns>Row created in table.</returns> public Row CreateRow(SourceLineNumberCollection sourceLineNumbers, bool add) { Row row; switch (this.Name) { case "BBControl": row = new BBControlRow(sourceLineNumbers, this); break; case "ChainMsiPackage": row = new ChainMsiPackageRow(sourceLineNumbers, this); break; case "Component": row = new ComponentRow(sourceLineNumbers, this); break; case "Control": row = new ControlRow(sourceLineNumbers, this); break; case "File": row = new FileRow(sourceLineNumbers, this); break; case "Media": row = new MediaRow(sourceLineNumbers, this); break; case "PayloadInfo": row = new PayloadInfoRow(sourceLineNumbers, this); break; case "Upgrade": row = new UpgradeRow(sourceLineNumbers, this); break; case "Variable": row = new VariableRow(sourceLineNumbers, this); break; case "WixAction": row = new WixActionRow(sourceLineNumbers, this); break; case "WixApprovedExeForElevation": row = new WixApprovedExeForElevationRow(sourceLineNumbers, this); break; case "WixBundle": row = new WixBundleRow(sourceLineNumbers, this); break; case "WixBundlePatchTargetCode": row = new WixBundlePatchTargetCodeRow(sourceLineNumbers, this); break; case "WixBundleUpdate": row = new WixBundleUpdateRow(sourceLineNumbers, this); break; case "WixCatalog": row = new WixCatalogRow(sourceLineNumbers, this); break; case "WixCommandLine": row = new WixCommandLineRow(sourceLineNumbers, this); break; case "WixComplexReference": row = new WixComplexReferenceRow(sourceLineNumbers, this); break; case "WixFile": row = new WixFileRow(sourceLineNumbers, this); break; case "WixMedia": row = new WixMediaRow(sourceLineNumbers, this); break; case "WixMediaTemplate": row = new WixMediaTemplateRow(sourceLineNumbers, this); break; case "WixMerge": row = new WixMergeRow(sourceLineNumbers, this); break; case "WixProperty": row = new WixPropertyRow(sourceLineNumbers, this); break; case "WixSimpleReference": row = new WixSimpleReferenceRow(sourceLineNumbers, this); break; case "WixUpdateRegistration": row = new WixUpdateRegistrationRow(sourceLineNumbers, this); break; case "WixVariable": row = new WixVariableRow(sourceLineNumbers, this); break; default: row = new Row(sourceLineNumbers, this); break; } if (add) { this.rows.Add(row); } return row; }
/// <summary> /// Creates a new row in the table. /// </summary> /// <param name="sourceLineNumbers">Original source lines for this row.</param> /// <returns>Row created in table.</returns> public Row CreateRow(SourceLineNumberCollection sourceLineNumbers) { Row row; switch (this.Name) { case "BBControl": row = new BBControlRow(sourceLineNumbers, this); break; case "Control": row = new ControlRow(sourceLineNumbers, this); break; case "File": row = new FileRow(sourceLineNumbers, this); break; case "Media": row = new MediaRow(sourceLineNumbers, this); break; case "Upgrade": row = new UpgradeRow(sourceLineNumbers, this); break; case "WixAction": row = new WixActionRow(sourceLineNumbers, this); break; case "WixComplexReference": row = new WixComplexReferenceRow(sourceLineNumbers, this); break; case "WixFile": row = new WixFileRow(sourceLineNumbers, this); break; case "WixMedia": row = new WixMediaRow(sourceLineNumbers, this); break; case "WixMerge": row = new WixMergeRow(sourceLineNumbers, this); break; case "WixProperty": row = new WixPropertyRow(sourceLineNumbers, this); break; case "WixSimpleReference": row = new WixSimpleReferenceRow(sourceLineNumbers, this); break; case "WixVariable": row = new WixVariableRow(sourceLineNumbers, this); break; default: row = new Row(sourceLineNumbers, this); break; } this.rows.Add(row); return(row); }
/// <summary> /// Changes all of the parent references to point to the passed in parent reference. /// </summary> /// <param name="parent">New parent complex reference.</param> internal void Reparent(WixComplexReferenceRow parent) { this.ParentId = parent.ParentId; this.ParentLanguage = parent.ParentLanguage; this.ParentType = parent.ParentType; if (!this.IsPrimary) { this.IsPrimary = parent.IsPrimary; } }
/// <summary> /// Creates a shallow copy of the ComplexReference. /// </summary> /// <returns>A shallow copy of the ComplexReference.</returns> internal WixComplexReferenceRow Clone() { WixComplexReferenceRow wixComplexReferenceRow = new WixComplexReferenceRow(this.SourceLineNumbers, this.Table); wixComplexReferenceRow.ParentType = this.ParentType; wixComplexReferenceRow.ParentId = this.ParentId; wixComplexReferenceRow.ParentLanguage = this.ParentLanguage; wixComplexReferenceRow.ChildType = this.ChildType; wixComplexReferenceRow.ChildId = this.ChildId; wixComplexReferenceRow.IsPrimary = this.IsPrimary; return wixComplexReferenceRow; }
/// <summary> /// Creates a new row in the table. /// </summary> /// <param name="sourceLineNumbers">Original source lines for this row.</param> /// <returns>Row created in table.</returns> public Row CreateRow(SourceLineNumberCollection sourceLineNumbers) { Row row; switch (this.Name) { case "BBControl": row = new BBControlRow(sourceLineNumbers, this); break; case "ChainMsiPackage": row = new ChainMsiPackageRow(sourceLineNumbers, this); break; case "Component": row = new ComponentRow(sourceLineNumbers, this); break; case "Control": row = new ControlRow(sourceLineNumbers, this); break; case "File": row = new FileRow(sourceLineNumbers, this); break; case "Media": row = new MediaRow(sourceLineNumbers, this); break; case "PayloadInfo": row = new PayloadInfoRow(sourceLineNumbers, this); break; case "Upgrade": row = new UpgradeRow(sourceLineNumbers, this); break; case "WixAction": row = new WixActionRow(sourceLineNumbers, this); break; case "WixComplexReference": row = new WixComplexReferenceRow(sourceLineNumbers, this); break; case "WixFile": row = new WixFileRow(sourceLineNumbers, this); break; case "WixMedia": row = new WixMediaRow(sourceLineNumbers, this); break; case "WixMediaTemplate": row = new WixMediaTemplateRow(sourceLineNumbers, this); break; case "WixMerge": row = new WixMergeRow(sourceLineNumbers, this); break; case "WixProperty": row = new WixPropertyRow(sourceLineNumbers, this); break; case "WixSimpleReference": row = new WixSimpleReferenceRow(sourceLineNumbers, this); break; case "WixVariable": row = new WixVariableRow(sourceLineNumbers, this); break; default: row = new Row(sourceLineNumbers, this); break; } this.rows.Add(row); return row; }