[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [5151] Reduce physical dependency by fixing 'build_type=so
From: |
Greg Chicares |
Subject: |
[lmi-commits] [5151] Reduce physical dependency by fixing 'build_type=so_test' erosion |
Date: |
Sun, 20 Mar 2011 21:06:34 +0000 |
Revision: 5151
http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5151
Author: chicares
Date: 2011-03-20 21:06:33 +0000 (Sun, 20 Mar 2011)
Log Message:
-----------
Reduce physical dependency by fixing 'build_type=so_test' erosion
Modified Paths:
--------------
lmi/trunk/main_cli.cpp
lmi/trunk/mc_enum_types_aux.cpp
lmi/trunk/mc_enum_types_aux.hpp
Modified: lmi/trunk/main_cli.cpp
===================================================================
--- lmi/trunk/main_cli.cpp 2011-03-20 19:14:21 UTC (rev 5150)
+++ lmi/trunk/main_cli.cpp 2011-03-20 21:06:33 UTC (rev 5151)
@@ -29,7 +29,7 @@
#include "alert.hpp"
#include "assert_lmi.hpp"
#include "contains.hpp"
-#include "dbdict.hpp" // print_databases()
+#include "dbdict.hpp" // print_databases()
#include "getopt.hpp"
#include "global_settings.hpp"
#include "illustrator.hpp"
@@ -38,10 +38,11 @@
#include "ledger_invariant.hpp"
#include "ledger_variant.hpp"
#include "license.hpp"
-#include "lmi.hpp" // is_antediluvian_fork()
+#include "lmi.hpp" // is_antediluvian_fork()
#include "main_common.hpp"
#include "mc_enum.hpp"
#include "mc_enum_types.hpp"
+#include "mc_enum_types_aux.hpp" // allowed_strings_emission(),
mc_emission_from_string()
#include "mec_server.hpp"
#include "miscellany.hpp"
#include "path_utility.hpp"
@@ -55,8 +56,8 @@
#include <algorithm>
#include <cmath>
-#include <cstddef> // NULL, std::size_t
-#include <cstdio> // std::printf()
+#include <cstddef> // NULL
+#include <cstdio> // std::printf()
#include <ios>
#include <iostream>
#include <iterator>
@@ -185,10 +186,7 @@
bool run_profile = false;
bool print_all_databases = false;
- e_emission emission(mce_emit_nothing);
- // Suppress enumerators for options not fully implemented.
- emission.allow(emission.ordinal("emit_pdf_to_printer"), false);
- emission.allow(emission.ordinal("emit_pdf_to_viewer" ), false);
+ mcenum_emission emission(mce_emit_nothing);
std::vector<std::string> illustrator_names;
std::vector<std::string> mec_server_names;
@@ -276,8 +274,6 @@
case 'e':
{
- int emission_suboptions = mce_emit_nothing;
-
LMI_ASSERT(NULL != getopt_long.optarg);
std::string const s(getopt_long.optarg);
std::istringstream iss(s);
@@ -289,12 +285,10 @@
{
try
{
- e_emission z(token);
- if(!emission.is_allowed(emission.ordinal(token)))
- {
- throw std::runtime_error(token);
- }
- emission_suboptions |= z.value();
+ emission = mcenum_emission
+ ( emission
+ | mc_emission_from_string(token)
+ );
}
catch(std::runtime_error const&)
{
@@ -307,7 +301,6 @@
}
}
}
- emission = mcenum_emission(emission_suboptions);
}
break;
@@ -413,12 +406,11 @@
{
getopt_long.usage();
std::cout << "Suboptions for '--emit':\n";
- for(std::size_t j = 0; j < emission.cardinality(); ++j)
+ std::vector<std::string> const& v = allowed_strings_emission();
+ typedef std::vector<std::string>::const_iterator vsi;
+ for(vsi i = v.begin(); i != v.end(); ++i)
{
- if(emission.is_allowed(j))
- {
- std::cout << " " << emission.str(j) << '\n';
- }
+ std::cout << " " << *i << '\n';
}
return;
}
@@ -444,13 +436,13 @@
std::for_each
(illustrator_names.begin()
,illustrator_names.end()
- ,illustrator(emission.value())
+ ,illustrator(emission)
);
std::for_each
(mec_server_names.begin()
,mec_server_names.end()
- ,mec_server(emission.value())
+ ,mec_server(emission)
);
}
Modified: lmi/trunk/mc_enum_types_aux.cpp
===================================================================
--- lmi/trunk/mc_enum_types_aux.cpp 2011-03-20 19:14:21 UTC (rev 5150)
+++ lmi/trunk/mc_enum_types_aux.cpp 2011-03-20 21:06:33 UTC (rev 5151)
@@ -33,8 +33,19 @@
#include "mc_enum.hpp"
#include "mc_enum_types.hpp"
+#include <cstddef> // std::size_t
+#include <stdexcept>
+
namespace
{
+/// Suppress enumerators for emission options not fully implemented.
+
+void constrain_values(e_emission& z)
+{
+ z.allow(z.ordinal("emit_pdf_to_printer"), false);
+ z.allow(z.ordinal("emit_pdf_to_viewer" ), false);
+}
+
/// Validate mc_n_gen_bases, mc_n_sep_bases, and mc_n_rate_periods.
///
/// Each of these very useful constants must equal the cardinality of
@@ -63,6 +74,21 @@
std::vector<std::string> const& LMI_SO all_strings_uw_basis () {return
mce_uw_basis::all_strings();}
std::vector<std::string> const& LMI_SO all_strings_state () {return
mce_state ::all_strings();}
+std::vector<std::string> allowed_strings_emission()
+{
+ e_emission emission;
+ constrain_values(emission);
+ std::vector<std::string> z;
+ for(std::size_t j = 0; j < emission.cardinality(); ++j)
+ {
+ if(emission.is_allowed(j))
+ {
+ z.push_back(emission.str(j));
+ }
+ }
+ return z;
+}
+
/// GPT recognizes death benefit options A and B only. A contract
/// might have a death benefit option other than that usual pair,
/// but for 7702 (and 7702A) purposes it's treated as either A or B.
@@ -111,6 +137,17 @@
template std::string mc_str(mcenum_smoking );
template std::string mc_str(mcenum_state );
+mcenum_emission mc_emission_from_string(std::string const& s)
+{
+ e_emission z(s);
+ constrain_values(z);
+ if(!z.is_allowed(z.ordinal(s)))
+ {
+ throw std::runtime_error(s);
+ }
+ return z.value();
+}
+
mcenum_state mc_state_from_string(std::string const& s)
{
return mce_state(s).value();
Modified: lmi/trunk/mc_enum_types_aux.hpp
===================================================================
--- lmi/trunk/mc_enum_types_aux.hpp 2011-03-20 19:14:21 UTC (rev 5150)
+++ lmi/trunk/mc_enum_types_aux.hpp 2011-03-20 21:06:33 UTC (rev 5151)
@@ -48,6 +48,8 @@
std::vector<std::string> const& LMI_SO all_strings_uw_basis ();
std::vector<std::string> const& LMI_SO all_strings_state ();
+std::vector<std::string> LMI_SO allowed_strings_emission();
+
mcenum_dbopt_7702 effective_dbopt_7702
(mcenum_dbopt actual_dbopt
,mcenum_dbopt_7702 rop_equivalent
@@ -67,6 +69,8 @@
template<typename T>
std::string mc_str(T);
+mcenum_emission LMI_SO mc_emission_from_string(std::string const&);
+
mcenum_state mc_state_from_string(std::string const&);
void set_cloven_bases_from_run_basis
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [lmi-commits] [5151] Reduce physical dependency by fixing 'build_type=so_test' erosion,
Greg Chicares <=