--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/searchengine/cpix/tsrc/perfmetrics/src/testvector.cpp Mon Apr 19 14:40:16 2010 +0300
@@ -0,0 +1,162 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include <iostream>
+
+
+#include "testvector.h"
+
+TestVector::TestVector()
+ : testName("plain"),
+ create(1),
+ bufferSize(32*1024), // TODO: bind to constant
+ numPreindexedItems(0),
+ maxInputSize(10),
+ lumpSize(5),
+ first(1),
+ last(1),
+ search(0),
+ incrementalSearch(0),
+ minIncrementalLength(3),
+ suggestionSearch(0),
+ minSuggestionLength(3),
+ takeIdxSnapshot(0),
+ addLasts(1),
+ delReAddLasts(1),
+ updateLasts(1)
+{
+ ;
+}
+
+
+int (TestVector::* IntMembers[]) = {
+ &TestVector::create,
+ &TestVector::bufferSize,
+ &TestVector::numPreindexedItems,
+ &TestVector::maxInputSize,
+ &TestVector::lumpSize,
+ &TestVector::first,
+ &TestVector::last,
+ &TestVector::search,
+ &TestVector::incrementalSearch,
+ &TestVector::minIncrementalLength,
+ &TestVector::suggestionSearch,
+ &TestVector::minSuggestionLength,
+ &TestVector::takeIdxSnapshot,
+ &TestVector::addLasts,
+ &TestVector::delReAddLasts,
+ &TestVector::updateLasts
+};
+
+
+std::istream & TestVector::read(std::istream & is)
+{
+ if (is)
+ {
+ testName = readStr(is);
+ }
+
+ for (size_t i = 0;
+ i < sizeof(IntMembers) / sizeof(int (TestVector::*)) && is;
+ ++i)
+ {
+ this->*IntMembers[i] = readInt(is);
+ }
+
+ while (is)
+ {
+ std::string
+ queryTerm = readStr(is);
+
+ if (is)
+ {
+ queryTerms.push_back(queryTerm);
+ }
+ }
+
+ return is;
+}
+
+
+int TestVector::readInt(std::istream & is)
+{
+ std::string
+ line;
+
+ nextLine(is,
+ line);
+
+ int
+ rv = 0;
+
+ if (is)
+ {
+ std::strstream
+ dummy(const_cast<char*>(line.c_str()),
+ line.length());
+ dummy >> rv;
+ }
+
+ return rv;
+}
+
+
+std::string TestVector::readStr(std::istream & is)
+{
+ std::string
+ line;
+
+ nextLine(is,
+ line);
+
+ if (line.length() > 0)
+ {
+ if (line[line.length()-1] == '\r')
+ {
+ line = line.substr(0,
+ line.length() - 1);
+ }
+ }
+
+ return line;
+}
+
+
+void TestVector::nextLine(std::istream & is,
+ std::string & line)
+{
+ while (getline(is, line))
+ {
+ if (line.length() > 0
+ && line[0] != '#'
+ && line[0] != '\r')
+ {
+ break;
+ }
+ else
+ {
+ line = "";
+ }
+ }
+}
+
+
+
+std::istream & operator>>(std::istream & is,
+ TestVector & tv)
+{
+ return tv.read(is);
+}