Enforce const-ness of command line arguments; bug fix in mosesserver.cpp.

This commit is contained in:
Ulrich Germann 2015-11-10 23:05:51 +00:00
parent d727829387
commit 9826599cb0
10 changed files with 33 additions and 30 deletions

View File

@ -10,21 +10,20 @@
// The future is this:
/** main function of the command line version of the decoder **/
int main(int argc, char** argv)
int main(int argc, char const** argv)
{
// Map double-dash long options back to single-dash long options
// as used in legacy moses.
for (int i = 1; i < argc; ++i)
{
char* a = argv[i];
if (a[0] == '-' && a[1] == '-')
for (size_t k = 1; (a[k] = a[k+1]); ++k);
if (argv[i][0] == '-' && argv[i][1] == '-')
++argv[i];
}
char const* argv2[argc+1];
for (int i = 1; i < argc; ++i)
for (int i = 0; i < argc; ++i)
argv2[i] = argv[i];
argv2[argc] = "server";
return decoder_main(argc, argv);
argv2[argc] = "--server";
return decoder_main(argc+1, argv2);
}
#else

View File

@ -53,7 +53,7 @@ using namespace std;
namespace po = boost::program_options;
typedef multimap<float,string> Lines;
static void usage(const po::options_description& desc, char** argv)
static void usage(const po::options_description& desc, char const** argv)
{
cerr << "Usage: " + string(argv[0]) + " [options] input-file output-file" << endl;
cerr << desc << endl;
@ -94,7 +94,7 @@ static void outputTopN(const Phrase& sourcePhrase, const multimap<float,const Ta
out << endl;
}
}*/
int main(int argc, char** argv)
int main(int argc, char const** argv)
{
bool help;
string input_file;
@ -138,10 +138,11 @@ int main(int argc, char** argv)
mosesargs.push_back(config_file);
boost::scoped_ptr<Parameter> params(new Parameter());
char** mosesargv = new char*[mosesargs.size()];
char const** mosesargv = new char const*[mosesargs.size()];
for (size_t i = 0; i < mosesargs.size(); ++i) {
mosesargv[i] = new char[mosesargs[i].length() + 1];
strcpy(mosesargv[i], mosesargs[i].c_str());
mosesargv[i] = mosesargs[i].c_str();
// mosesargv[i] = new char[mosesargs[i].length() + 1];
// strcpy(mosesargv[i], mosesargs[i].c_str());
}
if (!params->LoadParam(mosesargs.size(), mosesargv)) {

View File

@ -76,8 +76,8 @@ public:
}
/** Parse the arguments, removing those that define the grid and returning a copy of the rest */
void parseArgs(int& argc, char**& argv) {
char** newargv = new char*[argc+1]; //Space to add mbr parameter
void parseArgs(int& argc, char const**& argv) {
char const** newargv = new char const*[argc+1]; //Space to add mbr parameter
int newargc = 0;
for (int i = 0; i < argc; ++i) {
bool consumed = false;
@ -113,8 +113,9 @@ public:
}
}
if (!consumed) {
newargv[newargc] = new char[strlen(argv[i]) + 1];
strcpy(newargv[newargc],argv[i]);
// newargv[newargc] = new char[strlen(argv[i]) + 1];
// strcpy(newargv[newargc],argv[i]);
newargv[newargc] = argv[i];
++newargc;
}
}
@ -137,7 +138,7 @@ private:
} // namespace
int main(int argc, char* argv[])
int main(int argc, char const* argv[])
{
cerr << "Lattice MBR Grid search" << endl;

View File

@ -26,7 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include "util/string_stream.hh"
/** main function of the command line version of the decoder **/
int main(int argc, char** argv)
int main(int argc, char const** argv)
{
return decoder_main(argc, argv);
}

View File

@ -74,7 +74,7 @@ void OutputFeatureWeightsForHypergraph(std::ostream &outputSearchGraphStream)
} //namespace
/** main function of the command line version of the decoder **/
int main(int argc, char** argv)
int main(int argc, char const** argv)
{
try {

View File

@ -289,7 +289,7 @@ batch_run()
}
/** Called by main function of the command line version of the decoder **/
int decoder_main(int argc, char** argv)
int decoder_main(int argc, char const** argv)
{
#ifdef NDEBUG
try

View File

@ -55,5 +55,5 @@ private:
const Moses::StaticData& m_staticData;
};
int decoder_main(int argc, char* argv[]);
int decoder_main(int argc, char const* argv[]);

View File

@ -444,17 +444,17 @@ Parameter::
LoadParam(const string &filePath)
{
const char *argv[] = {"executable", "-f", filePath.c_str() };
return LoadParam(3, (char**) argv);
return LoadParam(3, (char const**) argv);
}
/** load all parameters from the configuration file and the command line switches */
bool
Parameter::
LoadParam(int argc, char* xargv[])
LoadParam(int argc, char const* xargv[])
{
// legacy parameter handling: all parameters are expected
// to start with a single dash
char* argv[argc+1];
char const* argv[argc+1];
for (int i = 0; i < argc; ++i) {
argv[i] = xargv[i];
if (strlen(argv[i]) > 2 && argv[i][0] == '-' && argv[i][1] == '-')
@ -1330,7 +1330,7 @@ FilesExist(const string &paramName, int fieldNo,
// in moses-cmd
string
Parameter::
FindParam(const string &paramSwitch, int argc, char* argv[])
FindParam(const string &paramSwitch, int argc, char const* argv[])
{
for (int i = 0 ; i < argc ; i++) {
if (string(argv[i]) == paramSwitch) {
@ -1352,7 +1352,8 @@ FindParam(const string &paramSwitch, int argc, char* argv[])
* \param argv values of paramters on command line */
void
Parameter::
OverwriteParam(const string &paramSwitch, const string &paramName, int argc, char* argv[])
OverwriteParam(const string &paramSwitch, const string &paramName,
int argc, char const* argv[])
{
int startPos = -1;
for (int i = 0 ; i < argc ; i++) {

View File

@ -57,8 +57,9 @@ protected:
std::map<std::string, std::vector<float> > m_weights;
std::string FindParam(const std::string &paramSwitch, int argc, char* argv[]);
void OverwriteParam(const std::string &paramSwitch, const std::string &paramName, int argc, char* argv[]);
std::string FindParam(const std::string &paramSwitch, int argc, char const* argv[]);
void OverwriteParam(const std::string &paramSwitch, const std::string &paramName,
int argc, char const* argv[]);
bool ReadConfigFile(const std::string &filePath );
bool FilesExist(const std::string &paramName, int fieldNo, std::vector<std::string> const& fileExtension=std::vector<std::string>(1,""));
bool isOption(const char* token);
@ -113,7 +114,7 @@ protected:
public:
Parameter();
~Parameter();
bool LoadParam(int argc, char* argv[]);
bool LoadParam(int argc, char const* argv[]);
bool LoadParam(const std::string &filePath);
void Explain();

View File

@ -44,7 +44,7 @@ public:
}
};
int main(int argc, char* argv[])
int main(int argc, char const* argv[])
{
Parameter params;
if (!params.LoadParam(argc,argv) || !StaticData::LoadDataStatic(&params, argv[0]))