MCPcopy Create free account
hub / github.com/BoomingTech/Piccolo / parseTriple

Function parseTriple

engine/3rdparty/tinyobjloader/tiny_obj_loader.h:1136–1187  ·  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

1134
1135// Parse triples with index offsets: i, i/j/k, i//k, i/j
1136static bool parseTriple(const char **token, int vsize, int vnsize, int vtsize,
1137 vertex_index_t *ret) {
1138 if (!ret) {
1139 return false;
1140 }
1141
1142 vertex_index_t vi(-1);
1143
1144 if (!fixIndex(atoi((*token)), vsize, &(vi.v_idx))) {
1145 return false;
1146 }
1147
1148 (*token) += strcspn((*token), "/ \t\r");
1149 if ((*token)[0] != '/') {
1150 (*ret) = vi;
1151 return true;
1152 }
1153 (*token)++;
1154
1155 // i//k
1156 if ((*token)[0] == '/') {
1157 (*token)++;
1158 if (!fixIndex(atoi((*token)), vnsize, &(vi.vn_idx))) {
1159 return false;
1160 }
1161 (*token) += strcspn((*token), "/ \t\r");
1162 (*ret) = vi;
1163 return true;
1164 }
1165
1166 // i/j/k or i/j
1167 if (!fixIndex(atoi((*token)), vtsize, &(vi.vt_idx))) {
1168 return false;
1169 }
1170
1171 (*token) += strcspn((*token), "/ \t\r");
1172 if ((*token)[0] != '/') {
1173 (*ret) = vi;
1174 return true;
1175 }
1176
1177 // i/j/k
1178 (*token)++; // skip '/'
1179 if (!fixIndex(atoi((*token)), vnsize, &(vi.vn_idx))) {
1180 return false;
1181 }
1182 (*token) += strcspn((*token), "/ \t\r");
1183
1184 (*ret) = vi;
1185
1186 return true;
1187}
1188
1189// Parse raw triples: i, i/j/k, i//k, i/j
1190static vertex_index_t parseRawTriple(const char **token) {

Callers 1

LoadObjFunction · 0.85

Calls 1

fixIndexFunction · 0.70

Tested by

no test coverage detected