Refactor ObjFileParser for improved readability#

Refactor handling of cstype section end and material descriptor parsing.
This commit is contained in:
Kim Kulling
2025-12-25 21:03:29 +01:00
committed by GitHub
parent 0a9cefe943
commit 93f3c38ceb

View File

@@ -139,12 +139,12 @@ void ObjFileParser::parseFile(IOStreamBuffer<char> &streamBuffer) {
// handle c-stype section end (http://paulbourke.net/dataformats/obj/)
if (insideCstype) {
switch (*m_DataIt) {
case 'e': {
char *name{nullptr};
size_t len{0};
getNameNoSpace(m_DataIt, m_DataItEnd, &name, len);
insideCstype = !(len == 3 && strncmp(name, "end", 3) == 0);
} break;
case 'e': {
char *name{nullptr};
size_t len{0};
getNameNoSpace(m_DataIt, m_DataItEnd, &name, len);
insideCstype = !(len == 3 && strncmp(name, "end", 3) == 0);
} break;
}
goto pf_skip_line;
}
@@ -199,16 +199,10 @@ void ObjFileParser::parseFile(IOStreamBuffer<char> &streamBuffer) {
case 'u': // Parse a material desc. setter
{
//std::string name;
char *name{nullptr};
size_t len{ 0 };
getNameNoSpace(m_DataIt, m_DataItEnd, &name, len);
//size_t nextSpace = name.find(' ');
//if (nextSpace != std::string::npos)
// name = name.substr(0, nextSpace);
//if (name == "usemtl") {
if (strncmp(name, "usemtl", len) == 0) {
getMaterialDesc();
}
@@ -248,7 +242,6 @@ void ObjFileParser::parseFile(IOStreamBuffer<char> &streamBuffer) {
char *name{nullptr};
size_t len{0};
getNameNoSpace(m_DataIt, m_DataItEnd, &name, len);
//insideCstype = name == "cstype";
insideCstype = strncmp(name, "cstype", len) == 0;
goto pf_skip_line;
}