annotate Applications/Wasm/BasicWasmApplication.cpp @ 222:84844649a8fd am

continued: reusable applications
author am@osimis.io
date Tue, 12 Jun 2018 17:21:15 +0200
parents d7b2590744f8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
222
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
1 #include "BasicWasmApplication.h"
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
2
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
3 namespace OrthancStone
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
4 {
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
5
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
6
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
7 void BasicWasmApplication::SetStartupParameter(const char* name, const char* value) {
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
8 startupParameters_.push_back(std::make_tuple(name, value));
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
9 }
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
10
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
11 void BasicWasmApplication::GetStartupParameters(boost::program_options::variables_map& parameters) {
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
12 boost::program_options::options_description options;
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
13 DeclareStartupOptions(options);
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
14
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
15 const char* argv[startupParameters_.size() + 1];
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
16 int argCounter = 0;
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
17 argv[0] = "Toto.exe";
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
18 argCounter++;
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
19
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
20 std::string cmdLine = "";
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
21 for (StartupParameters::const_iterator it = startupParameters_.begin(); it != startupParameters_.end(); it++) {
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
22 char* arg = new char[128];
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
23 snprintf(arg, 128, "--%s=%s", std::get<0>(*it).c_str(), std::get<1>(*it).c_str());
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
24 argv[argCounter] = arg;
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
25 cmdLine = cmdLine + " --" + std::get<0>(*it) + "=" + std::get<1>(*it);
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
26 argCounter++;
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
27 }
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
28
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
29 printf("simulated cmdLine = %s\n", cmdLine.c_str());
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
30
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
31 try
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
32 {
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
33 boost::program_options::store(boost::program_options::command_line_parser(argCounter, argv).
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
34 options(options).run(), parameters);
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
35 boost::program_options::notify(parameters);
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
36 }
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
37 catch (boost::program_options::error& e)
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
38 {
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
39 printf("Error while parsing the command-line arguments: %s\n", e.what());
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
40 }
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
41
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
42 }
84844649a8fd continued: reusable applications
am@osimis.io
parents: 221
diff changeset
43 }