本文整理汇总了C++中Operand::getAttributeIndex方法的典型用法代码示例。如果您正苦于以下问题:C++ Operand::getAttributeIndex方法的具体用法?C++ Operand::getAttributeIndex怎么用?C++ Operand::getAttributeIndex使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Operand
的用法示例。
在下文中一共展示了Operand::getAttributeIndex方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: count
int Olap::count(Query* query,WrapDataSource* dataExtractor)//remove 2nd para later
{
//DataExtraction dataExtractor;
//bitstring bitstring1,bitstring2;BitStreamInfo*
//bitstring result;
BitStreamInfo* bitstring1;
BitStreamInfo* bitstring2;
BitStreamInfo* result;
Expression* postfixExpression = query->getPostfixExpression();
stack<Symbol*> operandStack;
for (int i=0;i<postfixExpression->count();i++)
{
Symbol* inputSymbol = postfixExpression->getSymbolAt(i);
if(inputSymbol->getType()==TYPEOPERAND||inputSymbol->getType()==TYPENOT)
{
operandStack.push(inputSymbol);
}
else
{
if (!operandStack.empty())
{
Operand* operand2 = dynamic_cast<Operand*>(operandStack.top());
operandStack.pop();
bitstring2 = dataExtractor->getBitString(operand2->getAttributeIndex(),operand2->getbitStringIndex());
if (!operandStack.empty())
{
Symbol* possibleNot = operandStack.top();
if (possibleNot->getType()==TYPENOT)
{
operandStack.pop();
bitstring2=~(*bitstring2);
}
}
if (!operandStack.empty())
{
Operand* operand1 = dynamic_cast<Operand*>(operandStack.top());
operandStack.pop();
bitstring1 = dataExtractor->getBitString(operand1->getAttributeIndex(),operand1->getbitStringIndex());
if (!operandStack.empty())
{
Symbol* possibleNot = operandStack.top();
if (possibleNot->getType()==TYPENOT)
{
operandStack.pop();
bitstring1=~(*bitstring1);
}
}
}
}
if (inputSymbol->getType()==TYPEAND)
{
result=(*bitstring1)&(*bitstring2);
}
else if (inputSymbol->getType()==TYPEOR)
{
result=(*bitstring1)|(*bitstring2);
}
}
}
while(!operandStack.empty())
{
Operand* operand = dynamic_cast<Operand*>(operandStack.top());
operandStack.pop();
result = dataExtractor->getBitString(operand->getAttributeIndex(),operand->getbitStringIndex());
if (!operandStack.empty())
{
Symbol* possibleNot = operandStack.top();
if (possibleNot->getType()==TYPENOT)
{
operandStack.pop();
result=~(*result);
}
}
}
return result->count();
}