本文整理汇总了C++中Arguments::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ Arguments::begin方法的具体用法?C++ Arguments::begin怎么用?C++ Arguments::begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Arguments
的用法示例。
在下文中一共展示了Arguments::begin方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: launchCygwin
void launchCygwin(char** argValues) {
std::string ARGV0 = *argValues;
++ argValues;
size_t lastBackslash = ARGV0.rfind('\\');
std::string directoryPrefix;
if (lastBackslash != std::string::npos) {
directoryPrefix = ARGV0.substr(0, lastBackslash + 1);
}
std::string cygwinBin = findCygwinBin();
const char* oldPath = getenv("PATH");
if (oldPath == 0) {
throw std::runtime_error("getenv(\"PATH\") implausibly returned null");
}
// Windows doesn't support setenv but does support putenv.
// We need cygwin1.dll to be on the PATH.
std::string putenvArgument = std::string("PATH=") + oldPath + ";" + cygwinBin;
if (putenv(putenvArgument.c_str()) == -1) {
throw unix_exception(std::string("putenv(\"") + putenvArgument + "\") failed");
}
checkReadableFile("Cygwin DLL", cygwinBin + "\\cygwin1.dll");
// Windows requires that we quote the arguments ourselves.
typedef std::vector<std::string> Arguments;
Arguments arguments;
std::string program = directoryPrefix + "ruby-launcher.exe";
// We mustn't quote the program argument but we must quote argv[0].
arguments.push_back(quote(program));
// Make sure we invoke the Cygwin ruby, not any native version that might be ahead of it on the PATH.
std::string rubyInterpreter = cygwinBin + "\\ruby.exe";
checkReadableFile("Cygwin Ruby", rubyInterpreter);
arguments.push_back(quote(rubyInterpreter));
while (*argValues != 0) {
const char* argument = *argValues;
arguments.push_back(quote(argument));
++ argValues;
}
typedef std::vector<char*> ArgValues;
ArgValues childArgValues;
for (Arguments::iterator it = arguments.begin(), en = arguments.end(); it != en; ++ it) {
std::string& argument = *it;
childArgValues.push_back(&argument[0]);
}
childArgValues.push_back(0);
WindowsDllErrorModeChange windowsDllErrorModeChange;
execv(program.c_str(), &childArgValues[0]);
throw unix_exception(std::string("execv(\"") + program + "\", [" + join(", ", arguments) + "]) failed");
}
示例2:
inline std::pair<std::size_t, char **>
collection_to_argv(const Arguments &args) {
std::size_t nargs = args.size();
char **argv = new char *[nargs + 1];
typename Arguments::size_type i = 0;
for (typename Arguments::const_iterator it = args.begin(); it != args.end();
++it) {
argv[i] = new char[it->size() + 1];
std::strncpy(argv[i], it->c_str(), it->size() + 1);
++i;
}
argv[nargs] = 0;
return std::pair<std::size_t, char **>(nargs, argv);
} // collection_to_argv
示例3: operator
virtual bool operator()(const std::string& request_path, const std::string& full_request_path, const Arguments& arguments, http::server::reply& reply)
{
OSG_INFO << "RestHttpDevice :: handling request " << full_request_path << " as user-event" << std::endl;
osg::ref_ptr<osgGA::Event> event = new osgGA::Event();
event->setName(full_request_path);
event->setTime(getDevice()->getEventQueue()->getTime());
for(Arguments::const_iterator i = arguments.begin(); i != arguments.end(); ++i)
{
event->setUserValue(i->first,i->second);
}
getDevice()->getEventQueue()->addEvent(event.get());
return sendOkReply(reply);
}
示例4:
inline
std::pair< std::size_t, char** >
collection_to_posix_argv(const Arguments& args)
{
std::size_t nargs = args.size();
BOOST_ASSERT(nargs > 0);
char** argv = new char*[nargs + 1];
typename Arguments::size_type i = 0;
for (typename Arguments::const_iterator iter = args.begin();
iter != args.end(); iter++) {
argv[i] = ::strdup((*iter).c_str());
i++;
}
argv[nargs] = NULL;
return std::pair< std::size_t, char ** >(nargs, argv);
}
示例5: THROWS
KeywordArguments::KeywordArguments(const Arguments &args) {
bool started = false;
unsigned count = 0;
for (Arguments::const_iterator it = args.begin(); it != args.end(); it++) {
size_t equal = it->find('=');
if (equal == string::npos) {
if (started)
THROWS("Positional argument '" << *it << "' at " << count
<< " not allowed after keyword");
push_back(*it); // Add positional arg
} else {
started = true;
set(it->substr(0, equal), it->substr(equal + 1));
}
count++;
}
}
示例6: convertQueryArgumentsToRPCValueParams
void convertQueryArgumentsToRPCValueParams(const Arguments& args, Rpc::Value& params)
{
for (auto arg_it = args.begin(),
end = args.end();
arg_it != end;
++arg_it
)
{
const std::string& value = arg_it->second;
// Prevent rpc value's type errors in EmulationOfWebCtlPlugin() rpc method: use integer type if possible.
// Strange but original webctl client code sends integer params as strings.
try {
params[arg_it->first] = boost::lexical_cast<int>(value); // as int
} catch(boost::bad_lexical_cast&) {
try {
params[arg_it->first] = boost::lexical_cast<unsigned int>(value); // as uint
} catch(boost::bad_lexical_cast&) {
params[arg_it->first] = value; // as string
}
}
}
}
示例7: while
inline boost::shared_array<char> collection_to_win32_cmdline(const Arguments &args)
{
typedef std::vector<std::string> arguments_t;
arguments_t args2;
typename Arguments::size_type i = 0;
std::size_t size = 0;
for (typename Arguments::const_iterator it = args.begin(); it != args.end(); ++it)
{
std::string arg = *it;
std::string::size_type pos = 0;
while ( (pos = arg.find('"', pos)) != std::string::npos)
{
arg.replace(pos, 1, "\\\"");
pos += 2;
}
if (arg.find(' ') != std::string::npos)
arg = '\"' + arg + '\"';
if (i++ != args.size() - 1)
arg += ' ';
args2.push_back(arg);
size += arg.size() + 1;
}
boost::shared_array<char> cmdline(new char[size]);
cmdline.get()[0] = '\0';
for (arguments_t::size_type i = 0; i < args.size(); ++i)
#if defined(__CYGWIN__) || defined(_SCL_SECURE_NO_DEPRECATE)
::strncat(cmdline.get(), args2[i].c_str(), args2[i].size());
#else
::strcat_s(cmdline.get(), size, args2[i].c_str());
#endif
return cmdline;
}
示例8: run
int run(const Properties& options, const Arguments& arguments) {
int r = 0;
if ((r = checkOptions(options, arguments)) != 0) {
return r;
}
// parameters
LOG4CXX_INFO(logger, "Parameters:");
LOG4CXX_INFO(logger, boost::format("PE Mode: %d") % options.get< int >("pe-mode", 0));
if (options.find("min-length") != options.not_found()) {
LOG4CXX_INFO(logger, boost::format("Min length: %d") % options.get< int >("min-length"));
}
if (options.find("hard-clip") != options.not_found()) {
LOG4CXX_INFO(logger, boost::format("hard clip: %d") % options.get< int >("hard-clip"));
}
if (options.find("quality-trim") != options.not_found()) {
LOG4CXX_INFO(logger, boost::format("Quality Trim: %d") % options.get< int >("quality-trim"));
}
if (options.find("quality-filter") != options.not_found()) {
LOG4CXX_INFO(logger, boost::format("Quality Filter: %d") % options.get< int >("quality-filter"));
}
// input
std::vector< std::string > filelist;
std::copy(arguments.begin(), arguments.end(), std::back_inserter(filelist));
LOG4CXX_INFO(logger, boost::format("input: %s") % boost::algorithm::join(filelist, ":"));
// output
std::ostream* out = &std::cout;
if (options.find("out") != options.not_found()) {
std::string file = options.get< std::string >("out");
out = new std::ofstream(file.c_str());
LOG4CXX_INFO(logger, boost::format("output: %s") % file);
}
// process
if (*out) {
Statistics stats;
if ((r = processReads(options, filelist, *out, stats)) == 0) {
// report statistics
LOG4CXX_INFO(logger, "Preprocess stats:");
LOG4CXX_INFO(logger, boost::format("Reads parsed:\t%d") % stats.numReadsRead);
if (stats.numReadsRead > 0) {
LOG4CXX_INFO(logger, boost::format("Reads kept:\t%d(%f)") % stats.numReadsKept % ((double)stats.numReadsKept / stats.numReadsRead));
LOG4CXX_INFO(logger, boost::format("Reads failed primer screen:\t%d(%e)") % stats.numReadsPrimer % ((double)stats.numReadsPrimer / stats.numReadsRead));
}
LOG4CXX_INFO(logger, boost::format("Bases parsed:\t%d") % stats.numBasesRead);
if (stats.numBasesRead) {
LOG4CXX_INFO(logger, boost::format("Bases kept:\t%d(%f)") % stats.numBasesKept % ((double)stats.numBasesKept / stats.numBasesRead));
}
LOG4CXX_INFO(logger, boost::format("Number of incorrectly paired reads that were discarded: %d") % stats.numInvalidPE);
}
} else {
LOG4CXX_ERROR(logger, "Failed to open output stream");
}
if (out != &std::cout) {
SAFE_DELETE(out);
}
return r;
}