/* Add any relevant data from this line into the OBJ structure. */ void processLine(OBJ *obj, char *line) { //determine what type of line it is switch(line[0]) { case 'o': processGroupLine(obj, line); break; case 'g': processGroupLine(obj, line); break; case 'v': //nested switch to examine second char switch(line[1]) { case ' ': processVertexLine(line); break; case 't': processTexVertexLine(line); break; case 'n': processNormalLine(line); break; default: fprintf(stderr, "Unhandled line: %s", line); break; } break; case 'f': processFaceLine(line); break; case 'u': processMaterialLine(line); break; case '\n': //simply skip over blank lines, no printout break; default: fprintf(stderr, "Unhandled line: %s", line); break; } }
bool AclReader::processLine(char* line) { bool ret = false; std::vector<std::string> toks; // Check for continuation char* contCharPtr = std::strrchr(line, AclData::ACL_SYMBOL_LINE_CONTINUATION); bool cont = contCharPtr != 0; if (cont) *contCharPtr = 0; int numToks = tokenize(line, toks); if (cont && numToks == 0){ errorStream << ACL_FORMAT_ERR_LOG_PREFIX << "Line \"" << lineNumber << "\" contains an illegal extension."; return false; } if (numToks && (toks[0].compare(AclData::ACL_KEYWORD_GROUP) == 0 || contFlag)) { ret = processGroupLine(toks, cont); } else if (numToks && toks[0].compare(AclData::ACL_KEYWORD_ACL) == 0) { ret = processAclLine(toks); } else if (numToks && toks[0].compare(AclData::ACL_KEYWORD_QUOTA) == 0) { ret = processQuotaLine(toks); } else { // Check for whitespace only line, ignore these bool ws = true; for (unsigned i=0; i<std::strlen(line) && ws; i++) { if (!std::isspace(line[i])) ws = false; } if (ws) { ret = true; } else { errorStream << ACL_FORMAT_ERR_LOG_PREFIX << "Line : " << lineNumber << ", Non-continuation line must start with \"" << AclData::ACL_KEYWORD_GROUP << "\", \"" << AclData::ACL_KEYWORD_ACL << "\". or \"" << AclData::ACL_KEYWORD_QUOTA << "\"."; ret = false; } } contFlag = cont; return ret; }