本文整理汇总了C#中HashSet.IsProperSupersetOf方法的典型用法代码示例。如果您正苦于以下问题:C# HashSet.IsProperSupersetOf方法的具体用法?C# HashSet.IsProperSupersetOf怎么用?C# HashSet.IsProperSupersetOf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HashSet
的用法示例。
在下文中一共展示了HashSet.IsProperSupersetOf方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TestSubSetSuperSet
public void TestSubSetSuperSet ()
{
var aSet = new HashSet<int> { 1, 2 };
var bSet = new HashSet<int> { 1 };
Assert.IsTrue (aSet.IsSubsetOf (aSet));
Assert.IsTrue (bSet.IsSubsetOf (aSet));
Assert.IsTrue (bSet.IsProperSubsetOf (aSet));
Assert.IsFalse (aSet.IsProperSubsetOf (aSet));
Assert.IsTrue (aSet.IsSupersetOf (aSet));
Assert.IsTrue (aSet.IsSupersetOf (bSet));
Assert.IsTrue (aSet.IsProperSupersetOf (bSet));
Assert.IsFalse (aSet.IsProperSupersetOf (aSet));
}
示例2: GetOverloadGroupEquivalence
private static OverloadGroupEquivalenceInfo GetOverloadGroupEquivalence(Dictionary<string, List<RuntimeArgument>> groupDefinitions)
{
OverloadGroupEquivalenceInfo info = new OverloadGroupEquivalenceInfo();
if (!groupDefinitions.IsNullOrEmpty())
{
string[] array = new string[groupDefinitions.Count];
groupDefinitions.Keys.CopyTo(array, 0);
for (int i = 0; i < array.Length; i++)
{
string str = array[i];
HashSet<RuntimeArgument> set = new HashSet<RuntimeArgument>(groupDefinitions[str]);
for (int j = i + 1; j < array.Length; j++)
{
string str2 = array[j];
HashSet<RuntimeArgument> other = new HashSet<RuntimeArgument>(groupDefinitions[str2]);
if (set.IsProperSupersetOf(other))
{
info.SetAsSuperset(str, str2);
}
else if (set.IsProperSubsetOf(other))
{
info.SetAsSuperset(str2, str);
}
else if (set.SetEquals(other))
{
info.SetAsEquivalent(str, str2);
}
else if (set.Overlaps(other))
{
info.SetAsOverlapping(str, str2);
}
else
{
info.SetAsDisjoint(str, str2);
}
}
}
}
return info;
}
示例3: VisitImplementation
public override Implementation VisitImplementation(Implementation node)
{
node.PruneUnreachableBlocks();
node.ComputePredecessorsForBlocks();
GraphUtil.Graph<Block> graph = Program.GraphFromImpl(node);
graph.ComputeLoops();
HashSet<Variable> start = new HashSet<Variable>(globalVarToDomainName.Keys);
for (int i = 0; i < node.InParams.Count; i++)
{
Variable v = node.Proc.InParams[i];
string domainName = FindDomainName(v);
if (domainName != null)
{
var kind = FindLinearKind(v);
inParamToLinearQualifier[node.InParams[i]] = new LinearQualifier(domainName, kind);
if (kind == LinearKind.LINEAR || kind == LinearKind.LINEAR_IN)
{
start.Add(node.InParams[i]);
}
}
}
for (int i = 0; i < node.OutParams.Count; i++)
{
string domainName = FindDomainName(node.Proc.OutParams[i]);
if (domainName != null)
{
outParamToDomainName[node.OutParams[i]] = domainName;
}
}
var oldErrorCount = this.errorCount;
var impl = base.VisitImplementation(node);
if (oldErrorCount < this.errorCount)
return impl;
Stack<Block> dfsStack = new Stack<Block>();
HashSet<Block> dfsStackAsSet = new HashSet<Block>();
availableLinearVars[node.Blocks[0]] = start;
dfsStack.Push(node.Blocks[0]);
dfsStackAsSet.Add(node.Blocks[0]);
while (dfsStack.Count > 0)
{
Block b = dfsStack.Pop();
dfsStackAsSet.Remove(b);
HashSet<Variable> end = PropagateAvailableLinearVarsAcrossBlock(b);
if (b.TransferCmd is ReturnCmd)
{
foreach (GlobalVariable g in globalVarToDomainName.Keys.Except(end))
{
Error(b.TransferCmd, string.Format("Global variable {0} must be available at a return", g.Name));
}
foreach (Variable v in node.InParams)
{
if (FindDomainName(v) == null || FindLinearKind(v) == LinearKind.LINEAR_IN || end.Contains(v)) continue;
Error(b.TransferCmd, string.Format("Input variable {0} must be available at a return", v.Name));
}
foreach (Variable v in node.OutParams)
{
if (FindDomainName(v) == null || end.Contains(v)) continue;
Error(b.TransferCmd, string.Format("Output variable {0} must be available at a return", v.Name));
}
continue;
}
GotoCmd gotoCmd = b.TransferCmd as GotoCmd;
foreach (Block target in gotoCmd.labelTargets)
{
if (!availableLinearVars.ContainsKey(target))
{
availableLinearVars[target] = new HashSet<Variable>(end);
dfsStack.Push(target);
dfsStackAsSet.Add(target);
}
else
{
var savedAvailableVars = new HashSet<Variable>(availableLinearVars[target]);
availableLinearVars[target].IntersectWith(end);
if (savedAvailableVars.IsProperSupersetOf(availableLinearVars[target]) && !dfsStackAsSet.Contains(target))
{
dfsStack.Push(target);
dfsStackAsSet.Add(target);
}
}
}
}
if (graph.Reducible)
{
foreach (Block header in graph.Headers)
{
foreach (GlobalVariable g in globalVarToDomainName.Keys.Except(availableLinearVars[header]))
{
Error(header, string.Format("Global variable {0} must be available at a loop head", g.Name));
}
}
}
return impl;
}
示例4: VisitImplementation
public override Implementation VisitImplementation(Implementation node)
{
HashSet<Variable> start = new HashSet<Variable>(globalVarToDomainName.Keys);
for (int i = 0; i < node.InParams.Count; i++)
{
string domainName = FindDomainName(node.Proc.InParams[i]);
if (domainName != null)
{
inoutParamToDomainName[node.InParams[i]] = domainName;
start.Add(node.InParams[i]);
}
}
for (int i = 0; i < node.OutParams.Count; i++)
{
string domainName = FindDomainName(node.Proc.OutParams[i]);
if (domainName != null)
{
inoutParamToDomainName[node.OutParams[i]] = domainName;
}
}
var oldErrorCount = this.errorCount;
var impl = base.VisitImplementation(node);
if (oldErrorCount < this.errorCount)
return impl;
Stack<Block> dfsStack = new Stack<Block>();
HashSet<Block> dfsStackAsSet = new HashSet<Block>();
availableLinearVars[node.Blocks[0]] = start;
dfsStack.Push(node.Blocks[0]);
dfsStackAsSet.Add(node.Blocks[0]);
while (dfsStack.Count > 0)
{
Block b = dfsStack.Pop();
dfsStackAsSet.Remove(b);
HashSet<Variable> end = PropagateAvailableLinearVarsAcrossBlock(b);
if (b.TransferCmd is ReturnCmd)
{
foreach (GlobalVariable g in globalVarToDomainName.Keys.Except(end))
{
Error(b.TransferCmd, string.Format("Global variable {0} must be available at a return", g.Name));
}
foreach (Variable v in node.OutParams)
{
if (FindDomainName(v) == null || end.Contains(v)) continue;
Error(b.TransferCmd, string.Format("Output variable {0} must be available at a return", v.Name));
}
continue;
}
GotoCmd gotoCmd = b.TransferCmd as GotoCmd;
foreach (Block target in gotoCmd.labelTargets)
{
if (!availableLinearVars.ContainsKey(target))
{
availableLinearVars[target] = new HashSet<Variable>(end);
dfsStack.Push(target);
dfsStackAsSet.Add(target);
}
else
{
var savedAvailableVars = new HashSet<Variable>(availableLinearVars[target]);
availableLinearVars[target].IntersectWith(end);
if (savedAvailableVars.IsProperSupersetOf(availableLinearVars[target]) && !dfsStackAsSet.Contains(target))
{
dfsStack.Push(target);
dfsStackAsSet.Add(target);
}
}
}
}
return impl;
}
示例5: IsProperSupersetOfTest
public void IsProperSupersetOfTest()
{
var set = new HashSet<int>();
var arr = Enumerable.Range(0, 10).ToArray();
set.UnionWith(arr);
set.Add(11);
Assert.IsTrue(set.IsProperSupersetOf(arr));
}
示例6: IsProperSupersetOfEmptyArr
public void IsProperSupersetOfEmptyArr()
{
var arr = new int[0];
var set=new HashSet<int>();
set.Add(0);
Assert.IsTrue(set.IsProperSupersetOf(arr));
}
示例7: GetOverloadGroupEquivalence
static OverloadGroupEquivalenceInfo GetOverloadGroupEquivalence(Dictionary<string, List<RuntimeArgument>> groupDefinitions)
{
OverloadGroupEquivalenceInfo overloadGroupsInfo = new OverloadGroupEquivalenceInfo();
if (!groupDefinitions.IsNullOrEmpty())
{
string[] groupNames = new string[groupDefinitions.Count];
groupDefinitions.Keys.CopyTo(groupNames, 0);
for (int i = 0; i < groupNames.Length; i++)
{
string group1 = groupNames[i];
HashSet<RuntimeArgument> group1Args = new HashSet<RuntimeArgument>(groupDefinitions[group1]);
for (int j = i + 1; j < groupNames.Length; j++)
{
string group2 = groupNames[j];
HashSet<RuntimeArgument> group2Args = new HashSet<RuntimeArgument>(groupDefinitions[group2]);
if (group1Args.IsProperSupersetOf(group2Args))
{
overloadGroupsInfo.SetAsSuperset(group1, group2);
}
else if (group1Args.IsProperSubsetOf(group2Args))
{
overloadGroupsInfo.SetAsSuperset(group2, group1);
}
else if (group1Args.SetEquals(group2Args))
{
overloadGroupsInfo.SetAsEquivalent(group1, group2);
}
else if (group1Args.Overlaps(group2Args))
{
overloadGroupsInfo.SetAsOverlapping(group1, group2);
}
else // the groups are disjoint.
{
overloadGroupsInfo.SetAsDisjoint(group1, group2);
}
}
}
}
return overloadGroupsInfo;
}
示例8: SubsetsAndSupersets
public void SubsetsAndSupersets()
{
var set0 = new HashSet<int>();
var set1 = new HashSet<int>(new[] { 0, 1, 2, 3 });
var set2 = new HashSet<int>(new[] { 0, 1, 2, 3 });
var set3 = new HashSet<int>(new[] { 0, 1, 2, 3, 4 });
var set4 = new HashSet<int>(new[] { 0, 1, 2, 3, 5 });
Assert.That(() => { set1.IsProperSubsetOf(null); }, Throws.TypeOf(typeof(ArgumentNullException)));
Assert.That(() => { set1.IsProperSupersetOf(null); }, Throws.TypeOf(typeof(ArgumentNullException)));
Assert.That(() => { set1.IsSubsetOf(null); }, Throws.TypeOf(typeof(ArgumentNullException)));
Assert.That(() => { set1.IsSupersetOf(null); }, Throws.TypeOf(typeof(ArgumentNullException)));
Assert.IsTrue(set1.IsSubsetOf(set1));
Assert.IsTrue(set1.IsSubsetOf(set2));
Assert.IsTrue(set1.IsSubsetOf(set3));
Assert.IsFalse(set3.IsSubsetOf(set4));
Assert.IsFalse(set1.IsProperSubsetOf(set1));
Assert.IsFalse(set1.IsProperSubsetOf(set2));
Assert.IsTrue(set1.IsProperSubsetOf(set3));
Assert.IsFalse(set3.IsProperSubsetOf(set4));
Assert.IsFalse(set3.IsSubsetOf(set2));
Assert.IsFalse(set3.IsProperSubsetOf(set2));
Assert.IsTrue(set3.IsSupersetOf(set3));
Assert.IsTrue(set3.IsSupersetOf(set2));
Assert.IsFalse(set3.IsSupersetOf(set4));
Assert.IsFalse(set3.IsProperSupersetOf(set3));
Assert.IsTrue(set3.IsProperSupersetOf(set2));
Assert.IsFalse(set3.IsProperSupersetOf(set4));
// Empty set.
Assert.IsTrue(set0.IsSubsetOf(set0));
Assert.IsTrue(set0.IsSubsetOf(set1));
Assert.IsFalse(set0.IsProperSubsetOf(set0));
Assert.IsTrue(set0.IsProperSubsetOf(set1));
Assert.IsTrue(set0.IsSupersetOf(set0));
Assert.IsFalse(set0.IsProperSupersetOf(set0));
Assert.IsFalse(set0.IsSupersetOf(set1));
Assert.IsTrue(set0.IsProperSubsetOf(set1));
Assert.IsFalse(set1.IsSubsetOf(set0));
Assert.IsFalse(set1.IsProperSubsetOf(set0));
Assert.IsTrue(set1.IsSupersetOf(set0));
Assert.IsTrue(set1.IsProperSupersetOf(set0));
}