*** 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;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
value_t& value_t::operator+=(const value_t& value)
|
#define DEF_VALUE_ADDSUB_OP(OP) \
|
||||||
{
|
value_t& value_t::operator OP(const value_t& value) \
|
||||||
switch (type) {
|
{ \
|
||||||
case BOOLEAN:
|
switch (type) { \
|
||||||
case INTEGER:
|
case BOOLEAN: \
|
||||||
cast(INTEGER);
|
case INTEGER: \
|
||||||
switch (value.type) {
|
cast(INTEGER); \
|
||||||
case BOOLEAN:
|
switch (value.type) { \
|
||||||
*((long *) data) += (*((bool *) value.data) ? 1L : 0L);
|
case BOOLEAN: \
|
||||||
break;
|
*((long *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||||
case INTEGER:
|
break; \
|
||||||
*((long *) data) += *((long *) value.data);
|
case INTEGER: \
|
||||||
break;
|
*((long *) data) OP *((long *) value.data); \
|
||||||
case AMOUNT:
|
break; \
|
||||||
cast(AMOUNT);
|
case AMOUNT: \
|
||||||
*((amount_t *) data) += *((amount_t *) value.data);
|
cast(AMOUNT); \
|
||||||
break;
|
*((amount_t *) data) OP *((amount_t *) value.data); \
|
||||||
case BALANCE:
|
break; \
|
||||||
cast(BALANCE);
|
case BALANCE: \
|
||||||
*((balance_t *) data) += *((balance_t *) value.data);
|
cast(BALANCE); \
|
||||||
break;
|
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||||
case BALANCE_PAIR:
|
break; \
|
||||||
cast(BALANCE_PAIR);
|
case BALANCE_PAIR: \
|
||||||
*((balance_pair_t *) data) += *((balance_pair_t *) value.data);
|
cast(BALANCE_PAIR); \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||||
default:
|
break; \
|
||||||
assert(0);
|
default: \
|
||||||
break;
|
assert(0); \
|
||||||
}
|
break; \
|
||||||
break;
|
} \
|
||||||
|
break; \
|
||||||
case AMOUNT:
|
\
|
||||||
switch (value.type) {
|
case AMOUNT: \
|
||||||
case BOOLEAN:
|
switch (value.type) { \
|
||||||
if (*((bool *) value.data) &&
|
case BOOLEAN: \
|
||||||
((amount_t *) data)->commodity()) {
|
if (*((bool *) value.data) && \
|
||||||
cast(BALANCE);
|
((amount_t *) data)->commodity()) { \
|
||||||
return *this += value;
|
cast(BALANCE); \
|
||||||
}
|
return *this OP value; \
|
||||||
*((amount_t *) data) += (*((bool *) value.data) ? 1L : 0L);
|
} \
|
||||||
break;
|
*((amount_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||||
|
break; \
|
||||||
case INTEGER:
|
\
|
||||||
if (*((long *) value.data) &&
|
case INTEGER: \
|
||||||
((amount_t *) data)->commodity()) {
|
if (*((long *) value.data) && \
|
||||||
cast(BALANCE);
|
((amount_t *) data)->commodity()) { \
|
||||||
return *this += value;
|
cast(BALANCE); \
|
||||||
}
|
return *this OP value; \
|
||||||
*((amount_t *) data) += *((long *) value.data);
|
} \
|
||||||
break;
|
*((amount_t *) data) OP *((long *) value.data); \
|
||||||
|
break; \
|
||||||
case AMOUNT:
|
\
|
||||||
if (((amount_t *) data)->commodity() !=
|
case AMOUNT: \
|
||||||
((amount_t *) value.data)->commodity()) {
|
if (((amount_t *) data)->commodity() != \
|
||||||
cast(BALANCE);
|
((amount_t *) value.data)->commodity()) { \
|
||||||
return *this += value;
|
cast(BALANCE); \
|
||||||
}
|
return *this OP value; \
|
||||||
*((amount_t *) data) += *((amount_t *) value.data);
|
} \
|
||||||
break;
|
*((amount_t *) data) OP *((amount_t *) value.data); \
|
||||||
|
break; \
|
||||||
case BALANCE:
|
\
|
||||||
cast(BALANCE);
|
case BALANCE: \
|
||||||
*((balance_t *) data) += *((balance_t *) value.data);
|
cast(BALANCE); \
|
||||||
break;
|
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||||
|
break; \
|
||||||
case BALANCE_PAIR:
|
\
|
||||||
cast(BALANCE_PAIR);
|
case BALANCE_PAIR: \
|
||||||
*((balance_pair_t *) data) += *((balance_pair_t *) value.data);
|
cast(BALANCE_PAIR); \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||||
|
break; \
|
||||||
default:
|
\
|
||||||
assert(0);
|
default: \
|
||||||
break;
|
assert(0); \
|
||||||
}
|
break; \
|
||||||
break;
|
} \
|
||||||
|
break; \
|
||||||
case BALANCE:
|
\
|
||||||
switch (value.type) {
|
case BALANCE: \
|
||||||
case BOOLEAN:
|
switch (value.type) { \
|
||||||
*((balance_t *) data) += (*((bool *) value.data) ? 1L : 0L);
|
case BOOLEAN: \
|
||||||
break;
|
*((balance_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||||
case INTEGER:
|
break; \
|
||||||
*((balance_t *) data) += *((long *) value.data);
|
case INTEGER: \
|
||||||
break;
|
*((balance_t *) data) OP *((long *) value.data); \
|
||||||
case AMOUNT:
|
break; \
|
||||||
*((balance_t *) data) += *((amount_t *) value.data);
|
case AMOUNT: \
|
||||||
break;
|
*((balance_t *) data) OP *((amount_t *) value.data); \
|
||||||
case BALANCE:
|
break; \
|
||||||
*((balance_t *) data) += *((balance_t *) value.data);
|
case BALANCE: \
|
||||||
break;
|
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||||
case BALANCE_PAIR:
|
break; \
|
||||||
cast(BALANCE_PAIR);
|
case BALANCE_PAIR: \
|
||||||
*((balance_pair_t *) data) += *((balance_pair_t *) value.data);
|
cast(BALANCE_PAIR); \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||||
default:
|
break; \
|
||||||
assert(0);
|
default: \
|
||||||
break;
|
assert(0); \
|
||||||
}
|
break; \
|
||||||
break;
|
} \
|
||||||
|
break; \
|
||||||
case BALANCE_PAIR:
|
\
|
||||||
switch (value.type) {
|
case BALANCE_PAIR: \
|
||||||
case BOOLEAN:
|
switch (value.type) { \
|
||||||
*((balance_pair_t *) data) += (*((bool *) value.data) ? 1L : 0L);
|
case BOOLEAN: \
|
||||||
break;
|
*((balance_pair_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||||
case INTEGER:
|
break; \
|
||||||
*((balance_pair_t *) data) += *((long *) value.data);
|
case INTEGER: \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((long *) value.data); \
|
||||||
case AMOUNT:
|
break; \
|
||||||
*((balance_pair_t *) data) += *((amount_t *) value.data);
|
case AMOUNT: \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((amount_t *) value.data); \
|
||||||
case BALANCE:
|
break; \
|
||||||
*((balance_pair_t *) data) += *((balance_t *) value.data);
|
case BALANCE: \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((balance_t *) value.data); \
|
||||||
case BALANCE_PAIR:
|
break; \
|
||||||
*((balance_pair_t *) data) += *((balance_pair_t *) value.data);
|
case BALANCE_PAIR: \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||||
default:
|
break; \
|
||||||
assert(0);
|
default: \
|
||||||
break;
|
assert(0); \
|
||||||
}
|
break; \
|
||||||
break;
|
} \
|
||||||
|
break; \
|
||||||
default:
|
\
|
||||||
assert(0);
|
default: \
|
||||||
break;
|
assert(0); \
|
||||||
}
|
break; \
|
||||||
return *this;
|
} \
|
||||||
|
return *this; \
|
||||||
}
|
}
|
||||||
|
|
||||||
value_t& value_t::operator-=(const value_t& value)
|
DEF_VALUE_ADDSUB_OP(+=)
|
||||||
{
|
DEF_VALUE_ADDSUB_OP(-=)
|
||||||
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:
|
#define DEF_VALUE_MULDIV_OP(OP) \
|
||||||
switch (value.type) {
|
value_t& value_t::operator OP(const value_t& value) \
|
||||||
case BOOLEAN:
|
{ \
|
||||||
if (*((bool *) value.data) &&
|
switch (type) { \
|
||||||
((amount_t *) data)->commodity()) {
|
case BOOLEAN: \
|
||||||
cast(BALANCE);
|
case INTEGER: \
|
||||||
return *this -= value;
|
cast(INTEGER); \
|
||||||
}
|
switch (value.type) { \
|
||||||
*((amount_t *) data) -= (*((bool *) value.data) ? 1L : 0L);
|
case BOOLEAN: \
|
||||||
break;
|
*((long *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||||
|
break; \
|
||||||
case INTEGER:
|
case INTEGER: \
|
||||||
if (*((long *) value.data) &&
|
*((long *) data) OP *((long *) value.data); \
|
||||||
((amount_t *) data)->commodity()) {
|
break; \
|
||||||
cast(BALANCE);
|
case AMOUNT: \
|
||||||
return *this -= value;
|
cast(AMOUNT); \
|
||||||
}
|
*((amount_t *) data) OP *((amount_t *) value.data); \
|
||||||
*((amount_t *) data) -= *((long *) value.data);
|
break; \
|
||||||
break;
|
case BALANCE: \
|
||||||
|
cast(BALANCE); \
|
||||||
case AMOUNT:
|
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||||
if (((amount_t *) data)->commodity() !=
|
break; \
|
||||||
((amount_t *) value.data)->commodity()) {
|
case BALANCE_PAIR: \
|
||||||
cast(BALANCE);
|
cast(BALANCE_PAIR); \
|
||||||
return *this -= value;
|
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||||
}
|
break; \
|
||||||
*((amount_t *) data) -= *((amount_t *) value.data);
|
default: \
|
||||||
break;
|
assert(0); \
|
||||||
|
break; \
|
||||||
case BALANCE:
|
} \
|
||||||
cast(BALANCE);
|
break; \
|
||||||
*((balance_t *) data) -= *((balance_t *) value.data);
|
\
|
||||||
break;
|
case AMOUNT: \
|
||||||
|
switch (value.type) { \
|
||||||
case BALANCE_PAIR:
|
case BOOLEAN: \
|
||||||
cast(BALANCE_PAIR);
|
*((amount_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||||
*((balance_pair_t *) data) -= *((balance_pair_t *) value.data);
|
break; \
|
||||||
break;
|
case INTEGER: \
|
||||||
|
*((amount_t *) data) OP *((long *) value.data); \
|
||||||
default:
|
break; \
|
||||||
assert(0);
|
case AMOUNT: \
|
||||||
break;
|
*((amount_t *) data) OP *((amount_t *) value.data); \
|
||||||
}
|
break; \
|
||||||
break;
|
case BALANCE: \
|
||||||
|
cast(BALANCE); \
|
||||||
case BALANCE:
|
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||||
switch (value.type) {
|
break; \
|
||||||
case BOOLEAN:
|
case BALANCE_PAIR: \
|
||||||
*((balance_t *) data) -= (*((bool *) value.data) ? 1L : 0L);
|
cast(BALANCE_PAIR); \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||||
case INTEGER:
|
break; \
|
||||||
*((balance_t *) data) -= *((long *) value.data);
|
default: \
|
||||||
break;
|
assert(0); \
|
||||||
case AMOUNT:
|
break; \
|
||||||
*((balance_t *) data) -= *((amount_t *) value.data);
|
} \
|
||||||
break;
|
break; \
|
||||||
case BALANCE:
|
\
|
||||||
*((balance_t *) data) -= *((balance_t *) value.data);
|
case BALANCE: \
|
||||||
break;
|
switch (value.type) { \
|
||||||
case BALANCE_PAIR:
|
case BOOLEAN: \
|
||||||
cast(BALANCE_PAIR);
|
*((balance_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||||
*((balance_pair_t *) data) -= *((balance_pair_t *) value.data);
|
break; \
|
||||||
break;
|
case INTEGER: \
|
||||||
default:
|
*((balance_t *) data) OP *((long *) value.data); \
|
||||||
assert(0);
|
break; \
|
||||||
break;
|
case AMOUNT: \
|
||||||
}
|
*((balance_t *) data) OP *((amount_t *) value.data); \
|
||||||
break;
|
break; \
|
||||||
|
case BALANCE: \
|
||||||
case BALANCE_PAIR:
|
*((balance_t *) data) OP *((balance_t *) value.data); \
|
||||||
switch (value.type) {
|
break; \
|
||||||
case BOOLEAN:
|
case BALANCE_PAIR: \
|
||||||
*((balance_pair_t *) data) -= (*((bool *) value.data) ? 1L : 0L);
|
cast(BALANCE_PAIR); \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||||
case INTEGER:
|
break; \
|
||||||
*((balance_pair_t *) data) -= *((long *) value.data);
|
default: \
|
||||||
break;
|
assert(0); \
|
||||||
case AMOUNT:
|
break; \
|
||||||
*((balance_pair_t *) data) -= *((amount_t *) value.data);
|
} \
|
||||||
break;
|
break; \
|
||||||
case BALANCE:
|
\
|
||||||
*((balance_pair_t *) data) -= *((balance_t *) value.data);
|
case BALANCE_PAIR: \
|
||||||
break;
|
switch (value.type) { \
|
||||||
case BALANCE_PAIR:
|
case BOOLEAN: \
|
||||||
*((balance_pair_t *) data) -= *((balance_pair_t *) value.data);
|
*((balance_pair_t *) data) OP (*((bool *) value.data) ? 1L : 0L); \
|
||||||
break;
|
break; \
|
||||||
default:
|
case INTEGER: \
|
||||||
assert(0);
|
*((balance_pair_t *) data) OP *((long *) value.data); \
|
||||||
break;
|
break; \
|
||||||
}
|
case AMOUNT: \
|
||||||
break;
|
*((balance_pair_t *) data) OP *((amount_t *) value.data); \
|
||||||
|
break; \
|
||||||
default:
|
case BALANCE: \
|
||||||
assert(0);
|
*((balance_pair_t *) data) OP *((balance_t *) value.data); \
|
||||||
break;
|
break; \
|
||||||
}
|
case BALANCE_PAIR: \
|
||||||
|
*((balance_pair_t *) data) OP *((balance_pair_t *) value.data); \
|
||||||
return *this;
|
break; \
|
||||||
|
default: \
|
||||||
|
assert(0); \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
break; \
|
||||||
|
\
|
||||||
|
default: \
|
||||||
|
assert(0); \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
return *this; \
|
||||||
}
|
}
|
||||||
|
|
||||||
value_t& value_t::operator*=(const value_t& value)
|
DEF_VALUE_MULDIV_OP(*=)
|
||||||
{
|
DEF_VALUE_MULDIV_OP(/=)
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DEF_VALUE_CMP_OP(OP) \
|
#define DEF_VALUE_CMP_OP(OP) \
|
||||||
bool value_t::operator OP(const value_t& value) \
|
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 destroy();
|
||||||
void simplify();
|
|
||||||
|
|
||||||
value_t& operator=(const value_t& value);
|
value_t& operator=(const value_t& value);
|
||||||
value_t& operator=(const bool value) {
|
value_t& operator=(const bool value) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue