逻辑序列函数
以下逻辑 C 序列函数采用一个布尔序列参数输入或两个布尔输入序列,即 left (左序列)和 right (右序列),并生成布尔 result 序列。
两个输入序列必须是相同的类型。如果两个输入序列的长度不同,则操作仅在较短序列的元素数量上执行。
函数有以下两种形式:
MCO_RET mco_seq_operator(
mco_seq_iterator_h result,
mco_seq_iterator_h input
);
或
MCO_RET mco_seq_operator(
mco_seq_iterator_h result,
mco_seq_iterator_h left,
mco_seq_iterator_h right
);
其中,operator 是以下类型之一。
not
mco_seq_not()
:结果序列中的元素是输入序列中对应元素的逻辑非。
and
mco_seq_and()
:结果序列中的元素是左侧和右侧对应元素的逻辑与。
or
mco_seq_or()
:结果序列中的元素是左侧和右侧对应元素的逻辑或。
xor
mco_seq_xor()
:结果序列中的元素是左侧和右侧对应元素的逻辑异或。
示例
以下是演示逻辑运算符函数的示例代码片段:
{
mco_trans_h trans;
mco_cursor_t quote_cursor;
Quote quote;
mco_seq_iterator_t high_iterator, low_iterator;
mco_seq_iterator_t eq_iterator, result_iterator;
MCO_RET rc;
...
for (rc = mco_cursor_first(trans, "e_cursor);
rc != MCO_S_CURSOR_END;
rc = mco_cursor_next(trans, "e_cursor))
{
Quote_from_cursor(trans, "e_cursor, "e);
Quote_high_iterator("e, &high_iterator);
Quote_low_iterator("e, &low_iterator);
...
rc = mco_seq_eq_float(&eq_iterator, &low_iterator, &high_iterator);
rc = mco_seq_not(&result_iterator, &eq_iterator);
...
}
...
}