*** no comment ***
This commit is contained in:
parent
581b3d5b9a
commit
1d9ed97c24
2 changed files with 242 additions and 476 deletions
717
value.cc
717
value.cc
|
|
@ -57,486 +57,253 @@ value_t& value_t::operator=(const value_t& value)
|
|||
return *this;
|
||||
}
|
||||
|
||||
value_t& value_t::operator+=(const value_t& value)
|
||||
{
|
||||
switch (type) {
|
||||
case BOOLEAN:
|
||||
case INTEGER:
|
||||
cast(INTEGER);
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((long *) data) += (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((long *) data) += *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
cast(AMOUNT);
|
||||
*((amount_t *) data) += *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
cast(BALANCE);
|
||||
*((balance_t *) data) += *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) += *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case AMOUNT:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
if (*((bool *) value.data) &&
|
||||
((amount_t *) data)->commodity()) {
|
||||
cast(BALANCE);
|
||||
return *this += value;
|
||||
}
|
||||
*((amount_t *) data) += (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
|
||||
case INTEGER:
|
||||
if (*((long *) value.data) &&
|
||||
((amount_t *) data)->commodity()) {
|
||||
cast(BALANCE);
|
||||
return *this += value;
|
||||
}
|
||||
*((amount_t *) data) += *((long *) value.data);
|
||||
break;
|
||||
|
||||
case AMOUNT:
|
||||
if (((amount_t *) data)->commodity() !=
|
||||
((amount_t *) value.data)->commodity()) {
|
||||
cast(BALANCE);
|
||||
return *this += value;
|
||||
}
|
||||
*((amount_t *) data) += *((amount_t *) value.data);
|
||||
break;
|
||||
|
||||
case BALANCE:
|
||||
cast(BALANCE);
|
||||
*((balance_t *) data) += *((balance_t *) value.data);
|
||||
break;
|
||||
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) += *((balance_pair_t *) value.data);
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BALANCE:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((balance_t *) data) += (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((balance_t *) data) += *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((balance_t *) data) += *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
*((balance_t *) data) += *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) += *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BALANCE_PAIR:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((balance_pair_t *) data) += (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((balance_pair_t *) data) += *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((balance_pair_t *) data) += *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
*((balance_pair_t *) data) += *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
*((balance_pair_t *) data) += *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
return *this;
|
||||
#define DEF_VALUE_ADDSUB_OP(OP) \
|
||||
value_t& value_t::operator OP(const value_t& value) \
|
||||
{ \
|
||||
switch (type) { \
|
||||
case BOOLEAN: \
|
||||
case INTEGER: \
|
||||
cast(INTEGER); \
|
||||
switch (value.type) { \
|
||||
case BOOLEAN: \
|
||||
*((long *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||
break; \
|
||||
case INTEGER: \
|
||||
*((long *) data) OP *((long *) value.data); \
|
||||
break; \
|
||||
case AMOUNT: \
|
||||
cast(AMOUNT); \
|
||||
*((amount_t *) data) OP *((amount_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE: \
|
||||
cast(BALANCE); \
|
||||
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE_PAIR: \
|
||||
cast(BALANCE_PAIR); \
|
||||
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||
break; \
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
break; \
|
||||
\
|
||||
case AMOUNT: \
|
||||
switch (value.type) { \
|
||||
case BOOLEAN: \
|
||||
if (*((bool *) value.data) && \
|
||||
((amount_t *) data)->commodity()) { \
|
||||
cast(BALANCE); \
|
||||
return *this OP value; \
|
||||
} \
|
||||
*((amount_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||
break; \
|
||||
\
|
||||
case INTEGER: \
|
||||
if (*((long *) value.data) && \
|
||||
((amount_t *) data)->commodity()) { \
|
||||
cast(BALANCE); \
|
||||
return *this OP value; \
|
||||
} \
|
||||
*((amount_t *) data) OP *((long *) value.data); \
|
||||
break; \
|
||||
\
|
||||
case AMOUNT: \
|
||||
if (((amount_t *) data)->commodity() != \
|
||||
((amount_t *) value.data)->commodity()) { \
|
||||
cast(BALANCE); \
|
||||
return *this OP value; \
|
||||
} \
|
||||
*((amount_t *) data) OP *((amount_t *) value.data); \
|
||||
break; \
|
||||
\
|
||||
case BALANCE: \
|
||||
cast(BALANCE); \
|
||||
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||
break; \
|
||||
\
|
||||
case BALANCE_PAIR: \
|
||||
cast(BALANCE_PAIR); \
|
||||
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||
break; \
|
||||
\
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
break; \
|
||||
\
|
||||
case BALANCE: \
|
||||
switch (value.type) { \
|
||||
case BOOLEAN: \
|
||||
*((balance_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||
break; \
|
||||
case INTEGER: \
|
||||
*((balance_t *) data) OP *((long *) value.data); \
|
||||
break; \
|
||||
case AMOUNT: \
|
||||
*((balance_t *) data) OP *((amount_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE: \
|
||||
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE_PAIR: \
|
||||
cast(BALANCE_PAIR); \
|
||||
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||
break; \
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
break; \
|
||||
\
|
||||
case BALANCE_PAIR: \
|
||||
switch (value.type) { \
|
||||
case BOOLEAN: \
|
||||
*((balance_pair_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||
break; \
|
||||
case INTEGER: \
|
||||
*((balance_pair_t *) data) OP *((long *) value.data); \
|
||||
break; \
|
||||
case AMOUNT: \
|
||||
*((balance_pair_t *) data) OP *((amount_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE: \
|
||||
*((balance_pair_t *) data) OP *((balance_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE_PAIR: \
|
||||
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||
break; \
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
break; \
|
||||
\
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
return *this; \
|
||||
}
|
||||
|
||||
value_t& value_t::operator-=(const value_t& value)
|
||||
{
|
||||
switch (type) {
|
||||
case BOOLEAN:
|
||||
case INTEGER:
|
||||
cast(INTEGER);
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((long *) data) -= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((long *) data) -= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
cast(AMOUNT);
|
||||
*((amount_t *) data) -= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
cast(BALANCE);
|
||||
*((balance_t *) data) -= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) -= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
DEF_VALUE_ADDSUB_OP(+=)
|
||||
DEF_VALUE_ADDSUB_OP(-=)
|
||||
|
||||
case AMOUNT:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
if (*((bool *) value.data) &&
|
||||
((amount_t *) data)->commodity()) {
|
||||
cast(BALANCE);
|
||||
return *this -= value;
|
||||
}
|
||||
*((amount_t *) data) -= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
|
||||
case INTEGER:
|
||||
if (*((long *) value.data) &&
|
||||
((amount_t *) data)->commodity()) {
|
||||
cast(BALANCE);
|
||||
return *this -= value;
|
||||
}
|
||||
*((amount_t *) data) -= *((long *) value.data);
|
||||
break;
|
||||
|
||||
case AMOUNT:
|
||||
if (((amount_t *) data)->commodity() !=
|
||||
((amount_t *) value.data)->commodity()) {
|
||||
cast(BALANCE);
|
||||
return *this -= value;
|
||||
}
|
||||
*((amount_t *) data) -= *((amount_t *) value.data);
|
||||
break;
|
||||
|
||||
case BALANCE:
|
||||
cast(BALANCE);
|
||||
*((balance_t *) data) -= *((balance_t *) value.data);
|
||||
break;
|
||||
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) -= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BALANCE:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((balance_t *) data) -= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((balance_t *) data) -= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((balance_t *) data) -= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
*((balance_t *) data) -= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) -= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BALANCE_PAIR:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((balance_pair_t *) data) -= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((balance_pair_t *) data) -= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((balance_pair_t *) data) -= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
*((balance_pair_t *) data) -= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
*((balance_pair_t *) data) -= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
|
||||
return *this;
|
||||
#define DEF_VALUE_MULDIV_OP(OP) \
|
||||
value_t& value_t::operator OP(const value_t& value) \
|
||||
{ \
|
||||
switch (type) { \
|
||||
case BOOLEAN: \
|
||||
case INTEGER: \
|
||||
cast(INTEGER); \
|
||||
switch (value.type) { \
|
||||
case BOOLEAN: \
|
||||
*((long *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||
break; \
|
||||
case INTEGER: \
|
||||
*((long *) data) OP *((long *) value.data); \
|
||||
break; \
|
||||
case AMOUNT: \
|
||||
cast(AMOUNT); \
|
||||
*((amount_t *) data) OP *((amount_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE: \
|
||||
cast(BALANCE); \
|
||||
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE_PAIR: \
|
||||
cast(BALANCE_PAIR); \
|
||||
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||
break; \
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
break; \
|
||||
\
|
||||
case AMOUNT: \
|
||||
switch (value.type) { \
|
||||
case BOOLEAN: \
|
||||
*((amount_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||
break; \
|
||||
case INTEGER: \
|
||||
*((amount_t *) data) OP *((long *) value.data); \
|
||||
break; \
|
||||
case AMOUNT: \
|
||||
*((amount_t *) data) OP *((amount_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE: \
|
||||
cast(BALANCE); \
|
||||
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE_PAIR: \
|
||||
cast(BALANCE_PAIR); \
|
||||
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||
break; \
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
break; \
|
||||
\
|
||||
case BALANCE: \
|
||||
switch (value.type) { \
|
||||
case BOOLEAN: \
|
||||
*((balance_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||
break; \
|
||||
case INTEGER: \
|
||||
*((balance_t *) data) OP *((long *) value.data); \
|
||||
break; \
|
||||
case AMOUNT: \
|
||||
*((balance_t *) data) OP *((amount_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE: \
|
||||
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE_PAIR: \
|
||||
cast(BALANCE_PAIR); \
|
||||
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||
break; \
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
break; \
|
||||
\
|
||||
case BALANCE_PAIR: \
|
||||
switch (value.type) { \
|
||||
case BOOLEAN: \
|
||||
*((balance_pair_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||
break; \
|
||||
case INTEGER: \
|
||||
*((balance_pair_t *) data) OP *((long *) value.data); \
|
||||
break; \
|
||||
case AMOUNT: \
|
||||
*((balance_pair_t *) data) OP *((amount_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE: \
|
||||
*((balance_pair_t *) data) OP *((balance_t *) value.data); \
|
||||
break; \
|
||||
case BALANCE_PAIR: \
|
||||
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||
break; \
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
break; \
|
||||
\
|
||||
default: \
|
||||
assert(0); \
|
||||
break; \
|
||||
} \
|
||||
return *this; \
|
||||
}
|
||||
|
||||
value_t& value_t::operator*=(const value_t& value)
|
||||
{
|
||||
switch (type) {
|
||||
case BOOLEAN:
|
||||
case INTEGER:
|
||||
cast(INTEGER);
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((long *) data) *= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((long *) data) *= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
cast(AMOUNT);
|
||||
*((amount_t *) data) *= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
cast(BALANCE);
|
||||
*((balance_t *) data) *= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) *= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case AMOUNT:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((amount_t *) data) *= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((amount_t *) data) *= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((amount_t *) data) *= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
cast(BALANCE);
|
||||
*((balance_t *) data) *= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) *= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BALANCE:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((balance_t *) data) *= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((balance_t *) data) *= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((balance_t *) data) *= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
*((balance_t *) data) *= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) *= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BALANCE_PAIR:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((balance_pair_t *) data) *= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((balance_pair_t *) data) *= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((balance_pair_t *) data) *= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
*((balance_pair_t *) data) *= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
*((balance_pair_t *) data) *= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
value_t& value_t::operator/=(const value_t& value)
|
||||
{
|
||||
switch (type) {
|
||||
case BOOLEAN:
|
||||
case INTEGER:
|
||||
cast(INTEGER);
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((long *) data) /= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((long *) data) /= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
cast(AMOUNT);
|
||||
*((amount_t *) data) /= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
cast(BALANCE);
|
||||
*((balance_t *) data) /= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) /= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case AMOUNT:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((amount_t *) data) /= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((amount_t *) data) /= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((amount_t *) data) /= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
cast(BALANCE);
|
||||
*((balance_t *) data) /= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) /= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BALANCE:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((balance_t *) data) /= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((balance_t *) data) /= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((balance_t *) data) /= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
*((balance_t *) data) /= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
cast(BALANCE_PAIR);
|
||||
*((balance_pair_t *) data) /= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BALANCE_PAIR:
|
||||
switch (value.type) {
|
||||
case BOOLEAN:
|
||||
*((balance_pair_t *) data) /= (*((bool *) value.data) ? 1L : 0L);
|
||||
break;
|
||||
case INTEGER:
|
||||
*((balance_pair_t *) data) /= *((long *) value.data);
|
||||
break;
|
||||
case AMOUNT:
|
||||
*((balance_pair_t *) data) /= *((amount_t *) value.data);
|
||||
break;
|
||||
case BALANCE:
|
||||
*((balance_pair_t *) data) /= *((balance_t *) value.data);
|
||||
break;
|
||||
case BALANCE_PAIR:
|
||||
*((balance_pair_t *) data) /= *((balance_pair_t *) value.data);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
DEF_VALUE_MULDIV_OP(*=)
|
||||
DEF_VALUE_MULDIV_OP(/=)
|
||||
|
||||
#define DEF_VALUE_CMP_OP(OP) \
|
||||
bool value_t::operator OP(const value_t& value) \
|
||||
|
|
|
|||
1
value.h
1
value.h
|
|
@ -89,7 +89,6 @@ class value_t
|
|||
}
|
||||
|
||||
void destroy();
|
||||
void simplify();
|
||||
|
||||
value_t& operator=(const value_t& value);
|
||||
value_t& operator=(const bool value) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue