- unsigned underscore=str.find('_', start);
- bool fail=false;
- if(!str.compare(start, underscore-start, "VERTEX2"))
- f=(f,VERTEX2);
- else if(!str.compare(start, underscore-start, "VERTEX3"))
- f=(f,VERTEX3);
- else if(!str.compare(start, underscore-start, "VERTEX4"))
- f=(f,VERTEX4);
- else if(!str.compare(start, underscore-start, "NORMAL3"))
- f=(f,NORMAL3);
- else if(!str.compare(start, underscore-start, "TEXCOORD1"))
- f=(f,TEXCOORD1);
- else if(!str.compare(start, underscore-start, "TEXCOORD2"))
- f=(f,TEXCOORD2);
- else if(!str.compare(start, underscore-start, "TEXCOORD3"))
- f=(f,TEXCOORD3);
- else if(!str.compare(start, underscore-start, "TEXCOORD4"))
- f=(f,TEXCOORD4);
- else if(!str.compare(start, underscore-start, "COLOR4UB"))
- f=(f,COLOR4_UBYTE);
- else if(!str.compare(start, underscore-start, "COLOR3F"))
- f=(f,COLOR3_FLOAT);
- else if(!str.compare(start, underscore-start, "COLOR4F"))
- f=(f,COLOR4_FLOAT);
- else if(underscore>=start+8 && !str.compare(start, 6, "ATTRIB"))
+ if(str.size()==9)
+ c = static_cast<VertexComponent>(TEXCOORD1+(str[8]-'1'));
+ else if(str.size()==11 && str[9]=='_' && str[10]>='0' && str[10]<='7')
+ c = static_cast<VertexComponent>(TEXCOORD1+(str[8]-'1')+(str[10]-'0')*4);
+ else
+ throw lexical_error(format("conversion of '%s' to VertexComponent", str));
+ }
+ else if(str.size()>=9 && !str.compare(0, 6, "ATTRIB") && str[6]>='1' && str[6]<='4' && str[7]=='_')
+ {
+ unsigned n;
+ try