15 #include <boost/filesystem.hpp>
16 #include <boost/filesystem/fstream.hpp>
20 namespace particles_txt {
21 #include <particles.txt.h>
23 namespace decaymodes_txt {
24 #include <decaymodes.txt.h>
32 const char *particles_file,
const char *decaymodes_file) {
33 std::string particle_string, decay_string;
35 if (!boost::filesystem::exists(particles_file)) {
36 std::stringstream err;
37 err <<
"The particles file was expected at '" << particles_file
38 <<
"', but the file does not exist.";
39 throw std::runtime_error(err.str());
41 particle_string =
read_all(boost::filesystem::ifstream{particles_file});
43 std::stringstream err;
44 err <<
"The particles file has CR LF line endings. Please use LF"
46 throw std::runtime_error(err.str());
49 particle_string = particles_txt::data;
52 if (decaymodes_file) {
53 if (!boost::filesystem::exists(decaymodes_file)) {
54 std::stringstream err;
55 err <<
"The decay modes file was expected at '" << decaymodes_file
56 <<
"', but the file does not exist.";
57 throw std::runtime_error(err.str());
59 decay_string =
read_all(boost::filesystem::ifstream{decaymodes_file});
61 std::stringstream err;
62 err <<
"The decay mode file has CR LF line endings. Please use LF"
64 throw std::runtime_error(err.str());
67 decay_string = decaymodes_txt::data;
69 return std::make_pair(particle_string, decay_string);
static void load_decaymodes(const std::string &input)
Loads the DecayModes map as described in the input string.
static void check_consistency()
static void create_type_list(const std::string &particles)
Initialize the global ParticleType list (list_all) from the given input data.
std::pair< std::string, std::string > load_particles_and_decaymodes(const char *particles_file, const char *decaymodes_file)
Loads particles and decaymodes from provided files particles_file and decaymodes_file.
bool has_crlf_line_ending(const std::string in)
Check if a line in the string ends with \r\n.
std::string read_all(std::istream &&input)
Utility function to read a complete input stream (e.g.
void load_default_particles_and_decaymodes()
Loads default smash particle list and decaymodes.