00001
00002 #include "CubePruningOptions.h"
00003
00004 namespace Moses
00005 {
00006
00007 CubePruningOptions::
00008 CubePruningOptions()
00009 : pop_limit(DEFAULT_CUBE_PRUNING_POP_LIMIT)
00010 , diversity(DEFAULT_CUBE_PRUNING_DIVERSITY)
00011 , lazy_scoring(false)
00012 , deterministic_search(false)
00013 {}
00014
00015 bool
00016 CubePruningOptions::
00017 init(Parameter const& param)
00018 {
00019 param.SetParameter(pop_limit, "cube-pruning-pop-limit",
00020 DEFAULT_CUBE_PRUNING_POP_LIMIT);
00021 param.SetParameter(diversity, "cube-pruning-diversity",
00022 DEFAULT_CUBE_PRUNING_DIVERSITY);
00023 param.SetParameter(lazy_scoring, "cube-pruning-lazy-scoring", false);
00024 param.SetParameter(deterministic_search, "cube-pruning-deterministic-search", false);
00025 return true;
00026 }
00027
00028 #ifdef HAVE_XMLRPC_C
00029 bool
00030 CubePruningOptions::
00031 update(std::map<std::string,xmlrpc_c::value>const& params)
00032 {
00033 typedef std::map<std::string, xmlrpc_c::value> params_t;
00034
00035 params_t::const_iterator si = params.find("cube-pruning-pop-limit");
00036 if (si != params.end()) pop_limit = xmlrpc_c::value_int(si->second);
00037
00038 si = params.find("cube-pruning-diversity");
00039 if (si != params.end()) diversity = xmlrpc_c::value_int(si->second);
00040
00041 si = params.find("cube-pruning-lazy-scoring");
00042 if (si != params.end())
00043 {
00044 std::string spec = xmlrpc_c::value_string(si->second);
00045 if (spec == "true" or spec == "on" or spec == "1")
00046 lazy_scoring = true;
00047 else if (spec == "false" or spec == "off" or spec == "0")
00048 lazy_scoring = false;
00049 else
00050 {
00051 char const* msg
00052 = "Error parsing specification for cube-pruning-lazy-scoring";
00053 xmlrpc_c::fault(msg, xmlrpc_c::fault::CODE_PARSE);
00054 }
00055 }
00056
00057 si = params.find("cube-pruning-deterministic-search");
00058 if (si != params.end())
00059 {
00060 std::string spec = xmlrpc_c::value_string(si->second);
00061 if (spec == "true" or spec == "on" or spec == "1")
00062 deterministic_search = true;
00063 else if (spec == "false" or spec == "off" or spec == "0")
00064 deterministic_search = false;
00065 else
00066 {
00067 char const* msg
00068 = "Error parsing specification for cube-pruning-deterministic-search";
00069 xmlrpc_c::fault(msg, xmlrpc_c::fault::CODE_PARSE);
00070 }
00071 }
00072
00073 return true;
00074 }
00075 #else
00076 bool
00077 CubePruningOptions::
00078 update(std::map<std::string,xmlrpc_c::value>const& params)
00079 {}
00080 #endif
00081
00082
00083 }