* Author: Alejandro Aguilar Sierra <asierra@servidor.unam.mx>
* Created: August 1996
*
- * Copyright: (c) 1996, 1997 Alejandro Aguilar Sierra
+ * Copyright: 1996, 1997 Alejandro Aguilar Sierra
*
* License: GNU GPL version 2 or later
*/
short isrel;
};
+
+static
binary_op_pair binary_op_table[] = {
{ LM_leq, LMB_RELATION }, { LM_geq, LMB_RELATION },
{ LM_equiv, LMB_RELATION }, { LM_models, LMB_RELATION },
struct compara {
- // used by sort
+ // used by sort and lower_bound
+ inline
int operator()(binary_op_pair const & a,
binary_op_pair const & b) const {
return a.id < b.id;
}
- // used by lower_bound
- int operator()(binary_op_pair const & a, short int id) const {
- return a.id < id;
- }
};
int MathedLookupBOP(short id)
{
- static int bopCount = sizeof(binary_op_table) / sizeof(binary_op_pair);
+ static int const bopCount =
+ sizeof(binary_op_table) / sizeof(binary_op_pair);
static bool issorted = false;
if (!issorted) {
sort(binary_op_table, binary_op_table + bopCount, compara());
issorted = true;
}
+
+ binary_op_pair search_elem = { id, 0 };
binary_op_pair * res = lower_bound(binary_op_table,
binary_op_table + bopCount,
- id, compara());
- if (res->id == id)
+ search_elem, compara());
+ if (res != binary_op_table + bopCount && res->id == id)
return res->isrel;
else
return LMB_NONE;