+ else if(convert_attribute_type(i, str.end(), "UBYTE", result, UNSIGNED_BYTE) ||
+ convert_attribute_type(i, str.end(), "BYTE", result, BYTE) ||
+ convert_attribute_type(i, str.end(), "USHORT", result, UNSIGNED_SHORT) ||
+ convert_attribute_type(i, str.end(), "SHORT", result, SHORT) ||
+ convert_attribute_type(i, str.end(), "UINT", result, UNSIGNED_INT) ||
+ convert_attribute_type(i, str.end(), "INT", result, INT) ||
+ convert_attribute_type(i, str.end(), "FLOAT", result, FLOAT))
+ ;
+ else
+ return false;
+ }
+
+ attr = result;
+ return true;
+}
+
+void operator>>(const LexicalConverter &conv, VertexAttribute &a)
+{
+ const string &str = conv.get();
+ try
+ {
+ if(convert_attribute(str, "VERTEX", 2, 4, a, VERTEX2) ||
+ convert_attribute(str, "COLOR", 3, 4, a, COLOR3) ||
+ convert_attribute(str, "NORMAL", 3, 3, a, NORMAL3) ||
+ convert_attribute(str, "TANGENT", 3, 3, a, TANGENT3) ||
+ convert_attribute(str, "GROUP", 1, 4, a, GROUP1) ||
+ convert_attribute(str, "WEIGHT", 1, 4, a, WEIGHT1) ||
+ convert_attribute(str, "TEXCOORD", 1, 4, a, TEXCOORD1) ||
+ convert_attribute(str, "GENERIC", 1, 4, a, GENERIC1))
+ return;