本文整理汇总了C++中ArgParse::leftovers方法的典型用法代码示例。如果您正苦于以下问题:C++ ArgParse::leftovers方法的具体用法?C++ ArgParse::leftovers怎么用?C++ ArgParse::leftovers使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ArgParse
的用法示例。
在下文中一共展示了ArgParse::leftovers方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main( int argc, const char** argv )
{
ArgParse ap;
RtFilterFunc filterfunc;
float bake;
ap.usageHeader( ArgParse::apstring( "Usage: " ) + argv[ 0 ] + " [options] infile outfile" );
ap.argFlag( "help", "\aPrint this help and exit", &g_help );
ap.alias( "help" , "h" );
ap.argFlag( "version", "\aPrint version information and exit", &g_version );
ap.argInt( "verbose", "=integer\aSet log output level\n"
"\a0 = errors\n"
"\a1 = warnings (default)\n"
"\a2 = information\n"
"\a3 = debug", &g_cl_verbose );
ap.alias( "verbose" , "v" );
ap.argString( "compression", "=string\a[none|lzw|packbits|deflate] (default: %default)", &g_compress );
ap.argFlag( "envcube", " px nx py ny pz nz\aproduce a cubeface environment map from 6 images.", &g_envcube );
ap.argFlag( "envlatl", "\aproduce a latlong environment map from an image file.", &g_envlatl );
ap.argFlag( "shadow", "\aproduce a shadow map from a z file.", &g_shadow );
ap.argString( "swrap", "=string\as wrap [black|periodic|clamp] (default: %default)", &g_swrap );
ap.argString( "smode", "=string\a(equivalent to swrap for BMRT compatibility)", &g_swrap );
ap.argString( "twrap", "=string\at wrap [black|periodic|clamp] (default: %default)", &g_twrap );
ap.argString( "tmode", "=string\a(equivalent to twrap for BMRT compatibility)", &g_swrap );
ap.argString( "wrap", "=string\awrap s&t [black|periodic|clamp]", &g_wrap );
ap.argString( "mode", "=string\as (equivalent to wrap for BMRT compatibility)", &g_wrap );
ap.argString( "filter", "=string\a[box|bessel|catmull-rom|disk|gaussian|sinc|triangle|mitchell] (default: %default)", &g_filter );
ap.argFloat( "fov(envcube)", "=float\a[>=0.0f] (default: %default)", &g_fov );
ap.argFloat( "swidth", "=float\as width [>0.0f] (default: %default)", &g_swidth );
ap.alias( "swidth", "sfilterwidth" );
ap.argFloat( "twidth", "=float\at width [>0.0f] (default: %default)", &g_twidth );
ap.alias( "twidth", "tfilterwidth" );
ap.argFloat( "width", "=float\awidth [>0.0f] set both swidth and twidth (default: %default)", &g_width );
ap.alias( "width", "filterwidth" );
ap.argFloat( "quality", "=float\a[>=1.0f && <= 100.0f] (default: %default)", &g_quality );
ap.argFloat( "bake", "=float\a[>=2.0f && <= 2048.0f] (default: %default)", &g_bake );
ap.argString( "resize", "=string\a[up|down|round|up-|down-|round-] (default: %default)\n\aNot used, for BMRT compatibility only!", &g_resize );
if ( argc > 1 && !ap.parse( argc - 1, argv + 1 ) )
{
Aqsis::log() << ap.errmsg() << std::endl << ap.usagemsg();
exit( 1 );
}
if ( g_version )
{
version( std::cout );
exit( 0 );
}
if ( g_help || ap.leftovers().size() <= 1 )
{
std::cout << ap.usagemsg();
exit( 0 );
}
if ( g_envcube && g_shadow )
{
std::cout << "Specify only one of envcube or shadow" << std::endl;
exit( 1 );
}
/* find the pixel's filter function */
filterfunc = RiBoxFilter;
if ( g_filter == "box" )
filterfunc = RiBoxFilter;
else if ( g_filter == "mitchell" )
filterfunc = RiMitchellFilter;
else if ( g_filter == "sinc" )
filterfunc = RiSincFilter;
else if ( g_filter == "catmull-rom" )
filterfunc = RiCatmullRomFilter;
else if ( g_filter == "disk" )
filterfunc = RiDiskFilter;
else if ( g_filter == "bessel" )
filterfunc = RiBesselFilter;
else if ( g_filter == "triangle" )
filterfunc = RiTriangleFilter;
else if ( g_filter == "gaussian" )
filterfunc = RiGaussianFilter;
/* protect the s,t width */
if ( g_swidth < 1.0 )
{
Aqsis::log() << "g_swidth is smaller than 1.0." << " 1.0 will be used instead." << std::endl;
g_swidth = 1.0;
}
if ( g_twidth < 1.0 )
{
Aqsis::log() << "g_twidth is smaller than 1.0." << " 1.0 will be used instead." << std::endl;
g_twidth = 1.0;
}
/* protect the s,t wrap mode */
if ( !( ( g_swrap == "black" ) || ( g_swrap == "periodic" ) || ( g_swrap == "clamp" ) ) )
{
//.........这里部分代码省略.........
示例2: main
//.........这里部分代码省略.........
<< "\n"
<< "compiled " << __DATE__ << " " << __TIME__ << "\n";
return( 0 );
}
# ifdef AQSIS_SYSTEM_WIN32
std::auto_ptr<std::streambuf> ansi( new Aqsis::ansi_buf(Aqsis::log()) );
# endif
std::auto_ptr<std::streambuf> reset_level( new Aqsis::reset_level_buf(Aqsis::log()) );
std::auto_ptr<std::streambuf> show_timestamps( new Aqsis::timestamp_buf(Aqsis::log()) );
std::auto_ptr<std::streambuf> fold_duplicates( new Aqsis::fold_duplicates_buf(Aqsis::log()) );
std::auto_ptr<std::streambuf> color_level;
if(!g_cl_no_color)
{
std::auto_ptr<std::streambuf> temp_color_level( new Aqsis::color_level_buf(Aqsis::log()) );
color_level = temp_color_level;
}
std::auto_ptr<std::streambuf> show_level( new Aqsis::show_level_buf(Aqsis::log()) );
Aqsis::log_level_t level = Aqsis::ERROR;
if( g_cl_verbose > 0 )
level = Aqsis::WARNING;
if( g_cl_verbose > 1 )
level = Aqsis::INFO;
if( g_cl_verbose > 2 )
level = Aqsis::DEBUG;
std::auto_ptr<std::streambuf> filter_level( new Aqsis::filter_by_level_buf(level, Aqsis::log()) );
# ifdef AQSIS_SYSTEM_POSIX
if( g_cl_syslog )
std::auto_ptr<std::streambuf> use_syslog( new Aqsis::syslog_buf(Aqsis::log()) );
# endif // AQSIS_SYSTEM_POSIX
if (g_cl_priority != 1)
{
// Set the priority on the main thread
setPriority(g_cl_priority);
}
RiBegin(RI_NULL);
setupOptions();
try
{
if ( ap.leftovers().size() == 0 )
{
// If no files specified, take input from stdin.
//
// TODO: We'd like to turn off stdio synchronisation to allow fast
// buffering... unfortunately this causes very odd problems with
// the aqsis logging facility as of svn r2804
//
//std::ios_base::sync_with_stdio(false);
Aqsis::QGetRenderContextI()->parseRibStream(std::cin, "stdin");
}
else
{
for(ArgParse::apstringvec::const_iterator fileName = ap.leftovers().begin();
fileName != ap.leftovers().end(); fileName++)
{
std::ifstream inFile(fileName->c_str());
if(inFile)
{
Aqsis::QGetRenderContextI()->parseRibStream(inFile, *fileName);
returnCode = RiLastError;
}
else
{
Aqsis::log() << Aqsis::error
<< "Cannot open file \"" << *fileName << "\"\n";
returnCode = RIE_NOFILE;
}
}
}
}
catch(const std::exception& e)
{
Aqsis::log() << Aqsis::error << e.what() << std::endl;
returnCode = RIE_BUG;
}
catch(...)
{
Aqsis::log() << Aqsis::error
<< "unknown exception has been encountered\n";
returnCode = RIE_BUG;
}
RiEnd();
}
StopMemoryDebugging();
if(g_cl_beep)
std::cout << "\a" << std::ends;
if(g_cl_pause)
{
std::cout << "Press any key..." << std::ends;
std::cin.ignore(std::cin.rdbuf()->in_avail() + 1);
}
return returnCode;
}
示例3: main
int main( int argc, const char** argv )
{
#ifdef AQSIS_SYSTEM_WIN32
char acPath[256];
char rootPath[256];
if( GetModuleFileName( NULL, acPath, 256 ) != 0)
{
// guaranteed file name of at least one character after path
*( strrchr( acPath, '\\' ) + 1 ) = '\0';
std::string stracPath(acPath);
stracPath.append("..\\");
_fullpath(rootPath,&stracPath[0],256);
}
g_shader_path = rootPath;
g_shader_path.append( "shaders" );
#elif defined(AQSIS_SYSTEM_MACOSX)
#else
g_shader_path = AQSIS_XSTR(DEFAULT_SHADER_PATH);
#endif
/*Aqsis::QGetRenderContextI();*/
ArgParse ap;
ap.usageHeader( ArgParse::apstring( "Usage: " ) + argv[ 0 ] + " <shadername>" );
ap.argFlag( "help", "\aPrint this help and exit", &g_cl_help );
ap.alias( "help" , "h" );
ap.argFlag( "version", "\aPrint version information and exit", &g_cl_version );
ap.argString( "shaders", "=string\aOverride the default shader searchpath(s) [" + g_shader_path + "]", &g_cl_shader_path );
if ( argc > 1 && !ap.parse( argc - 1, argv + 1 ) )
{
Aqsis::log() << ap.errmsg() << std::endl << ap.usagemsg();
exit( 1 );
}
if ( g_cl_help )
{
std::cout << ap.usagemsg();
exit( 0 );
}
if ( g_cl_version )
{
std::cout << "aqsltell version " << AQSIS_VERSION_STR_FULL << std::endl << "compiled " << __DATE__ << " " << __TIME__ << std::endl;
exit( 0 );
}
// Apply environment-variable overrides to default paths ...
if(getenv("AQSIS_SHADER_PATH"))
g_shader_path = getenv("AQSIS_SHADER_PATH");
// Apply command-line overrides to default paths ...
if(!g_cl_shader_path.empty())
g_shader_path = g_cl_shader_path;
// Any leftovers are presumed to be shader names.
if ( ap.leftovers().size() == 0 ) // If no files specified, take input from stdin.
{
Aqsis::log() << ap.errmsg() << std::endl << ap.usagemsg();
exit( 1 );
}
else
{
for ( ArgParse::apstringvec::const_iterator e = ap.leftovers().begin(); e != ap.leftovers().end(); e++ )
{
SLX_SetPath( const_cast<char*>( g_shader_path.c_str() ) );
SLX_SetDSOPath( const_cast<char*>( g_shader_path.c_str() ) );
Slo_SetShader( ( char* ) e->c_str() );
if ( SLX_SetShader( ( char* ) e->c_str() ) == 0 )
{
// SLX_SetShader successful
int nArgs;
int i;
SLX_VISSYMDEF * symPtr;
std::cout << SLX_TypetoStr( SLX_GetType() ) << " \"" << Slo_GetName() << "\"" << std::endl;
nArgs = SLX_GetNArgs();
for ( i = 0; i < nArgs; i++ )
{
symPtr = SLX_GetArgById( i );
if ( symPtr != NULL )
{
TqInt arrayLen = 1;
if ( symPtr->svd_arraylen != 0 )
arrayLen = symPtr->svd_arraylen;
std::cout << " \"" << symPtr->svd_name << "\" \"parameter " <<
SLX_DetailtoStr( symPtr->svd_detail ) << " " <<
SLX_TypetoStr( symPtr->svd_type );
if ( symPtr->svd_arraylen != 0 )
std::cout << "[" << arrayLen << "]";
std::cout << "\"" << std::endl;
TqInt arrayIndex;
for ( arrayIndex = 0; arrayIndex < arrayLen; arrayIndex++ )
//.........这里部分代码省略.........
示例4: main
/** Process the sl file from stdin and produce an slx bytestream.
*/
int main( int argc, const char** argv )
{
ArgParse ap;
boost::scoped_ptr<IqCodeGen> codeGenerator;
bool error = false; ///! Couldn't compile shader
ap.usageHeader( ArgParse::apstring( "Usage: " ) + argv[ 0 ] + " [options] <filename>" );
ap.argString( "o", " %s \aspecify output filename", &g_stroutname );
ap.argStrings( "i", "%s \aSet path for #include files.", &g_includes );
ap.argStrings( "I", "%s \aSet path for #include files.", &g_includes );
ap.argStrings( "D", "Sym[=value] \adefine symbol <string> to have value <value> (default: 1).", &g_defines );
ap.argStrings( "U", "Sym \aUndefine an initial symbol.", &g_undefines );
ap.argString( "backend", " %s \aCompiler backend (default %default). Possibilities include \"slx\" or \"dot\":\a"
"slx - produce a compiled shader (in the aqsis shader VM stack language)\a"
"dot - make a graphviz visualization of the parse tree (useful for debugging only).", &g_backendName );
ap.argFlag( "help", "\aPrint this help and exit", &g_help );
ap.alias("help", "h");
ap.argFlag( "version", "\aPrint version information and exit", &g_version );
ap.argFlag( "nocolor", "\aDisable colored output", &g_cl_no_color );
ap.alias( "nocolor" , "nc" );
ap.argFlag( "d", "\adump sl data", &g_dumpsl );
ap.argInt( "verbose", "=integer\aSet log output level\n"
"\a0 = errors\n"
"\a1 = warnings (default)\n"
"\a2 = information\n"
"\a3 = debug", &g_cl_verbose );
ap.alias( "verbose", "v" );
if ( argc > 1 && !ap.parse( argc - 1, argv + 1 ) )
{
Aqsis::log() << ap.errmsg() << std::endl << ap.usagemsg();
exit( 1 );
}
if ( g_version )
{
version( std::cout );
exit( 0 );
}
if ( g_help )
{
std::cout << ap.usagemsg();
exit( 0 );
}
#ifdef AQSIS_SYSTEM_WIN32
std::auto_ptr<std::streambuf> ansi( new Aqsis::ansi_buf(Aqsis::log()) );
#endif
std::auto_ptr<std::streambuf> reset_level( new Aqsis::reset_level_buf(Aqsis::log()) );
std::auto_ptr<std::streambuf> show_timestamps( new Aqsis::timestamp_buf(Aqsis::log()) );
std::auto_ptr<std::streambuf> fold_duplicates( new Aqsis::fold_duplicates_buf(Aqsis::log()) );
std::auto_ptr<std::streambuf> color_level;
if(!g_cl_no_color)
{
std::auto_ptr<std::streambuf> temp_color_level( new Aqsis::color_level_buf(Aqsis::log()) );
color_level = temp_color_level;
}
std::auto_ptr<std::streambuf> show_level( new Aqsis::show_level_buf(Aqsis::log()) );
Aqsis::log_level_t level = Aqsis::ERROR;
if( g_cl_verbose > 0 )
level = Aqsis::WARNING;
if( g_cl_verbose > 1 )
level = Aqsis::INFO;
if( g_cl_verbose > 2 )
level = Aqsis::DEBUG;
std::auto_ptr<std::streambuf> filter_level( new Aqsis::filter_by_level_buf(level, Aqsis::log()) );
#ifdef AQSIS_SYSTEM_POSIX
if( g_cl_syslog )
std::auto_ptr<std::streambuf> use_syslog( new Aqsis::syslog_buf(Aqsis::log()) );
#endif // AQSIS_SYSTEM_POSIX
if ( ap.leftovers().size() == 0 )
{
std::cout << ap.usagemsg();
exit( 0 );
}
else
{
for ( ArgParse::apstringvec::const_iterator e = ap.leftovers().begin(); e != ap.leftovers().end(); e++ )
{
//Expand filenames
std::vector<std::string> files = Aqsis::cliGlob(*e);
std::vector<std::string>::iterator it;
for(it = files.begin(); it != files.end(); ++it){
ResetParser();
// Create a code generator for the requested backend.
if(g_backendName == "slx")
codeGenerator.reset(new CqCodeGenVM());
else if(g_backendName == "dot")
codeGenerator.reset(new CqCodeGenGraphviz());
else
{
std::cout << "Unknown backend type: \"" << g_backendName << "\", assuming slx.";
codeGenerator.reset(new CqCodeGenVM());
}
//.........这里部分代码省略.........
示例5: main
int main(int argc, const char** argv)
{
ArgParse::apflag showhelp = false;
ArgParse::apint myint = 0;
ArgParse ap;
ap.allowOneCharOptionsToBeCombined();
ap.usageHeader(ArgParse::apstring("Usage: ") + argv[0] + " [options]");
ap.argFlag("help", "\aprint this help, then exit", &showhelp);
ap.argInt("integer", "=value\aa random integer you can give for no reason",
&myint);
ap.alias("help", "h");
ap.alias("integer", "i");
if (!ap.parse(argc-1, argv+1))
{
Aqsis::log() << ap.errmsg() << std::endl << ap.usagemsg();
return 1;
}
if (ap.leftovers().size() > 0)
{
Aqsis::log() << "Extra crud \"" << ap.leftovers()[0] << "\" on command line";
Aqsis::log() << std::endl << ap.usagemsg();
return 1;
}
if (myint != 0)
{
cout << "Your favorite integer is " << myint << endl;
}
if (showhelp)
{
cout << ap.usagemsg();
return 0;
}
int bad = 0;
cout << "Testing flags and integers... ";
myint = 3;
showhelp = false;
int ok = 0;
const char* av[100];
if (ap.parse(0, av) && !showhelp && myint == 3 && ap.leftovers().size() == 0)
ok++;
av[0] = "-h";
if (ap.parse(1, av) && showhelp && myint == 3 && ap.leftovers().size() == 0)
ok++;
showhelp = false;
av[0] = "--help";
if (ap.parse(1, av) && showhelp && myint == 3 && ap.leftovers().size() == 0)
ok++;
showhelp = false;
av[0] = "--integer";
av[1] = "5";
if (ap.parse(2, av) && !showhelp && myint == 5 && ap.leftovers().size() == 0)
ok++;
myint = 3;
av[0] = "-i";
if (ap.parse(2, av) && !showhelp && myint == 5 && ap.leftovers().size() == 0)
ok++;
myint = 3;
av[2] = "--help";
if (ap.parse(3, av) && showhelp && myint == 5 && ap.leftovers().size() == 0)
ok++;
av[0] = "-h";
av[1] = "-i";
av[2] = "5";
myint = 3;
showhelp = false;
if (ap.parse(3, av) && showhelp && myint == 5 && ap.leftovers().size() == 0)
ok++;
av[0] = "-hi";
av[1] = "5";
myint = 3;
showhelp = false;
if (ap.parse(2, av) && showhelp && myint == 5 && ap.leftovers().size() == 0)
ok++;
av[0] = "-hi=5";
myint = 3;
showhelp = false;
if (ap.parse(1, av) && showhelp && myint == 5 && ap.leftovers().size() == 0)
ok++;
av[0] = "-help";
if (!ap.parse(1, av) &&
ap.errmsg() == "-help: 'e' is an unrecognized option")
ok++;
av[0] = "--integer=5";
//.........这里部分代码省略.........