MCPcopy Create free account
hub / github.com/SaschaWillems/HowToVulkan / parseTriple

Function parseTriple

source/external/tinyobj/tiny_obj_loader.h:1199–1250  ·  view source on GitHub ↗

Parse triples with index offsets: i, i/j/k, i//k, i/j

Source from the content-addressed store, hash-verified

1197
1198// Parse triples with index offsets: i, i/j/k, i//k, i/j
1199static bool parseTriple(const char **token, int vsize, int vnsize, int vtsize,
1200 vertex_index_t *ret, const warning_context &context) {
1201 if (!ret) {
1202 return false;
1203 }
1204
1205 vertex_index_t vi(-1);
1206
1207 if (!fixIndex(atoi((*token)), vsize, &vi.v_idx, false, context)) {
1208 return false;
1209 }
1210
1211 (*token) += strcspn((*token), "/ \t\r");
1212 if ((*token)[0] != '/') {
1213 (*ret) = vi;
1214 return true;
1215 }
1216 (*token)++;
1217
1218 // i//k
1219 if ((*token)[0] == '/') {
1220 (*token)++;
1221 if (!fixIndex(atoi((*token)), vnsize, &vi.vn_idx, true, context)) {
1222 return false;
1223 }
1224 (*token) += strcspn((*token), "/ \t\r");
1225 (*ret) = vi;
1226 return true;
1227 }
1228
1229 // i/j/k or i/j
1230 if (!fixIndex(atoi((*token)), vtsize, &vi.vt_idx, true, context)) {
1231 return false;
1232 }
1233
1234 (*token) += strcspn((*token), "/ \t\r");
1235 if ((*token)[0] != '/') {
1236 (*ret) = vi;
1237 return true;
1238 }
1239
1240 // i/j/k
1241 (*token)++; // skip '/'
1242 if (!fixIndex(atoi((*token)), vnsize, &vi.vn_idx, true, context)) {
1243 return false;
1244 }
1245 (*token) += strcspn((*token), "/ \t\r");
1246
1247 (*ret) = vi;
1248
1249 return true;
1250}
1251
1252// Parse raw triples: i, i/j/k, i//k, i/j
1253static vertex_index_t parseRawTriple(const char **token) {

Callers 1

LoadObjFunction · 0.85

Calls 1

fixIndexFunction · 0.85

Tested by

no test coverage detected