Eliminate some unneeded conversions to strings.
This commit is contained in:
parent
b58d88c84a
commit
6edf508c1b
3 changed files with 37 additions and 86 deletions
|
@ -87,13 +87,6 @@ void config_writer::write_child(const std::string &key, const config &cfg)
|
|||
close_child(key);
|
||||
}
|
||||
|
||||
void config_writer::write_key_val(const std::string &key, const std::string &value)
|
||||
{
|
||||
config::attribute_value v;
|
||||
v = value;
|
||||
::write_key_val(out_, key, v, level_, textdomain_);
|
||||
}
|
||||
|
||||
void config_writer::open_child(const std::string &key)
|
||||
{
|
||||
::write_open_child(out_, key, level_++);
|
||||
|
|
|
@ -19,12 +19,12 @@
|
|||
#ifndef SERIALIZATION_BINARY_OR_TEXT_HPP_INCLUDED
|
||||
#define SERIALIZATION_BINARY_OR_TEXT_HPP_INCLUDED
|
||||
|
||||
#include "config.hpp"
|
||||
#include "preprocessor.hpp"
|
||||
#include "serialization/parser.hpp"
|
||||
|
||||
#include <boost/iostreams/filtering_stream.hpp>
|
||||
|
||||
class config;
|
||||
|
||||
/** Class for writing a config out to a file in pieces. */
|
||||
class config_writer
|
||||
{
|
||||
|
@ -38,11 +38,20 @@ public:
|
|||
void write(const config &cfg);
|
||||
|
||||
void write_child(const std::string &key, const config &cfg);
|
||||
void write_key_val(const std::string &key, const std::string &value);
|
||||
void open_child(const std::string &key);
|
||||
void close_child(const std::string &key);
|
||||
bool good() const;
|
||||
|
||||
/// This template function will work with any type that can be assigned to
|
||||
/// an attribute_value.
|
||||
template <typename T>
|
||||
void write_key_val(const std::string &key, const T &value)
|
||||
{
|
||||
config::attribute_value v;
|
||||
v = value;
|
||||
::write_key_val(out_, key, v, level_, textdomain_);
|
||||
}
|
||||
|
||||
private:
|
||||
boost::iostreams::filtering_stream<boost::iostreams::output> filter_;
|
||||
std::ostream *out_ptr_;
|
||||
|
|
|
@ -103,9 +103,7 @@ static config write_str_int_map(const stats::str_int_map& m)
|
|||
{
|
||||
config res;
|
||||
for(stats::str_int_map::const_iterator i = m.begin(); i != m.end(); ++i) {
|
||||
char buf[50];
|
||||
snprintf(buf,sizeof(buf),"%d",i->second);
|
||||
res[i->first] = buf;
|
||||
res[i->first] = i->second;
|
||||
}
|
||||
|
||||
return res;
|
||||
|
@ -114,9 +112,7 @@ static config write_str_int_map(const stats::str_int_map& m)
|
|||
static void write_str_int_map(config_writer &out, const stats::str_int_map& m)
|
||||
{
|
||||
for(stats::str_int_map::const_iterator i = m.begin(); i != m.end(); ++i) {
|
||||
char buf[50];
|
||||
snprintf(buf,sizeof(buf),"%d",i->second);
|
||||
out.write_key_val(i->first, buf);
|
||||
out.write_key_val(i->first, i->second);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -136,10 +132,7 @@ static config write_battle_result_map(const stats::battle_result_map& m)
|
|||
for(stats::battle_result_map::const_iterator i = m.begin(); i != m.end(); ++i) {
|
||||
config& new_cfg = res.add_child("sequence");
|
||||
new_cfg = write_str_int_map(i->second);
|
||||
|
||||
char buf[50];
|
||||
snprintf(buf,sizeof(buf),"%d",i->first);
|
||||
new_cfg["_num"] = buf;
|
||||
new_cfg["_num"] = i->first;
|
||||
}
|
||||
|
||||
return res;
|
||||
|
@ -150,10 +143,7 @@ static void write_battle_result_map(config_writer &out, const stats::battle_resu
|
|||
for(stats::battle_result_map::const_iterator i = m.begin(); i != m.end(); ++i) {
|
||||
out.open_child("sequence");
|
||||
write_str_int_map(out, i->second);
|
||||
|
||||
char buf[50];
|
||||
snprintf(buf,sizeof(buf),"%d",i->first);
|
||||
out.write_key_val("_num", buf);
|
||||
out.write_key_val("_num", i->first);
|
||||
out.close_child("sequence");
|
||||
}
|
||||
}
|
||||
|
@ -254,7 +244,7 @@ stats::stats(const config& cfg) :
|
|||
expected_damage_taken(0),
|
||||
turn_expected_damage_inflicted(0),
|
||||
turn_expected_damage_taken(0),
|
||||
save_id(std::string())
|
||||
save_id()
|
||||
{
|
||||
read(cfg);
|
||||
}
|
||||
|
@ -270,38 +260,18 @@ config stats::write() const
|
|||
res.add_child("attacks",write_battle_result_map(attacks));
|
||||
res.add_child("defends",write_battle_result_map(defends));
|
||||
|
||||
std::ostringstream ss;
|
||||
ss << recruit_cost;
|
||||
res["recruit_cost"] = ss.str();
|
||||
ss.str(std::string());
|
||||
ss << recall_cost;
|
||||
res["recall_cost"] = ss.str();
|
||||
res["recruit_cost"] = recruit_cost;
|
||||
res["recall_cost"] = recall_cost;
|
||||
|
||||
ss.str(std::string());
|
||||
ss << damage_inflicted;
|
||||
res["damage_inflicted"] = ss.str();
|
||||
ss.str(std::string());
|
||||
ss << damage_taken;
|
||||
res["damage_taken"] = ss.str();
|
||||
ss.str(std::string());
|
||||
ss << expected_damage_inflicted;
|
||||
res["expected_damage_inflicted"] = ss.str();
|
||||
ss.str(std::string());
|
||||
ss << expected_damage_taken;
|
||||
res["expected_damage_taken"] = ss.str();
|
||||
ss.str(std::string());
|
||||
ss << turn_damage_inflicted;
|
||||
res["damage_inflicted"] = damage_inflicted;
|
||||
res["damage_taken"] = damage_taken;
|
||||
res["expected_damage_inflicted"] = expected_damage_inflicted;
|
||||
res["expected_damage_taken"] = expected_damage_taken;
|
||||
|
||||
res["turn_damage_inflicted"] = ss.str();
|
||||
ss.str(std::string());
|
||||
ss << turn_damage_taken;
|
||||
res["turn_damage_taken"] = ss.str();
|
||||
ss.str(std::string());
|
||||
ss << turn_expected_damage_inflicted;
|
||||
res["turn_expected_damage_inflicted"] = ss.str();
|
||||
ss.str(std::string());
|
||||
ss << turn_expected_damage_taken;
|
||||
res["turn_expected_damage_taken"] = ss.str();
|
||||
res["turn_damage_inflicted"] = turn_damage_inflicted;
|
||||
res["turn_damage_taken"] = turn_damage_taken;
|
||||
res["turn_expected_damage_inflicted"] = turn_expected_damage_inflicted;
|
||||
res["turn_expected_damage_taken"] = turn_expected_damage_taken;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
@ -330,41 +300,20 @@ void stats::write(config_writer &out) const
|
|||
write_battle_result_map(out, defends);
|
||||
out.close_child("defends");
|
||||
|
||||
std::ostringstream ss;
|
||||
ss << recruit_cost;
|
||||
out.write_key_val("recruit_cost", ss.str());
|
||||
ss.str(std::string());
|
||||
ss << recall_cost;
|
||||
out.write_key_val("recall_cost", ss.str());
|
||||
out.write_key_val("recruit_cost", recruit_cost);
|
||||
out.write_key_val("recall_cost", recall_cost);
|
||||
|
||||
ss.str(std::string());
|
||||
ss << damage_inflicted;
|
||||
out.write_key_val("damage_inflicted", ss.str());
|
||||
ss.str(std::string());
|
||||
ss << damage_taken;
|
||||
out.write_key_val("damage_taken", ss.str());
|
||||
ss.str(std::string());
|
||||
ss << expected_damage_inflicted;
|
||||
out.write_key_val("expected_damage_inflicted", ss.str());
|
||||
ss.str(std::string());
|
||||
ss << expected_damage_taken;
|
||||
out.write_key_val("expected_damage_taken", ss.str());
|
||||
ss.str(std::string());
|
||||
ss << turn_damage_inflicted;
|
||||
out.write_key_val("damage_inflicted", damage_inflicted);
|
||||
out.write_key_val("damage_taken", damage_taken);
|
||||
out.write_key_val("expected_damage_inflicted", expected_damage_inflicted);
|
||||
out.write_key_val("expected_damage_taken", expected_damage_taken);
|
||||
|
||||
out.write_key_val("turn_damage_inflicted", ss.str());
|
||||
ss.str(std::string());
|
||||
ss << turn_damage_taken;
|
||||
out.write_key_val("turn_damage_taken", ss.str());
|
||||
ss.str(std::string());
|
||||
ss << turn_expected_damage_inflicted;
|
||||
out.write_key_val("turn_expected_damage_inflicted", ss.str());
|
||||
ss.str(std::string());
|
||||
ss << turn_expected_damage_taken;
|
||||
out.write_key_val("turn_expected_damage_taken", ss.str());
|
||||
out.write_key_val("turn_damage_inflicted", turn_damage_inflicted);
|
||||
out.write_key_val("turn_damage_taken", turn_damage_taken);
|
||||
out.write_key_val("turn_expected_damage_inflicted", turn_expected_damage_inflicted);
|
||||
out.write_key_val("turn_expected_damage_taken", turn_expected_damage_taken);
|
||||
|
||||
out.write_key_val("save_id", save_id);
|
||||
|
||||
}
|
||||
|
||||
void stats::read(const config& cfg)
|
||||
|
|
Loading…
Add table
Reference in a new issue