本文整理汇总了C++中StringTokenizer::addDelims方法的典型用法代码示例。如果您正苦于以下问题:C++ StringTokenizer::addDelims方法的具体用法?C++ StringTokenizer::addDelims怎么用?C++ StringTokenizer::addDelims使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StringTokenizer
的用法示例。
在下文中一共展示了StringTokenizer::addDelims方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
ShaderComp::StageMask
ShaderFactory::createMains(const ShaderComp::FunctionLocationMap& functions,
const VirtualProgram::ShaderMap& in_shaders,
std::vector< osg::ref_ptr<osg::Shader> >& out_shaders) const
{
StageMask stages =
ShaderComp::STAGE_VERTEX |
ShaderComp::STAGE_FRAGMENT;
FunctionLocationMap::const_iterator f;
// collect the "model" stage vertex functions:
f = functions.find( LOCATION_VERTEX_MODEL );
const OrderedFunctionMap* modelStage = f != functions.end() ? &f->second : 0L;
// collect the "view" stage vertex functions:
f = functions.find( LOCATION_VERTEX_VIEW );
const OrderedFunctionMap* viewStage = f != functions.end() ? &f->second : 0L;
// geometry shader functions:
f = functions.find( LOCATION_TESS_CONTROL );
const OrderedFunctionMap* tessControlStage = f != functions.end() ? &f->second : 0L;
// geometry shader functions:
f = functions.find( LOCATION_TESS_EVALUATION );
const OrderedFunctionMap* tessEvalStage = f != functions.end() ? &f->second : 0L;
// geometry shader functions:
f = functions.find( LOCATION_GEOMETRY );
const OrderedFunctionMap* geomStage = f != functions.end() ? &f->second : 0L;
// collect the "clip" stage functions:
f = functions.find( LOCATION_VERTEX_CLIP );
const OrderedFunctionMap* clipStage = f != functions.end() ? &f->second : 0L;
// fragment shader coloring functions:
f = functions.find( LOCATION_FRAGMENT_COLORING );
const OrderedFunctionMap* coloringStage = f != functions.end() ? &f->second : 0L;
// fragment shader lighting functions:
f = functions.find( LOCATION_FRAGMENT_LIGHTING );
const OrderedFunctionMap* lightingStage = f != functions.end() ? &f->second : 0L;
// fragment shader lighting functions:
f = functions.find( LOCATION_FRAGMENT_OUTPUT );
const OrderedFunctionMap* outputStage = f != functions.end() ? &f->second : 0L;
// what do we need to build?
bool hasGS = geomStage && !geomStage->empty();
bool hasTCS = tessControlStage && !tessControlStage->empty();
bool hasTES = tessEvalStage && !tessEvalStage->empty();
bool hasFS = true;
bool hasVS = true;
// where to insert the view/clip stage vertex functions:
bool viewStageInGS = hasGS;
bool viewStageInTES = !viewStageInGS && hasTES;
bool viewStageInVS = !viewStageInTES && !viewStageInGS;
bool clipStageInGS = hasGS;
bool clipStageInTES = hasTES && !hasGS;
bool clipStageInVS = !clipStageInGS && !clipStageInTES;
// search for pragma varyings and build up our interface block definitions.
typedef std::set<std::string> VarDefs;
VarDefs varDefs;
// built-ins:
varDefs.insert( "vec4 vp_Color" );
varDefs.insert( "vec3 vp_Normal" );
varDefs.insert( "vec4 vp_Vertex" );
// parse the vp_varyings (which were injected by the ShaderLoader)
for(VirtualProgram::ShaderMap::const_iterator s = in_shaders.begin(); s != in_shaders.end(); ++s )
{
osg::Shader* shader = s->data()._shader->getNominalShader();
if ( shader )
{
ShaderLoader::getAllPragmaValues(shader->getShaderSource(), "vp_varying", varDefs);
}
}
Variables vars;
for(VarDefs::iterator i = varDefs.begin(); i != varDefs.end(); ++i)
{
std::vector<std::string> tokens;
StringTokenizer st;
st.addDelims( " \t", false );
st.addDelims( "[]", true );
st.tokenize( *i, tokens ); //(*i, tokens, " \t", "", false, true);
if ( tokens.size() >= 2 )
{
int p=0;
Variable v;
if ( tokens[p] == "flat" || tokens[p] == "nonperspective" || tokens[p] == "smooth" )
{
v.interp = tokens[p++];
}
if ( p+1 < tokens.size() )
//.........这里部分代码省略.........