void parseNextMCFLine (RDFFile f, char* line) { char* nextToken ; int16 offset = 0; RDF_Error err; if ((nullp(line)) || (line[0] == '\0'))return; nextToken = getMem(MAX_URL_SIZE); err = getFirstToken(line, nextToken, &offset); offset++; if ((err != noRDFErr) && (nextToken[0] == ';')) { freeMem(nextToken); return; } if (startsWith("begin-headers", nextToken)) { f->status = HEADERS; } else if (startsWith("end-headers", nextToken)) { f->status = BODY; } else if (startsWith("unit", nextToken)) { f->status = BODY; if (!(nullp(f->currentResource))) resourceTransition(f); getFirstToken(&line[offset], nextToken, &offset); f->currentResource = resolveReference(nextToken, f); } else if (nextToken[strlen(nextToken)-1] == ':') { memset(f->currentSlot, '\0', 100); memcpy(f->currentSlot, nextToken, strlen(nextToken)-1); while (getFirstToken(&line[offset], nextToken, &offset) == noRDFErr) { if (f->status == HEADERS) { assignHeaderSlot(f, f->currentSlot, nextToken); } else if (f->currentResource) { assignSlot(f->currentResource, f->currentSlot, nextToken, f); } offset++; } } freeMem(nextToken); }
std::string getFirstToken(const T& message) { return getFirstToken(message.data(), message.size()); }
std::string getFirstToken(const T& message, const char delim = ' ') { return getFirstToken(message.data(), message.size(), delim); }