Added support for unlimited factoids.

This commit is contained in:
John Wiegley 2006-03-01 04:46:21 +00:00
parent 72a5f48d9d
commit 68813448cb
2 changed files with 6 additions and 13 deletions

View file

@ -650,8 +650,7 @@ unsigned int textual_parser_t::parse(std::istream& in,
#endif // TIMELOG_SUPPORT
case 'D': { // a default commodity for "entry"
amount_t amt;
amt.parse(skip_ws(line + 1));
amount_t amt(skip_ws(line + 1));
commodity_t::default_commodity = &amt.commodity();
break;
}
@ -669,8 +668,6 @@ unsigned int textual_parser_t::parse(std::istream& in,
break;
case 'P': { // a pricing entry
std::time_t date;
char * date_field = skip_ws(line + 1);
char * time_field = next_element(date_field);
if (! time_field) break;
@ -682,6 +679,7 @@ unsigned int textual_parser_t::parse(std::istream& in,
date_buffer[std::strlen(date_field)] = ' ';
std::strcpy(&date_buffer[std::strlen(date_field) + 1], time_field);
std::time_t date;
struct std::tm when;
if (strptime(date_buffer, "%Y/%m/%d %H:%M:%S", &when)) {
date = std::mktime(&when);
@ -690,10 +688,8 @@ unsigned int textual_parser_t::parse(std::istream& in,
}
std::string symbol;
amount_t price;
parse_symbol(symbol_and_price, symbol);
price.parse(symbol_and_price);
amount_t price(symbol_and_price);
commodity_t * commodity = commodity_t::find_commodity(symbol, true);
commodity->add_price(date, price);

View file

@ -1279,8 +1279,7 @@ void init_value_expr()
globals->define("P", node);
globals->define("val", node);
globals->define("value", node);
node = parse_boolean_expr("current_value(x)=P(x,m)", globals);
delete node;
value_auto_ptr cval(parse_boolean_expr("current_value(x)=P(x,m)", globals));
// Macros
node = parse_value_expr("P(a,d)");
@ -1299,10 +1298,8 @@ void init_value_expr()
globals->define("G", node);
globals->define("gain_total", node);
node = parse_boolean_expr("min(x,y)=x<y?x:y", globals);
delete node;
node = parse_boolean_expr("max(x,y)=x>y?x:y", globals);
delete node;
value_auto_ptr minx(parse_boolean_expr("min(x,y)=x<y?x:y", globals));
value_auto_ptr maxx(parse_boolean_expr("max(x,y)=x>y?x:y", globals));
}
value_expr_t * parse_value_expr(std::istream& in, scope_t * scope,