diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-06-04 10:50:57 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-06-04 10:50:57 +0100 |
| commit | df5e7ee155351ecd6e7ef52b1764149b5fcb258a (patch) | |
| tree | 5726abe72ccb97b979449d221bee132d642e9157 /src | |
| parent | d8cc379d5dd638e26ee0b46bc610fd2e33be2311 (diff) | |
Add language description -> enum.
Diffstat (limited to 'src')
| -rw-r--r-- | src/stl_binary_tables.cc | 20 | ||||
| -rw-r--r-- | src/stl_binary_tables.h | 3 |
2 files changed, 22 insertions, 1 deletions
diff --git a/src/stl_binary_tables.cc b/src/stl_binary_tables.cc index 7fdad7b..df571c4 100644 --- a/src/stl_binary_tables.cc +++ b/src/stl_binary_tables.cc @@ -33,7 +33,6 @@ code (map<F, STLBinaryCode<E> >& m, F k, E v, string d) m[k] = STLBinaryCode<E> (v, d); } - template <class E, class F> E file_to_enum (F k, map<F, STLBinaryCode<E> > m, string name) @@ -72,6 +71,19 @@ enum_to_description (E v, map<F, STLBinaryCode<E> > const & m) return ""; } + +template <class E, class F> +boost::optional<E> +description_to_enum (string d, map<F, STLBinaryCode<E> > const & m) +{ + for (typename map<F, STLBinaryCode<E> >::const_iterator i = m.begin(); i != m.end(); ++i) { + if (i->second.description == d) { + return i->second.value; + } + } + + return boost::optional<E> (); +} DisplayStandard STLBinaryTables::display_standard_file_to_enum (string s) const @@ -181,6 +193,12 @@ STLBinaryTables::comment_enum_to_description (Comment v) const return enum_to_description (v, _comment_map); } +boost::optional<Language> +STLBinaryTables::language_description_to_enum (string d) const +{ + return description_to_enum (d, _language_map); +} + STLBinaryTables::STLBinaryTables () { code<DisplayStandard, string> (_display_standard_map, " ", DISPLAY_STANDARD_UNDEFINED, "Undefined"); diff --git a/src/stl_binary_tables.h b/src/stl_binary_tables.h index de9634b..1ce7d62 100644 --- a/src/stl_binary_tables.h +++ b/src/stl_binary_tables.h @@ -19,6 +19,7 @@ #include <string> #include <map> +#include <boost/optional.hpp> namespace sub { @@ -216,6 +217,8 @@ public: std::string justification_enum_to_description (Justification) const; std::string comment_enum_to_description (Comment) const; + boost::optional<Language> language_description_to_enum (std::string) const; + private: std::map<std::string, STLBinaryCode<DisplayStandard> > _display_standard_map; std::map<std::string, STLBinaryCode<LanguageGroup> > _language_group_map; |
