When converting datetime_t to a long, I now need to directly access the 'when'

member, otherwise C++ chooses the bool conversion, which is always wrong.
This commit is contained in:
John Wiegley 2008-07-19 16:52:16 -04:00
parent 2aeee0bb64
commit 911b866230
2 changed files with 10 additions and 5 deletions

View file

@ -630,7 +630,7 @@ bool value_t::operator OP(const value_t& value) \
\ \
case DATETIME: \ case DATETIME: \
return (*((long *) data) OP \ return (*((long *) data) OP \
((long) *((datetime_t *) value.data))); \ ((long) ((datetime_t *) value.data)->when)); \
\ \
case AMOUNT: \ case AMOUNT: \
return (amount_t(*((long *) data)) OP \ return (amount_t(*((long *) data)) OP \
@ -657,7 +657,7 @@ bool value_t::operator OP(const value_t& value) \
\ \
case INTEGER: \ case INTEGER: \
return (*((datetime_t *) data) OP \ return (*((datetime_t *) data) OP \
datetime_t(*((long *) value.data))); \ datetime_t(std::time_t(*((long *) value.data)))); \
\ \
case DATETIME: \ case DATETIME: \
return (*((datetime_t *) data) OP \ return (*((datetime_t *) data) OP \
@ -786,7 +786,7 @@ value_t::operator long() const
case INTEGER: case INTEGER:
return *((long *) data); return *((long *) data);
case DATETIME: case DATETIME:
return *((datetime_t *) data); return ((datetime_t *) data)->when;
case AMOUNT: case AMOUNT:
return *((amount_t *) data); return *((amount_t *) data);
case BALANCE: case BALANCE:
@ -884,7 +884,7 @@ void value_t::cast(type_t cast_type)
case INTEGER: case INTEGER:
break; break;
case DATETIME: case DATETIME:
*((datetime_t *) data) = datetime_t(*((long *) data)); *((datetime_t *) data) = datetime_t(std::time_t(*((long *) data)));
break; break;
case AMOUNT: case AMOUNT:
new((amount_t *)data) amount_t(*((long *) data)); new((amount_t *)data) amount_t(*((long *) data));
@ -908,7 +908,7 @@ void value_t::cast(type_t cast_type)
*((bool *) data) = *((datetime_t *) data); *((bool *) data) = *((datetime_t *) data);
break; break;
case INTEGER: case INTEGER:
*((long *) data) = *((datetime_t *) data); *((long *) data) = ((datetime_t *) data)->when;
break; break;
case DATETIME: case DATETIME:
break; break;

View file

@ -28,6 +28,11 @@ bool compare_items<transaction_t>::operator()(const transaction_t * left,
rxdata.dflags |= TRANSACTION_SORT_CALC; rxdata.dflags |= TRANSACTION_SORT_CALC;
} }
DEBUG_PRINT("ledger.walk.compare_items_xact",
"lxdata.sort_value = " << lxdata.sort_value);
DEBUG_PRINT("ledger.walk.compare_items_xact",
"rxdata.sort_value = " << rxdata.sort_value);
return lxdata.sort_value < rxdata.sort_value; return lxdata.sort_value < rxdata.sort_value;
} }