本文整理汇总了C#中Sequence.size方法的典型用法代码示例。如果您正苦于以下问题:C# Sequence.size方法的具体用法?C# Sequence.size怎么用?C# Sequence.size使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Sequence
的用法示例。
在下文中一共展示了Sequence.size方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: merge
//.........这里部分代码省略.........
if (oursEdit.BeginA != current
&& theirsEdit.BeginA != current)
{
result.add(0, current, Math.Min(oursEdit.BeginA,
theirsEdit.BeginA), MergeChunk.ConflictState.NO_CONFLICT);
}
// set some initial values for the ranges in A and B which we
// want to handle
int oursBeginB = oursEdit.BeginB;
int theirsBeginB = theirsEdit.BeginB;
// harmonize the start of the ranges in A and B
if (oursEdit.BeginA < theirsEdit.BeginA)
{
theirsBeginB -= theirsEdit.BeginA
- oursEdit.BeginA;
}
else
{
oursBeginB -= oursEdit.BeginA - theirsEdit.BeginA;
}
// combine edits:
// Maybe an Edit on one side corresponds to multiple Edits on
// the other side. Then we have to combine the Edits of the
// other side - so in the end we can merge together two single
// edits.
//
// It is important to notice that this combining will extend the
// ranges of our conflict always downwards (towards the end of
// the content). The starts of the conflicting ranges in ours
// and theirs are not touched here.
//
// This combining is an iterative process: after we have
// combined some edits we have to do the check again. The
// combined edits could now correspond to multiple edits on the
// other side.
//
// Example: when this combining algorithm works on the following
// edits
// oursEdits=((0-5,0-5),(6-8,6-8),(10-11,10-11)) and
// theirsEdits=((0-1,0-1),(2-3,2-3),(5-7,5-7))
// it will merge them into
// oursEdits=((0-8,0-8),(10-11,10-11)) and
// theirsEdits=((0-7,0-7))
//
// Since the only interesting thing to us is how in ours and
// theirs the end of the conflicting range is changing we let
// oursEdit and theirsEdit point to the last conflicting edit
Edit nextOursEdit = nextEdit(baseToOurs);
Edit nextTheirsEdit = nextEdit(baseToTheirs);
for (; ; )
{
if (oursEdit.EndA > nextTheirsEdit.BeginA)
{
theirsEdit = nextTheirsEdit;
nextTheirsEdit = nextEdit(baseToTheirs);
}
else if (theirsEdit.EndA > nextOursEdit.BeginA)
{
oursEdit = nextOursEdit;
nextOursEdit = nextEdit(baseToOurs);
}
else
{
break;
}
}
// harmonize the end of the ranges in A and B
int oursEndB = oursEdit.EndB;
int theirsEndB = theirsEdit.EndB;
if (oursEdit.EndA < theirsEdit.EndA)
{
oursEndB += theirsEdit.EndA - oursEdit.EndA;
}
else
{
theirsEndB += oursEdit.EndA - theirsEdit.EndA;
}
// Add the conflict
result.add(1, oursBeginB, oursEndB,
MergeChunk.ConflictState.FIRST_CONFLICTING_RANGE);
result.add(2, theirsBeginB, theirsEndB,
MergeChunk.ConflictState.NEXT_CONFLICTING_RANGE);
current = Math.Max(oursEdit.EndA, theirsEdit.EndA);
oursEdit = nextOursEdit;
theirsEdit = nextTheirsEdit;
}
}
// maybe we have a common part behind the last edit: copy it to the
// result
if (current < @base.size())
{
result.add(0, current, @base.size(), MergeChunk.ConflictState.NO_CONFLICT);
}
return result;
}