lmi-commits
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]