O
octangle
Create enumerated values using the three highest bits as bit flags that
define comparison operators.
VERSION A:
----------
enum eCriteria
{
eCriteriaOne = 1,
eCriteriaTwo = 2,
eCriteriaEtc = 9999,
eLess = 1 << ((sizeof(enum eCriteria) * 8) - 3),
eEqual = 1 << ((sizeof(enum eCriteria) * 8) - 2),
eGreater = 1 << ((sizeof(enum eCriteria) * 8) - 1),
}
VERSION B:
----------
enum eCriteria
{
eCriteriaOne = 1,
eCriteriaTwo = 2,
eCriteriaEtc = 9999,
eLess = ~(((unsigned int)(~0)) >> 1) >> 2,
eEqual = ~(((unsigned int)(~0)) >> 1) >> 1,
eGreater = ~(((unsigned int)(~0)) >> 1),
}
These bit flags are intended to be or'ed into other enumerated values
to indicate how these values are to participate in an underlying SQL
Select statement.
e.g.
{
/* <= Criteria 2 */
enum eCriteria lCriteria = eCriteriaTwo | eLess | eEqual;
}
define comparison operators.
VERSION A:
----------
enum eCriteria
{
eCriteriaOne = 1,
eCriteriaTwo = 2,
eCriteriaEtc = 9999,
eLess = 1 << ((sizeof(enum eCriteria) * 8) - 3),
eEqual = 1 << ((sizeof(enum eCriteria) * 8) - 2),
eGreater = 1 << ((sizeof(enum eCriteria) * 8) - 1),
}
VERSION B:
----------
enum eCriteria
{
eCriteriaOne = 1,
eCriteriaTwo = 2,
eCriteriaEtc = 9999,
eLess = ~(((unsigned int)(~0)) >> 1) >> 2,
eEqual = ~(((unsigned int)(~0)) >> 1) >> 1,
eGreater = ~(((unsigned int)(~0)) >> 1),
}
These bit flags are intended to be or'ed into other enumerated values
to indicate how these values are to participate in an underlying SQL
Select statement.
e.g.
{
/* <= Criteria 2 */
enum eCriteria lCriteria = eCriteriaTwo | eLess | eEqual;
}