Ejemplo n.º 1
0
/* 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;
    }
}
Ejemplo n.º 2
0
    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;
    }