in>>str;
unsigned start=0;
- unsigned comma;
f=NODATA;
while(1)
{
- comma=str.find(',', start);
- if(str.compare(start, comma-start, "VERTEX2"))
- f=f,VERTEX2;
- else if(str.compare(start, comma-start, "VERTEX3"))
- f=f,VERTEX3;
- else if(str.compare(start, comma-start, "VERTEX4"))
- f=f,VERTEX4;
- else if(str.compare(start, comma-start, "NORMAL3"))
- f=f,NORMAL3;
- else if(str.compare(start, comma-start, "TEXCOORD1"))
- f=f,TEXCOORD1;
- else if(str.compare(start, comma-start, "TEXCOORD2"))
- f=f,TEXCOORD2;
- else if(str.compare(start, comma-start, "TEXCOORD3"))
- f=f,TEXCOORD3;
- else if(str.compare(start, comma-start, "TEXCOORD4"))
- f=f,TEXCOORD4;
- else if(str.compare(start, comma-start, "COLOR4_UBYTE"))
- f=f,COLOR4_UBYTE;
- else if(str.compare(start, comma-start, "COLOR3_FLOAT"))
- f=f,COLOR3_FLOAT;
- else if(str.compare(start, comma-start, "COLOR4_FLOAT"))
- f=f,COLOR4_FLOAT;
+ unsigned underscore=str.find('_', start);
+ 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
{
in.setstate(std::ios_base::failbit);
break;
}
- start=comma+1;
- if(comma==std::string::npos)
+
+ if(underscore==std::string::npos)
break;
+ start=underscore+1;
}
return in;