StructuralMergeResult

com.phasmidsoftware.xmldoc.merge.StructuralMergeResult
case class StructuralMergeResult(relations: RelationSet, rootLabel: String, conflicts: Seq[StructuralConflict])

The result of a structural (Pcs-level) 3-way merge. relations is Δ after resolving whatever could be resolved automatically - safe to reconstruct a merged tree from by walking it from rootLabel (see PcsTreeBuilder). conflicts is everywhere that couldn't be resolved. For a conflicting slot, relations keeps the base's own value if it had one (Lindholm's rule: an edit always wins over the base, so a real conflict - two edits disagreeing - is the one case with no automatic winner); a conflicting slot with no base value at all (e.g. both sides independently insert different content at the same anchor) is simply absent from relations. Either way, relations isn't guaranteed internally consistent when conflicts is non-empty - per Lindholm, that's expected: Δ only becomes Tm once every conflict is resolved one way or another (PcsTreeBuilder.build fails cleanly rather than silently reconstructing a bad tree when it isn't).

Value parameters

rootLabel

the label of base/left/right's shared root node (they're assumed to already correspond, same as everywhere else in this package).

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Members list

Value members

Inherited methods

def productElementNames: Iterator[String]

An iterator over the names of all the elements of this product.

An iterator over the names of all the elements of this product.

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

An iterator over all the elements of this product.

An iterator over all the elements of this product.

Attributes

Returns

in the default implementation, an Iterator[Any]

Inherited from:
Product