bool parseStatus(const std::string& message, LibreOfficeKitDocumentType& type, int& nParts, int& currentPart, int& width, int& height) { StringTokenizer tokens(message, " ", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM); assert(tokens.count() == 6); assert(tokens[0] == "status:"); std::string typeString; if (!getTokenString(tokens[1], "type", typeString)) return false; if (typeString == "text") type = LOK_DOCTYPE_TEXT; else if (typeString == "spreadsheet") type = LOK_DOCTYPE_SPREADSHEET; else if (typeString == "presentation") type = LOK_DOCTYPE_PRESENTATION; else if (typeString == "drawing") type = LOK_DOCTYPE_PRESENTATION; else if (typeString == "other") type = LOK_DOCTYPE_OTHER; else return false; if (!getTokenInteger(tokens[2], "parts", nParts) || !getTokenInteger(tokens[3], "current", currentPart) || !getTokenInteger(tokens[4], "width", width) || !getTokenInteger(tokens[5], "height", height)) return false; return true; }
bool getTokenInteger(const Poco::StringTokenizer& tokens, const std::string& name, int& value) { for (size_t i = 0; i < tokens.count(); i++) { if (getTokenInteger(tokens[i], name, value)) return true; } return false; }
inline bool getTokenIntegerFromMessage(const std::string& message, const std::string& name, int& value) { return getTokenInteger(tokenize(message), name, value); }