本文整理汇总了C#中Db4objects.Db4o.Foundation.Tree.OnAttemptToAddDuplicate方法的典型用法代码示例。如果您正苦于以下问题:C# Tree.OnAttemptToAddDuplicate方法的具体用法?C# Tree.OnAttemptToAddDuplicate怎么用?C# Tree.OnAttemptToAddDuplicate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Db4objects.Db4o.Foundation.Tree
的用法示例。
在下文中一共展示了Tree.OnAttemptToAddDuplicate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Add
/// <summary>
/// On adding a node to a tree, if it already exists, and if
/// Tree#duplicates() returns false, #isDuplicateOf() will be
/// called.
/// </summary>
/// <remarks>
/// On adding a node to a tree, if it already exists, and if
/// Tree#duplicates() returns false, #isDuplicateOf() will be
/// called. The added node can then be asked for the node that
/// prevails in the tree using #duplicateOrThis(). This mechanism
/// allows doing find() and add() in one run.
/// </remarks>
public virtual Tree Add(Tree newNode, int cmp)
{
if (cmp < 0)
{
if (_subsequent == null)
{
_subsequent = newNode;
_size++;
}
else
{
_subsequent = _subsequent.Add(newNode);
if (_preceding == null)
{
return RotateLeft();
}
return Balance();
}
}
else
{
if (cmp > 0 || newNode.Duplicates())
{
if (_preceding == null)
{
_preceding = newNode;
_size++;
}
else
{
_preceding = _preceding.Add(newNode);
if (_subsequent == null)
{
return RotateRight();
}
return Balance();
}
}
else
{
return newNode.OnAttemptToAddDuplicate(this);
}
}
return this;
}