本文整理汇总了C++中FixedBits::isFixedToZero方法的典型用法代码示例。如果您正苦于以下问题:C++ FixedBits::isFixedToZero方法的具体用法?C++ FixedBits::isFixedToZero怎么用?C++ FixedBits::isFixedToZero使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FixedBits
的用法示例。
在下文中一共展示了FixedBits::isFixedToZero方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: bvImpliesBothWays
Result bvImpliesBothWays(vector<FixedBits*>& children, FixedBits& result)
{
FixedBits& a = (*children[0]);
FixedBits& b = (*children[1]);
assert(a.getWidth() == result.getWidth());
const int bitWidth = a.getWidth();
assert(bitWidth == 1);
Result r = NO_CHANGE;
int i = 0;
// (false -> something) is always true.
// (something -> true ) is always true.
if (a.isFixedToZero(i) || b.isFixedToOne(i))
{
if (!result.isFixed(i))
{
result.setFixed(i, true);
result.setValue(i, true);
r = CHANGED;
}
else if (result.isFixedToZero(i))
return CONFLICT;
}
// If the result is false. it must be (true -> false)
if (result.isFixedToZero(i))
{
if (a.isFixedToZero(i) || b.isFixedToOne(i))
return CONFLICT;
if (!a.isFixed(i))
{
a.setFixed(i, true);
a.setValue(i, true);
r = CHANGED;
}
if (!b.isFixed(i))
{
b.setFixed(i, true);
b.setValue(i, false);
r = CHANGED;
}
}
if (result.isFixedToOne(i))
{
if (a.isFixedToOne(i))
{
if (!b.isFixed(i))
{
b.setFixed(i, true);
b.setValue(i, true);
r = CHANGED;
}
else if (b.isFixedToZero(i))
return CONFLICT;
}
if (b.isFixedToZero(i))
{
if (!a.isFixed(i))
{
a.setFixed(i, true);
a.setValue(i, false);
r = CHANGED;
}
}
}
if (a.isFixedToOne(i) && b.isFixedToZero(i))
{
if (result.isFixedToOne(i))
return CONFLICT;
if (!result.isFixed(i))
{
result.setFixed(i, true);
result.setValue(i, false);
r = CHANGED;
}
}
return r;
}