Revision: 201031
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 18 Aug 2010 10:53:26 +0300
changeset 15 cf5c74390b98
parent 10 afe194b6b1cd
child 18 3e1f76dd2722
Revision: 201031 Kit: 201033
harvester/harvesterserver/src/charvesterserver.cpp
layers.sysdef.xml
qcpix/bwins/cpixsearchu.def
qcpix/bwins/qcpixsearchclientu.def
qcpix/cpix.pro
qcpix/cpixsearch.pro
qcpix/eabi/cpixsearchu.def
qcpix/eabi/qcpixsearchclientu.def
qcpix/qcpix.pro
qcpix/qcpixsearchclient.pro
qcpix/src/cpixdocument.cpp
qcpix/src/cpixdocumentfield.cpp
qcpix/src/cpixsearcher.cpp
qcpix/src/platform/s60/inc/cpixdocumentfieldprivate.h
qcpix/src/platform/s60/inc/cpixdocumentprivate.h
qcpix/src/platform/s60/inc/cpixsearcherprivate.h
qcpix/src/platform/s60/inc/cpixutils.h
qcpix/src/platform/s60/inc/qcpixdocumentfieldprivate.h
qcpix/src/platform/s60/inc/qcpixdocumentprivate.h
qcpix/src/platform/s60/inc/qcpixsearcherprivate.h
qcpix/src/platform/s60/inc/qcpixutils.h
qcpix/src/platform/s60/src/cpixdocumentfieldprivate.cpp
qcpix/src/platform/s60/src/cpixsearcherprivate.cpp
qcpix/src/platform/s60/src/cpixutils.cpp
qcpix/src/platform/s60/src/qcpixdocumentfieldprivate.cpp
qcpix/src/platform/s60/src/qcpixsearcherprivate.cpp
qcpix/src/platform/s60/src/qcpixutils.cpp
qcpix/src/qcpixdocument.cpp
qcpix/src/qcpixdocumentfield.cpp
qcpix/src/qcpixsearcher.cpp
qcpix/tsrc/orbitsearch/orbitsearch.pro
qcpix/tsrc/orbitsearch/searchhelper.cpp
qcpix/tsrc/orbitsearch/searchhelper.h
qcpix/tsrc/orbitsearch/testsearch.cpp
qcpix/tsrc/orbitsearch/uicontrols.h
qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocument.h
qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocumentfield.h
qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixsearcher.h
qcpix/tsrc/qtcpixunittests/qtcpixunittests.pro
qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocument.cpp
qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocumentfield.cpp
qcpix/tsrc/qtcpixunittests/src/ut_qtcpixsearcher.cpp
qcpix/tsrc/qttestutil/copying
qcpix/tsrc/qttestutil/qttestutil.h
qcpix/tsrc/qttestutil/qttestutil.pri
qcpix/tsrc/qttestutil/readme
qcpix/tsrc/qttestutil/simplechecker.cpp
qcpix/tsrc/qttestutil/testregistration.h
qcpix/tsrc/qttestutil/testregistry.cpp
qcpix/tsrc/qttestutil/testregistry.h
qcpix/tsrc/samplesearch/samplesearch.cpp
qcpix/tsrc/samplesearch/samplesearch.h
qcpix/tsrc/samplesearch/samplesearch.pro
qcpix/tsrc/samplesearch/searchhandler.cpp
qcpix/tsrc/samplesearch/searchhandler.h
rom/cpix_mw.iby
searchengine/cpix/cpix/inc/private/cpixhits.h
searchengine/cpix/cpix/inc/public/appclass-hierarchy.txt
searchengine/cpix/cpix/inc/public/cpix_async.h
searchengine/cpix/cpix/inc/public/cpixerror.h
searchengine/cpix/cpix/inc/public/cpixsearch.h
searchengine/cpix/cpix/src/common/gpssort.cpp
searchengine/cpix/cpix/src/cpix_async.cpp
searchengine/cpix/cpix/src/cpixhits.cpp
searchengine/cpix/cpix/src/cpixsearch.cpp
searchengine/cpix/cpix/src/fileparser/fileparser.cpp
searchengine/cpix/cpix/src/prefixqueryparser.cpp
searchengine/cpix/tsrc/cpixsample/group/cpixsample.mmp
searchengine/cpix/tsrc/cpixsample/src/cpixsample.cpp
searchengine/cpix/tsrc/cpixunittest/inc/suggestion.h
searchengine/cpix/tsrc/cpixunittest/inc/testutils.h
searchengine/cpix/tsrc/cpixunittest/src/asynctests.cpp
searchengine/cpix/tsrc/cpixunittest/src/destructivetests.cpp
searchengine/cpix/tsrc/cpixunittest/src/documenttest.cpp
searchengine/cpix/tsrc/cpixunittest/src/randomtest.cpp
searchengine/cpix/tsrc/cpixunittest/src/suggestion.cpp
searchengine/cpix/tsrc/cpixunittest/src/testutils.cpp
searchengine/cpix/tsrc/cpixunittest/src/whiteboxtests.cpp
searchengine/oss/cl/clucene/group/clucene.mmp
searchengine/oss/cl/clucene/src/clucene/analysis/standard/standardtokenizer.cpp
searchengine/oss/cl/clucene/src/clucene/highlighter/SimpleHTMLFormatter.cpp
searchengine/oss/cl/clucene/src/clucene/search/hits.cpp
searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp
searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.h
searchengine/oss/cl/clucene/src/clucene/search/multisearcher.cpp
searchengine/oss/cl/clucene/src/clucene/search/multisearcher.h
searchengine/oss/cl/clucene/src/clucene/search/searchheader.h
searchengine/oss/cl/group/bld.inf
searcher/group/bld.inf
searcher/searchclient/bwins/cpixsearchclientu.def
searcher/searchclient/eabi/cpixsearchclientu.def
searcher/searchclient/group/searchclient.mmp
searcher/searchclient/inc/searchservercommon.h
searcher/searchclient/src/ccpixsearcher.cpp
searcher/searchclient/src/rsearchserversession.cpp
searcher/searchclient/traces/CCPixSearcherTraces.h
searcher/searchclient/traces/RSearchServerSessionTraces.h
searcher/searchserver/inc/CCPixAbstractSearcher.h
searcher/searchserver/inc/ccpixasyncronizer.h
searcher/searchserver/inc/ccpixsearch.h
searcher/searchserver/inc/csearchserversubsession.h
searcher/searchserver/src/CCPixAbstractSearcher.cpp
searcher/searchserver/src/ccpixsearch.cpp
searcher/searchserver/src/csearchserver.cpp
searcher/searchserver/src/csearchserversession.cpp
searcher/searchserver/src/csearchserversubsession.cpp
searcher/searchserver/traces/CCPixIdxDbTraces.h
searcher/searchserver/traces/CCPixSearchTraces.h
searcher/searchserver/traces/CSearchServerSessionTraces.h
searcher/searchserver/traces/CSearchServerSubSessionTraces.h
searcher/searchserver/traces/CSearchServerTraces.h
searcher/searchserver/traces/OstTraceDefinitions.h
searcher/searchserver/traces/fixed_id.definitions
searcher/tsrc/cpixsearchertest/conf/cpixsearchertest.cfg
searcher/tsrc/cpixsearchertest/group/cpixsearchertest.mmp
searcher/tsrc/cpixsearchertest/inc/cpixsearchertest.h
searcher/tsrc/cpixsearchertest/inc/cpixsearchertester.h
searcher/tsrc/cpixsearchertest/src/cpixsearchertestBlocks.cpp
searcher/tsrc/cpixsearchertest/src/cpixsearchertester.cpp
searcher/tsrc/logplayer/inc/logplayermanager.h
searcher/tsrc/robustnesstest/inc/csearchingworker.h
searcher/tsrc/robustnesstest/src/csearchingworker.cpp
searchsrv_plat/cpix_framework_api/inc/ccpixsearcher.h
searchsrv_plat/cpix_framework_api/inc/mcpixsearcherobserver.h
searchsrv_plat/cpix_framework_api/inc/rsearchserversession.h
searchsrv_plat/cpix_search_api/group/bld.inf
searchsrv_plat/cpix_search_api/inc/cpixcommon.h
searchsrv_plat/cpix_search_api/inc/cpixdocument.h
searchsrv_plat/cpix_search_api/inc/cpixdocumentfield.h
searchsrv_plat/cpix_search_api/inc/cpixsearcher.h
searchsrv_plat/cpix_search_api/inc/qcpixcommon.h
searchsrv_plat/cpix_search_api/inc/qcpixdocument.h
searchsrv_plat/cpix_search_api/inc/qcpixdocumentfield.h
searchsrv_plat/cpix_search_api/inc/qcpixsearcher.h
searchsrv_plat/cpix_utility_api/inc/cpixmaindefs.h
sis/cpixsearch.pkg.source
--- a/harvester/harvesterserver/src/charvesterserver.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/harvester/harvesterserver/src/charvesterserver.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -44,7 +44,7 @@
 //
 CHarvesterServer* CHarvesterServer::NewLC()
 	{
-	CHarvesterServer* HarvesterServer = new ( ELeave ) CHarvesterServer( EPriorityNormal );
+	CHarvesterServer* HarvesterServer = new ( ELeave ) CHarvesterServer( CActive::EPriorityStandard );
 	CleanupStack::PushL(HarvesterServer);
 	HarvesterServer->ConstructL();
 	return HarvesterServer;
@@ -57,6 +57,9 @@
 //
 void CHarvesterServer::ConstructL()
 	{
+    RProcess process;
+    process.SetPriority( EPriorityBackground );
+    process.Close();
 	iIndexingManager = CIndexingManager::NewL();
 	StartL(KHarvesterServerName);
 	}
@@ -143,7 +146,7 @@
 	CHarvesterServer* server = CHarvesterServer::NewLC();
 	
 	// Set thread priority
-	RProcess().SetPriority(EPriorityBackground);
+	//RProcess().SetPriority(EPriorityBackground);
 	
     // Rename the thread.
     User::RenameThread(KHarvesterServerName);        
--- a/layers.sysdef.xml	Tue Jul 06 15:30:04 2010 +0300
+++ b/layers.sysdef.xml	Wed Aug 18 10:53:26 2010 +0300
@@ -8,7 +8,7 @@
     	<module name="searchsrv">
 					<unit unitID="orgdo.searchsrv.bldinf" mrp="" bldFile="&layer_real_source_path;/group" name="searchsrv_bldinf"/>
 					<unit unitID="orgdo.searchsrv_harvestersrv.pro" mrp="" bldFile="&layer_real_source_path;/harvester/harvesterserver" name="harvestersrv_pro" proFile="harvester.pro"/>
-					<unit unitID="orgdo.searchsrv_qcpix.pro" mrp="" bldFile="&layer_real_source_path;/qcpix" name="searchsrv_pro" proFile="qcpix.pro"/>
+					<unit unitID="orgdo.searchsrv_qcpix.pro" mrp="" bldFile="&layer_real_source_path;/qcpix" name="searchsrv_pro" proFile="cpix.pro"/>
 		  </module>
     </layer>
   </systemModel>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/bwins/cpixsearchu.def	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,76 @@
+EXPORTS
+	?documentAsync@CpixSearcher@@QAEXH@Z @ 1 NONAME ; void CpixSearcher::documentAsync(int)
+	?docId@CpixDocument@@QBE?AVQString@@XZ @ 2 NONAME ; class QString CpixDocument::docId(void) const
+	?d_func@CpixDocumentField@@ABEPBVCpixDocumentFieldPrivate@@XZ @ 3 NONAME ; class CpixDocumentFieldPrivate const * CpixDocumentField::d_func(void) const
+	?metaObject@CpixDocument@@UBEPBUQMetaObject@@XZ @ 4 NONAME ; struct QMetaObject const * CpixDocument::metaObject(void) const
+	?cancelSearch@CpixSearcher@@QAEXXZ @ 5 NONAME ; void CpixSearcher::cancelSearch(void)
+	?tr@CpixDocumentField@@SA?AVQString@@PBD0H@Z @ 6 NONAME ; class QString CpixDocumentField::tr(char const *, char const *, int)
+	?handleDocument@CpixSearcher@@IAEXHPAVCpixDocument@@@Z @ 7 NONAME ; void CpixSearcher::handleDocument(int, class CpixDocument *)
+	?qt_metacall@CpixDocumentField@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 8 NONAME ; int CpixDocumentField::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacast@CpixSearcher@@UAEPAXPBD@Z @ 9 NONAME ; void * CpixSearcher::qt_metacast(char const *)
+	?handleSearchResults@CpixSearcher@@IAEXHH@Z @ 10 NONAME ; void CpixSearcher::handleSearchResults(int, int)
+	?searchAsync@CpixSearcher@@QAEXVQString@@0@Z @ 11 NONAME ; void CpixSearcher::searchAsync(class QString, class QString)
+	?tr@CpixDocument@@SA?AVQString@@PBD0@Z @ 12 NONAME ; class QString CpixDocument::tr(char const *, char const *)
+	??1CpixDocumentField@@UAE@XZ @ 13 NONAME ; CpixDocumentField::~CpixDocumentField(void)
+	?getStaticMetaObject@CpixDocument@@SAABUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const & CpixDocument::getStaticMetaObject(void)
+	??_ECpixDocument@@UAE@I@Z @ 15 NONAME ; CpixDocument::~CpixDocument(unsigned int)
+	?newInstance@CpixDocumentField@@SAPAV1@VQString@@0H@Z @ 16 NONAME ; class CpixDocumentField * CpixDocumentField::newInstance(class QString, class QString, int)
+	??_ECpixSearcher@@UAE@I@Z @ 17 NONAME ; CpixSearcher::~CpixSearcher(unsigned int)
+	?batchdocumentAsync@CpixSearcher@@QAEXHH@Z @ 18 NONAME ; void CpixSearcher::batchdocumentAsync(int, int)
+	?d_func@CpixDocument@@ABEPBVCpixDocumentPrivate@@XZ @ 19 NONAME ; class CpixDocumentPrivate const * CpixDocument::d_func(void) const
+	?trUtf8@CpixDocumentField@@SA?AVQString@@PBD0H@Z @ 20 NONAME ; class QString CpixDocumentField::trUtf8(char const *, char const *, int)
+	?getStaticMetaObject@CpixDocumentField@@SAABUQMetaObject@@XZ @ 21 NONAME ; struct QMetaObject const & CpixDocumentField::getStaticMetaObject(void)
+	?staticMetaObject@CpixDocument@@2UQMetaObject@@B @ 22 NONAME ; struct QMetaObject const CpixDocument::staticMetaObject
+	??_ECpixDocumentField@@UAE@I@Z @ 23 NONAME ; CpixDocumentField::~CpixDocumentField(unsigned int)
+	?config@CpixDocumentField@@QBEHXZ @ 24 NONAME ; int CpixDocumentField::config(void) const
+	?tr@CpixSearcher@@SA?AVQString@@PBD0H@Z @ 25 NONAME ; class QString CpixSearcher::tr(char const *, char const *, int)
+	?d_func@CpixDocument@@AAEPAVCpixDocumentPrivate@@XZ @ 26 NONAME ; class CpixDocumentPrivate * CpixDocument::d_func(void)
+	?trUtf8@CpixDocument@@SA?AVQString@@PBD0H@Z @ 27 NONAME ; class QString CpixDocument::trUtf8(char const *, char const *, int)
+	?setValue@CpixDocumentField@@QAEXVQString@@@Z @ 28 NONAME ; void CpixDocumentField::setValue(class QString)
+	?qt_metacall@CpixSearcher@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 29 NONAME ; int CpixSearcher::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@CpixDocument@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 30 NONAME ; int CpixDocument::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??1CpixDocument@@UAE@XZ @ 31 NONAME ; CpixDocument::~CpixDocument(void)
+	?handleDatabaseSet@CpixSearcher@@IAEXH@Z @ 32 NONAME ; void CpixSearcher::handleDatabaseSet(int)
+	??0CpixDocumentField@@AAE@VQString@@0H@Z @ 33 NONAME ; CpixDocumentField::CpixDocumentField(class QString, class QString, int)
+	?trUtf8@CpixSearcher@@SA?AVQString@@PBD0@Z @ 34 NONAME ; class QString CpixSearcher::trUtf8(char const *, char const *)
+	?newInstance@CpixDocument@@SAPAV1@XZ @ 35 NONAME ; class CpixDocument * CpixDocument::newInstance(void)
+	?setDatabaseAsync@CpixSearcher@@QAEXVQString@@@Z @ 36 NONAME ; void CpixSearcher::setDatabaseAsync(class QString)
+	?value@CpixDocumentField@@QBE?AVQString@@XZ @ 37 NONAME ; class QString CpixDocumentField::value(void) const
+	?batchdocument@CpixSearcher@@QAEPAPAVCpixDocument@@HAAHH@Z @ 38 NONAME ; class CpixDocument * * CpixSearcher::batchdocument(int, int &, int)
+	?name@CpixDocumentField@@QBE?AVQString@@XZ @ 39 NONAME ; class QString CpixDocumentField::name(void) const
+	?search@CpixSearcher@@QAEHVQString@@0@Z @ 40 NONAME ; int CpixSearcher::search(class QString, class QString)
+	?tr@CpixDocumentField@@SA?AVQString@@PBD0@Z @ 41 NONAME ; class QString CpixDocumentField::tr(char const *, char const *)
+	?staticMetaObject@CpixSearcher@@2UQMetaObject@@B @ 42 NONAME ; struct QMetaObject const CpixSearcher::staticMetaObject
+	??1CpixSearcher@@UAE@XZ @ 43 NONAME ; CpixSearcher::~CpixSearcher(void)
+	?excerpt@CpixDocument@@QBE?AVQString@@XZ @ 44 NONAME ; class QString CpixDocument::excerpt(void) const
+	?setName@CpixDocumentField@@QAEXVQString@@@Z @ 45 NONAME ; void CpixDocumentField::setName(class QString)
+	?setDocId@CpixDocument@@QAEXVQString@@@Z @ 46 NONAME ; void CpixDocument::setDocId(class QString)
+	?fieldCount@CpixDocument@@QBEHXZ @ 47 NONAME ; int CpixDocument::fieldCount(void) const
+	?baseAppClass@CpixDocument@@QBE?AVQString@@XZ @ 48 NONAME ; class QString CpixDocument::baseAppClass(void) const
+	?qt_metacast@CpixDocumentField@@UAEPAXPBD@Z @ 49 NONAME ; void * CpixDocumentField::qt_metacast(char const *)
+	?newInstance@CpixSearcher@@SAPAV1@XZ @ 50 NONAME ; class CpixSearcher * CpixSearcher::newInstance(void)
+	?field@CpixDocument@@QBEABVCpixDocumentField@@H@Z @ 51 NONAME ; class CpixDocumentField const & CpixDocument::field(int) const
+	?metaObject@CpixSearcher@@UBEPBUQMetaObject@@XZ @ 52 NONAME ; struct QMetaObject const * CpixSearcher::metaObject(void) const
+	?metaObject@CpixDocumentField@@UBEPBUQMetaObject@@XZ @ 53 NONAME ; struct QMetaObject const * CpixDocumentField::metaObject(void) const
+	?qt_metacast@CpixDocument@@UAEPAXPBD@Z @ 54 NONAME ; void * CpixDocument::qt_metacast(char const *)
+	?document@CpixSearcher@@QAEPAVCpixDocument@@H@Z @ 55 NONAME ; class CpixDocument * CpixSearcher::document(int)
+	?trUtf8@CpixDocument@@SA?AVQString@@PBD0@Z @ 56 NONAME ; class QString CpixDocument::trUtf8(char const *, char const *)
+	?setExcerpt@CpixDocument@@QAEXVQString@@@Z @ 57 NONAME ; void CpixDocument::setExcerpt(class QString)
+	?tr@CpixDocument@@SA?AVQString@@PBD0H@Z @ 58 NONAME ; class QString CpixDocument::tr(char const *, char const *, int)
+	?addField@CpixDocument@@QAEXVQString@@0H@Z @ 59 NONAME ; void CpixDocument::addField(class QString, class QString, int)
+	??0CpixDocument@@AAE@XZ @ 60 NONAME ; CpixDocument::CpixDocument(void)
+	?newInstance@CpixSearcher@@SAPAV1@VQString@@0@Z @ 61 NONAME ; class CpixSearcher * CpixSearcher::newInstance(class QString, class QString)
+	?setDatabase@CpixSearcher@@QAEXVQString@@@Z @ 62 NONAME ; void CpixSearcher::setDatabase(class QString)
+	?setBaseAppClass@CpixDocument@@QAEXVQString@@@Z @ 63 NONAME ; void CpixDocument::setBaseAppClass(class QString)
+	?trUtf8@CpixDocumentField@@SA?AVQString@@PBD0@Z @ 64 NONAME ; class QString CpixDocumentField::trUtf8(char const *, char const *)
+	?tr@CpixSearcher@@SA?AVQString@@PBD0@Z @ 65 NONAME ; class QString CpixSearcher::tr(char const *, char const *)
+	?getStaticMetaObject@CpixSearcher@@SAABUQMetaObject@@XZ @ 66 NONAME ; struct QMetaObject const & CpixSearcher::getStaticMetaObject(void)
+	?d_func@CpixDocumentField@@AAEPAVCpixDocumentFieldPrivate@@XZ @ 67 NONAME ; class CpixDocumentFieldPrivate * CpixDocumentField::d_func(void)
+	?d_func@CpixSearcher@@ABEPBVCpixSearcherPrivate@@XZ @ 68 NONAME ; class CpixSearcherPrivate const * CpixSearcher::d_func(void) const
+	?trUtf8@CpixSearcher@@SA?AVQString@@PBD0H@Z @ 69 NONAME ; class QString CpixSearcher::trUtf8(char const *, char const *, int)
+	??0CpixSearcher@@AAE@XZ @ 70 NONAME ; CpixSearcher::CpixSearcher(void)
+	?handleBatchDocuments@CpixSearcher@@IAEXHHPAPAVCpixDocument@@@Z @ 71 NONAME ; void CpixSearcher::handleBatchDocuments(int, int, class CpixDocument * *)
+	?d_func@CpixSearcher@@AAEPAVCpixSearcherPrivate@@XZ @ 72 NONAME ; class CpixSearcherPrivate * CpixSearcher::d_func(void)
+	?setConfig@CpixDocumentField@@QAEXH@Z @ 73 NONAME ; void CpixDocumentField::setConfig(int)
+	?staticMetaObject@CpixDocumentField@@2UQMetaObject@@B @ 74 NONAME ; struct QMetaObject const CpixDocumentField::staticMetaObject
+
--- a/qcpix/bwins/qcpixsearchclientu.def	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-EXPORTS
-	?setDocId@QCPixDocument@@QAEXVQString@@@Z @ 1 NONAME ; void QCPixDocument::setDocId(class QString)
-	?trUtf8@QCPixSearcher@@SA?AVQString@@PBD0H@Z @ 2 NONAME ; class QString QCPixSearcher::trUtf8(char const *, char const *, int)
-	?tr@QCPixDocument@@SA?AVQString@@PBD0H@Z @ 3 NONAME ; class QString QCPixDocument::tr(char const *, char const *, int)
-	?newInstance@QCPixDocument@@SAPAV1@XZ @ 4 NONAME ; class QCPixDocument * QCPixDocument::newInstance(void)
-	?tr@QCPixDocument@@SA?AVQString@@PBD0@Z @ 5 NONAME ; class QString QCPixDocument::tr(char const *, char const *)
-	?metaObject@QCPixDocumentField@@UBEPBUQMetaObject@@XZ @ 6 NONAME ; struct QMetaObject const * QCPixDocumentField::metaObject(void) const
-	?tr@QCPixDocumentField@@SA?AVQString@@PBD0H@Z @ 7 NONAME ; class QString QCPixDocumentField::tr(char const *, char const *, int)
-	?setExcerpt@QCPixDocument@@QAEXVQString@@@Z @ 8 NONAME ; void QCPixDocument::setExcerpt(class QString)
-	??_EQCPixDocumentField@@UAE@I@Z @ 9 NONAME ; QCPixDocumentField::~QCPixDocumentField(unsigned int)
-	?name@QCPixDocumentField@@QBE?AVQString@@XZ @ 10 NONAME ; class QString QCPixDocumentField::name(void) const
-	?setName@QCPixDocumentField@@QAEXVQString@@@Z @ 11 NONAME ; void QCPixDocumentField::setName(class QString)
-	?search@QCPixSearcher@@QAEHVQString@@0@Z @ 12 NONAME ; int QCPixSearcher::search(class QString, class QString)
-	?getDocument@QCPixSearcher@@QAEPAVQCPixDocument@@H@Z @ 13 NONAME ; class QCPixDocument * QCPixSearcher::getDocument(int)
-	?excerpt@QCPixDocument@@QBE?AVQString@@XZ @ 14 NONAME ; class QString QCPixDocument::excerpt(void) const
-	?d_func@QCPixDocument@@AAEPAVQCPixDocumentPrivate@@XZ @ 15 NONAME ; class QCPixDocumentPrivate * QCPixDocument::d_func(void)
-	?qt_metacast@QCPixSearcher@@UAEPAXPBD@Z @ 16 NONAME ; void * QCPixSearcher::qt_metacast(char const *)
-	?d_func@QCPixSearcher@@AAEPAVQCPixSearcherPrivate@@XZ @ 17 NONAME ; class QCPixSearcherPrivate * QCPixSearcher::d_func(void)
-	?setDatabaseAsync@QCPixSearcher@@QAEXVQString@@@Z @ 18 NONAME ; void QCPixSearcher::setDatabaseAsync(class QString)
-	?handleDocument@QCPixSearcher@@IAEXHPAVQCPixDocument@@@Z @ 19 NONAME ; void QCPixSearcher::handleDocument(int, class QCPixDocument *)
-	?newInstance@QCPixSearcher@@SAPAV1@XZ @ 20 NONAME ; class QCPixSearcher * QCPixSearcher::newInstance(void)
-	?qt_metacall@QCPixDocumentField@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 21 NONAME ; int QCPixDocumentField::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?cancelSearch@QCPixSearcher@@QAEXXZ @ 22 NONAME ; void QCPixSearcher::cancelSearch(void)
-	?getStaticMetaObject@QCPixDocumentField@@SAABUQMetaObject@@XZ @ 23 NONAME ; struct QMetaObject const & QCPixDocumentField::getStaticMetaObject(void)
-	?field@QCPixDocument@@QBEABVQCPixDocumentField@@H@Z @ 24 NONAME ; class QCPixDocumentField const & QCPixDocument::field(int) const
-	?handleDatabaseSet@QCPixSearcher@@IAEXH@Z @ 25 NONAME ; void QCPixSearcher::handleDatabaseSet(int)
-	?trUtf8@QCPixSearcher@@SA?AVQString@@PBD0@Z @ 26 NONAME ; class QString QCPixSearcher::trUtf8(char const *, char const *)
-	?metaObject@QCPixSearcher@@UBEPBUQMetaObject@@XZ @ 27 NONAME ; struct QMetaObject const * QCPixSearcher::metaObject(void) const
-	?d_func@QCPixDocument@@ABEPBVQCPixDocumentPrivate@@XZ @ 28 NONAME ; class QCPixDocumentPrivate const * QCPixDocument::d_func(void) const
-	?d_func@QCPixSearcher@@ABEPBVQCPixSearcherPrivate@@XZ @ 29 NONAME ; class QCPixSearcherPrivate const * QCPixSearcher::d_func(void) const
-	?setDatabase@QCPixSearcher@@QAEXVQString@@@Z @ 30 NONAME ; void QCPixSearcher::setDatabase(class QString)
-	?setValue@QCPixDocumentField@@QAEXVQString@@@Z @ 31 NONAME ; void QCPixDocumentField::setValue(class QString)
-	?trUtf8@QCPixDocument@@SA?AVQString@@PBD0H@Z @ 32 NONAME ; class QString QCPixDocument::trUtf8(char const *, char const *, int)
-	?getStaticMetaObject@QCPixSearcher@@SAABUQMetaObject@@XZ @ 33 NONAME ; struct QMetaObject const & QCPixSearcher::getStaticMetaObject(void)
-	?value@QCPixDocumentField@@QBE?AVQString@@XZ @ 34 NONAME ; class QString QCPixDocumentField::value(void) const
-	?handleSearchResults@QCPixSearcher@@IAEXHH@Z @ 35 NONAME ; void QCPixSearcher::handleSearchResults(int, int)
-	?tr@QCPixSearcher@@SA?AVQString@@PBD0H@Z @ 36 NONAME ; class QString QCPixSearcher::tr(char const *, char const *, int)
-	?getDocumentAsync@QCPixSearcher@@QAEXH@Z @ 37 NONAME ; void QCPixSearcher::getDocumentAsync(int)
-	?config@QCPixDocumentField@@QBEHXZ @ 38 NONAME ; int QCPixDocumentField::config(void) const
-	??_EQCPixDocument@@UAE@I@Z @ 39 NONAME ; QCPixDocument::~QCPixDocument(unsigned int)
-	??_EQCPixSearcher@@UAE@I@Z @ 40 NONAME ; QCPixSearcher::~QCPixSearcher(unsigned int)
-	??0QCPixSearcher@@AAE@VQString@@@Z @ 41 NONAME ; QCPixSearcher::QCPixSearcher(class QString)
-	?staticMetaObject@QCPixDocument@@2UQMetaObject@@B @ 42 NONAME ; struct QMetaObject const QCPixDocument::staticMetaObject
-	?fieldCount@QCPixDocument@@QBEHXZ @ 43 NONAME ; int QCPixDocument::fieldCount(void) const
-	?trUtf8@QCPixDocument@@SA?AVQString@@PBD0@Z @ 44 NONAME ; class QString QCPixDocument::trUtf8(char const *, char const *)
-	?baseAppClass@QCPixDocument@@QBE?AVQString@@XZ @ 45 NONAME ; class QString QCPixDocument::baseAppClass(void) const
-	??1QCPixDocument@@UAE@XZ @ 46 NONAME ; QCPixDocument::~QCPixDocument(void)
-	?d_func@QCPixDocumentField@@AAEPAVQCPixDocumentFieldPrivate@@XZ @ 47 NONAME ; class QCPixDocumentFieldPrivate * QCPixDocumentField::d_func(void)
-	?tr@QCPixSearcher@@SA?AVQString@@PBD0@Z @ 48 NONAME ; class QString QCPixSearcher::tr(char const *, char const *)
-	?d_func@QCPixDocumentField@@ABEPBVQCPixDocumentFieldPrivate@@XZ @ 49 NONAME ; class QCPixDocumentFieldPrivate const * QCPixDocumentField::d_func(void) const
-	??0QCPixDocumentField@@AAE@VQString@@0H@Z @ 50 NONAME ; QCPixDocumentField::QCPixDocumentField(class QString, class QString, int)
-	?trUtf8@QCPixDocumentField@@SA?AVQString@@PBD0H@Z @ 51 NONAME ; class QString QCPixDocumentField::trUtf8(char const *, char const *, int)
-	?qt_metacast@QCPixDocument@@UAEPAXPBD@Z @ 52 NONAME ; void * QCPixDocument::qt_metacast(char const *)
-	?searchAsync@QCPixSearcher@@QAEXVQString@@0@Z @ 53 NONAME ; void QCPixSearcher::searchAsync(class QString, class QString)
-	?staticMetaObject@QCPixDocumentField@@2UQMetaObject@@B @ 54 NONAME ; struct QMetaObject const QCPixDocumentField::staticMetaObject
-	?setConfig@QCPixDocumentField@@QAEXH@Z @ 55 NONAME ; void QCPixDocumentField::setConfig(int)
-	?getStaticMetaObject@QCPixDocument@@SAABUQMetaObject@@XZ @ 56 NONAME ; struct QMetaObject const & QCPixDocument::getStaticMetaObject(void)
-	?tr@QCPixDocumentField@@SA?AVQString@@PBD0@Z @ 57 NONAME ; class QString QCPixDocumentField::tr(char const *, char const *)
-	?docId@QCPixDocument@@QBE?AVQString@@XZ @ 58 NONAME ; class QString QCPixDocument::docId(void) const
-	?metaObject@QCPixDocument@@UBEPBUQMetaObject@@XZ @ 59 NONAME ; struct QMetaObject const * QCPixDocument::metaObject(void) const
-	?newInstance@QCPixSearcher@@SAPAV1@VQString@@0@Z @ 60 NONAME ; class QCPixSearcher * QCPixSearcher::newInstance(class QString, class QString)
-	?qt_metacall@QCPixDocument@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 61 NONAME ; int QCPixDocument::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@QCPixSearcher@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 62 NONAME ; int QCPixSearcher::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacast@QCPixDocumentField@@UAEPAXPBD@Z @ 63 NONAME ; void * QCPixDocumentField::qt_metacast(char const *)
-	??0QCPixDocument@@AAE@XZ @ 64 NONAME ; QCPixDocument::QCPixDocument(void)
-	?newInstance@QCPixDocumentField@@SAPAV1@VQString@@0H@Z @ 65 NONAME ; class QCPixDocumentField * QCPixDocumentField::newInstance(class QString, class QString, int)
-	??1QCPixSearcher@@UAE@XZ @ 66 NONAME ; QCPixSearcher::~QCPixSearcher(void)
-	?staticMetaObject@QCPixSearcher@@2UQMetaObject@@B @ 67 NONAME ; struct QMetaObject const QCPixSearcher::staticMetaObject
-	?setBaseAppClass@QCPixDocument@@QAEXVQString@@@Z @ 68 NONAME ; void QCPixDocument::setBaseAppClass(class QString)
-	??1QCPixDocumentField@@UAE@XZ @ 69 NONAME ; QCPixDocumentField::~QCPixDocumentField(void)
-	?addField@QCPixDocument@@QAEXVQString@@0H@Z @ 70 NONAME ; void QCPixDocument::addField(class QString, class QString, int)
-	?trUtf8@QCPixDocumentField@@SA?AVQString@@PBD0@Z @ 71 NONAME ; class QString QCPixDocumentField::trUtf8(char const *, char const *)
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/cpix.pro	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,23 @@
+#
+# 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: 
+#
+
+TEMPLATE = subdirs
+CONFIG += ordered
+SUBDIRS +=  cpixsearch.pro
+            #Removing test components            
+	    			#tsrc/SampleSearch/SampleSearch.pro \
+            #tsrc/orbitsearch/orbitsearch.pro \
+            #tsrc/qtcpixunittests/qtcpixunittests.pro
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/cpixsearch.pro	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,68 @@
+#
+# 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: 
+#
+
+TEMPLATE = lib
+TARGET = cpixsearch 
+QT        += core
+QT        -= gui 
+
+INCLUDEPATH += ../s60/searchclient/inc
+INCLUDEPATH += ../cfg
+
+HEADERS   += ../searchsrv_plat/cpix_search_api/inc/cpixcommon.h \
+             ../searchsrv_plat/cpix_search_api/inc/cpixdocument.h \
+             ../searchsrv_plat/cpix_search_api/inc/cpixdocumentfield.h \
+             ../searchsrv_plat/cpix_search_api/inc/cpixsearcher.h 
+
+SOURCES   += src/cpixdocument.cpp \ 
+             src/cpixdocumentfield.cpp \
+             src/cpixsearcher.cpp
+
+DEFINES += BUILD_DLL
+
+symbian{
+    TARGET.CAPABILITY = CAP_GENERAL_DLL -DRM
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.UID3 = 0xE3B89364
+    TARGET.VID = VID_DEFAULT
+    VERSION = 1.0.0
+    LIBS += -leuser -lcpixsearchclient
+    
+    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+    
+    HEADERS +=  src/platform/s60/inc/cpixdocumentprivate.h \
+                src/platform/s60/inc/cpixdocumentfieldprivate.h \
+                src/platform/s60/inc/cpixsearcherprivate.h \
+                src/platform/s60/inc/cpixutils.h 
+        
+    SOURCES +=  src/platform/s60/src/cpixdocumentfieldprivate.cpp \
+                src/platform/s60/src/cpixsearcherprivate.cpp \
+                src/platform/s60/src/cpixutils.cpp
+    
+    qcpixsearchclient.sources += /epoc32/release/armv5/urel/cpixsearch.dll
+    qcpixsearchclient.path = /sys/bin
+    DEPLOYMENT += cpixsearch
+    
+    defFileBlock =                    \
+    "$${LITERAL_HASH}if defined(WINSCW)"    \
+    "DEFFILE bwins/"                        \
+    "$${LITERAL_HASH}else"                  \
+    "DEFFILE eabi/"                         \
+    "$${LITERAL_HASH}endif"                 \
+    
+    MMP_RULES += defFileBlock
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/eabi/cpixsearchu.def	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,70 @@
+EXPORTS
+	_ZN12CpixDocument10setExcerptE7QString @ 1 NONAME
+	_ZN12CpixDocument11newInstanceEv @ 2 NONAME
+	_ZN12CpixDocument11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
+	_ZN12CpixDocument11qt_metacastEPKc @ 4 NONAME
+	_ZN12CpixDocument15setBaseAppClassE7QString @ 5 NONAME
+	_ZN12CpixDocument16staticMetaObjectE @ 6 NONAME DATA 16
+	_ZN12CpixDocument19getStaticMetaObjectEv @ 7 NONAME
+	_ZN12CpixDocument8addFieldE7QStringS0_i @ 8 NONAME
+	_ZN12CpixDocument8setDocIdE7QString @ 9 NONAME
+	_ZN12CpixDocumentC1Ev @ 10 NONAME
+	_ZN12CpixDocumentC2Ev @ 11 NONAME
+	_ZN12CpixDocumentD0Ev @ 12 NONAME
+	_ZN12CpixDocumentD1Ev @ 13 NONAME
+	_ZN12CpixDocumentD2Ev @ 14 NONAME
+	_ZN12CpixSearcher11newInstanceE7QStringS0_ @ 15 NONAME
+	_ZN12CpixSearcher11newInstanceEv @ 16 NONAME
+	_ZN12CpixSearcher11qt_metacallEN11QMetaObject4CallEiPPv @ 17 NONAME
+	_ZN12CpixSearcher11qt_metacastEPKc @ 18 NONAME
+	_ZN12CpixSearcher11searchAsyncE7QStringS0_ @ 19 NONAME
+	_ZN12CpixSearcher11setDatabaseE7QString @ 20 NONAME
+	_ZN12CpixSearcher12cancelSearchEv @ 21 NONAME
+	_ZN12CpixSearcher13batchdocumentEiRii @ 22 NONAME
+	_ZN12CpixSearcher13documentAsyncEi @ 23 NONAME
+	_ZN12CpixSearcher14handleDocumentEiP12CpixDocument @ 24 NONAME
+	_ZN12CpixSearcher16setDatabaseAsyncE7QString @ 25 NONAME
+	_ZN12CpixSearcher16staticMetaObjectE @ 26 NONAME DATA 16
+	_ZN12CpixSearcher17handleDatabaseSetEi @ 27 NONAME
+	_ZN12CpixSearcher18batchdocumentAsyncEii @ 28 NONAME
+	_ZN12CpixSearcher19getStaticMetaObjectEv @ 29 NONAME
+	_ZN12CpixSearcher19handleSearchResultsEii @ 30 NONAME
+	_ZN12CpixSearcher20handleBatchDocumentsEiiPP12CpixDocument @ 31 NONAME
+	_ZN12CpixSearcher6searchE7QStringS0_ @ 32 NONAME
+	_ZN12CpixSearcher8documentEi @ 33 NONAME
+	_ZN12CpixSearcherC1Ev @ 34 NONAME
+	_ZN12CpixSearcherC2Ev @ 35 NONAME
+	_ZN12CpixSearcherD0Ev @ 36 NONAME
+	_ZN12CpixSearcherD1Ev @ 37 NONAME
+	_ZN12CpixSearcherD2Ev @ 38 NONAME
+	_ZN17CpixDocumentField11newInstanceE7QStringS0_i @ 39 NONAME
+	_ZN17CpixDocumentField11qt_metacallEN11QMetaObject4CallEiPPv @ 40 NONAME
+	_ZN17CpixDocumentField11qt_metacastEPKc @ 41 NONAME
+	_ZN17CpixDocumentField16staticMetaObjectE @ 42 NONAME DATA 16
+	_ZN17CpixDocumentField19getStaticMetaObjectEv @ 43 NONAME
+	_ZN17CpixDocumentField7setNameE7QString @ 44 NONAME
+	_ZN17CpixDocumentField8setValueE7QString @ 45 NONAME
+	_ZN17CpixDocumentField9setConfigEi @ 46 NONAME
+	_ZN17CpixDocumentFieldC1E7QStringS0_i @ 47 NONAME
+	_ZN17CpixDocumentFieldC2E7QStringS0_i @ 48 NONAME
+	_ZN17CpixDocumentFieldD0Ev @ 49 NONAME
+	_ZN17CpixDocumentFieldD1Ev @ 50 NONAME
+	_ZN17CpixDocumentFieldD2Ev @ 51 NONAME
+	_ZNK12CpixDocument10fieldCountEv @ 52 NONAME
+	_ZNK12CpixDocument10metaObjectEv @ 53 NONAME
+	_ZNK12CpixDocument12baseAppClassEv @ 54 NONAME
+	_ZNK12CpixDocument5docIdEv @ 55 NONAME
+	_ZNK12CpixDocument5fieldEi @ 56 NONAME
+	_ZNK12CpixDocument7excerptEv @ 57 NONAME
+	_ZNK12CpixSearcher10metaObjectEv @ 58 NONAME
+	_ZNK17CpixDocumentField10metaObjectEv @ 59 NONAME
+	_ZNK17CpixDocumentField4nameEv @ 60 NONAME
+	_ZNK17CpixDocumentField5valueEv @ 61 NONAME
+	_ZNK17CpixDocumentField6configEv @ 62 NONAME
+	_ZTI12CpixDocument @ 63 NONAME
+	_ZTI12CpixSearcher @ 64 NONAME
+	_ZTI17CpixDocumentField @ 65 NONAME
+	_ZTV12CpixDocument @ 66 NONAME
+	_ZTV12CpixSearcher @ 67 NONAME
+	_ZTV17CpixDocumentField @ 68 NONAME
+
--- a/qcpix/eabi/qcpixsearchclientu.def	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-EXPORTS
-	_ZN13QCPixDocument10setExcerptE7QString @ 1 NONAME
-	_ZN13QCPixDocument11newInstanceEv @ 2 NONAME
-	_ZN13QCPixDocument11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
-	_ZN13QCPixDocument11qt_metacastEPKc @ 4 NONAME
-	_ZN13QCPixDocument15setBaseAppClassE7QString @ 5 NONAME
-	_ZN13QCPixDocument16staticMetaObjectE @ 6 NONAME DATA 16
-	_ZN13QCPixDocument19getStaticMetaObjectEv @ 7 NONAME
-	_ZN13QCPixDocument8addFieldE7QStringS0_i @ 8 NONAME
-	_ZN13QCPixDocument8setDocIdE7QString @ 9 NONAME
-	_ZN13QCPixDocumentC1Ev @ 10 NONAME
-	_ZN13QCPixDocumentC2Ev @ 11 NONAME
-	_ZN13QCPixDocumentD0Ev @ 12 NONAME
-	_ZN13QCPixDocumentD1Ev @ 13 NONAME
-	_ZN13QCPixDocumentD2Ev @ 14 NONAME
-	_ZN13QCPixSearcher11getDocumentEi @ 15 NONAME
-	_ZN13QCPixSearcher11newInstanceE7QStringS0_ @ 16 NONAME
-	_ZN13QCPixSearcher11newInstanceEv @ 17 NONAME
-	_ZN13QCPixSearcher11qt_metacallEN11QMetaObject4CallEiPPv @ 18 NONAME
-	_ZN13QCPixSearcher11qt_metacastEPKc @ 19 NONAME
-	_ZN13QCPixSearcher11searchAsyncE7QStringS0_ @ 20 NONAME
-	_ZN13QCPixSearcher11setDatabaseE7QString @ 21 NONAME
-	_ZN13QCPixSearcher12cancelSearchEv @ 22 NONAME
-	_ZN13QCPixSearcher14handleDocumentEiP13QCPixDocument @ 23 NONAME
-	_ZN13QCPixSearcher16getDocumentAsyncEi @ 24 NONAME
-	_ZN13QCPixSearcher16setDatabaseAsyncE7QString @ 25 NONAME
-	_ZN13QCPixSearcher16staticMetaObjectE @ 26 NONAME DATA 16
-	_ZN13QCPixSearcher17handleDatabaseSetEi @ 27 NONAME
-	_ZN13QCPixSearcher19getStaticMetaObjectEv @ 28 NONAME
-	_ZN13QCPixSearcher19handleSearchResultsEii @ 29 NONAME
-	_ZN13QCPixSearcher6searchE7QStringS0_ @ 30 NONAME
-	_ZN13QCPixSearcherC1E7QString @ 31 NONAME
-	_ZN13QCPixSearcherC2E7QString @ 32 NONAME
-	_ZN13QCPixSearcherD0Ev @ 33 NONAME
-	_ZN13QCPixSearcherD1Ev @ 34 NONAME
-	_ZN13QCPixSearcherD2Ev @ 35 NONAME
-	_ZN18QCPixDocumentField11newInstanceE7QStringS0_i @ 36 NONAME
-	_ZN18QCPixDocumentField11qt_metacallEN11QMetaObject4CallEiPPv @ 37 NONAME
-	_ZN18QCPixDocumentField11qt_metacastEPKc @ 38 NONAME
-	_ZN18QCPixDocumentField16staticMetaObjectE @ 39 NONAME DATA 16
-	_ZN18QCPixDocumentField19getStaticMetaObjectEv @ 40 NONAME
-	_ZN18QCPixDocumentField7setNameE7QString @ 41 NONAME
-	_ZN18QCPixDocumentField8setValueE7QString @ 42 NONAME
-	_ZN18QCPixDocumentField9setConfigEi @ 43 NONAME
-	_ZN18QCPixDocumentFieldC1E7QStringS0_i @ 44 NONAME
-	_ZN18QCPixDocumentFieldC2E7QStringS0_i @ 45 NONAME
-	_ZN18QCPixDocumentFieldD0Ev @ 46 NONAME
-	_ZN18QCPixDocumentFieldD1Ev @ 47 NONAME
-	_ZN18QCPixDocumentFieldD2Ev @ 48 NONAME
-	_ZNK13QCPixDocument10fieldCountEv @ 49 NONAME
-	_ZNK13QCPixDocument10metaObjectEv @ 50 NONAME
-	_ZNK13QCPixDocument12baseAppClassEv @ 51 NONAME
-	_ZNK13QCPixDocument5docIdEv @ 52 NONAME
-	_ZNK13QCPixDocument5fieldEi @ 53 NONAME
-	_ZNK13QCPixDocument7excerptEv @ 54 NONAME
-	_ZNK13QCPixSearcher10metaObjectEv @ 55 NONAME
-	_ZNK18QCPixDocumentField10metaObjectEv @ 56 NONAME
-	_ZNK18QCPixDocumentField4nameEv @ 57 NONAME
-	_ZNK18QCPixDocumentField5valueEv @ 58 NONAME
-	_ZNK18QCPixDocumentField6configEv @ 59 NONAME
-	_ZTI13QCPixDocument @ 60 NONAME
-	_ZTI13QCPixSearcher @ 61 NONAME
-	_ZTI18QCPixDocumentField @ 62 NONAME
-	_ZTV13QCPixDocument @ 63 NONAME
-	_ZTV13QCPixSearcher @ 64 NONAME
-	_ZTV18QCPixDocumentField @ 65 NONAME
-
--- a/qcpix/qcpix.pro	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-#
-# 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: 
-#
-
-TEMPLATE = subdirs
-CONFIG += ordered
-SUBDIRS +=  qcpixsearchclient.pro \
-            tsrc/SampleSearch/SampleSearch.pro \
-            tsrc/orbitsearch/orbitsearch.pro \
-            tsrc/qtcpixunittests/qtcpixunittests.pro
--- a/qcpix/qcpixsearchclient.pro	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-#
-# 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: 
-#
-
-TEMPLATE = lib
-TARGET = qcpixsearchclient 
-QT        += core
-QT        -= gui 
-
-INCLUDEPATH += ../s60/searchclient/inc
-INCLUDEPATH += ../cfg
-
-HEADERS   += ../searchsrv_plat/cpix_search_api/inc/qcpixcommon.h \
-             ../searchsrv_plat/cpix_search_api/inc/qcpixdocument.h \
-             ../searchsrv_plat/cpix_search_api/inc/qcpixdocumentfield.h \
-             ../searchsrv_plat/cpix_search_api/inc/qcpixsearcher.h 
-
-SOURCES   += src/qcpixdocument.cpp \ 
-             src/qcpixdocumentfield.cpp \
-             src/qcpixsearcher.cpp
-
-DEFINES += BUILD_DLL
-
-symbian{
-    TARGET.CAPABILITY = CAP_GENERAL_DLL -DRM
-    TARGET.EPOCALLOWDLLDATA = 1
-    TARGET.UID3 = 0xE3B89364
-    TARGET.VID = VID_DEFAULT
-    VERSION = 1.0.0
-    LIBS += -leuser -lcpixsearchclient
-    
-    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-    
-    HEADERS +=  src/platform/s60/inc/qcpixdocumentprivate.h \
-                src/platform/s60/inc/qcpixdocumentfieldprivate.h \
-                src/platform/s60/inc/qcpixsearcherprivate.h \
-                src/platform/s60/inc/qcpixutils.h 
-        
-    SOURCES +=  src/platform/s60/src/qcpixdocumentfieldprivate.cpp \
-                src/platform/s60/src/qcpixsearcherprivate.cpp \
-                src/platform/s60/src/qcpixutils.cpp
-    
-    qcpixsearchclient.sources += /epoc32/release/armv5/urel/qcpixsearchclient.dll
-    qcpixsearchclient.path = /sys/bin
-    DEPLOYMENT += qcpixsearchclient
-    
-    defFileBlock =                    \
-    "$${LITERAL_HASH}if defined(WINSCW)"    \
-    "DEFFILE bwins/"                        \
-    "$${LITERAL_HASH}else"                  \
-    "DEFFILE eabi/"                         \
-    "$${LITERAL_HASH}endif"                 \
-    
-    MMP_RULES += defFileBlock
-
-}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/cpixdocument.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,95 @@
+/*
+* 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 <cpixdocument.h>
+#include <cpixdocumentfield.h>
+#include "cpixdocumentprivate.h"
+
+/**
+ * Note: Code in this file should never throw OR leak symbian exceptions.
+ * Convert all leaves to C++ exceptions.
+ */
+
+CpixDocument::CpixDocument()
+    :iPvtImpl( new CpixDocumentPrivate() )
+    {
+    }
+
+CpixDocument* CpixDocument::newInstance()
+    {
+    CpixDocument* doc = NULL;
+    try{
+    doc = new CpixDocument();
+    }
+    catch(...){
+        delete doc;
+        return NULL;
+    }
+    return doc;
+    }
+
+CpixDocument::~CpixDocument()
+    {
+    delete iPvtImpl;
+    }
+
+QString CpixDocument::docId() const
+   {
+   return iPvtImpl->iDocId;
+   }
+
+QString CpixDocument::excerpt() const
+    {
+    return iPvtImpl->iExcerpt;
+    }
+
+QString CpixDocument::baseAppClass() const
+    {
+    return iPvtImpl->iBaseAppClass;
+    }
+
+const CpixDocumentField& CpixDocument::field( const int aIndex ) const
+    {
+    return *(iPvtImpl->iFields.at(aIndex));
+    }
+
+int CpixDocument::fieldCount() const
+    {
+    return  iPvtImpl->iFields.count();
+    }
+
+void CpixDocument::setDocId(const QString aDocId)
+    {
+    iPvtImpl->iDocId = aDocId;
+    }
+
+void CpixDocument::setExcerpt(const QString aExcerpt)
+    {
+    iPvtImpl->iExcerpt = aExcerpt;
+    }
+
+void CpixDocument::setBaseAppClass(const QString aBaseAppClass)
+    {
+    iPvtImpl->iBaseAppClass = aBaseAppClass;
+    }
+
+void CpixDocument::addField(const QString aName, const QString aValue, const int aConfig)
+    {
+    iPvtImpl->iFields.append( CpixDocumentField::newInstance( aName, aValue, aConfig ) );
+    }
+
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/cpixdocumentfield.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,79 @@
+/*
+* 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 <cpixdocumentfield.h>
+#include "cpixdocumentfieldprivate.h"
+
+/**
+ * Note: Code in this file should never throw OR leak symbian exceptions.
+ * Convert all leaves to C++ exceptions.
+ */
+
+CpixDocumentField::CpixDocumentField( const QString aName, const QString aValue, const int aConfig )
+    :iPvtImpl( new CpixDocumentFieldPrivate(aName,aValue,aConfig) )
+    {
+    }
+
+CpixDocumentField* CpixDocumentField::newInstance( const QString aName, const QString aValue, const int aConfig )
+    {
+    CpixDocumentField* field = NULL;
+    try{
+        field = new CpixDocumentField( aName, aValue, aConfig );
+    }
+    catch(...){
+        delete field;
+        return NULL;
+    }
+    return field;
+    }
+
+CpixDocumentField::~CpixDocumentField()
+    {
+    delete iPvtImpl;
+    }
+
+QString CpixDocumentField::name() const
+    {
+    return iPvtImpl->iName;
+    }
+
+QString CpixDocumentField::value() const
+    {
+    return iPvtImpl->iValue;
+    }
+
+int CpixDocumentField::config() const
+    {
+    return iPvtImpl->iConfig;
+    }
+    
+void CpixDocumentField::setName(const QString aName)
+    {
+    iPvtImpl->iName = aName;
+    }
+
+void CpixDocumentField::setValue(const QString aValue)
+    {
+    iPvtImpl->iValue = aValue;
+    }
+
+void CpixDocumentField::setConfig(const int aConfig)
+    {
+    iPvtImpl->iConfig = aConfig;
+    }
+
+//End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/cpixsearcher.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,164 @@
+/*
+* 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 <cpixsearcher.h>
+#include <cpixcommon.h>
+#include <CCPixSearcher.h>
+#include <CSearchDocument.h>
+
+#include "cpixsearcherprivate.h"
+#include "cpixutils.h"
+
+/**
+ * Note: Code in this file should never throw OR leak symbian exceptions.
+ * Convert all leaves to C++ exceptions.
+ */
+
+CpixSearcher::CpixSearcher()
+    :iPvtImpl( new CpixSearcherPrivate( this ) )
+    {
+    PERF_SEARCH_START_TIMER
+    PERF_GETDOC_START_TIMER
+    }
+
+CpixSearcher::~CpixSearcher()
+    {
+    delete iPvtImpl;
+    }
+
+CpixSearcher* CpixSearcher::newInstance()
+    {
+    CpixSearcher* searcher = NULL;
+    try{
+        searcher = new CpixSearcher();
+        searcher->iPvtImpl->Construct( QString() );
+    }
+    catch(...){
+        delete searcher;
+        return NULL;
+    }
+    return searcher;
+    }
+
+CpixSearcher* CpixSearcher::newInstance( QString aBaseAppClass, QString aDefaultSearchField )
+    {
+    CpixSearcher* searcher = NULL;
+    try{
+        searcher = new CpixSearcher();
+        searcher->iPvtImpl->Construct( aDefaultSearchField );
+        searcher->setDatabase( aBaseAppClass );
+    }
+    catch(...){
+        delete searcher->iPvtImpl;
+        return NULL;
+    }
+    return searcher;
+    }
+
+void CpixSearcher::setDatabase( QString aBaseAppClass )
+    {
+    QT_TRAP_THROWING( 
+    TBuf<KMaxStringLength> baseAppClass( aBaseAppClass.utf16() );
+    iPvtImpl->iSearcher->OpenDatabaseL( baseAppClass ) ;
+    ); //end of QT_TRAP_THROWING
+    }
+
+void CpixSearcher::setDatabaseAsync( QString aBaseAppClass )
+    {
+    QT_TRAP_THROWING( 
+    TBuf<KMaxStringLength> baseAppClass( aBaseAppClass.utf16() );
+    iPvtImpl->iSearcher->OpenDatabaseL( *iPvtImpl, baseAppClass ) 
+    ); //end of QT_TRAP_THROWING
+    }
+
+//The following bit of code is common to two functions - this helps to avoid duplication.
+//However, macros make debugging difficult - so, if you need to debug, copy the code below
+//and replace the macro, fix the code and bring the fix back to the macro.
+#define CREATE_SEARCH_VARS \
+        HBufC* searchString = HBufC::NewL( aSearchString.length() + 1 );                    \
+        TPtrC searchStringPtr( reinterpret_cast<const TUint16*>( aSearchString.utf16() ) ); \
+        searchString->Des().Copy( searchStringPtr );                                        \
+                                                                                            \
+        HBufC* defaultSearchField = HBufC::NewL( aDefaultSearchField.length() + 1 );        \
+        TPtrC aDefaultSearchFieldPtr( reinterpret_cast<const TUint16*>( aDefaultSearchField.utf16() ) );\
+        defaultSearchField->Des().Copy( aDefaultSearchFieldPtr );                           
+
+#define DELETE_SEARCH_VARS  \
+        delete searchString;\
+        delete defaultSearchField;
+
+int CpixSearcher::search( QString aSearchString, QString aDefaultSearchField )
+    {
+    PERF_SEARCH_RESTART_TIMER
+    int tmp = 0;
+    QT_TRAP_THROWING(
+        CREATE_SEARCH_VARS;
+        //ideally would have had just the following single line:
+        //QT_TRAP_THROWING( return iPvtImpl->iSearcher->SearchL( searchString, defaultSearchField ) );
+        //But the RCVT compiler throws up warnings. The following is just to suppress those warnings.
+        tmp = iPvtImpl->iSearcher->SearchL( *searchString, *defaultSearchField );
+        DELETE_SEARCH_VARS;
+    ); //QT_TRAP_THROWING
+    
+    PERF_SEARCH_ENDLOG
+    return tmp;
+    }
+
+void CpixSearcher::searchAsync( QString aSearchString, QString aDefaultSearchField )
+    {
+    PERF_TIME_NOW("Async search start")
+    QT_TRAP_THROWING(
+        CREATE_SEARCH_VARS;
+        iPvtImpl->iSearcher->SearchL( *iPvtImpl, *searchString, *defaultSearchField );
+        DELETE_SEARCH_VARS;
+    ); //QT_TRAP_THROWING
+    }
+
+CpixDocument* CpixSearcher::document( int aIndex )
+    {
+    PERF_GETDOC_RESTART_TIMER
+    CpixDocument* tmp = 0;
+    QT_TRAP_THROWING( tmp = CpixDocFromCSearchDocument( iPvtImpl->iSearcher->GetDocumentL( aIndex ) ) );
+    PERF_GETDOC_ENDLOG
+    return tmp;
+    }
+	
+CpixDocument** CpixSearcher::batchdocument( int aIndex,int& aReturnDoc, int aCount )
+    {
+    PERF_GETDOC_RESTART_TIMER
+    CpixDocument** tmp = 0;
+    QT_TRAP_THROWING( tmp = CpixBatchDocFromCSearchDocument( aReturnDoc, iPvtImpl->iSearcher->GetBatchDocumentL( aIndex, aReturnDoc, aCount )) );
+    PERF_GETDOC_ENDLOG
+    return tmp;
+    }
+
+void CpixSearcher::documentAsync( int aIndex )
+    {
+    PERF_TIME_NOW("Async get document start")
+    QT_TRAP_THROWING( iPvtImpl->iSearcher->GetDocumentL( aIndex, *iPvtImpl ) );
+    }
+	
+void CpixSearcher::batchdocumentAsync( int aIndex, int aCount )
+    {
+    PERF_TIME_NOW("Async batch get document start")
+    QT_TRAP_THROWING( iPvtImpl->iSearcher->GetBatchDocumentL( aIndex, *iPvtImpl, aCount ) );
+    }
+
+void CpixSearcher::cancelSearch()
+    {
+    iPvtImpl->iSearcher->Cancel();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/platform/s60/inc/cpixdocumentfieldprivate.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* 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: 
+*
+*/
+
+#ifndef _CPIXDOCUMENTFIELDPVTIMPL_H
+#define _CPIXDOCUMENTFIELDPVTIMPL_H
+
+#include <QObject>
+
+class CpixDocumentFieldPrivate: public QObject
+{
+public:
+    CpixDocumentFieldPrivate(const QString aName,const QString aValue,const int aConfig);
+    ~CpixDocumentFieldPrivate();
+    QString iName;
+    QString iValue;
+    int iConfig;
+};
+
+#endif // _CPIXDOCUMENTFIELDPVTIMPL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/platform/s60/inc/cpixdocumentprivate.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* 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: 
+*
+*/
+
+#ifndef _CPIXDOCUMENTPVTIMPL_H
+#define _CPIXDOCUMENTPVTIMPL_H
+
+#include <QString>
+#include <QList>
+#include "cpixdocumentfield.h"
+
+//Forward Declarations
+class CpixDocumentField;
+
+class CpixDocumentPrivate: public QObject
+{
+public:
+    QString iDocId;
+    QString iExcerpt;
+    QString iBaseAppClass;
+    QList< CpixDocumentField* > iFields;
+};
+
+#endif //_CPIXDOCUMENTPVTIMPL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/platform/s60/inc/cpixsearcherprivate.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* 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: 
+*
+*/
+
+#ifndef _CPIXSEARCHER_PVTIMPL_H
+#define _CPIXSEARCHER_PVTIMPL_H
+
+#include <e32base.h>
+#include <QObject>
+#include <MCPixDatabaseObserver.h>
+#include <MCPixSearcherObserver.h>
+#include <RSearchServerSession.h>
+
+//forward Declarations
+class CCPixSearcher;
+class CDocument;
+class RSearchServerSession;
+class CpixSearcher;
+
+class CpixSearcherPrivate :  public CBase, //can this be made QObject?
+							 public MCPixSearchRequestObserver ,
+							 public MCPixNextDocumentRequestObserver,
+							 public MCPixOpenDatabaseRequestObserver,
+							 public MCPixSetAnalyzerRequestObserver
+{
+public:
+    CpixSearcherPrivate(QObject* aParent);
+    void Construct( QString aDefaultSearchField );
+    ~CpixSearcherPrivate();
+
+public :
+    void HandleSearchResultsL(TInt aError, TInt aEstimatedResultCount); //from MCPixSearchRequestObserver
+    void HandleDocumentL(TInt aError, CSearchDocument* aDocument); // from MCPixNextDocumentRequestObserver
+	void HandleBatchDocumentL(TInt aError,TInt aRetCount, CSearchDocument** aDocument); // from MCPixNextDocumentRequestObserver
+    void HandleOpenDatabaseResultL( TInt aError ); //MCPixOpenDatabaseRequestObserver
+    void HandleSetAnalyzerResultL( TInt aError ); //MCPixSetAnalyzerRequestObserver
+
+public: //Keep these to avoid wrapper functions.
+    RSearchServerSession iSearchSession; //owned
+    CCPixSearcher* iSearcher; //owned
+    CpixSearcher* iSearchParent; //not owned.
+};
+
+#endif //_CPIXSEARCHER_PVTIMPL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/platform/s60/inc/cpixutils.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* 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: 
+*
+*/
+
+#ifndef CPIXUTILS_H_
+#define CPIXUTILS_H_
+
+/**
+ * Helper to convert symbian descriptor to QString.
+ * @param aDesc the descriptor to be converted to QString.
+ * @return QString representation of the descriptor.
+ */
+QString QStringFromDescriptor( const TDesC& aDesc );
+
+/**
+ * Gets a QCPixDocument from CSearchDocument
+ * @param aDoc CSearchDocument to be converted to QCPixDocument. Takes ownership of aDoc.
+ * @return QCPixDocument representation of aDoc. Ownership transferred to caller.
+ */
+CpixDocument* CpixDocFromCSearchDocument( CSearchDocument* aDoc );
+
+/**
+ * Gets array of QCPixDocuments from batch of CSearchDocuments
+ * @param aDoc batch of CSearchDocuments to be converted to QCPixDocuments. Takes ownership of aDoc.
+ * @param aReturnDoc number of CSearchDocuments in the aDoc
+ * @return QCPixDocument representation of aDoc. Ownership transferred to caller.
+ */
+CpixDocument** CpixBatchDocFromCSearchDocument(TInt aReturnDoc,  CSearchDocument** aDoc );
+
+#endif /* QCPIXUTILS_H_ */
--- a/qcpix/src/platform/s60/inc/qcpixdocumentfieldprivate.h	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* 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: 
-*
-*/
-
-#ifndef _QCPIXDOCUMENTFIELDPVTIMPL_H
-#define _QCPIXDOCUMENTFIELDPVTIMPL_H
-
-#include <QObject>
-
-class QCPixDocumentFieldPrivate: public QObject
-{
-public:
-    QCPixDocumentFieldPrivate(const QString aName,const QString aValue,const int aConfig);
-    ~QCPixDocumentFieldPrivate();
-    QString iName;
-    QString iValue;
-    int iConfig;
-};
-
-#endif // _QCPIXDOCUMENTFIELDPVTIMPL_H
--- a/qcpix/src/platform/s60/inc/qcpixdocumentprivate.h	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* 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: 
-*
-*/
-
-#ifndef _QCPIXDOCUMENTPVTIMPL_H
-#define _QCPIXDOCUMENTPVTIMPL_H
-
-#include <QString>
-#include <QList>
-#include "qcpixdocumentfield.h"
-
-//Forward Declarations
-class QCPixDocumentField;
-
-class QCPixDocumentPrivate: public QObject
-{
-public:
-    QString iDocId;
-    QString iExcerpt;
-    QString iBaseAppClass;
-    QList< QCPixDocumentField* > iFields;
-};
-
-#endif //_QCPIXDOCUMENTPVTIMPL_H
--- a/qcpix/src/platform/s60/inc/qcpixsearcherprivate.h	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* 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: 
-*
-*/
-
-#ifndef _QCPIXSEARCHER_PVTIMPL_H
-#define _QCPIXSEARCHER_PVTIMPL_H
-
-#include <e32base.h>
-#include <QObject>
-#include <MCPixDatabaseObserver.h>
-#include <MCPixSearcherObserver.h>
-#include <RSearchServerSession.h>
-
-//forward Declarations
-class CCPixSearcher;
-class CDocument;
-class RSearchServerSession;
-class QCPixSearcher;
-
-class QCPixSearcherPrivate : public CBase, //can this be made QObject?
-							 public MCPixSearchRequestObserver ,
-							 public MCPixNextDocumentRequestObserver,
-							 public MCPixOpenDatabaseRequestObserver,
-							 public MCPixSetAnalyzerRequestObserver
-{
-public:
-    QCPixSearcherPrivate(QObject* aParent);
-    void Construct( QString aDefaultSearchField );
-    ~QCPixSearcherPrivate();
-
-public :
-    void HandleSearchResultsL(TInt aError, TInt aEstimatedResultCount); //from MCPixSearchRequestObserver
-    void HandleDocumentL(TInt aError, CSearchDocument* aDocument); // from MCPixNextDocumentRequestObserver
-    void HandleOpenDatabaseResultL( TInt aError ); //MCPixOpenDatabaseRequestObserver
-    void HandleSetAnalyzerResultL( TInt aError ); //MCPixSetAnalyzerRequestObserver
-
-public: //Keep these to avoid wrapper functions.
-    RSearchServerSession iSearchSession; //owned
-    CCPixSearcher* iSearcher; //owned
-    QCPixSearcher* iSearchParent; //not owned.
-};
-
-#endif //_QCPIXSEARCHER_PVTIMPL_H
--- a/qcpix/src/platform/s60/inc/qcpixutils.h	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
-* 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: 
-*
-*/
-
-#ifndef QCPIXUTILS_H_
-#define QCPIXUTILS_H_
-
-/**
- * Helper to convert symbian descriptor to QString.
- * @param aDesc the descriptor to be converted to QString.
- * @return QString representation of the descriptor.
- */
-QString QStringFromDescriptor( const TDesC& aDesc );
-
-/**
- * Gets a QCPixDocument from CSearchDocument
- * @param aDoc CSearchDocument to be converted to QCPixDocument. Takes ownership of aDoc.
- * @return QCPixDocument representation of aDoc. Ownership transferred to caller.
- */
-QCPixDocument* QCPixDocFromCPixDoc( CSearchDocument* aDoc );
-
-#endif /* QCPIXUTILS_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/platform/s60/src/cpixdocumentfieldprivate.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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 "cpixdocumentfieldprivate.h"
+
+CpixDocumentFieldPrivate::CpixDocumentFieldPrivate(const QString aName,const QString aValue,const int aConfig)
+    {
+    iName = aName;
+    iValue = aValue;
+    iConfig = aConfig;
+    }
+
+CpixDocumentFieldPrivate::~CpixDocumentFieldPrivate()
+    {
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/platform/s60/src/cpixsearcherprivate.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* 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 "cpixsearcherprivate.h"
+#include <cpixsearcher.h>
+#include <CCPixSearcher.h>
+#include <cpixcommon.h>
+
+#include "cpixutils.h"
+
+/**
+ * Note: Code in this file should never throw OR leak symbian exceptions.
+ * Convert all leaves to C++ exceptions.
+ */
+
+CpixSearcherPrivate::CpixSearcherPrivate( QObject* aParent )
+    {
+    iSearchParent = reinterpret_cast<CpixSearcher*>( aParent );
+    }
+
+void CpixSearcherPrivate::Construct( QString aDefaultSearchField )
+    {
+    qt_symbian_throwIfError( iSearchSession.Connect() );//throw exception on error.
+    QT_TRAP_THROWING(
+    TBuf<KMaxStringLength> defaultSearchField( aDefaultSearchField.utf16() );
+    iSearcher = CCPixSearcher::NewL( iSearchSession, defaultSearchField  ) 
+    ); //end of QT_TRAP_THROWING
+    }
+
+CpixSearcherPrivate::~CpixSearcherPrivate()
+    {
+    delete iSearcher;
+    //iSearchSession.Close();
+    }
+
+void CpixSearcherPrivate::HandleSearchResultsL(TInt aError, TInt aEstimatedResultCount)
+    {
+    PERF_TIME_NOW("Async search complete");
+    emit iSearchParent->handleSearchResults( aError, aEstimatedResultCount );
+    }
+
+void CpixSearcherPrivate::HandleDocumentL(TInt aError, CSearchDocument* aDocument)
+    {
+    PERF_TIME_NOW("Async get document complete")
+    emit iSearchParent->handleDocument( aError, CpixDocFromCSearchDocument( aDocument ) );
+    }
+	
+void CpixSearcherPrivate::HandleBatchDocumentL(TInt aError,TInt aRetCount, CSearchDocument** aDocument)
+    {
+    PERF_TIME_NOW("Async get batch document complete")
+    emit iSearchParent->handleBatchDocuments( aError, aRetCount,CpixBatchDocFromCSearchDocument( aRetCount, aDocument) );
+    }
+
+void CpixSearcherPrivate::HandleOpenDatabaseResultL( TInt aError )
+    {
+    emit iSearchParent->handleDatabaseSet( aError );
+    }
+
+void CpixSearcherPrivate::HandleSetAnalyzerResultL( TInt /*aError*/ )
+    {
+    //what is to be done here?
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/src/platform/s60/src/cpixutils.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* 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 <cpixdocument.h>
+#include <CSearchDocument.h>
+#include <CDocumentField.h>
+#include "cpixutils.h"
+
+QString QStringFromDescriptor( const TDesC& aDesc )
+    {
+    return QString::fromUtf16( aDesc.Ptr(), aDesc.Length() );
+    }
+
+CpixDocument* CpixDocFromCSearchDocument( CSearchDocument* aDoc )
+    {
+    if( aDoc == NULL ) return NULL;
+
+    CpixDocument* cpixDoc = CpixDocument::newInstance();
+    cpixDoc->setBaseAppClass( QStringFromDescriptor( aDoc->AppClass() ) );
+    cpixDoc->setDocId( QStringFromDescriptor( aDoc->Id() ) );
+    cpixDoc->setExcerpt( QStringFromDescriptor( aDoc->Excerpt() ) );
+    
+    int fieldCount = aDoc->FieldCount();
+    for( int i=0; i<fieldCount; i++ ){
+        const CDocumentField& field = aDoc->Field( i );
+        cpixDoc->addField( QStringFromDescriptor( field.Name() ), QStringFromDescriptor( field.Value() ), field.Config() );
+    }
+
+    delete aDoc;
+    return cpixDoc;
+    }
+	
+CpixDocument** CpixBatchDocFromCSearchDocument( TInt aReturnDoc, CSearchDocument** aDoc )
+    {
+    if( aDoc == NULL ) return NULL;
+    CpixDocument** cpixBatchDocs = NULL;
+    cpixBatchDocs = (CpixDocument**)malloc ( sizeof(CpixDocument*) * (aReturnDoc));
+    for (int count = 0; count < aReturnDoc; count++)
+        {        
+        CpixDocument* cpixDoc = CpixDocument::newInstance();
+        cpixDoc->setBaseAppClass( QStringFromDescriptor( aDoc[count]->AppClass() ) );
+        cpixDoc->setDocId( QStringFromDescriptor( aDoc[count]->Id() ) );
+        cpixDoc->setExcerpt( QStringFromDescriptor( aDoc[count]->Excerpt() ) );
+    
+        int fieldCount = aDoc[count]->FieldCount();
+        for( int i=0; i< fieldCount; i++ )
+            {
+            const CDocumentField& field = aDoc[count]->Field( i );
+            cpixDoc->addField( QStringFromDescriptor( field.Name() ), QStringFromDescriptor( field.Value() ), field.Config() );
+            }
+        cpixBatchDocs[count]= cpixDoc;
+        delete aDoc[count];
+        aDoc[count] = NULL;
+        }
+    delete aDoc;
+    return cpixBatchDocs;
+    }
--- a/qcpix/src/platform/s60/src/qcpixdocumentfieldprivate.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/*
-* 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 "qcpixdocumentfieldprivate.h"
-
-QCPixDocumentFieldPrivate::QCPixDocumentFieldPrivate(const QString aName,const QString aValue,const int aConfig)
-    {
-    iName = aName;
-    iValue = aValue;
-    iConfig = aConfig;
-    }
-
-QCPixDocumentFieldPrivate::~QCPixDocumentFieldPrivate()
-    {
-    }
--- a/qcpix/src/platform/s60/src/qcpixsearcherprivate.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/*
-* 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 "qcpixsearcherprivate.h"
-#include <qcpixsearcher.h>
-#include <CCPixSearcher.h>
-#include <qcpixcommon.h>
-
-#include "qcpixutils.h"
-
-/**
- * Note: Code in this file should never throw OR leak symbian exceptions.
- * Convert all leaves to C++ exceptions.
- */
-
-QCPixSearcherPrivate::QCPixSearcherPrivate( QObject* aParent )
-    {
-    iSearchParent = reinterpret_cast<QCPixSearcher*>( aParent );
-    }
-
-void QCPixSearcherPrivate::Construct( QString aDefaultSearchField )
-    {
-    qt_symbian_throwIfError( iSearchSession.Connect() );//throw exception on error.
-    QT_TRAP_THROWING(
-    TBuf<KMaxStringLength> defaultSearchField( aDefaultSearchField.utf16() );
-    iSearcher = CCPixSearcher::NewL( iSearchSession, defaultSearchField  ) 
-    ); //end of QT_TRAP_THROWING
-    }
-
-QCPixSearcherPrivate::~QCPixSearcherPrivate()
-    {
-    delete iSearcher;
-    //iSearchSession.Close();
-    }
-
-void QCPixSearcherPrivate::HandleSearchResultsL(TInt aError, TInt aEstimatedResultCount)
-    {
-    PERF_TIME_NOW("Async search complete");
-    emit iSearchParent->handleSearchResults( aError, aEstimatedResultCount );
-    }
-
-void QCPixSearcherPrivate::HandleDocumentL(TInt aError, CSearchDocument* aDocument)
-    {
-    PERF_TIME_NOW("Async get document complete")
-    emit iSearchParent->handleDocument( aError, QCPixDocFromCPixDoc( aDocument ) );
-    }
-
-void QCPixSearcherPrivate::HandleOpenDatabaseResultL( TInt aError )
-    {
-    emit iSearchParent->handleDatabaseSet( aError );
-    }
-
-void QCPixSearcherPrivate::HandleSetAnalyzerResultL( TInt /*aError*/ )
-    {
-    //what is to be done here?
-    }
--- a/qcpix/src/platform/s60/src/qcpixutils.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* 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 <qcpixdocument.h>
-#include <CSearchDocument.h>
-#include <CDocumentField.h>
-#include "qcpixutils.h"
-
-QString QStringFromDescriptor( const TDesC& aDesc )
-    {
-    return QString::fromUtf16( aDesc.Ptr(), aDesc.Length() );
-    }
-
-QCPixDocument* QCPixDocFromCPixDoc( CSearchDocument* aDoc )
-    {
-    if( aDoc == NULL ) return NULL;
-
-    QCPixDocument* cpixDoc = QCPixDocument::newInstance();
-    cpixDoc->setBaseAppClass( QStringFromDescriptor( aDoc->AppClass() ) );
-    cpixDoc->setDocId( QStringFromDescriptor( aDoc->Id() ) );
-    cpixDoc->setExcerpt( QStringFromDescriptor( aDoc->Excerpt() ) );
-    
-    int fieldCount = aDoc->FieldCount();
-    for( int i=0; i<fieldCount; i++ ){
-        const CDocumentField& field = aDoc->Field( i );
-        cpixDoc->addField( QStringFromDescriptor( field.Name() ), QStringFromDescriptor( field.Value() ), field.Config() );
-    }
-
-    delete aDoc;
-    return cpixDoc;
-    }
--- a/qcpix/src/qcpixdocument.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* 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 <qcpixdocument.h>
-#include <qcpixdocumentfield.h>
-#include "qcpixdocumentprivate.h"
-
-/**
- * Note: Code in this file should never throw OR leak symbian exceptions.
- * Convert all leaves to C++ exceptions.
- */
-
-QCPixDocument::QCPixDocument()
-    :iPvtImpl( new QCPixDocumentPrivate() )
-    {
-    }
-
-QCPixDocument* QCPixDocument::newInstance()
-    {
-    QCPixDocument* doc = NULL;
-    try{
-    doc = new QCPixDocument();
-    }
-    catch(...){
-        delete doc;
-        return NULL;
-    }
-    return doc;
-    }
-
-QCPixDocument::~QCPixDocument()
-    {
-    delete iPvtImpl;
-    }
-
-QString QCPixDocument::docId() const
-   {
-   return iPvtImpl->iDocId;
-   }
-
-QString QCPixDocument::excerpt() const
-    {
-    return iPvtImpl->iExcerpt;
-    }
-
-QString QCPixDocument::baseAppClass() const
-    {
-    return iPvtImpl->iBaseAppClass;
-    }
-
-const QCPixDocumentField& QCPixDocument::field( const int aIndex ) const
-    {
-    return *(iPvtImpl->iFields.at(aIndex));
-    }
-
-int QCPixDocument::fieldCount() const
-    {
-    return  iPvtImpl->iFields.count();
-    }
-
-void QCPixDocument::setDocId(const QString aDocId)
-    {
-    iPvtImpl->iDocId = aDocId;
-    }
-
-void QCPixDocument::setExcerpt(const QString aExcerpt)
-    {
-    iPvtImpl->iExcerpt = aExcerpt;
-    }
-
-void QCPixDocument::setBaseAppClass(const QString aBaseAppClass)
-    {
-    iPvtImpl->iBaseAppClass = aBaseAppClass;
-    }
-
-void QCPixDocument::addField(const QString aName, const QString aValue, const int aConfig)
-    {
-    iPvtImpl->iFields.append( QCPixDocumentField::newInstance( aName, aValue, aConfig ) );
-    }
-
-//End of File
--- a/qcpix/src/qcpixdocumentfield.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
-* 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 <qcpixdocumentfield.h>
-#include "qcpixdocumentfieldprivate.h"
-
-/**
- * Note: Code in this file should never throw OR leak symbian exceptions.
- * Convert all leaves to C++ exceptions.
- */
-
-QCPixDocumentField::QCPixDocumentField( const QString aName, const QString aValue, const int aConfig )
-    :iPvtImpl( new QCPixDocumentFieldPrivate(aName,aValue,aConfig) )
-    {
-    }
-
-QCPixDocumentField* QCPixDocumentField::newInstance( const QString aName, const QString aValue, const int aConfig )
-    {
-    QCPixDocumentField* field = NULL;
-    try{
-        field = new QCPixDocumentField( aName, aValue, aConfig );
-    }
-    catch(...){
-        delete field;
-        return NULL;
-    }
-    return field;
-    }
-
-QCPixDocumentField::~QCPixDocumentField()
-    {
-    delete iPvtImpl;
-    }
-
-QString QCPixDocumentField::name() const
-    {
-    return iPvtImpl->iName;
-    }
-
-QString QCPixDocumentField::value() const
-    {
-    return iPvtImpl->iValue;
-    }
-
-int QCPixDocumentField::config() const
-    {
-    return iPvtImpl->iConfig;
-    }
-    
-void QCPixDocumentField::setName(const QString aName)
-    {
-    iPvtImpl->iName = aName;
-    }
-
-void QCPixDocumentField::setValue(const QString aValue)
-    {
-    iPvtImpl->iValue = aValue;
-    }
-
-void QCPixDocumentField::setConfig(const int aConfig)
-    {
-    iPvtImpl->iConfig = aConfig;
-    }
-
-//End of File
--- a/qcpix/src/qcpixsearcher.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/*
-* 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 <qcpixsearcher.h>
-#include <qcpixcommon.h>
-#include <CCPixSearcher.h>
-#include <CSearchDocument.h>
-
-#include "qcpixsearcherprivate.h"
-#include "qcpixutils.h"
-
-/**
- * Note: Code in this file should never throw OR leak symbian exceptions.
- * Convert all leaves to C++ exceptions.
- */
-
-QCPixSearcher::QCPixSearcher( QString aDefaultSearchField )
-    :iPvtImpl( new QCPixSearcherPrivate( this ) )
-    {
-    PERF_SEARCH_START_TIMER
-    PERF_GETDOC_START_TIMER
-    }
-
-QCPixSearcher::~QCPixSearcher()
-    {
-    delete iPvtImpl;
-    }
-
-QCPixSearcher* QCPixSearcher::newInstance()
-    {
-    QCPixSearcher* searcher = NULL;
-    try{
-        searcher = new QCPixSearcher( QString() );
-        searcher->iPvtImpl->Construct( QString() );
-    }
-    catch(...){
-        delete searcher;
-        return NULL;
-    }
-    return searcher;
-    }
-
-QCPixSearcher* QCPixSearcher::newInstance( QString aBaseAppClass, QString aDefaultSearchField )
-    {
-    QCPixSearcher* searcher = NULL;
-    try{
-        searcher = new QCPixSearcher( aDefaultSearchField );
-        searcher->iPvtImpl->Construct( aDefaultSearchField );
-        searcher->setDatabase( aBaseAppClass );
-    }
-    catch(...){
-        delete searcher->iPvtImpl;
-        return NULL;
-    }
-    return searcher;
-    }
-
-void QCPixSearcher::setDatabase( QString aBaseAppClass )
-    {
-    QT_TRAP_THROWING( 
-    TBuf<KMaxStringLength> baseAppClass( aBaseAppClass.utf16() );
-    iPvtImpl->iSearcher->OpenDatabaseL( baseAppClass ) 
-    ); //end of QT_TRAP_THROWING
-    }
-
-void QCPixSearcher::setDatabaseAsync( QString aBaseAppClass )
-    {
-    QT_TRAP_THROWING( 
-    TBuf<KMaxStringLength> baseAppClass( aBaseAppClass.utf16() );
-    iPvtImpl->iSearcher->OpenDatabaseL( *iPvtImpl, baseAppClass ) 
-    ); //end of QT_TRAP_THROWING
-    }
-
-//The following bit of code is common to two functions - this helps to avoid duplication.
-//However, macros make debugging difficult - so, if you need to debug, copy the code below
-//and replace the macro, fix the code and bring the fix back to the macro.
-#define CREATE_SEARCH_VARS \
-        HBufC* searchString = HBufC::NewL( aSearchString.length() + 1 );                    \
-        TPtrC searchStringPtr( reinterpret_cast<const TUint16*>( aSearchString.utf16() ) ); \
-        searchString->Des().Copy( searchStringPtr );                                        \
-                                                                                            \
-        HBufC* defaultSearchField = HBufC::NewL( aDefaultSearchField.length() + 1 );        \
-        TPtrC aDefaultSearchFieldPtr( reinterpret_cast<const TUint16*>( aDefaultSearchField.utf16() ) );\
-        defaultSearchField->Des().Copy( aDefaultSearchFieldPtr );                           
-
-#define DELETE_SEARCH_VARS  \
-        delete searchString;\
-        delete defaultSearchField;
-
-int QCPixSearcher::search( QString aSearchString, QString aDefaultSearchField )
-    {
-    PERF_SEARCH_RESTART_TIMER
-    int tmp = 0;
-    QT_TRAP_THROWING(
-        CREATE_SEARCH_VARS;
-        //ideally would have had just the following single line:
-        //QT_TRAP_THROWING( return iPvtImpl->iSearcher->SearchL( searchString, defaultSearchField ) );
-        //But the RCVT compiler throws up warnings. The following is just to suppress those warnings.
-        tmp = iPvtImpl->iSearcher->SearchL( *searchString, *defaultSearchField );
-        DELETE_SEARCH_VARS;
-    ); //QT_TRAP_THROWING
-    
-    PERF_SEARCH_ENDLOG
-    return tmp;
-    }
-
-void QCPixSearcher::searchAsync( QString aSearchString, QString aDefaultSearchField )
-    {
-    PERF_TIME_NOW("Async search start")
-    QT_TRAP_THROWING(
-        CREATE_SEARCH_VARS;
-        iPvtImpl->iSearcher->SearchL( *iPvtImpl, *searchString, *defaultSearchField );
-        DELETE_SEARCH_VARS;
-    ); //QT_TRAP_THROWING
-    }
-
-QCPixDocument* QCPixSearcher::getDocument( int aIndex )
-    {
-    PERF_GETDOC_RESTART_TIMER
-    QCPixDocument* tmp = 0;
-    QT_TRAP_THROWING( tmp = QCPixDocFromCPixDoc( iPvtImpl->iSearcher->GetDocumentL( aIndex ) ) );
-    PERF_GETDOC_ENDLOG
-    return tmp;
-    }
-
-void QCPixSearcher::getDocumentAsync( int aIndex )
-    {
-    PERF_TIME_NOW("Async get document start")
-    QT_TRAP_THROWING( iPvtImpl->iSearcher->GetDocumentL( aIndex, *iPvtImpl ) );
-    }
-
-void QCPixSearcher::cancelSearch()
-    {
-    iPvtImpl->iSearcher->Cancel();
-    }
--- a/qcpix/tsrc/orbitsearch/orbitsearch.pro	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/orbitsearch/orbitsearch.pro	Wed Aug 18 10:53:26 2010 +0300
@@ -21,7 +21,7 @@
 QT += gui
 QT += sql 
 CONFIG += qtestlib
-LIBS += -lqcpixsearchclient -lxqservice
+LIBS += -lcpixsearch -lxqservice
 
 HEADERS   +=    uicontrols.h searchhelper.h testsearch.h testci.h
 SOURCES   +=    OrbitSearch_reg.rss \
--- a/qcpix/tsrc/orbitsearch/searchhelper.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/orbitsearch/searchhelper.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -16,12 +16,12 @@
 */
 
 #include "searchhelper.h"
-#include <qcpixdocument.h>
+#include <cpixdocument.h>
 
-SearchHelper::SearchHelper(HbLineEdit* searchBx, HbPushButton* searchBtn, HbTextEdit* searchRslt)
-    :searchBox( searchBx ), searchButton( searchBtn ), resultsBox( searchRslt )
+SearchHelper::SearchHelper(HbLineEdit* searchBx, HbPushButton* searchBtn, HbTextEdit* searchRslt, HbLineEdit* indexBox, HbLineEdit* countBox, HbPushButton* getdocbutton)
+    :searchBox( searchBx ), searchButton( searchBtn ), resultsBox( searchRslt ), indexBox(indexBox), countBox(countBox), getdocbutton(getdocbutton)
     {
-    searcher = QCPixSearcher::newInstance("root","_aggregate");
+    searcher = CpixSearcher::newInstance("root","_aggregate");
     resultsBox->setReadOnly( true );
     resultsBox->setPlainText("Initialized");
     searchTime.start();
@@ -35,42 +35,84 @@
 void SearchHelper::doSearch()
     {
     resultsBox->setPlainText("Search button clicked!");
-    
-    int hits = 0;
-    
-    QString resultString("");
+    resultString = "";
     resultsBox->setPlainText( resultString );
     searchTime.restart();
     QString searchString;
+    
+#if PREFIX_SEARCH
     searchString = "$prefix(\""; 
     searchString += searchBox->text();
     searchString += "\")";
 
-#if STAR_SEARCH
+#elif STAR_SEARCH
     searchString += searchBox->text();
     searchString += "*";
 #elif NO_STAR_SEARCH
+    searchString = searchBox->text();
         ;//do nothing
 #endif
-    
-    hits = searcher->search( searchString );
+    iHits = 0;
+    iHits = searcher->search( searchString );
 
     if (searchTime.elapsed() >= 0)
         resultString = "SearchTime: " + QString().setNum( searchTime.elapsed() ) + " ms \r\n";
-    resultString += "Hits: " + QString().setNum( hits ) + "\r\n";
+    resultString += "Hits: " + QString().setNum( iHits ) + "\r\n";
     resultsBox->setPlainText( resultString );
 
 #if !DONT_SHOW_RESULTS
-    if( hits > 0 )
+    if( iHits > 0 )
         {
-        QCPixDocument* temp = NULL;
-        int docCount = 0;
-        do{
-          temp = searcher->getDocument( docCount++ );
-          resultString += temp->baseAppClass() + " " + temp->docId() + " " + temp->excerpt() + "\r\n\r\n";
-          delete temp;
-          }while( hits > docCount );
+        resultString += "Enter Index,count values and press GetDocs button to get the results";
+        resultString +="\r\n";
+        resultsBox->setPlainText( resultString );
         }
-    resultsBox->setPlainText( resultString );
 #endif //DONT_SHOW_RESULTS
     }
+
+void SearchHelper::showdocs()
+    {
+    QString indexstring = indexBox->text();
+    bool ok = false;
+    int index = indexstring.toInt(&ok);
+    if (ok)
+        {
+        QString countstring = countBox->text();
+        int count = countstring.toInt(&ok);
+        if (ok)
+            {
+            if ( index <= iHits )
+                {
+                if ( count == 1)
+                    {
+                    //call the normal get doc API
+                    CpixDocument* temp = NULL;
+                    do{
+                      temp = searcher->document( index++ );
+                      resultString += temp->baseAppClass() + " " + temp->docId() + " " + temp->excerpt() + "\r\n\r\n";
+                      delete temp;
+                      }while( iHits > index );
+                    }
+                else
+                    {
+                    //call batch doc API
+                    CpixDocument** temp = NULL;
+                    do{
+                       int retdoccount = 0;
+                       temp = searcher->batchdocument(index,retdoccount,count);
+                       for (int i=0; i< retdoccount; i++)
+                           {
+                           resultString += temp[i]->baseAppClass() + " " + temp[i]->docId() + " " + temp[i]->excerpt() + "\r\n\r\n";
+                           delete temp[i];
+                           }
+                        delete temp;
+                        temp = NULL;
+                        index += retdoccount;
+                    }while (iHits > index);
+                    }
+                }
+            else resultString += " Requested document is out of range";
+            resultsBox->setPlainText( resultString );
+            }
+        }
+    }
--- a/qcpix/tsrc/orbitsearch/searchhelper.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/orbitsearch/searchhelper.h	Wed Aug 18 10:53:26 2010 +0300
@@ -20,23 +20,26 @@
 
 #include <QObject>
 #include "uicontrols.h"
-#include <qcpixsearcher.h>
+#include <cpixsearcher.h>
 #include <QTime>
 
 class SearchHelper: public QObject
     {
 Q_OBJECT
 public:
-    SearchHelper(HbLineEdit*, HbPushButton*, HbTextEdit* );
+    SearchHelper(HbLineEdit*, HbPushButton*, HbTextEdit*, HbLineEdit*, HbLineEdit*, HbPushButton* );
     ~SearchHelper();
 
 public slots:
     void doSearch();
+    void showdocs();
     
 private:
     ORBIT_SEARCH_CONTROLS //Not owned.
-    QCPixSearcher* searcher;//Owned
+    CpixSearcher* searcher;//Owned
     QTime searchTime;
+    QString resultString;
+    int iHits;
     };
 
 #endif /* HELPER_H_ */
--- a/qcpix/tsrc/orbitsearch/testsearch.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/orbitsearch/testsearch.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -48,11 +48,30 @@
     searchButton = new HbPushButton( "Search" );
     layout->addItem( searchButton );
     
+    QGraphicsLinearLayout *getdoclayout = new QGraphicsLinearLayout;
+    getdoclayout->setOrientation(Qt::Horizontal);
+    
+    indexBox = new HbLineEdit;
+    indexBox->setInputMethodHints(Qt::ImhPreferNumbers);
+    
+    countBox = new HbLineEdit;
+    countBox->setInputMethodHints(Qt::ImhPreferNumbers);    
+    
+    getdocbutton = new HbPushButton("GetDocs");
+    
+#if !DONT_SHOW_RESULTS
+    getdoclayout->addItem(indexBox);
+    getdoclayout->addItem(countBox);
+    getdoclayout->addItem(getdocbutton);
+    layout->addItem(getdoclayout);
+#endif //!DONT_SHOW_RESULTS
+    
     resultsBox = new HbTextEdit;
     layout->addItem( resultsBox );
     
-    SearchHelper* sh = new SearchHelper(searchBox, searchButton, resultsBox);  
+    SearchHelper* sh = new SearchHelper(searchBox, searchButton, resultsBox, indexBox, countBox,getdocbutton);  
     QObject::connect( searchButton, SIGNAL( clicked() ), sh, SLOT(doSearch()) );
+    QObject::connect( getdocbutton, SIGNAL( clicked() ), sh, SLOT(showdocs()) );
     
     w->setLayout( layout );
     BigScreen->addView ( w );
--- a/qcpix/tsrc/orbitsearch/uicontrols.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/orbitsearch/uicontrols.h	Wed Aug 18 10:53:26 2010 +0300
@@ -33,12 +33,12 @@
 #define STAR_SEARCH 0
 
 //Vanilla search. Send search string to engine "as-is". 
-#define NO_STAR_SEARCH 0
+#define NO_STAR_SEARCH 1
 
 //Enable the prefix_search macro to enable Prefix query feature. This will add $prefix to the query 
 //string.
 
-#define PREFIX_SEARCH 1
+#define PREFIX_SEARCH 0
 
 //If you dont want to see results, define this flag.
 #define DONT_SHOW_RESULTS 0
@@ -48,6 +48,9 @@
 #define ORBIT_SEARCH_CONTROLS   \
     HbLineEdit* searchBox;      \
     HbPushButton* searchButton; \
+    HbLineEdit* indexBox;      \
+    HbLineEdit* countBox;      \
+    HbPushButton* getdocbutton;      \
     HbTextEdit* resultsBox;
 
 #endif /* UICONTROLS_H_ */
--- a/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocument.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocument.h	Wed Aug 18 10:53:26 2010 +0300
@@ -20,8 +20,8 @@
 
 #include <QtTest/QtTest>
 
-class QCPixDocument;
-class QCPixDocumentTester: public QObject
+class CpixDocument;
+class CpixDocumentTester: public QObject
     {
     Q_OBJECT
 private slots:
@@ -40,7 +40,7 @@
     void cleanup();
     
 private:
-    QCPixDocument* iDoc;
+    CpixDocument* iDoc;
     };
 
 #endif /* UT_QTCPIXDOCUMENT_H_ */
--- a/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocumentfield.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixdocumentfield.h	Wed Aug 18 10:53:26 2010 +0300
@@ -20,8 +20,8 @@
 
 #include <QtTest/QtTest>
 
-class QCPixDocumentField;
-class QCPixDocumentFieldTester: public QObject
+class CpixDocumentField;
+class CpixDocumentFieldTester: public QObject
     {
     Q_OBJECT
 private slots:
@@ -38,7 +38,7 @@
     void cleanup();
     
 private:
-    QCPixDocumentField* iField;
+    CpixDocumentField* iField;
     };
 
 
--- a/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixsearcher.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/qtcpixunittests/inc/ut_qtcpixsearcher.h	Wed Aug 18 10:53:26 2010 +0300
@@ -20,16 +20,16 @@
 
 #include <QtTest/QtTest>
 
-class QCPixSearcher;
-class QCPixDocument;
+class CpixSearcher;
+class CpixDocument;
 
-class TestQCPixSearcher: public QObject
+class TestCpixSearcher: public QObject
     {
     Q_OBJECT
 public slots:
     void HandleDatabaseSet(int aError);
     void HandleSearchResults(int aError, int aEstimatedCount);
-    void HandleDocument(int aError, QCPixDocument* aDoc);
+    void HandleDocument(int aError, CpixDocument* aDoc);
 
 private slots:
     void testNewInstance();
@@ -51,8 +51,8 @@
     void cleanup();
    
 private:
-    QCPixSearcher* iSearcher;
-    QCPixDocument* iDoc;
+    CpixSearcher* iSearcher;
+    CpixDocument* iDoc;
     bool iHandleSetDatabaseComplete;
     int iHandleSearchResultsComplete;
     bool iHandleGetDocumentComplete;
--- a/qcpix/tsrc/qtcpixunittests/qtcpixunittests.pro	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/qtcpixunittests/qtcpixunittests.pro	Wed Aug 18 10:53:26 2010 +0300
@@ -33,6 +33,8 @@
              ../qttestutil/SimpleChecker.cpp \
              qtcpixunittests_reg.rss
 
+LIBS += -lcpixsearch
+
 symbian{
     BLD_INF_RULES.prj_exports += "data/_0.cfs      \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\contact\_0\_0.cfs" \
                                  "data/deletable   \epoc32\winscw\c\private\2001f6f7\indexing\indexdb\root\contact\_0\deletable" \
@@ -44,5 +46,4 @@
 	
     TARGET.CAPABILITY = ALL -TCB -DRM
     TARGET.UID3 = 0xE76C2AE7
-    LIBS += -lqcpixsearchclient
 }
--- a/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocument.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocument.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -19,83 +19,83 @@
 
 #include <QtCore>
 #include <QCoreApplication>
-#include <qcpixdocument.h>
-#include <qcpixdocumentfield.h>
+#include <cpixdocument.h>
+#include <cpixdocumentfield.h>
 #include <QtTest/QtTest>
 #include "../../QtTestUtil/QtTestUtil.h"
 
-void QCPixDocumentTester::testNewInstance()
+void CpixDocumentTester::testNewInstance()
     {
-    QCPixDocument* doc = QCPixDocument::newInstance();
+    CpixDocument* doc = CpixDocument::newInstance();
     QVERIFY( doc != NULL );
     delete doc;
     }
 
-void QCPixDocumentTester::testGetSetName_data()
+void CpixDocumentTester::testGetSetName_data()
     {
     QTest::addColumn<QString>( "baseAppClass" );
     QTest::newRow("root") << "root";
     QTest::newRow("root contact") << "root contact";
     }
 
-void QCPixDocumentTester::testGetSetName()
+void CpixDocumentTester::testGetSetName()
     {
     QFETCH( QString, baseAppClass );
     iDoc->setBaseAppClass( baseAppClass );
     QVERIFY( iDoc->baseAppClass() == baseAppClass );
     }
 
-void QCPixDocumentTester::testGetSetDocId_data()
+void CpixDocumentTester::testGetSetDocId_data()
     {
     QTest::addColumn<QString>( "docId" );
     QTest::newRow("C:\\some\\doc\\id") << "C:\\some\\doc\\id";
     }
 
-void QCPixDocumentTester::testGetSetDocId()
+void CpixDocumentTester::testGetSetDocId()
     {
     QFETCH( QString, docId );
     iDoc->setDocId( docId );
     QVERIFY( iDoc->docId() == docId );
     }
 
-void QCPixDocumentTester::testGetSetExcerpt_data()
+void CpixDocumentTester::testGetSetExcerpt_data()
     {
     QTest::addColumn< QString >( "excerpt" );
     QTest::newRow("this is a sample excerpt") << "this is a sample excerpt";
     }
 
-void QCPixDocumentTester::testGetSetExcerpt()
+void CpixDocumentTester::testGetSetExcerpt()
     {
     QFETCH( QString, excerpt );
     iDoc->setExcerpt( excerpt );
     QVERIFY( iDoc->excerpt() == excerpt );
     }
 
-void QCPixDocumentTester::testGetFieldCount()
+void CpixDocumentTester::testGetFieldCount()
     {
     iDoc->addField("testName", "testValue", 10);
     iDoc->addField("testName2", "testValue2", 12);
     QVERIFY( iDoc->fieldCount() == 2 );
     }
 
-void QCPixDocumentTester::testAddGetField()
+void CpixDocumentTester::testAddGetField()
     {
     iDoc->addField("testName", "testValue", 10);
     iDoc->addField("testName2", "testValue2", 12);
-    const QCPixDocumentField& field1 = iDoc->field( 0 );
+    const CpixDocumentField& field1 = iDoc->field( 0 );
     QVERIFY( field1.name() == "testName" && field1.value() == "testValue" && field1.config() == 10 );
-    const QCPixDocumentField& field2 = iDoc->field( 1 );
+    const CpixDocumentField& field2 = iDoc->field( 1 );
     QVERIFY( field2.name() == "testName2" && field2.value() == "testValue2" && field2.config() == 12 );
     }
 
-void QCPixDocumentTester::init()
+void CpixDocumentTester::init()
     {
-    iDoc = QCPixDocument::newInstance();
+    iDoc = CpixDocument::newInstance();
     }
 
-void QCPixDocumentTester::cleanup()
+void CpixDocumentTester::cleanup()
     {
     delete iDoc;
     }
 
-QTTESTUTIL_REGISTER_TEST( QCPixDocumentTester );
+QTTESTUTIL_REGISTER_TEST( CpixDocumentTester );
--- a/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocumentfield.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixdocumentfield.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -18,15 +18,15 @@
 #include "ut_qtcpixdocumentfield.h"
 #include "../../QtTestUtil/QtTestUtil.h"
 
-#include <qcpixdocumentfield.h>
+#include <cpixdocumentfield.h>
 
-void QCPixDocumentFieldTester::testNewInstance()
+void CpixDocumentFieldTester::testNewInstance()
     {
-    QCPixDocumentField* field = QCPixDocumentField::newInstance( QString(), QString(), 0 );
+    CpixDocumentField* field = CpixDocumentField::newInstance( QString(), QString(), 0 );
     QVERIFY( field != NULL );
     }
 
-void QCPixDocumentFieldTester::testGetSetName_data()
+void CpixDocumentFieldTester::testGetSetName_data()
     {
     QTest::addColumn< QString >( "name" );
     
@@ -34,14 +34,14 @@
     QTest::newRow("testName2") << "testName2" ;
     }
 
-void QCPixDocumentFieldTester::testGetSetName()
+void CpixDocumentFieldTester::testGetSetName()
     {
     QFETCH( QString, name );
     iField->setName( name );
     QVERIFY( iField->name() == name );
     }
 
-void QCPixDocumentFieldTester::testGetSetValue_data()
+void CpixDocumentFieldTester::testGetSetValue_data()
     {
     QTest::addColumn< QString >( "value" );
     
@@ -49,14 +49,14 @@
     QTest::newRow("testVlaue2") << "testValue2" ;
     }
 
-void QCPixDocumentFieldTester::testGetSetValue()
+void CpixDocumentFieldTester::testGetSetValue()
     {
     QFETCH( QString, value );
     iField->setValue( value );
     QVERIFY( iField->value() == value );
     }
 
-void QCPixDocumentFieldTester::testGetSetConfig_data()
+void CpixDocumentFieldTester::testGetSetConfig_data()
     {
     QTest::addColumn< int >( "config" );
     
@@ -64,22 +64,22 @@
     QTest::newRow("20") << 20 ;
     }
 
-void QCPixDocumentFieldTester::testGetSetConfig()
+void CpixDocumentFieldTester::testGetSetConfig()
     {
     QFETCH( int, config );
     iField->setConfig( config );
     QVERIFY( iField->config() == config );
     }
 
-void QCPixDocumentFieldTester::init()
+void CpixDocumentFieldTester::init()
     {
-    iField = QCPixDocumentField::newInstance( "testName", "testValue", 100 );
+    iField = CpixDocumentField::newInstance( "testName", "testValue", 100 );
     QVERIFY( iField!=NULL && iField->name()=="testName" && iField->value()=="testValue" && iField->config()==100 );
     }
 
-void QCPixDocumentFieldTester::cleanup()
+void CpixDocumentFieldTester::cleanup()
     {
     delete iField;
     }
 
-QTTESTUTIL_REGISTER_TEST( QCPixDocumentFieldTester );
+QTTESTUTIL_REGISTER_TEST( CpixDocumentFieldTester );
--- a/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixsearcher.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/qtcpixunittests/src/ut_qtcpixsearcher.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -19,8 +19,8 @@
 
 #include <QtCore>
 #include <QCoreApplication>
-#include <qcpixsearcher.h>
-#include <qcpixdocument.h>
+#include <cpixsearcher.h>
+#include <cpixdocument.h>
 #include <QtTest/QtTest>
 #include "../../QtTestUtil/QtTestUtil.h"
 
@@ -46,50 +46,51 @@
 #define TEST_GET_DATA_FETCH \
     QFETCH(QString, baseAppClass);
 
-void TestQCPixSearcher::testNewInstance()
+void TestCpixSearcher::testNewInstance()
     {
-    QCPixSearcher* searcher = QCPixSearcher::newInstance();
+    CpixSearcher* searcher = CpixSearcher::newInstance();
     QVERIFY( searcher != NULL );
     delete searcher;
     }
 
-void TestQCPixSearcher::init()
+void TestCpixSearcher::init()
     {
-    iSearcher = QCPixSearcher::newInstance("root", "_aggregate");//default to root searcher.
+    iSearcher = CpixSearcher::newInstance("root", "_aggregate");//default to root searcher.
     QVERIFY( iSearcher!=NULL );
     }
 
-void TestQCPixSearcher::cleanup()
+void TestCpixSearcher::cleanup()
     {
     delete iSearcher;
     }
 
-void TestQCPixSearcher::testSetDatabase_data()
+void TestCpixSearcher::testSetDatabase_data()
     {
     TEST_GET_DATA;
     }
 
-void TestQCPixSearcher::testSetDatabase()
+void TestCpixSearcher::testSetDatabase()
     {
     TEST_GET_DATA_FETCH;
+    Q_ASSERT( iSearcher );
     iSearcher->setDatabase( baseAppClass );//no way to verify this :(
     }
 
-void TestQCPixSearcher::HandleDatabaseSet(int aError)
+void TestCpixSearcher::HandleDatabaseSet(int aError)
     {
     iHandleSetDatabaseComplete = true;
     iError = aError;
     }
 
-void TestQCPixSearcher::testSetDatabaseAsync_data()
+void TestCpixSearcher::testSetDatabaseAsync_data()
     {
     TEST_GET_DATA;
     }
 
-void TestQCPixSearcher::testSetDatabaseAsync()
+void TestCpixSearcher::testSetDatabaseAsync()
     {
     TEST_GET_DATA_FETCH;
-    
+    Q_ASSERT( iSearcher );
     iHandleSetDatabaseComplete = false;
     iError = -2 /*General: Something non-specific*/;
     connect( iSearcher, SIGNAL(handleDatabaseSet(int)), this, SLOT(HandleDatabaseSet(int)) );
@@ -98,32 +99,33 @@
     QVERIFY( iError == 0/*No error*/ );
     }
 
-void TestQCPixSearcher::testSearch_data()
+void TestCpixSearcher::testSearch_data()
     {
     TEST_SEARCH_DATA;
     }
 
-void TestQCPixSearcher::testSearch()
+void TestCpixSearcher::testSearch()
     {
     TEST_SEARCH_DATA_FETCH;
+    Q_ASSERT( iSearcher );
     QVERIFY(  iSearcher->search( searchString ) == estimatedResultCount );
     }
 
-void TestQCPixSearcher::HandleSearchResults(int aError, int aEstimatedCount)
+void TestCpixSearcher::HandleSearchResults(int aError, int aEstimatedCount)
     {
     if( aError == 0/*None*/ ) iHandleSearchResultsComplete = aEstimatedCount;
     else iHandleSearchResultsComplete = 0;
     }
 
-void TestQCPixSearcher::testSearchAsync_data()
+void TestCpixSearcher::testSearchAsync_data()
     {
     TEST_SEARCH_DATA;
     }
 
-void TestQCPixSearcher::testSearchAsync()
+void TestCpixSearcher::testSearchAsync()
     {
     TEST_SEARCH_DATA_FETCH;
-    
+    Q_ASSERT( iSearcher );
     iHandleSearchResultsComplete = -1;
     
     //Do Search
@@ -136,39 +138,41 @@
     QVERIFY( iHandleSearchResultsComplete == estimatedResultCount );
     }
 
-void TestQCPixSearcher::testGetDocument_data()
+void TestCpixSearcher::testGetDocument_data()
     {
     TEST_SEARCH_DATA;
     }
 
-void TestQCPixSearcher::testGetDocument()
+void TestCpixSearcher::testGetDocument()
     {
     TEST_SEARCH_DATA_FETCH;
+    Q_ASSERT( iSearcher );
     QVERIFY( iSearcher->search( searchString ) == estimatedResultCount );
 
     //Check only baseAppClass for now. Not sure about the order of docs returned.
     //Hence check that we are getting "Robert" from contacts.
     if( estimatedResultCount>0 ){
-        QCPixDocument* doc = iSearcher->getDocument( 0 );
+        CpixDocument* doc = iSearcher->document( 0 );
         QVERIFY( doc->baseAppClass() == "root contact" );
     }
     else return;
     }
 
-void TestQCPixSearcher::HandleDocument(int /*aError*/, QCPixDocument* aDoc)
+void TestCpixSearcher::HandleDocument(int /*aError*/, CpixDocument* aDoc)
     {
     iHandleGetDocumentComplete = true;
     iDoc = aDoc;
     }
 
-void TestQCPixSearcher::testGetDocumentAsync_data()
+void TestCpixSearcher::testGetDocumentAsync_data()
     {
     TEST_SEARCH_DATA;
     }
 
-void TestQCPixSearcher::testGetDocumentAsync()
+void TestCpixSearcher::testGetDocumentAsync()
     {
     TEST_SEARCH_DATA_FETCH;
+    Q_ASSERT( iSearcher );
     iHandleGetDocumentComplete = false;
     iHandleSearchResultsComplete = -1;
     
@@ -179,9 +183,9 @@
     QVERIFY( iHandleSearchResultsComplete == estimatedResultCount );
     
     //Get Document
-    connect( iSearcher, SIGNAL(handleDocument(int,QCPixDocument*)), this, SLOT(HandleDocument(int,QCPixDocument*)) );
+    connect( iSearcher, SIGNAL(handleDocument(int,CpixDocument*)), this, SLOT(HandleDocument(int,CpixDocument*)) );
     if( iHandleSearchResultsComplete>0 ) 
-        iSearcher->getDocumentAsync( 0 );
+        iSearcher->documentAsync( 0 );
     else 
         return;
     
@@ -190,4 +194,4 @@
     QVERIFY( iDoc->baseAppClass() == "root contact" );
     }
 
-QTTESTUTIL_REGISTER_TEST( TestQCPixSearcher );
+QTTESTUTIL_REGISTER_TEST( TestCpixSearcher );
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/tsrc/qttestutil/copying	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2008 Remko Tronçon
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/tsrc/qttestutil/qttestutil.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008  Remko Troncon
+ * Licensed under the MIT license.
+ * See COPYING for license details.
+ */
+
+#ifndef QtTestUtil_H
+#define QtTestUtil_H
+
+#include "QtTestUtil/TestRegistration.h"
+
+/**
+ * A macro to register a test class.
+ *
+ * This macro will create a static variable which registers the
+ * testclass with the TestRegistry, and creates an instance of the 
+ * test class.
+ *
+ * Execute this macro in the body of your unit test's .cpp file, e.g.
+ *    class MyTest {
+ *          ...
+ *      };
+ *
+ *      QTTESTUTIL_REGISTER_TEST(MyTest)
+ */
+#define QTTESTUTIL_REGISTER_TEST(TestClass) \
+    static QtTestUtil::TestRegistration<TestClass> TestClass##Registration
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/tsrc/qttestutil/qttestutil.pri	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,5 @@
+INCLUDEPATH *= $$PWD/..
+DEPAENDPATH *= $$PWD/..
+
+SOURCES += \
+        $$PWD/TestRegistry.cpp
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/tsrc/qttestutil/readme	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,8 @@
+QtTestUtil
+----------
+
+Convenience classes for unit testing using QtTest.
+See Example/ for examples on using these classes.
+
+Remko Tronçon
+http://el-tramo.be
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/tsrc/qttestutil/simplechecker.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,17 @@
+/*
+ * Copyright (C) 2008  Remko Troncon
+ * Licensed under the MIT license.
+ * See COPYING for license details.
+ */
+
+#include <QCoreApplication>
+
+#include "QtTestUtil/TestRegistry.h"
+
+/**
+ * Runs all tests registered with the QtTestUtil registry.
+ */
+int main(int argc, char* argv[]) {
+    QCoreApplication application(argc, argv);
+    return QtTestUtil::TestRegistry::getInstance()->runTests(argc, argv);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/tsrc/qttestutil/testregistration.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008  Remko Troncon
+ * Licensed under the MIT license.
+ * See COPYING for license details.
+ */
+
+#ifndef QtTestUtil_TestRegistration_H
+#define QtTestUtil_TestRegistration_H
+
+#include "QtTestUtil/TestRegistry.h"
+
+namespace QtTestUtil {
+
+    /**
+     * A wrapper class around a test to manage registration and static
+     * creation of an instance of the test class.
+     * This class is used by QTTESTUTIL_REGISTER_TEST(), and you should not 
+     * use this class directly.
+     */
+    template<typename TestClass>
+    class TestRegistration {
+        public:
+            TestRegistration() {
+                test_ = new TestClass();
+                TestRegistry::getInstance()->registerTest(test_);
+            }
+
+            ~TestRegistration() {
+                delete test_;
+            }
+        
+        private:
+            TestClass* test_;
+    };
+
+}
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/tsrc/qttestutil/testregistry.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008  Remko Troncon
+ * Licensed under the MIT license.
+ * See COPYING for license details.
+ */
+
+#include "QtTestUtil/TestRegistry.h"
+
+#include <QtTest/QtTest>
+
+namespace QtTestUtil {
+
+TestRegistry* TestRegistry::getInstance() {
+    static TestRegistry registry;
+    return &registry;
+}
+
+void TestRegistry::registerTest(QObject* test) {
+    tests_ += test;
+}
+
+int TestRegistry::runTests(int argc, char* argv[]) {
+    int result = 0;
+    foreach(QObject* test, tests_) {
+        result |= QTest::qExec(test, argc, argv);
+    }
+    return result;
+}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qcpix/tsrc/qttestutil/testregistry.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2008  Remko Troncon
+ * Licensed under the MIT license.
+ * See COPYING for license details.
+ */
+
+#ifndef QtTestUtil_TestRegistry_H
+#define QtTestUtil_TestRegistry_H
+
+#include <QList>
+
+class QObject;
+
+namespace QtTestUtil {
+    
+    /**
+     * A registry of QtTest test classes.
+     * All test classes registered with QTTESTUTIL_REGISTER_TEST add 
+     * themselves to this registry. All registered tests can then be run at 
+     * once using runTests().
+     */
+    class TestRegistry {
+        public:
+            /**
+             * Retrieve the single instance of the registry.
+             */
+            static TestRegistry* getInstance();
+
+            /**
+             * Register a QtTest test. 
+             * This method is called  by QTTESTUTIL_REGISTER_TEST, and you should 
+             * not use this method directly.
+             */
+            void registerTest(QObject*);
+
+            /**
+             * Run all registered tests using QTest::qExec()
+             */
+            int runTests(int argc, char* argv[]);
+
+        private:
+            TestRegistry() {}
+        
+        private:
+            QList<QObject*> tests_;
+    };
+}
+
+#endif
--- a/qcpix/tsrc/samplesearch/samplesearch.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/samplesearch/samplesearch.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -17,7 +17,7 @@
 
 #include "SampleSearch.h"
 #include "searchhandler.h"
-#include <QCPixDocument.h>
+#include <cpixdocument.h>
 #include <xqservicerequest.h>
 
 SampleSearch::SampleSearch(QWidget */*parent*/)
@@ -98,7 +98,7 @@
     connect(btnSearchAsync, SIGNAL(clicked()),this, SLOT(doSearchAsync()));
     connect(iSearchHandler, SIGNAL(handleSearchResult(int,int)),this, SLOT(onSearchComplete(int,int)));
     connect(iSearchHandler, SIGNAL(handleAsyncSearchResult(int,int)),this, SLOT(onAsyncSearchComplete(int,int)));
-    connect(iSearchHandler, SIGNAL(handleDocument(int,QCPixDocument*)),this, SLOT(onGetDocumentComplete(int,QCPixDocument*)));
+    connect(iSearchHandler, SIGNAL(handleDocument(int,CpixDocument*)),this, SLOT(onGetDocumentComplete(int,CpixDocument*)));
 }
 
 SampleSearch::~SampleSearch()
@@ -142,7 +142,7 @@
     iSearchHandler->getDocumentAsyncAtIndex( nextDocumentIndex++ );
     }
 
-void SampleSearch::onGetDocumentComplete(int aError, QCPixDocument* aDoc)
+void SampleSearch::onGetDocumentComplete(int aError, CpixDocument* aDoc)
     {
     if( aDoc == NULL ) return;
     addDocumentToResultsPage( aDoc, currentRow++ );
@@ -293,7 +293,7 @@
         {
         if(rowCount<noOfItemsPerPage)
             {
-            QCPixDocument* aSearchDoc = iSearchHandler->getDocumentAtIndex(i);
+            CpixDocument* aSearchDoc = iSearchHandler->getDocumentAtIndex(i);
             addDocumentToResultsPage( aSearchDoc, rowCount );
             rowCount++;
             }
@@ -312,7 +312,7 @@
     QString docId;
 };
 
-void SampleSearch::addDocumentToResultsPage( QCPixDocument* aSearchDoc, int rowCount )
+void SampleSearch::addDocumentToResultsPage( CpixDocument* aSearchDoc, int rowCount )
     {
     QTableWidgetItem *appClassCol = new QTableWidgetItem("Col1");
     appClassCol->setFlags(Qt::ItemIsEnabled);
--- a/qcpix/tsrc/samplesearch/samplesearch.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/samplesearch/samplesearch.h	Wed Aug 18 10:53:26 2010 +0300
@@ -32,7 +32,7 @@
 #include <QVector>
 
 class CSearchHandler;
-class QCPixDocument;
+class CpixDocument;
 class DocLaunchInfo;
 
 class SampleSearch : public QWidget
@@ -75,7 +75,7 @@
     void createSearchResultTableAndAddContents();
     void searchCompleteHelper(int aError, int aResultCount);
     void setSearchResultsHeader();
-    void addDocumentToResultsPage( QCPixDocument* aSearchDoc, int rowCount );
+    void addDocumentToResultsPage( CpixDocument* aSearchDoc, int rowCount );
     void openMessaging( int aMessagingId );
     void doLaunchDoc(DocLaunchInfo& info);
     
@@ -85,7 +85,7 @@
     void doSearchAsync();
     void onSearchComplete(int aError, int aResultCount);
     void onAsyncSearchComplete(int aError, int aResultCount);
-    void onGetDocumentComplete(int aError, QCPixDocument* aDoc);
+    void onGetDocumentComplete(int aError, CpixDocument* aDoc);
     void displayNextPage();
     void displayPrevPage();   
 };
--- a/qcpix/tsrc/samplesearch/samplesearch.pro	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/samplesearch/samplesearch.pro	Wed Aug 18 10:53:26 2010 +0300
@@ -20,7 +20,7 @@
 QT += core
 QT += gui 
 CONFIG += qtestlib
-LIBS += -lqcpixsearchclient
+LIBS += -lcpixsearch
 
 HEADERS   +=    SampleSearch.h \
                 searchHandler.h
--- a/qcpix/tsrc/samplesearch/searchhandler.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/samplesearch/searchhandler.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -16,14 +16,14 @@
 */
 
 #include "searchhandler.h"
-#include <qcpixsearcher.h>
-#include <qcpixdocument.h>
+#include <cpixsearcher.h>
+#include <cpixdocument.h>
 
 CSearchHandler::CSearchHandler()
     {  
-    iSearchInterface = QCPixSearcher::newInstance("root","_aggregate");
+    iSearchInterface = CpixSearcher::newInstance("root","_aggregate");
     iSearchInterface->connect(iSearchInterface, SIGNAL(handleSearchResults(int,int)), this, SLOT(__handleSearchResult(int,int)));
-    iSearchInterface->connect(iSearchInterface, SIGNAL(handleDocument(int,QCPixDocument*)), this, SLOT(__getDocumentAsync(int,QCPixDocument*)));
+    iSearchInterface->connect(iSearchInterface, SIGNAL(handleDocument(int,CpixDocument*)), this, SLOT(__getDocumentAsync(int,CpixDocument*)));
     }
 
 void CSearchHandler::__handleSearchResult(int aError, int estimatedResultCount)
@@ -33,14 +33,14 @@
     emit handleAsyncSearchResult(aError, estimatedResultCount);
     }
 
-void CSearchHandler::__getDocumentAsync(int aError, QCPixDocument* aDocument )
+void CSearchHandler::__getDocumentAsync(int aError, CpixDocument* aDocument )
     {
     emit handleDocument( aError, aDocument );
     }
 
-QCPixDocument* CSearchHandler::getDocumentAtIndex(int aIndex)
+CpixDocument* CSearchHandler::getDocumentAtIndex(int aIndex)
     {
-    return iSearchInterface->getDocument( aIndex );
+    return iSearchInterface->document( aIndex );
     }
 
 void CSearchHandler::search(QString aSearchString)
@@ -63,7 +63,7 @@
 
 void CSearchHandler::getDocumentAsyncAtIndex( int aIndex )
     {
-    iSearchInterface->getDocumentAsync( aIndex );
+    iSearchInterface->documentAsync( aIndex );
     }
 
 void CSearchHandler::searchAsync(QString aSearchString)
--- a/qcpix/tsrc/samplesearch/searchhandler.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/qcpix/tsrc/samplesearch/searchhandler.h	Wed Aug 18 10:53:26 2010 +0300
@@ -20,8 +20,8 @@
 #include <QDebug>
 #include <QTest>
 
-class QCPixSearcher;
-class QCPixDocument;
+class CpixSearcher;
+class CpixDocument;
 
 class CSearchHandler: public QObject
     {
@@ -32,15 +32,15 @@
 signals:
     void handleSearchResult(int, int);
     void handleAsyncSearchResult(int, int);
-    void handleDocument(int aError, QCPixDocument* aDoc);
+    void handleDocument(int aError, CpixDocument* aDoc);
 
 private slots:
     void __handleSearchResult(int aError, int estimatedResultCount);
-    void __getDocumentAsync(int aError, QCPixDocument* aDocument );
+    void __getDocumentAsync(int aError, CpixDocument* aDocument );
 
 public:
     ~CSearchHandler();
-    QCPixDocument* getDocumentAtIndex(int aIndex);
+    CpixDocument* getDocumentAtIndex(int aIndex);
     void getDocumentAsyncAtIndex(int aIndex);
     void search(QString aSearchString);
     void searchAsync(QString aSearchString);
@@ -48,7 +48,7 @@
     int getSearchResultCount();
 
 private:
-    QCPixSearcher *iSearchInterface;
+    CpixSearcher *iSearchInterface;
     QList<QVariantMap> searchResults;
     int iSearchresultCount;
     };
--- a/rom/cpix_mw.iby	Tue Jul 06 15:30:04 2010 +0300
+++ b/rom/cpix_mw.iby	Wed Aug 18 10:53:26 2010 +0300
@@ -44,7 +44,7 @@
 //data=DATAZ_\RESOURCE_FILES_DIR\plugins\npCPixPlugin.rsc RESOURCE_FILES_DIR\plugins\npCPixPlugin.rsc
 
 //CPIX QT
-file=ABI_DIR\BUILD_DIR\qcpixsearchclient.dll	SHARED_LIB_DIR\qcpixsearchclient.dll 
+file=ABI_DIR\BUILD_DIR\cpixsearch.dll	SHARED_LIB_DIR\cpixsearch.dll 
 
 //CPiX Watchdog
 file=ABI_DIR\BUILD_DIR\cpixwatchdog.exe	SHARED_LIB_DIR\cpixwatchdog.exe
--- a/searchengine/cpix/cpix/inc/private/cpixhits.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/inc/private/cpixhits.h	Wed Aug 18 10:53:26 2010 +0300
@@ -70,6 +70,8 @@
          * having the worst match.
          */
         virtual Document * getDocument(int32_t index) = 0;
+        
+        virtual int resetDocumentCache(int32_t index, int32_t count) = 0;
 	
         /**
          * Returns the amount of hits
@@ -110,7 +112,7 @@
         typedef std::map<int32_t, Document*> WrapperMap;
         WrapperMap                           wrappers_;
 
-        void destroyWrappers();
+        void destroyWrappers(int32_t index);
 
         
         /**
@@ -134,6 +136,8 @@
 
 
         Document * getDocument(int32_t index);
+        
+        int resetDocumentCache(int32_t index, int32_t count);
 
 
         /**
--- a/searchengine/cpix/cpix/inc/public/appclass-hierarchy.txt	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/inc/public/appclass-hierarchy.txt	Wed Aug 18 10:53:26 2010 +0300
@@ -23,13 +23,27 @@
     | [ _mimetype (opt) ]     {EStoreYes | EIndexNo}
     |
     +-- msg
-    | [ To         ]    {EStoreYes | EIndexTokenized | EIndexFreeText} 	{ExcerptYes, if present}
-    | [ From       ]    {EStoreYes | EIndexTokenized | EIndexFreeText} 	{ExcerptYes, if present}
-    | [ Body       ]    {EStoreYes | EIndexTokenized } 								 	{ExcerptYes}
-    | [ Folder     ]    {EStoreYes | EIndexNo}        									{ExcerptNA}
-    | [ Subject    ]    {EStoreYes | EIndexTokenized} 									{ExcperptNo}
-    | [ Attachment ]	{EStoreYes | EIndexTokenized}										{ExcperptNo}
-    |
+    |    |
+    |    |
+    |    +--smsmms
+    |    | [ To         ]    {EStoreYes | EIndexTokenized | EIndexFreeText} 	{ExcerptYes, if present}
+    |    | [ From       ]    {EStoreYes | EIndexTokenized | EIndexFreeText} 	{ExcerptYes, if present}
+    |    | [ Body       ]    {EStoreYes | EIndexTokenized } 								{ExcerptYes}
+    |    | [ Folder     ]    {EStoreYes | EIndexNo}        									{ExcerptNA}
+    |    | [ Subject    ]    {EStoreYes | EIndexTokenized} 									{ExcperptNo}
+    |    | [ Attachment ]	 {EStoreYes | EIndexTokenized}									{ExcperptNo}
+    |    |
+    |    +--email
+    |    | [ Sender    ]     {EStoreYes | EIndexTokenized | EIndexFreeText}                 {ExcperptNo}
+    |    | [ Subject   ]     {EStoreYes | EIndexTokenized } 								{ExcerptYes}
+    |    | [ Recipients]     {EStoreYes | EIndexTokenized | EIndexFreeText}                 {ExcperptNo}
+    |    | [ Body      ]     {EStoreYes | EIndexTokenized } 								{ExcerptYes}
+    |    | [ MailBoxId ]     {EStoreYes | EIndexUnTokenized | EAggregateNo}                 {ExcerptNA}
+    |    | [ FolderId  ]     {EStoreYes | EIndexUnTokenized | EAggregateNo}                 {ExcerptNA}
+    |    | [ Attachment ]    {EStoreYes | EIndexTokenized , if present}                     {ExcperptNo}
+    |    | [ MailBoxName ]   {EStoreYes | EIndexTokenized | EIndexFreeText}                 {ExcperptNo}
+    |    | [ SentTime ]      {EStoreYes | EIndexTokenized }                                 {ExcperptNo}
+    |    |
     +-- file
     |     |
     |     |
@@ -42,6 +56,7 @@
     |     +-- folder
     |     [ Name      	]     {EStoreYes | EIndexTokenized | EIndexFreeText} 	{ExcerptNo}
     |     [ Extension 	]     {EStoreYes | EIndexTokenized | EIndexFreeText}	{ExcerptNo}
+	|     [ IsFolder    ]     {EStoreYes | EIndexTokenized | EIndexFreeText}	{ExcerptNo}
     |
     |      
     +-- media
--- a/searchengine/cpix/cpix/inc/public/cpix_async.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/inc/public/cpix_async.h	Wed Aug 18 10:53:26 2010 +0300
@@ -486,9 +486,10 @@
      */
     cpix_JobId cpix_Hits_asyncDoc(cpix_Hits          * thisHits,
                                   int32_t              index,
-                                  cpix_Document      * target,
+                                  cpix_Document      ** target,
                                   void               * cookie,
-                                  cpix_AsyncCallback * callback);
+                                  cpix_AsyncCallback * callback,
+                                  int32_t              count);
 
 
     /**
--- a/searchengine/cpix/cpix/inc/public/cpixerror.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/inc/public/cpixerror.h	Wed Aug 18 10:53:26 2010 +0300
@@ -106,9 +106,16 @@
      * Clears the error state of cpixObj.
      */
 #define cpix_ClearError(cpixObj)  ((cpixObj)->err_ = cpix_Error_destroy((cpixObj)->err_))
-
-
-
+    /*
+     * Determines to what extent the cpix_hits_docs() is able to fetch available hits
+     * Previously a check on cpix_Failed/Suceeded(hits) suffices, but with the batch_get_doc
+     * implementation a request for N results may results in X fetches where (X <= N) To
+     * correctly determine how many actual results are fetched a check on _err is not enough
+     * and _ptr too have to cheked for NULL
+     */
+#define doc_Fetch_Succeeded(docObj) ((docObj)->ptr_ != NULL)
+#define doc_Fetch_Failed(docObj)    ((docObj)->ptr_ == NULL)
+    
     /**
      * Any "static" calls will give the result back via this
      * structure.
--- a/searchengine/cpix/cpix/inc/public/cpixsearch.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/inc/public/cpixsearch.h	Wed Aug 18 10:53:26 2010 +0300
@@ -296,7 +296,8 @@
      */
     void cpix_Hits_doc(cpix_Hits     * thisHits,
                        int32_t         index,
-                       cpix_Document * target);
+                       cpix_Document ** target,
+                       int32_t         count);
 
 
 
--- a/searchengine/cpix/cpix/src/common/gpssort.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/src/common/gpssort.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -422,19 +422,19 @@
 
         for (int32_t i = 0; i < count; ++i)
             {
-                cpix_Document
-                    cpixDoc;
+                cpix_Document* cpixDoc = new cpix_Document;
 
                 cpix_Hits_doc(unsortedHits,
                               i, 
-                              &cpixDoc);
+                              &cpixDoc,
+                              1);
                 
                 float
                     gpsLat,
                     gpsLong;
 
                 auto_ptr<lucene::document::Document>
-                    clone(cloneAndGetGps(&Cast2Native<cpix_Document>(&cpixDoc)->native(),
+                    clone(cloneAndGetGps(&Cast2Native<cpix_Document>(cpixDoc)->native(),
                                          &gpsLat,
                                          &gpsLong));
                 GpsDistance
@@ -447,6 +447,8 @@
                 clone.release();
 
                 locations.push_back(gdp);
+                
+                delete cpixDoc;
             }
     }
 }
--- a/searchengine/cpix/cpix/src/cpix_async.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/src/cpix_async.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -1107,7 +1107,8 @@
         //
         cpix_Hits      * hits_;
         int32_t          index_;
-        cpix_Document  * target_;
+        cpix_Document  ** target_;
+        int32_t          count_;
 
 
     public:
@@ -1116,16 +1117,18 @@
         //
         static cpix_JobId CreateJob(cpix_Hits          * hits,
                                     int32_t              index,
-                                    cpix_Document      * target,
+                                    cpix_Document      ** target,
                                     void               * cookie,
-                                    cpix_AsyncCallback * callback)
+                                    cpix_AsyncCallback * callback,
+                                    int32_t              count)
         {
             std::auto_ptr<AsyncJob>
                 job(new AsyncHitsDocJob(hits,
                                         index,
                                         target,
                                         cookie,
-                                        callback));
+                                        callback,
+                                        count ));
 
             cpix_JobId
                 rv = job->id();
@@ -1167,15 +1170,17 @@
         //
         AsyncHitsDocJob(cpix_Hits          * hits,
                         int32_t              index,
-                        cpix_Document      * target,
+                        cpix_Document      ** target,
                         void               * cookie,
-                        cpix_AsyncCallback * callback)
+                        cpix_AsyncCallback * callback,
+                        int32_t              count)
             : AsyncJob(IdxDbHndl(), // default value for handlers
                        cookie,
                        callback),
               hits_(NULL),
               index_(index),
-              target_(target)
+              target_(target),
+              count_(count)
         {
             // We must make sure that these native objects live even
             // if the client calls cancel in the middle of operation
@@ -1217,7 +1222,8 @@
 
             cpix_Hits_doc(&hits,
                           index_,
-                          target_);
+                          target_,
+                          count_);
 
             return hits.err_;
         }
@@ -1841,9 +1847,10 @@
 
 cpix_JobId cpix_Hits_asyncDoc(cpix_Hits          * thisHits,
                               int32_t              index,
-                              cpix_Document      * target,
+                              cpix_Document      ** target,
                               void               * cookie,
-                              cpix_AsyncCallback * callback)
+                              cpix_AsyncCallback * callback,
+                              int32_t              count)
 {
     return XlateExc(thisHits,
                     CallFreeFunc(&AsyncHitsDocJob::CreateJob,
@@ -1851,7 +1858,8 @@
                                  index,
                                  target,
                                  cookie,
-                                 callback));
+                                 callback,
+                                 count));
 }
 
 
--- a/searchengine/cpix/cpix/src/cpixhits.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/src/cpixhits.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -36,18 +36,27 @@
     }
 
 
-    void HitsBase::destroyWrappers()
+    void HitsBase::destroyWrappers(int32_t index)
     {
         WrapperMap::iterator
-            i = wrappers_.begin(),
-            end = wrappers_.end();
+            i = wrappers_.begin();
 
-        for (; i != end; ++i)
+        if  (index == -1) {
+            for (; i != wrappers_.end(); ++i)
             {
                 delete i->second;
+                wrappers_.clear();
             }
+        } else {
+            for (; i != wrappers_.find(index); ++i)
+            {
+                delete i->second;
+                
+            }
+            wrappers_.erase(wrappers_.begin(),wrappers_.find(index));
+        }
 
-        wrappers_.clear();
+        
     }
 
 
@@ -61,16 +70,26 @@
     void HitsBase::wrapDocument(int32_t                      index,
                                 lucene::document::Document * doc)
     {
-        if (wrappers_.find(index) != wrappers_.end())
+//        if (wrappers_.find(index) != wrappers_.end())
+//            {
+//                delete wrappers_[index];
+//                wrappers_[index] = NULL;
+//            }
+//
+//        Cpix::Document
+//            * cpixDoc = new Cpix::Document(doc,
+//                                           docsOwnedByClucene_);
+//        wrappers_[index] = cpixDoc;
+        
+        if (wrappers_.find(index) == wrappers_.end())
             {
-                delete wrappers_[index];
-                wrappers_[index] = NULL;
+                Cpix::Document
+                    * cpixDoc = new Cpix::Document(doc,
+                                                   docsOwnedByClucene_);
+                wrappers_[index] = cpixDoc;
             }
 
-        Cpix::Document
-            * cpixDoc = new Cpix::Document(doc,
-                                           docsOwnedByClucene_);
-        wrappers_[index] = cpixDoc;
+
     }
 
 
@@ -89,7 +108,19 @@
         return rv;
     }
 
-
+    int HitsBase::resetDocumentCache(int32_t index, int32_t count)
+    {
+        int32_t reqCount = index + count;
+        int rv = 0;
+        int i = (wrappers_.begin()->first)+ (int32_t) wrappers_.size();
+        if ((i < reqCount) || (index < wrappers_.begin()->first))
+            {
+                getDocument_(index);
+               
+            }
+        rv = (int32_t) wrappers_.size();
+        return rv;
+    }
 
     /**
      * Class ClhDocumentConsumer
@@ -144,7 +175,8 @@
                               clHits_.length());
             }
 
-        beginIndex_ = index - (index % pageSize_);
+        //beginIndex_ = index - (index % pageSize_);
+        beginIndex_ = index;
         endIndex_ = beginIndex_ + pageSize_;
 
         endIndex_ = std::min(clHits_.length(),
@@ -234,7 +266,7 @@
         delete hits_; 
         hits_ = 0; 
         
-        destroyWrappers();
+        destroyWrappers(0);
 
         delete docConsumer_;
 
@@ -245,7 +277,7 @@
     void LuceneHits::getDocument_(int32_t index) 
     {
         // check if we have tried to fetch it before and failed
-        docConsumer_->throwIfFailedDocIndex(index);
+        //docConsumer_->throwIfFailedDocIndex(index);
 
         // common usage pattern is to enumerate hits, never to access
         // them at true random manner. That means that we never need
@@ -253,7 +285,7 @@
         // fetch the next page we can discard all other wrapped
         // documents. Merely an memory consumption optimization
         // measure, can be commented out.
-        destroyWrappers();
+        destroyWrappers(index);
 
         // if we get here, then it means we don't have the page of hit
         // docs we need, but it may still throw if the hits is an
@@ -304,12 +336,12 @@
 	
     HitDocumentList::~HitDocumentList()
     {
-        destroyWrappers();
+        destroyWrappers(0);
         for (std::vector<lucene::document::Document*>::iterator i = documents_.begin(); 
              i != documents_.end(); 
              i++) 
             {
-                _CLDELETE(*i); 
+                _CLDELETE(*i);
             }
     }
     
--- a/searchengine/cpix/cpix/src/cpixsearch.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/src/cpixsearch.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -235,25 +235,36 @@
 
 void cpix_Hits_doc(cpix_Hits     * thisHits,
                    int32_t         index,
-                   cpix_Document * target)
+                   cpix_Document ** target,
+                   int32_t         count ) 
 {
-    Cpix::Document
-        * pDoc = XlateExc(thisHits,
+
+    int result = XlateExc(thisHits,
                           Caller(thisHits,
-                                     &Cpix::IHits::getDocument,
-                                     index));
-    if (cpix_Succeeded(thisHits))
-    {
-    	target->ptr_ = pDoc;
-        target->err_ = NULL;
-
-        // TEMP (?) post-condition code
-        if (target->ptr_ == NULL)
-            {
-                thisHits->err_
-                    = CreateError(ET_CPIX_EXC,
-                                  L"PANIC PANIC PANIC - NULL doc returned without any error message!");
-            }
+                                     &Cpix::IHits::resetDocumentCache,
+                                     index,
+                                     count));
+    
+    for (int32_t i = 0; i < count && i < result ; i++) {
+        Cpix::Document
+            * pDoc = XlateExc(thisHits,
+                              Caller(thisHits,
+                                         &Cpix::IHits::getDocument,
+                                         index++));
+        if (cpix_Succeeded(thisHits))
+        {
+            target[i]->ptr_ = pDoc;
+            target[i]->err_ = NULL;
+    
+            // TEMP (?) post-condition code
+            if (target[i]->ptr_ == NULL)
+                {
+                    thisHits->err_
+                        = CreateError(ET_CPIX_EXC,
+                                      L"PANIC PANIC PANIC - NULL doc returned without any error message!");
+                }
+            //target ++;
+        }
     }
 }
 
--- a/searchengine/cpix/cpix/src/fileparser/fileparser.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/src/fileparser/fileparser.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -180,7 +180,7 @@
 
         newField.reset(new Field(LEXTENSION_FIELD,
                                  wExtension.c_str(),
-                                 cpix_STORE_NO 
+                                 cpix_STORE_YES 
                                | cpix_INDEX_TOKENIZED
                                | cpix_AGGREGATE_YES
                                | cpix_FREE_TEXT));
--- a/searchengine/cpix/cpix/src/prefixqueryparser.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/cpix/src/prefixqueryparser.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -65,8 +65,8 @@
 						if ( q_.get() ) {
 							auto_ptr<BooleanQuery> bq( new BooleanQuery() );
 							bq_ = bq.get();
-							bq_->add( q_.release(), true, true, false ); 
-							bq_->add( q.release(), true, true, false ); 
+							bq_->add( q_.release(), true, false, false ); 
+							bq_->add( q.release(), true, false, false ); 
 							q_.reset( bq.release() ); 
 						} else {
 							q_ = q;  
--- a/searchengine/cpix/tsrc/cpixsample/group/cpixsample.mmp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixsample/group/cpixsample.mmp	Wed Aug 18 10:53:26 2010 +0300
@@ -50,11 +50,9 @@
 STATICLIBRARY   libcpix.lib
 STATICLIBRARY   libclucene.lib
 STATICLIBRARY   libstemmer.lib
-//STATICLIBRARY   libitk.lib
 STATICLIBRARY   libcpixtools.lib
-//STATICLIBRARY   libcpixxf.lib
-//STATICLIBRARY   libexif.lib
-//STATICLIBRARY   libid3.lib
+STATICLIBRARY   libanalysis.lib
+
 
 LIBRARY   		libpthread.lib
 LIBRARY         libz.lib // for libid3
--- a/searchengine/cpix/tsrc/cpixsample/src/cpixsample.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixsample/src/cpixsample.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -75,7 +75,7 @@
 
     *idxDb_ = cpix_IdxDb_openDb(&result,
             TEST_DOCUMENT_QBASEAPPCLASS,
-            cpix_IDX_CREATE);
+            cpix_IDX_OPEN);
     if (cpix_Failed(&result))
         {
         printf("Failed to open indexDb\n");
@@ -187,17 +187,42 @@
         }
 
     cout << "Number of hits: " << hitCount << endl;
-
+    while (1)
+        {
+    int fromDoc;
+    int docCount;
+    printf("\nFrom: ");
+    scanf("%d",&fromDoc);
+    printf("\nHow many doc: ");
+    scanf("%d",&docCount);
+    
     cpix_Document
-        doc;
-
-    for (int32_t i = 0; i < hitCount; ++i)
+        **doc;
+    
+    doc = (cpix_Document **) malloc (sizeof(cpix_Document *) * docCount);
+    for(int j = 0 ; j < docCount; j++)
         {
+            doc[j] = (cpix_Document *) malloc (sizeof(cpix_Document));
+            doc[j]->ptr_ = NULL;
+        }
+    
             cpix_Hits_doc(hits,
-                          i,
-                          &doc);
+                          fromDoc,
+                          doc,
+                          docCount);
+            
+     for(int j = 0 ; docCount>j && doc[j]->ptr_ != NULL; j++)
+         {
+            printf("%d \n", j);
+            printHit(doc[j]);
+         }
+     
+     for(int j = 0 ; j < docCount; j++)
+             free(doc[j]);
 
-            printHit(&doc);
+     
+      free(doc);
+       
         }
     logDbgMsg("Shankar Ha hahah");
 }
@@ -212,11 +237,14 @@
         cpix_IdxDb * idxDb_ = NULL;
         cpix_Hits * hits_;
 
-        printf("Press a character to exit!\n");
+      
 
-        testInit(&analyzer_,&idxDb_);    
+        testInit(&analyzer_,&idxDb_);   
+        for(int j = 0; j < 10; j++)
+            {
         createDocument(LDOCUID1,DOC1CONTENT, &analyzer_,&idxDb_);
         createDocument(LDOCUID2,DOC2CONTENT, &analyzer_,&idxDb_);
+            }
                 
                         
         queryParser_ = cpix_QueryParser_create(&result,
--- a/searchengine/cpix/tsrc/cpixunittest/inc/suggestion.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixunittest/inc/suggestion.h	Wed Aug 18 10:53:26 2010 +0300
@@ -34,7 +34,7 @@
                           const Suggestion & right);
 
 public:
-    Suggestion(cpix_Document & doc,
+    Suggestion(cpix_Document * doc,
                Itk::TestMgr  * testMgr);
 
         
--- a/searchengine/cpix/tsrc/cpixunittest/inc/testutils.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixunittest/inc/testutils.h	Wed Aug 18 10:53:26 2010 +0300
@@ -210,5 +210,11 @@
 
 extern const Volume Volumes[];
 
+#define ALLOC_DOC(DOC, COUNT)   DOC = (cpix_Document**)malloc (sizeof(cpix_Document*)* COUNT); \
+        for  (int i = 0; i < COUNT; i++) { \
+            (DOC[i]) = (cpix_Document*)malloc (sizeof(cpix_Document)); \
+            DOC[i]->ptr_ = NULL; \
+        }
+#define FREE_DOC(DOC, COUNT)  for (int i=0; i< COUNT; i++) free(DOC[i]); free (DOC);
 
 #endif // CPIXUNITTEST_TESTUTILS_H_
--- a/searchengine/cpix/tsrc/cpixunittest/src/asynctests.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixunittest/src/asynctests.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -36,7 +36,7 @@
 #include "testutils.h"
 #include "testcorpus.h"
 #include "setupsentry.h"
-
+#include "testutils.h"
 #include "std_log_result.h"
 
 // TODO PROPER, EXAMPLARY error clearing (cpix_ClearError())
@@ -587,7 +587,7 @@
 
     bool call(cpix_Hits     * hits,
               int32_t         index,
-              cpix_Document * target,
+              cpix_Document ** target,
               Itk::TestMgr  * testMgr,
               bool            cancel)
     {
@@ -605,7 +605,8 @@
                                        index,
                                        target,
                                        this,
-                                       &callback);
+                                       &callback,
+                                       1);
         }
         
         ITK_ASSERT(testMgr,
@@ -725,7 +726,7 @@
 
     SyncedDoc                     syncedDoc_;
 
-    cpix_Document                 targetDoc_;
+    cpix_Document                 **targetDoc_;
 
     Cpt::Mutex                  & cpixMutex_;
 
@@ -736,9 +737,13 @@
           syncedDoc_(cpixMutex),
           cpixMutex_(cpixMutex)
     {
-        ;
+        ALLOC_DOC(targetDoc_, 1);
     }
-
+    
+    ~SyncedSearch() {
+        FREE_DOC(targetDoc_, 1);
+    }
+    
     void call(cpix_IdxSearcher  * searcher,
               cpix_Query        * query,
               Itk::TestMgr      * testMgr,
@@ -905,7 +910,7 @@
                 bool
                     succeeded = syncedDoc_.call(hits,
                                                 i,
-                                                &targetDoc_,
+                                                targetDoc_,
                                                 testMgr,
                                                 (i%4) == 1); // cancel or not
 
@@ -914,7 +919,7 @@
                         Cpt::SyncRegion
                             sr(cpixMutex_);
 
-                        PrintHit(&targetDoc_,
+                        PrintHit(targetDoc_[0],
                                  testMgr);
                     }
             }
--- a/searchengine/cpix/tsrc/cpixunittest/src/destructivetests.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixunittest/src/destructivetests.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -216,47 +216,59 @@
 
         printf("Accessing hits after closing... \n");
         cpix_Document
-            doc;
-
+            **doc;                    
+        ALLOC_DOC(doc, 1);        
+        
         printf("doc #0: ");
         cpix_Hits_doc(hits,
                       0,
-                      &doc);
+                      doc,
+                      1);
+        if (doc[0]->ptr_ != NULL) {
         ITK_EXPECT( testMgr, 
-                    cpix_Succeeded( hits ), 
-                    "Accessing hit(0) should succeeded for closed database (hits still holds a reference to its originator)." ); 
+                cpix_Succeeded( hits ), 
+                "Accessing hit(0) should succeeded for closed database (hits still holds a reference to its originator)." ); 
 
         if (cpix_Failed(hits))
             {
-                wchar_t
-                    buf[256];
-                cpix_Error_report(hits->err_,
-                                  buf,
-                                  sizeof(buf) / sizeof(wchar_t));
-                printf("%S\n", buf);
-                cpix_ClearError(hits);
-                
+        wchar_t
+        buf[256];
+        cpix_Error_report(hits->err_,
+                buf,
+                sizeof(buf) / sizeof(wchar_t));
+        printf("%S\n", buf);
+        cpix_ClearError(hits);
+
             }
+        }
+        FREE_DOC(doc, 1);    
+                    
 
+        ALLOC_DOC(doc, 1)
         printf("\ndoc #20: ");
         cpix_Hits_doc(hits,
                       20,
-                      &doc);
+                      doc,
+                      1);
+        if (doc[0]->ptr_ != NULL) {
         ITK_EXPECT( testMgr, 
-                    cpix_Failed( hits ), 
-                    "Accessing hit(20) should NOT succeeded for closed database (hits still holds a reference to its originator)." ); 
+                cpix_Failed( hits ), 
+                "Accessing hit(20) should NOT succeeded for closed database (hits still holds a reference to its originator)." ); 
 
         if (cpix_Failed(hits))
             {
-                wchar_t
-                    buf[256];
-                cpix_Error_report(hits->err_,
-                                  buf,
-                                  sizeof(buf) / sizeof(wchar_t));
-                printf("%S\n", buf);
-                cpix_ClearError(hits);
-                assert_failed = 1;
+        wchar_t
+        buf[256];
+        cpix_Error_report(hits->err_,
+                buf,
+                sizeof(buf) / sizeof(wchar_t));
+        printf("%S\n", buf);
+        cpix_ClearError(hits);
+        assert_failed = 1;
             }
+        }
+        
+        FREE_DOC(doc, 1)
         testResultXml(xml_file);
         cpix_Hits_destroy( hits );
         cpix_Query_destroy( query );
--- a/searchengine/cpix/tsrc/cpixunittest/src/documenttest.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixunittest/src/documenttest.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -375,53 +375,68 @@
         //  EXPECTED result is that doc2 first, doc1 second.
 
         cpix_Document
-            returnedDoc1;
+            **returnedDoc1;
 
-        cpix_Hits_doc(hits_, 0, &returnedDoc1);
+        ALLOC_DOC(returnedDoc1, 1);
+        cpix_Hits_doc(hits_, 0, returnedDoc1, 1);
+        if (returnedDoc1[0]->ptr_ != NULL) {
 
-        const wchar_t* id = cpix_Document_getFieldValue(&returnedDoc1, 
-                                                        LCPIX_DOCUID_FIELD);
+        const wchar_t* id = cpix_Document_getFieldValue(returnedDoc1[0], 
+                LCPIX_DOCUID_FIELD);
         if (id)
-        {
-            std::wstring str(id);
-            ITK_ASSERT(testMgr,
+            {
+        std::wstring str(id);
+        ITK_ASSERT(testMgr,
                 str.compare(LDOCUID2) == 0,
                 "wrong document");
-            if(str.compare(LDOCUID2) != 0)
-                {
-                assert_failed = 1;
-                }
+        if(str.compare(LDOCUID2) != 0)
+            {
+        assert_failed = 1;
+            }
+            }
+        else
+            {
+        assert_failed = 1;
+        ITK_PANIC("failed to get _docuid");
+            }
+        } else  {
+            ITK_PANIC("could not fetch requested doc");
+            assert_failed = 1;
         }
-        else
-        {
-            assert_failed = 1;
-            ITK_PANIC("failed to get _docuid");
-        }
+        FREE_DOC(returnedDoc1, 1);
+        
+        cpix_Document
+            **returnedDoc2;
+        ALLOC_DOC(returnedDoc2, 1)
+                
+        cpix_Hits_doc(hits_, 1, returnedDoc2, 1);
+        if (returnedDoc2[0]->ptr_ != NULL) {
+        const wchar_t* id = NULL;
 
-        cpix_Document
-            returnedDoc2;
-
-        cpix_Hits_doc(hits_, 1, &returnedDoc2);
-        id = NULL;
-
-        id = cpix_Document_getFieldValue(&returnedDoc2, LCPIX_DOCUID_FIELD);
+        id = cpix_Document_getFieldValue(returnedDoc2[0], LCPIX_DOCUID_FIELD);
         if (id)
-        {
-            std::wstring str(id);
-            ITK_ASSERT(testMgr,
+            {
+        std::wstring str(id);
+        ITK_ASSERT(testMgr,
                 str.compare(LDOCUID1) == 0,
                 "wrong document");
-            if(str.compare(LDOCUID1) != 0)
-                {
-                assert_failed = 1;
-                }
-        }
+        if(str.compare(LDOCUID1) != 0)
+            {
+        assert_failed = 1;
+            }
+            }
         else
-        {
+            {
         assert_failed = 1;
-            ITK_PANIC("failed to get _docuid");
+        ITK_PANIC("failed to get _docuid");
+            }
+        }  else  {
+            ITK_PANIC("could not fetch requested doc");
+            assert_failed = 1;
         }
+        FREE_DOC(returnedDoc2, 1);
         testResultXml(xml_file);
+        
     }
 
 
@@ -455,52 +470,66 @@
         //  EXPECTED result is that doc1 first, doc2 second.
 
         cpix_Document
-            returnedDoc1;
+            **returnedDoc1;
+        ALLOC_DOC(returnedDoc1, 1)
         
-        cpix_Hits_doc(hits_, 0, &returnedDoc1);
+        cpix_Hits_doc(hits_, 0, returnedDoc1, 1);
+        if (returnedDoc1[0]->ptr_ != NULL) {
 
-        const wchar_t* id = cpix_Document_getFieldValue(&returnedDoc1, 
-                                                        LCPIX_DOCUID_FIELD);
+        const wchar_t* id = cpix_Document_getFieldValue(returnedDoc1[0], 
+                LCPIX_DOCUID_FIELD);
         if ( id )
-        {
-            std::wstring str( id );
-            ITK_ASSERT(testMgr,
+            {
+        std::wstring str( id );
+        ITK_ASSERT(testMgr,
                 str.compare(LDOCUID1) == 0,
                 "wrong document");
-            if(str.compare(LDOCUID1) != 0)
-                {
-                assert_failed = 1;
-                }
-        }
+        if(str.compare(LDOCUID1) != 0)
+            {
+        assert_failed = 1;
+            }
+            }
         else
-        {
-            ITK_PANIC("failed to get _docuid");
+            {
+        ITK_PANIC("failed to get _docuid");
+        assert_failed = 1;
+            }
+        }  else  {
+            ITK_PANIC("could not fetch requested doc");
             assert_failed = 1;
         }
+        FREE_DOC(returnedDoc1, 1);
 
         cpix_Document
-            returnedDoc2;
-
-        cpix_Hits_doc(hits_, 1, &returnedDoc2);
-        id = NULL;
+            **returnedDoc2;
+        ALLOC_DOC(returnedDoc2, 1);
 
-        id = cpix_Document_getFieldValue(&returnedDoc2, LCPIX_DOCUID_FIELD );
+        cpix_Hits_doc(hits_, 1, returnedDoc2, 1);
+        if (returnedDoc2[0]->ptr_ != NULL) {
+        const wchar_t* id = NULL;
+
+        id = cpix_Document_getFieldValue(returnedDoc2[0], LCPIX_DOCUID_FIELD );
         if ( id )
-        {
-            std::wstring str( id );
-            ITK_ASSERT(testMgr,
+            {
+        std::wstring str( id );
+        ITK_ASSERT(testMgr,
                 str.compare(LDOCUID2) == 0,
                 "wrong document");
-            if(str.compare(LDOCUID2) != 0)
-                {
-                assert_failed = 1;
-                }
-        }
+        if(str.compare(LDOCUID2) != 0)
+            {
+        assert_failed = 1;
+            }
+            }
         else
-        {
-            ITK_PANIC("failed to get _docuid");
+            {
+        ITK_PANIC("failed to get _docuid");
+        assert_failed = 1;
+            }
+        }  else  {
+            ITK_PANIC("could not fetch requested doc");
             assert_failed = 1;
         }
+        FREE_DOC(returnedDoc2, 1);
         testResultXml(xml_file);
     }
 
@@ -532,52 +561,66 @@
         //  EXPECTED result is that doc1 first, doc2 second.
 
         cpix_Document
-            returnedDoc1;
+            **returnedDoc1;
+        ALLOC_DOC(returnedDoc1, 1);
         
-        cpix_Hits_doc(hits_, 0, &returnedDoc1);
+        cpix_Hits_doc(hits_, 0, returnedDoc1, 1);
+        if (returnedDoc1[0]->ptr_ != NULL) {
 
-        const wchar_t* id = cpix_Document_getFieldValue(&returnedDoc1, 
-                                                        LCPIX_DOCUID_FIELD);
+        const wchar_t* id = cpix_Document_getFieldValue(returnedDoc1[0], 
+                LCPIX_DOCUID_FIELD);
         if (id)
-        {
-            std::wstring str(id);
-            ITK_ASSERT(testMgr,
+            {
+        std::wstring str(id);
+        ITK_ASSERT(testMgr,
                 str.compare(LDOCUID1) == 0,
                 "wrong document");
-            if(str.compare(LDOCUID1) != 0)
-                {
-                assert_failed = 1;
-                }
-        }
+        if(str.compare(LDOCUID1) != 0)
+            {
+        assert_failed = 1;
+            }
+            }
         else
-        {
-            ITK_PANIC("failed to get _docuid");
+            {
+        ITK_PANIC("failed to get _docuid");
+        assert_failed = 1;
+            }
+        }  else  {
+            ITK_PANIC("could not fetch requested doc");
             assert_failed = 1;
         }
+        FREE_DOC(returnedDoc1, 1);
 
         cpix_Document
-            returnedDoc2;
-
-        cpix_Hits_doc(hits_, 1, &returnedDoc2);
-        id = NULL;
+            **returnedDoc2;
+        ALLOC_DOC(returnedDoc2, 1);
 
-        id = cpix_Document_getFieldValue(&returnedDoc2, LCPIX_DOCUID_FIELD);
+        cpix_Hits_doc(hits_, 1, returnedDoc2, 1);
+        if (returnedDoc2[0]->ptr_ != NULL) {
+        const wchar_t* id = NULL;
+
+        id = cpix_Document_getFieldValue(returnedDoc2[0], LCPIX_DOCUID_FIELD);
         if (id)
-        {
-            std::wstring str(id);
-            ITK_ASSERT(testMgr,
+            {
+        std::wstring str(id);
+        ITK_ASSERT(testMgr,
                 str.compare(LDOCUID2) == 0,
                 "wrong document");
-            if(str.compare(LDOCUID2) != 0)
-                {
-                assert_failed = 1;
-                }
-        }
+        if(str.compare(LDOCUID2) != 0)
+            {
+        assert_failed = 1;
+            }
+            }
         else
-        {
-            ITK_PANIC("failed to get _docuid");
+            {
+        ITK_PANIC("failed to get _docuid");
+        assert_failed = 1;
+            }
+        }  else  {
+            ITK_PANIC("could not fetch requested doc");
             assert_failed = 1;
         }
+        FREE_DOC(returnedDoc2, 1);
         testResultXml(xml_file);
     }
 
@@ -625,52 +668,66 @@
 
         //  EXPECTED result is that doc2 first.
         cpix_Document
-            returnedDoc1;
+            **returnedDoc1;
+        ALLOC_DOC(returnedDoc1, 1);
         
-        cpix_Hits_doc(hits_, 0, &returnedDoc1);
+        cpix_Hits_doc(hits_, 0, returnedDoc1, 1);
+        if (returnedDoc1[0]->ptr_ != NULL) {
 
-        const wchar_t* id = cpix_Document_getFieldValue(&returnedDoc1, 
-                                                        LCPIX_DOCUID_FIELD);
+        const wchar_t* id = cpix_Document_getFieldValue(returnedDoc1[0], 
+                LCPIX_DOCUID_FIELD);
         if (id)
-        {
-            std::wstring str(id);
-            ITK_ASSERT(testMgr,
+            {
+        std::wstring str(id);
+        ITK_ASSERT(testMgr,
                 str.compare(LDOCUID1) == 0,
                 "wrong document");
-            if(str.compare(LDOCUID2) != 0)
-                {
-                assert_failed = 1;
-                }
-        }
+        if(str.compare(LDOCUID2) != 0)
+            {
+        assert_failed = 1;
+            }
+            }
         else
-        {
-            ITK_PANIC("failed to get _docuid");
+            {
+        ITK_PANIC("failed to get _docuid");
+        assert_failed = 1;
+            }
+        }  else  {
+            ITK_PANIC("could not fetch requested doc");
             assert_failed = 1;
         }
+        FREE_DOC(returnedDoc1, 1);
 
         cpix_Document
-            returnedDoc2;
-
-        cpix_Hits_doc(hits_, 1, &returnedDoc2);
-        id = NULL;
+            **returnedDoc2;
+        ALLOC_DOC(returnedDoc2, 1);
 
-        id = cpix_Document_getFieldValue(&returnedDoc2, LCPIX_DOCUID_FIELD);
+        cpix_Hits_doc(hits_, 1, returnedDoc2, 1);
+        if (returnedDoc2[0]->ptr_ != NULL) {
+        const wchar_t* id = NULL;
+
+        id = cpix_Document_getFieldValue(returnedDoc2[0], LCPIX_DOCUID_FIELD);
         if (id)
-        {
-            std::wstring str(id);
-            ITK_ASSERT(testMgr,
+            {
+        std::wstring str(id);
+        ITK_ASSERT(testMgr,
                 str.compare(LDOCUID2) == 0,
                 "wrong document");
-            if(str.compare(LDOCUID2) != 0)
-                {
-                assert_failed = 1;
-                }
-        }
+        if(str.compare(LDOCUID2) != 0)
+            {
+        assert_failed = 1;
+            }
+            }
         else
-        {
-            ITK_PANIC("failed to get _docuid");
+            {
+        ITK_PANIC("failed to get _docuid");
+        assert_failed = 1;
+            }
+        }  else  {
+            ITK_PANIC("could not fetch requested doc");
             assert_failed = 1;
         }
+        FREE_DOC(returnedDoc2, 1);
         testResultXml(xml_file);
     }
 };
--- a/searchengine/cpix/tsrc/cpixunittest/src/randomtest.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixunittest/src/randomtest.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -20,6 +20,7 @@
 #include <sstream>
 #include <time.h>
 #include "std_log_result.h"
+#include "testutils.h"
 
 using namespace std;
 using namespace Itk;
@@ -456,10 +457,11 @@
                             bool found = false;
                             for ( int i = 0; i < cpix_Hits_length( hits ); i++ )
                                 {
-                                    cpix_Document doc;
-                                    cpix_Hits_doc( hits, i, &doc );
-
-                                    const wchar_t* id = cpix_Document_getFieldValue( &doc, LCPIX_DOCUID_FIELD );
+                                    cpix_Document **doc;
+                                    ALLOC_DOC (doc, 1);
+                                    cpix_Hits_doc( hits, i, doc, 1 );
+                                    if (doc[0]->ptr_ != NULL) {
+                                        const wchar_t* id = cpix_Document_getFieldValue( doc[0], LCPIX_DOCUID_FIELD );
 
                                     if ( id )
                                         {
@@ -470,6 +472,8 @@
                                                     break;
                                                 }
                                         }
+                                    }
+                                    FREE_DOC(doc, 1);
                                 }
                             if ( !found )
                                 {
@@ -538,27 +542,33 @@
 
 		if ( hits )
 			{
-			for ( int i = 0; i < cpix_Hits_length( hits ); i++ )
-				{
-				cpix_Document doc;
-				cpix_Hits_doc( hits, i, &doc );
+			for ( int i = 0; i < cpix_Hits_length( hits ); i++ ) {
+			
+				cpix_Document **doc;
+				ALLOC_DOC(doc, 1);
+				cpix_Hits_doc( hits, i, doc, 1 );
 
-				const wchar_t* id = cpix_Document_getFieldValue( &doc, LCPIX_DOCUID_FIELD );
+				if (doc[0]->ptr_ != NULL) {
+				    
+                    const wchar_t* id = cpix_Document_getFieldValue(doc[0],
+                            LCPIX_DOCUID_FIELD);
 
-				if ( id )
-					{
-					wstring str( id );
-					size_t index = GetItemIndex( str.c_str() );
-					wstring content( testCorpus_.item( index ) );
+                    if (id)
+                        {
+                        wstring str(id);
+                        size_t index = GetItemIndex(str.c_str());
+                        wstring content(testCorpus_.item(index));
 
-                                        // TODO expect instead of
-                                        // assert otherwise cpix_Hits
-                                        // instance leaks
-					ITK_ASSERT( testMgr,
-								containsTerm( content, term ),
-								"False positive? Term %S not found in %S", term.c_str(), content.c_str() );
-					matches++;
-					}
+                        // TODO expect instead of
+                        // assert otherwise cpix_Hits
+                        // instance leaks
+                        ITK_ASSERT( testMgr,
+                                containsTerm( content, term ),
+                                "False positive? Term %S not found in %S", term.c_str(), content.c_str() );
+                        matches++;
+                        }
+                    }
+                FREE_DOC(doc, 1);
 				}
 			cpix_Hits_destroy( hits );
 			}
--- a/searchengine/cpix/tsrc/cpixunittest/src/suggestion.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixunittest/src/suggestion.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -22,16 +22,17 @@
 
 #include "suggestion.h"
 #include "config.h"
+#include "testutils.h"
 
 
 
-Suggestion::Suggestion(cpix_Document & doc,
+Suggestion::Suggestion(cpix_Document * doc,
                        Itk::TestMgr  * testMgr)
 {
     const wchar_t
-        * value = cpix_Document_getFieldValue(&doc,
+        * value = cpix_Document_getFieldValue(doc,
                                               LTERM_TEXT_FIELD);
-    if (cpix_Failed(&doc))
+    if (cpix_Failed(doc))
         {
             ITK_EXPECT(testMgr,
                        false,
@@ -43,9 +44,9 @@
             term_ = value;
         }
     
-    value = cpix_Document_getFieldValue(&doc,
+    value = cpix_Document_getFieldValue(doc,
                                         LTERM_DOCFREQ_FIELD);
-    if (cpix_Failed(&doc))
+    if (cpix_Failed(doc))
         {
             ITK_EXPECT(testMgr,
                        false,
@@ -128,23 +129,28 @@
     for (int32_t i = 0; i < hitCount; ++i)
         {
             cpix_Document
-                doc;
+                **doc;
+            ALLOC_DOC(doc, 1);
             cpix_Hits_doc(hits,
                           i,
-                          &doc);
+                          doc,
+                          1);
+            if (doc[0]->ptr_ != NULL) {
             if (cpix_Failed(hits))
                 {
-                    ITK_EXPECT(testMgr,
-                               false,
-                               "Failed to get doc %d",
-                               i);
-                    cpix_ClearError(hits);
-                    goOn = false;
-                    break;
+            ITK_EXPECT(testMgr,
+                    false,
+                    "Failed to get doc %d",
+                    i);
+            cpix_ClearError(hits);
+            goOn = false;
+            break;
                 }
 
-            suggestions.push_back(Suggestion(doc,
-                                             testMgr));
+            suggestions.push_back(Suggestion(doc[0],
+                    testMgr));
+            }
+            FREE_DOC(doc, 1);
         }
 
     if (goOn)
--- a/searchengine/cpix/tsrc/cpixunittest/src/testutils.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixunittest/src/testutils.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -151,15 +151,17 @@
     cout << "Number of hits: " << hitCount << endl;
 
     cpix_Document
-        doc;
+        **doc;
+    ALLOC_DOC(doc, 1);
 
     for (int32_t i = 0; i < hitCount; ++i)
         {
             cpix_Hits_doc(hits,
                           i,
-                          &doc);
+                          doc,
+                          1);
 
-            if (cpix_Failed(hits))
+            if (cpix_Failed(hits) || (doc_Fetch_Failed(doc[0])))
                 {
                     ITK_EXPECT(testMgr,
                                false,
@@ -169,9 +171,11 @@
                     break;
                 }
             // OBS PrintHit(&doc,
-            printHitFunc(&doc,
+            printHitFunc(doc[0],
                          testMgr);
         }
+        
+    FREE_DOC(doc, 1);
 }
 
 
@@ -329,15 +333,17 @@
     cout << "Number of hits: " << hitCount << endl;
 
     cpix_Document
-        doc;
+        **doc;
+    ALLOC_DOC(doc, 1);
 
     for (int32_t i = 0; i < hitCount; ++i)
         {
             cpix_Hits_doc(hits,
                           i,
-                          &doc);
+                          doc,
+                          1);
 
-            if (cpix_Failed(hits))
+            if (cpix_Failed(hits) || (doc_Fetch_Failed(doc[0])))
                 {
                     if (allowFailure)
                         {
@@ -355,9 +361,10 @@
                     cpix_ClearError(hits);
                     break;
                 }
-            printHit(&doc,
+            printHit(doc[0],
                         testMgr);
         }
+    FREE_DOC(doc, 1);
 }
 
 
--- a/searchengine/cpix/tsrc/cpixunittest/src/whiteboxtests.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/cpix/tsrc/cpixunittest/src/whiteboxtests.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -514,13 +514,15 @@
         for (int32_t hitDocIdx = from; hitDocIdx < to; ++hitDocIdx)
             {
                 cpix_Document
-                    doc;
+                    **doc;
+                ALLOC_DOC(doc, 1);
 
                 cpix_Hits_doc(hits,
                               hitDocIdx,
-                              &doc);
+                              doc,
+                              1);
 
-                if (cpix_Failed(hits))
+                if (cpix_Failed(hits) || (doc_Fetch_Failed(doc[0])))
                     {
                         wchar_t
                             buf[92];
@@ -534,8 +536,9 @@
                         break;
                     }
 
-                util_->printHit(&doc,
+                util_->printHit(doc[0],
                                 mgr);
+                FREE_DOC(doc, 1);
             }
     }
 
--- a/searchengine/oss/cl/clucene/group/clucene.mmp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/clucene/group/clucene.mmp	Wed Aug 18 10:53:26 2010 +0300
@@ -165,6 +165,7 @@
 SOURCE StringIntern.cpp
 SOURCE ThreadLocal.cpp
 
+//MACRO USE_HIGHLIGHTER
 // highlighter
 SOURCEPATH	  ../src/CLucene/highlighter
 SOURCE Encoder.cpp 
--- a/searchengine/oss/cl/clucene/src/clucene/analysis/standard/standardtokenizer.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/clucene/src/clucene/analysis/standard/standardtokenizer.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -65,7 +65,7 @@
   /* otherMatches is a condition (possibly compound) under which a character
   ** that's not an ALNUM or UNDERSCORE can be considered not to break the
   ** span.  Callers should pass false if only ALNUM/UNDERSCORE are acceptable. */
-  #define CONSUME_WORD                  _CONSUME_AS_LONG_AS(ALNUM || UNDERSCORE)
+  #define CONSUME_WORD                  _CONSUME_AS_LONG_AS(ALNUM /*|| UNDERSCORE*/)
   
   /*
   ** Consume CJK characters
@@ -148,7 +148,7 @@
 	  // CHANGED
 	  } else if (SPACE) {
         continue;
-      } else if (ALPHA || UNDERSCORE) {
+      } else if (ALPHA) {
         tokenStart = rdPos;
         return ReadAlphaNum(ch,t);
       } else if (DIGIT || NEGATIVE_SIGN_ || DECIMAL) {
@@ -241,8 +241,8 @@
     TCHAR rightmost = RIGHTMOST(str);
     /* Don't including a trailing decimal point. */
     if(ALPHA){
-            return ReadAlphaNum(prev,t);  
-     }
+        CONSUME_WORD;
+    }
     if (rightmost == '.') {
       SHAVE_RIGHTMOST(str);
       unReadChar();
--- a/searchengine/oss/cl/clucene/src/clucene/highlighter/SimpleHTMLFormatter.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/clucene/src/clucene/highlighter/SimpleHTMLFormatter.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -13,8 +13,8 @@
 
 SimpleHTMLFormatter::SimpleHTMLFormatter()
 {
-	_preTag = stringDuplicate(_T("<B>"));
-	_postTag = stringDuplicate(_T("</B>"));
+	_preTag = stringDuplicate(_T("<U>"));
+	_postTag = stringDuplicate(_T("</U>"));
 }
 
 SimpleHTMLFormatter::~SimpleHTMLFormatter() 
--- a/searchengine/oss/cl/clucene/src/clucene/search/hits.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/clucene/src/clucene/search/hits.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -11,6 +11,13 @@
 #include "clucene/index/indexreader.h"
 #include "filter.h"
 #include "clucene/search/searchheader.h"
+//#ifdef USE_HIGHLIGHTER 
+//#include "CLucene/highlighter/QueryTermExtractor.h"
+//#include "CLucene/highlighter/QueryScorer.h"
+//#include "CLucene/highlighter/Highlighter.h"
+//#include "CLucene/highlighter/SimpleHTMLFormatter.h"
+//#include "CLucene/analysis/standard/StandardAnalyzer.h"
+//#endif
 
 CL_NS_USE(document)
 CL_NS_USE(util)
@@ -42,6 +49,9 @@
 
 	Hits::Hits(Searcher* s, Query* q, Filter* f, const Sort* _sort):
 		query(q), searcher(s), filter(f), sort(_sort)
+//#ifdef USE_HIGHLIGHTER
+//		, hl_frag(20)
+//#endif		
 	{
 	//Func - Constructor
 	//Pre  - s contains a valid reference to a searcher s
@@ -83,6 +93,42 @@
 		if (hitDoc->doc == NULL){
 			hitDoc->doc = _CLNEW Document;
 			searcher->doc(hitDoc->id, hitDoc->doc);	  // cache miss: read document
+//#ifdef USE_HIGHLIGHTER
+//            CL_NS(document)::Document* document = hitDoc->doc;
+//
+//            const TCHAR* text = document->get(LCPIX_EXCERPT_FIELD);
+//
+//            if(text)
+//              {
+//                Query* rwquery = searcher->getrewritten(hitDoc->id, query);
+//
+//                TCHAR * str = rwquery->toString();
+//                
+//                CL_NS2(search,highlight)::QueryScorer hl_scorer(rwquery);
+//
+//                CL_NS2(search,highlight)::Highlighter highlighter(&hl_formatter, &hl_scorer);
+//
+//                highlighter.setTextFragmenter(&hl_frag);
+//
+//                wstring hlText;
+//                
+//                StringReader strreader(text);
+//
+//                lucene::analysis::TokenStream * tokenStream = hl_analyzer.tokenStream(LCPIX_EXCERPT_FIELD, &strreader);
+//
+//                TCHAR* result = highlighter.getBestFragments(tokenStream, text, 2,L"...");
+//               
+//                if (result != NULL)
+//                    {
+//                    hlText.append(result);
+//                    
+//                    document->removeField( LCPIX_EXCERPT_FIELD );
+//
+//                    document->add(*_CLNEW Field(LCPIX_EXCERPT_FIELD,
+//                                    hlText.c_str(), lucene::document::Field::STORE_YES | lucene::document::Field::INDEX_NO));
+//                    }
+//                } 
+//#endif            
 		}
 
 		return *hitDoc->doc;
--- a/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -16,7 +16,14 @@
 #include "clucene/index/term.h"
 #include "clucene/util/bitset.h"
 #include "fieldsortedhitqueue.h"
-
+//#ifdef USE_HIGHLIGHTER 
+//#include "CLucene/highlighter/QueryTermExtractor.h"
+//#include "CLucene/highlighter/QueryScorer.h"
+//#include "CLucene/highlighter/Highlighter.h"
+//#include "CLucene/highlighter/SimpleHTMLFormatter.h"
+//#include "CLucene/analysis/standard/StandardAnalyzer.h"
+//#include "CLucene/queryParser/QueryParser.h"
+//#endif
 CL_NS_USE(index)
 CL_NS_USE(util)
 CL_NS_USE(document)
@@ -112,6 +119,10 @@
 
       reader = IndexReader::open(path);
       readerOwner = true;
+//#ifdef USE_HIGHLIGHTER
+//      rewrittenQuery = NULL;
+//#endif      
+     
   }
   
   IndexSearcher::IndexSearcher(CL_NS(store)::Directory* directory){
@@ -124,6 +135,10 @@
 
       reader = IndexReader::open(directory);
       readerOwner = true;
+//#ifdef USE_HIGHLIGHTER
+//      rewrittenQuery = NULL;
+//#endif      
+      
   }
 
   IndexSearcher::IndexSearcher(IndexReader* r){
@@ -134,6 +149,9 @@
 
       reader      = r;
       readerOwner = false;
+//#ifdef USE_HIGHLIGHTER
+//      rewrittenQuery = NULL;
+//#endif     
   }
 
   IndexSearcher::~IndexSearcher(){
@@ -200,7 +218,13 @@
   //Func -
   //Pre  - reader != NULL
   //Post -
-
+//#ifdef USE_HIGHLIGHTER
+//      if(!rewrittenQuery)
+//         {
+//         rewrittenQuery = query->rewrite(reader);        
+//         }          
+//#endif        
+          
       CND_PRECONDITION(reader != NULL, "reader is NULL");
       CND_PRECONDITION(query != NULL, "query is NULL");
 
@@ -247,7 +271,12 @@
   // inherit javadoc
   TopFieldDocs* IndexSearcher::_search(Query* query, Filter* filter, const int32_t nDocs,
          const Sort* sort) {
-             
+//#ifdef USE_HIGHLIGHTER
+//      if(!rewrittenQuery)
+//         {
+//         rewrittenQuery = query->rewrite(reader);        
+//         }          
+//#endif  
       CND_PRECONDITION(reader != NULL, "reader is NULL");
       CND_PRECONDITION(query != NULL, "query is NULL");
 
@@ -295,7 +324,12 @@
   //       filter may or may not be NULL
   //       results is a valid reference to a HitCollector and used to store the results
   //Post - filter if non-NULL, a bitset used to eliminate some documents
-
+//#ifdef USE_HIGHLIGHTER      
+//      if(!rewrittenQuery)
+//         {
+//         rewrittenQuery = query->rewrite(reader);        
+//         } 
+//#endif      
       CND_PRECONDITION(reader != NULL, "reader is NULL");
       CND_PRECONDITION(query != NULL, "query is NULL");
 
@@ -338,7 +372,16 @@
         }
         return query;
     }
-
+//#ifdef USE_HIGHLIGHTER
+//Query* IndexSearcher::getrewritten(int32_t n, Query* original) 
+//          {
+//        if(!rewrittenQuery)
+//           {
+//           rewrittenQuery = original->rewrite(reader);        
+//           }
+//          return rewrittenQuery;
+//          }
+//#endif
     void IndexSearcher::explain(Query* query, int32_t doc, Explanation* ret){
         Weight* weight = query->weight(this);
         weight->explain(reader, doc, ret);
--- a/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/clucene/src/clucene/search/indexsearcher.h	Wed Aug 18 10:53:26 2010 +0300
@@ -29,7 +29,9 @@
 class IndexSearcher:public Searcher{
 	CL_NS(index)::IndexReader* reader;
 	bool readerOwner;
-
+//#ifdef USE_HIGHLIGHTER	
+//	Query *rewrittenQuery;
+//#endif	
 public:
 	/// Creates a searcher searching the index in the named directory.
 	IndexSearcher(const char* path);
@@ -62,6 +64,9 @@
 	}
 
 	Query* rewrite(Query* original);
+///#ifdef USE_HIGHLIGHTER
+//	Query* getrewritten(int32_t n, Query* original);
+//#endif	
 	void explain(Query* query, int32_t doc, Explanation* ret);
 };
 CL_NS_END
--- a/searchengine/oss/cl/clucene/src/clucene/search/multisearcher.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/clucene/src/clucene/search/multisearcher.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -62,6 +62,14 @@
     int32_t i = subSearcher(n);			  // find searcher index
     return searchables[i]->doc(n - starts[i], d);	  // dispatch to searcher
   }
+  
+//#ifdef USE_HIGHLIGHTER  
+//  Query* MultiSearcher::getrewritten(int32_t n, Query* original) {
+//    int32_t i = subSearcher(n);           // find searcher index 
+//   // changed to get already rewritten query
+//    return searchables[i]->getrewritten(n, original);
+//  }
+//#endif  
 
   int32_t MultiSearcher::searcherIndex(int32_t n) const{
 	 return subSearcher(n);
--- a/searchengine/oss/cl/clucene/src/clucene/search/multisearcher.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/clucene/src/clucene/search/multisearcher.h	Wed Aug 18 10:53:26 2010 +0300
@@ -88,6 +88,9 @@
         void _search(Query* query, Filter* filter, HitCollector* results);
 
 		Query* rewrite(Query* original);
+//#ifdef USE_HIGHLIGHTER			
+//		Query* getrewritten(int32_t n, Query* original);
+//#endif	
 		void explain(Query* query, int32_t doc, Explanation* ret);
     };
 
--- a/searchengine/oss/cl/clucene/src/clucene/search/searchheader.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/clucene/src/clucene/search/searchheader.h	Wed Aug 18 10:53:26 2010 +0300
@@ -20,6 +20,14 @@
 #include "clucene/search/explanation.h"
 #include "clucene/search/similarity.h"
 
+//#ifdef USE_HIGHLIGHTER
+//#include "CLucene/highlighter/SimpleFragmenter.h"
+//#include "CLucene/highlighter/SimpleHTMLFormatter.h"
+//#include "CLucene/analysis/standard/StandardAnalyzer.h"
+//
+//#define LCPIX_EXCERPT_FIELD   L"_excerpt"
+//#endif
+
 CL_NS_DEF(search)
 
 	//predefine classes
@@ -159,7 +167,13 @@
 		HitDoc* last;				  // tail of LRU cache
 		int32_t numDocs;			  // number cached
 		int32_t maxDocs;			  // max to cache
-
+//#ifdef USE_HIGHLIGHTER		
+//		CL_NS2(search,highlight)::SimpleHTMLFormatter hl_formatter;
+//		
+//		CL_NS2(search,highlight)::SimpleFragmenter hl_frag;
+//        
+//		CL_NS2(analysis,standard)::StandardAnalyzer hl_analyzer;
+//#endif		
     public:
 		Hits(Searcher* s, Query* q, Filter* f, const Sort* sort=NULL);
 		~Hits();
@@ -277,6 +291,9 @@
       * Searcher#search(Query,Filter,Sort)} instead.
       */
 	  	virtual TopFieldDocs* _search(Query* query, Filter* filter, const int32_t n, const Sort* sort) = 0;
+//#ifdef USE_HIGHLIGHTER	  	
+//	  	virtual Query* getrewritten(int32_t n, Query* original)= 0;
+//#endif	  	
    };
 
 
--- a/searchengine/oss/cl/group/bld.inf	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchengine/oss/cl/group/bld.inf	Wed Aug 18 10:53:26 2010 +0300
@@ -1,5 +1,5 @@
 #include "../clucene/group/bld.inf"
 
 PRJ_TESTMMPFILES
-#include "../tsrc/clucene_unittest/group/bld.inf"
+//#include "../tsrc/clucene_unittest/group/bld.inf"
 #include "../tsrc/clucene_extraunittest/group/bld.inf"
\ No newline at end of file
--- a/searcher/group/bld.inf	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/group/bld.inf	Wed Aug 18 10:53:26 2010 +0300
@@ -22,5 +22,5 @@
 
 #include "../tsrc/RobustnessTest/group/bld.inf"
 #include "../tsrc/LogPlayer/group/bld.inf"
-#include "../tsrc/SymbianOsUnit/group/s60_3rd/bld.inf"
-//#include "../tsrc/cpixsearchertest/group/bld.inf"
\ No newline at end of file
+//#include "../tsrc/SymbianOsUnit/group/s60_3rd/bld.inf"
+#include "../tsrc/cpixsearchertest/group/bld.inf"
\ No newline at end of file
--- a/searcher/searchclient/bwins/cpixsearchclientu.def	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchclient/bwins/cpixsearchclientu.def	Wed Aug 18 10:53:26 2010 +0300
@@ -1,97 +1,102 @@
 EXPORTS
-	??0RSearchServerSession@@QAE@XZ @ 1 NONAME ; RSearchServerSession::RSearchServerSession(void)
-	??1CCPixIndexer@@UAE@XZ @ 2 NONAME ; CCPixIndexer::~CCPixIndexer(void)
-	??1CCPixSearcher@@UAE@XZ @ 3 NONAME ; CCPixSearcher::~CCPixSearcher(void)
-	??1CDocumentField@@UAE@XZ @ 4 NONAME ; CDocumentField::~CDocumentField(void)
-	??1CSearchDocument@@UAE@XZ @ 5 NONAME ; CSearchDocument::~CSearchDocument(void)
-	?Add@RSearchServerSubSession@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 6 NONAME ; void RSearchServerSubSession::Add(class TDesC8 const &, class TRequestStatus &)
-	?AddExcerptL@CSearchDocument@@QAEXABVTDesC16@@@Z @ 7 NONAME ; void CSearchDocument::AddExcerptL(class TDesC16 const &)
-	?AddFieldL@CSearchDocument@@QAEAAVCDocumentField@@ABVTDesC16@@0H@Z @ 8 NONAME ; class CDocumentField & CSearchDocument::AddFieldL(class TDesC16 const &, class TDesC16 const &, int)
-	?AddL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVCSearchDocument@@@Z @ 9 NONAME ; void CCPixIndexer::AddL(class MCPixIndexingRequestObserver &, class CSearchDocument const &)
-	?AddL@CCPixIndexer@@QAEXABVCSearchDocument@@@Z @ 10 NONAME ; void CCPixIndexer::AddL(class CSearchDocument const &)
-	?AddL@RSearchServerSubSession@@QAEXABVTDesC8@@@Z @ 11 NONAME ; void RSearchServerSubSession::AddL(class TDesC8 const &)
-	?AppClass@CSearchDocument@@QBEABVTDesC16@@XZ @ 12 NONAME ; class TDesC16 const & CSearchDocument::AppClass(void) const
-	?Boost@CDocumentField@@QBEMXZ @ 13 NONAME ; float CDocumentField::Boost(void) const
-	?Boost@CSearchDocument@@QBEMXZ @ 14 NONAME ; float CSearchDocument::Boost(void) const
-	?CancelAll@RSearchServerSubSession@@QBEXXZ @ 15 NONAME ; void RSearchServerSubSession::CancelAll(void) const
-	?Close@RSearchServerSession@@QAEXXZ @ 16 NONAME ; void RSearchServerSession::Close(void)
-	?Config@CDocumentField@@QBEHXZ @ 17 NONAME ; int CDocumentField::Config(void) const
-	?Connect@RSearchServerSession@@QAEHXZ @ 18 NONAME ; int RSearchServerSession::Connect(void)
-	?DefineVolume@RSearchServerSession@@QAEHABVTDesC16@@0@Z @ 19 NONAME ; int RSearchServerSession::DefineVolume(class TDesC16 const &, class TDesC16 const &)
-	?Delete@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 20 NONAME ; void RSearchServerSubSession::Delete(class TDesC16 const &, class TRequestStatus &)
-	?DeleteL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVTDesC16@@@Z @ 21 NONAME ; void CCPixIndexer::DeleteL(class MCPixIndexingRequestObserver &, class TDesC16 const &)
-	?DeleteL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 22 NONAME ; void CCPixIndexer::DeleteL(class TDesC16 const &)
-	?DeleteL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 23 NONAME ; void RSearchServerSubSession::DeleteL(class TDesC16 const &)
-	?Excerpt@CSearchDocument@@QBEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CSearchDocument::Excerpt(void) const
-	?ExternalizeL@CDocumentField@@QBEXAAVRWriteStream@@@Z @ 25 NONAME ; void CDocumentField::ExternalizeL(class RWriteStream &) const
-	?ExternalizeL@CSearchDocument@@QBEXAAVRWriteStream@@@Z @ 26 NONAME ; void CSearchDocument::ExternalizeL(class RWriteStream &) const
-	?Field@CSearchDocument@@QBEABVCDocumentField@@H@Z @ 27 NONAME ; class CDocumentField const & CSearchDocument::Field(int) const
-	?Field@CSearchDocument@@QBEPBVCDocumentField@@ABVTDesC16@@@Z @ 28 NONAME ; class CDocumentField const * CSearchDocument::Field(class TDesC16 const &) const
-	?FieldCount@CSearchDocument@@QBEHXZ @ 29 NONAME ; int CSearchDocument::FieldCount(void) const
-	?Flush@RSearchServerSubSession@@QAEXAAVTRequestStatus@@@Z @ 30 NONAME ; void RSearchServerSubSession::Flush(class TRequestStatus &)
-	?FlushL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@@Z @ 31 NONAME ; void CCPixIndexer::FlushL(class MCPixIndexingRequestObserver &)
-	?FlushL@CCPixIndexer@@QAEXXZ @ 32 NONAME ; void CCPixIndexer::FlushL(void)
-	?FlushL@RSearchServerSubSession@@QAEXXZ @ 33 NONAME ; void RSearchServerSubSession::FlushL(void)
-	?GetBaseAppClass@CCPixIndexer@@QBEABVTDesC16@@XZ @ 34 NONAME ; class TDesC16 const & CCPixIndexer::GetBaseAppClass(void) const
-	?GetBaseAppClass@CCPixSearcher@@QBEABVTDesC16@@XZ @ 35 NONAME ; class TDesC16 const & CCPixSearcher::GetBaseAppClass(void) const
-	?GetDocument@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@@Z @ 36 NONAME ; void RSearchServerSubSession::GetDocument(int, class TRequestStatus &)
-	?GetDocumentL@CCPixSearcher@@QAEPAVCSearchDocument@@H@Z @ 37 NONAME ; class CSearchDocument * CCPixSearcher::GetDocumentL(int)
-	?GetDocumentL@CCPixSearcher@@QAEXHAAVMCPixNextDocumentRequestObserver@@@Z @ 38 NONAME ; void CCPixSearcher::GetDocumentL(int, class MCPixNextDocumentRequestObserver &)
-	?GetDocumentL@RSearchServerSubSession@@QAEPAVCSearchDocument@@H@Z @ 39 NONAME ; class CSearchDocument * RSearchServerSubSession::GetDocumentL(int)
-	?GetDocumentObjectL@RSearchServerSubSession@@QAEPAVCSearchDocument@@XZ @ 40 NONAME ; class CSearchDocument * RSearchServerSubSession::GetDocumentObjectL(void)
-	?Id@CSearchDocument@@QBEABVTDesC16@@XZ @ 41 NONAME ; class TDesC16 const & CSearchDocument::Id(void) const
-	?InternalizeL@CDocumentField@@QAEXAAVRReadStream@@@Z @ 42 NONAME ; void CDocumentField::InternalizeL(class RReadStream &)
-	?InternalizeL@CSearchDocument@@QAEXAAVRReadStream@@@Z @ 43 NONAME ; void CSearchDocument::InternalizeL(class RReadStream &)
-	?IsDatabaseOpen@CCPixIndexer@@QBEHXZ @ 44 NONAME ; int CCPixIndexer::IsDatabaseOpen(void) const
-	?IsDatabaseOpen@CCPixSearcher@@QBEHXZ @ 45 NONAME ; int CCPixSearcher::IsDatabaseOpen(void) const
-	?Name@CDocumentField@@QBEABVTDesC16@@XZ @ 46 NONAME ; class TDesC16 const & CDocumentField::Name(void) const
-	?NewL@CCPixIndexer@@SAPAV1@AAVRSearchServerSession@@@Z @ 47 NONAME ; class CCPixIndexer * CCPixIndexer::NewL(class RSearchServerSession &)
-	?NewL@CCPixSearcher@@SAPAV1@AAVRSearchServerSession@@ABVTDesC16@@@Z @ 48 NONAME ; class CCPixSearcher * CCPixSearcher::NewL(class RSearchServerSession &, class TDesC16 const &)
-	?NewL@CDocumentField@@SAPAV1@AAVRReadStream@@@Z @ 49 NONAME ; class CDocumentField * CDocumentField::NewL(class RReadStream &)
-	?NewL@CDocumentField@@SAPAV1@ABVTDesC16@@0H@Z @ 50 NONAME ; class CDocumentField * CDocumentField::NewL(class TDesC16 const &, class TDesC16 const &, int)
-	?NewL@CSearchDocument@@SAPAV1@AAVRReadStream@@@Z @ 51 NONAME ; class CSearchDocument * CSearchDocument::NewL(class RReadStream &)
-	?NewL@CSearchDocument@@SAPAV1@ABVTDesC16@@00W4TFilterId@1@@Z @ 52 NONAME ; class CSearchDocument * CSearchDocument::NewL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum CSearchDocument::TFilterId)
-	?NewLC@CCPixIndexer@@SAPAV1@AAVRSearchServerSession@@@Z @ 53 NONAME ; class CCPixIndexer * CCPixIndexer::NewLC(class RSearchServerSession &)
-	?NewLC@CCPixSearcher@@SAPAV1@AAVRSearchServerSession@@ABVTDesC16@@@Z @ 54 NONAME ; class CCPixSearcher * CCPixSearcher::NewLC(class RSearchServerSession &, class TDesC16 const &)
-	?NewLC@CDocumentField@@SAPAV1@AAVRReadStream@@@Z @ 55 NONAME ; class CDocumentField * CDocumentField::NewLC(class RReadStream &)
-	?NewLC@CDocumentField@@SAPAV1@ABVTDesC16@@0H@Z @ 56 NONAME ; class CDocumentField * CDocumentField::NewLC(class TDesC16 const &, class TDesC16 const &, int)
-	?NewLC@CSearchDocument@@SAPAV1@AAVRReadStream@@@Z @ 57 NONAME ; class CSearchDocument * CSearchDocument::NewLC(class RReadStream &)
-	?NewLC@CSearchDocument@@SAPAV1@ABVTDesC16@@00W4TFilterId@1@@Z @ 58 NONAME ; class CSearchDocument * CSearchDocument::NewLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum CSearchDocument::TFilterId)
-	?OpenDatabaseL@CCPixIndexer@@QAEXAAVMCPixOpenDatabaseRequestObserver@@ABVTDesC16@@@Z @ 59 NONAME ; void CCPixIndexer::OpenDatabaseL(class MCPixOpenDatabaseRequestObserver &, class TDesC16 const &)
-	?OpenDatabaseL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 60 NONAME ; void CCPixIndexer::OpenDatabaseL(class TDesC16 const &)
-	?OpenDatabaseL@CCPixSearcher@@QAEXAAVMCPixOpenDatabaseRequestObserver@@ABVTDesC16@@@Z @ 61 NONAME ; void CCPixSearcher::OpenDatabaseL(class MCPixOpenDatabaseRequestObserver &, class TDesC16 const &)
-	?OpenDatabaseL@CCPixSearcher@@QAEXABVTDesC16@@@Z @ 62 NONAME ; void CCPixSearcher::OpenDatabaseL(class TDesC16 const &)
-	?RemoveField@CSearchDocument@@QAEHABVTDesC16@@@Z @ 63 NONAME ; int CSearchDocument::RemoveField(class TDesC16 const &)
-	?Reset@RSearchServerSubSession@@QAEXAAVTRequestStatus@@@Z @ 64 NONAME ; void RSearchServerSubSession::Reset(class TRequestStatus &)
-	?ResetL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@@Z @ 65 NONAME ; void CCPixIndexer::ResetL(class MCPixIndexingRequestObserver &)
-	?ResetL@CCPixIndexer@@QAEXXZ @ 66 NONAME ; void CCPixIndexer::ResetL(void)
-	?ResetL@RSearchServerSubSession@@QAEXXZ @ 67 NONAME ; void RSearchServerSubSession::ResetL(void)
-	?Search@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 68 NONAME ; void RSearchServerSubSession::Search(class TDesC16 const &, class TRequestStatus &)
-	?SearchL@CCPixSearcher@@QAEHABVTDesC16@@0@Z @ 69 NONAME ; int CCPixSearcher::SearchL(class TDesC16 const &, class TDesC16 const &)
-	?SearchL@CCPixSearcher@@QAEXAAVMCPixSearchRequestObserver@@ABVTDesC16@@1@Z @ 70 NONAME ; void CCPixSearcher::SearchL(class MCPixSearchRequestObserver &, class TDesC16 const &, class TDesC16 const &)
-	?SearchL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 71 NONAME ; void RSearchServerSubSession::SearchL(class TDesC16 const &)
-	?SetAnalyzer@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 72 NONAME ; void RSearchServerSubSession::SetAnalyzer(class TDesC16 const &, class TRequestStatus &)
-	?SetAnalyzerL@CCPixIndexer@@QAEXAAVMCPixSetAnalyzerRequestObserver@@ABVTDesC16@@@Z @ 73 NONAME ; void CCPixIndexer::SetAnalyzerL(class MCPixSetAnalyzerRequestObserver &, class TDesC16 const &)
-	?SetAnalyzerL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 74 NONAME ; void CCPixIndexer::SetAnalyzerL(class TDesC16 const &)
-	?SetAnalyzerL@CCPixSearcher@@QAEXAAVMCPixSetAnalyzerRequestObserver@@ABVTDesC16@@@Z @ 75 NONAME ; void CCPixSearcher::SetAnalyzerL(class MCPixSetAnalyzerRequestObserver &, class TDesC16 const &)
-	?SetAnalyzerL@CCPixSearcher@@QAEXABVTDesC16@@@Z @ 76 NONAME ; void CCPixSearcher::SetAnalyzerL(class TDesC16 const &)
-	?SetAnalyzerL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 77 NONAME ; void RSearchServerSubSession::SetAnalyzerL(class TDesC16 const &)
-	?SetBoost@CDocumentField@@QAEXM@Z @ 78 NONAME ; void CDocumentField::SetBoost(float)
-	?SetBoost@CSearchDocument@@QAEXM@Z @ 79 NONAME ; void CSearchDocument::SetBoost(float)
-	?Size@CDocumentField@@QBEHXZ @ 80 NONAME ; int CDocumentField::Size(void) const
-	?Size@CSearchDocument@@QBEHXZ @ 81 NONAME ; int CSearchDocument::Size(void) const
-	?UnDefineVolume@RSearchServerSession@@QAEHABVTDesC16@@@Z @ 82 NONAME ; int RSearchServerSession::UnDefineVolume(class TDesC16 const &)
-	?Update@RSearchServerSubSession@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 83 NONAME ; void RSearchServerSubSession::Update(class TDesC8 const &, class TRequestStatus &)
-	?UpdateL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVCSearchDocument@@@Z @ 84 NONAME ; void CCPixIndexer::UpdateL(class MCPixIndexingRequestObserver &, class CSearchDocument const &)
-	?UpdateL@CCPixIndexer@@QAEXABVCSearchDocument@@@Z @ 85 NONAME ; void CCPixIndexer::UpdateL(class CSearchDocument const &)
-	?UpdateL@RSearchServerSubSession@@QAEXABVTDesC8@@@Z @ 86 NONAME ; void RSearchServerSubSession::UpdateL(class TDesC8 const &)
-	?Value@CDocumentField@@QBEABVTDesC16@@XZ @ 87 NONAME ; class TDesC16 const & CDocumentField::Value(void) const
-	?Version@RSearchServerSession@@QBE?AVTVersion@@XZ @ 88 NONAME ; class TVersion RSearchServerSession::Version(void) const
-	?ContinueHouseKeeping@RSearchServerSession@@QAEHXZ @ 89 NONAME ; int RSearchServerSession::ContinueHouseKeeping(void)
-	?ForceHouseKeeping@RSearchServerSession@@QAEHXZ @ 90 NONAME ; int RSearchServerSession::ForceHouseKeeping(void)
-	?StopHouseKeeping@RSearchServerSession@@QAEHXZ @ 91 NONAME ; int RSearchServerSession::StopHouseKeeping(void)
-	?SetQueryParserL@RSearchServerSubSession@@QAEXH@Z @ 92 NONAME ; void RSearchServerSubSession::SetQueryParserL(int)
-	?SetQueryParserL@CCPixSearcher@@QAEXW4TQueryParser@1@@Z @ 93 NONAME ; void CCPixSearcher::SetQueryParserL(enum CCPixSearcher::TQueryParser)
-	?SetQueryParserL@CCPixSearcher@@QAEXAAVMCPixSetQueryParserRequestObserver@@W4TQueryParser@1@@Z @ 94 NONAME ; void CCPixSearcher::SetQueryParserL(class MCPixSetQueryParserRequestObserver &, enum CCPixSearcher::TQueryParser)
-	?SetQueryParser@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@@Z @ 95 NONAME ; void RSearchServerSubSession::SetQueryParser(int, class TRequestStatus &)
+	?OpenDatabaseL@CCPixSearcher@@QAEXAAVMCPixOpenDatabaseRequestObserver@@ABVTDesC16@@@Z @ 1 NONAME ; void CCPixSearcher::OpenDatabaseL(class MCPixOpenDatabaseRequestObserver &, class TDesC16 const &)
+	?NewL@CSearchDocument@@SAPAV1@ABVTDesC16@@00W4TFilterId@1@@Z @ 2 NONAME ; class CSearchDocument * CSearchDocument::NewL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum CSearchDocument::TFilterId)
+	?DeleteL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVTDesC16@@@Z @ 3 NONAME ; void CCPixIndexer::DeleteL(class MCPixIndexingRequestObserver &, class TDesC16 const &)
+	?SetAnalyzerL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 4 NONAME ; void RSearchServerSubSession::SetAnalyzerL(class TDesC16 const &)
+	?GetDocument@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@@Z @ 5 NONAME ; void RSearchServerSubSession::GetDocument(int, class TRequestStatus &)
+	?SetAnalyzerL@CCPixIndexer@@QAEXAAVMCPixSetAnalyzerRequestObserver@@ABVTDesC16@@@Z @ 6 NONAME ; void CCPixIndexer::SetAnalyzerL(class MCPixSetAnalyzerRequestObserver &, class TDesC16 const &)
+	?SearchL@CCPixSearcher@@QAEHABVTDesC16@@0@Z @ 7 NONAME ; int CCPixSearcher::SearchL(class TDesC16 const &, class TDesC16 const &)
+	?Update@RSearchServerSubSession@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 8 NONAME ; void RSearchServerSubSession::Update(class TDesC8 const &, class TRequestStatus &)
+	?OpenDatabaseL@CCPixSearcher@@QAEXABVTDesC16@@@Z @ 9 NONAME ; void CCPixSearcher::OpenDatabaseL(class TDesC16 const &)
+	?GetBatchDocumentL@RSearchServerSubSession@@QAEPAPAVCSearchDocument@@HAAHH@Z @ 10 NONAME ; class CSearchDocument * * RSearchServerSubSession::GetBatchDocumentL(int, int &, int)
+	?Delete@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 11 NONAME ; void RSearchServerSubSession::Delete(class TDesC16 const &, class TRequestStatus &)
+	?SetAnalyzerL@CCPixSearcher@@QAEXABVTDesC16@@@Z @ 12 NONAME ; void CCPixSearcher::SetAnalyzerL(class TDesC16 const &)
+	?SetAnalyzer@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 13 NONAME ; void RSearchServerSubSession::SetAnalyzer(class TDesC16 const &, class TRequestStatus &)
+	?Size@CSearchDocument@@QBEHXZ @ 14 NONAME ; int CSearchDocument::Size(void) const
+	?AppClass@CSearchDocument@@QBEABVTDesC16@@XZ @ 15 NONAME ; class TDesC16 const & CSearchDocument::AppClass(void) const
+	?NewL@CCPixSearcher@@SAPAV1@AAVRSearchServerSession@@ABVTDesC16@@@Z @ 16 NONAME ; class CCPixSearcher * CCPixSearcher::NewL(class RSearchServerSession &, class TDesC16 const &)
+	?ForceHouseKeeping@RSearchServerSession@@QAEHXZ @ 17 NONAME ; int RSearchServerSession::ForceHouseKeeping(void)
+	?DeleteL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 18 NONAME ; void RSearchServerSubSession::DeleteL(class TDesC16 const &)
+	?GetDocumentL@CCPixSearcher@@QAEPAVCSearchDocument@@H@Z @ 19 NONAME ; class CSearchDocument * CCPixSearcher::GetDocumentL(int)
+	?SetQueryParserL@RSearchServerSubSession@@QAEXH@Z @ 20 NONAME ; void RSearchServerSubSession::SetQueryParserL(int)
+	?GetBatchDocument@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@H@Z @ 21 NONAME ; void RSearchServerSubSession::GetBatchDocument(int, class TRequestStatus &, int)
+	??1CDocumentField@@UAE@XZ @ 22 NONAME ; CDocumentField::~CDocumentField(void)
+	??1CSearchDocument@@UAE@XZ @ 23 NONAME ; CSearchDocument::~CSearchDocument(void)
+	?Value@CDocumentField@@QBEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CDocumentField::Value(void) const
+	?UpdateL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVCSearchDocument@@@Z @ 25 NONAME ; void CCPixIndexer::UpdateL(class MCPixIndexingRequestObserver &, class CSearchDocument const &)
+	?ResetL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@@Z @ 26 NONAME ; void CCPixIndexer::ResetL(class MCPixIndexingRequestObserver &)
+	?NewLC@CDocumentField@@SAPAV1@AAVRReadStream@@@Z @ 27 NONAME ; class CDocumentField * CDocumentField::NewLC(class RReadStream &)
+	?Connect@RSearchServerSession@@QAEHXZ @ 28 NONAME ; int RSearchServerSession::Connect(void)
+	?IsDatabaseOpen@CCPixSearcher@@QBEHXZ @ 29 NONAME ; int CCPixSearcher::IsDatabaseOpen(void) const
+	?AddL@CCPixIndexer@@QAEXABVCSearchDocument@@@Z @ 30 NONAME ; void CCPixIndexer::AddL(class CSearchDocument const &)
+	?CancelAll@RSearchServerSubSession@@QBEXXZ @ 31 NONAME ; void RSearchServerSubSession::CancelAll(void) const
+	?SetQueryParserL@CCPixSearcher@@QAEXW4TQueryParser@1@@Z @ 32 NONAME ; void CCPixSearcher::SetQueryParserL(enum CCPixSearcher::TQueryParser)
+	?SearchL@CCPixSearcher@@QAEXAAVMCPixSearchRequestObserver@@ABVTDesC16@@1@Z @ 33 NONAME ; void CCPixSearcher::SearchL(class MCPixSearchRequestObserver &, class TDesC16 const &, class TDesC16 const &)
+	?Close@RSearchServerSession@@QAEXXZ @ 34 NONAME ; void RSearchServerSession::Close(void)
+	?Id@CSearchDocument@@QBEABVTDesC16@@XZ @ 35 NONAME ; class TDesC16 const & CSearchDocument::Id(void) const
+	?GetDocumentObjectL@RSearchServerSubSession@@QAEPAVCSearchDocument@@XZ @ 36 NONAME ; class CSearchDocument * RSearchServerSubSession::GetDocumentObjectL(void)
+	?UpdateL@CCPixIndexer@@QAEXABVCSearchDocument@@@Z @ 37 NONAME ; void CCPixIndexer::UpdateL(class CSearchDocument const &)
+	?GetBaseAppClass@CCPixSearcher@@QBEABVTDesC16@@XZ @ 38 NONAME ; class TDesC16 const & CCPixSearcher::GetBaseAppClass(void) const
+	?OpenDatabaseL@CCPixIndexer@@QAEXAAVMCPixOpenDatabaseRequestObserver@@ABVTDesC16@@@Z @ 39 NONAME ; void CCPixIndexer::OpenDatabaseL(class MCPixOpenDatabaseRequestObserver &, class TDesC16 const &)
+	?InternalizeL@CDocumentField@@QAEXAAVRReadStream@@@Z @ 40 NONAME ; void CDocumentField::InternalizeL(class RReadStream &)
+	??0RSearchServerSession@@QAE@XZ @ 41 NONAME ; RSearchServerSession::RSearchServerSession(void)
+	?NewL@CCPixIndexer@@SAPAV1@AAVRSearchServerSession@@@Z @ 42 NONAME ; class CCPixIndexer * CCPixIndexer::NewL(class RSearchServerSession &)
+	?GetBatchDocumentL@CCPixSearcher@@QAEXHAAVMCPixNextDocumentRequestObserver@@H@Z @ 43 NONAME ; void CCPixSearcher::GetBatchDocumentL(int, class MCPixNextDocumentRequestObserver &, int)
+	?Version@RSearchServerSession@@QBE?AVTVersion@@XZ @ 44 NONAME ; class TVersion RSearchServerSession::Version(void) const
+	?AddExcerptL@CSearchDocument@@QAEXABVTDesC16@@@Z @ 45 NONAME ; void CSearchDocument::AddExcerptL(class TDesC16 const &)
+	?Config@CDocumentField@@QBEHXZ @ 46 NONAME ; int CDocumentField::Config(void) const
+	?Boost@CDocumentField@@QBEMXZ @ 47 NONAME ; float CDocumentField::Boost(void) const
+	?GetDocumentL@RSearchServerSubSession@@QAEPAVCSearchDocument@@H@Z @ 48 NONAME ; class CSearchDocument * RSearchServerSubSession::GetDocumentL(int)
+	?FlushL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@@Z @ 49 NONAME ; void CCPixIndexer::FlushL(class MCPixIndexingRequestObserver &)
+	?FlushL@RSearchServerSubSession@@QAEXXZ @ 50 NONAME ; void RSearchServerSubSession::FlushL(void)
+	?ResetL@CCPixIndexer@@QAEXXZ @ 51 NONAME ; void CCPixIndexer::ResetL(void)
+	?ExternalizeL@CSearchDocument@@QBEXAAVRWriteStream@@@Z @ 52 NONAME ; void CSearchDocument::ExternalizeL(class RWriteStream &) const
+	?Search@RSearchServerSubSession@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 53 NONAME ; void RSearchServerSubSession::Search(class TDesC16 const &, class TRequestStatus &)
+	?Size@CDocumentField@@QBEHXZ @ 54 NONAME ; int CDocumentField::Size(void) const
+	?NewL@CDocumentField@@SAPAV1@AAVRReadStream@@@Z @ 55 NONAME ; class CDocumentField * CDocumentField::NewL(class RReadStream &)
+	?NewLC@CSearchDocument@@SAPAV1@ABVTDesC16@@00W4TFilterId@1@@Z @ 56 NONAME ; class CSearchDocument * CSearchDocument::NewLC(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, enum CSearchDocument::TFilterId)
+	?DeleteL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 57 NONAME ; void CCPixIndexer::DeleteL(class TDesC16 const &)
+	?NewLC@CDocumentField@@SAPAV1@ABVTDesC16@@0H@Z @ 58 NONAME ; class CDocumentField * CDocumentField::NewLC(class TDesC16 const &, class TDesC16 const &, int)
+	?GetBatchDocumentObjectL@RSearchServerSubSession@@QAEPAPAVCSearchDocument@@AAH@Z @ 59 NONAME ; class CSearchDocument * * RSearchServerSubSession::GetBatchDocumentObjectL(int &)
+	??1CCPixSearcher@@UAE@XZ @ 60 NONAME ; CCPixSearcher::~CCPixSearcher(void)
+	?SetBoost@CSearchDocument@@QAEXM@Z @ 61 NONAME ; void CSearchDocument::SetBoost(float)
+	?IsDatabaseOpen@CCPixIndexer@@QBEHXZ @ 62 NONAME ; int CCPixIndexer::IsDatabaseOpen(void) const
+	?NewL@CDocumentField@@SAPAV1@ABVTDesC16@@0H@Z @ 63 NONAME ; class CDocumentField * CDocumentField::NewL(class TDesC16 const &, class TDesC16 const &, int)
+	?Flush@RSearchServerSubSession@@QAEXAAVTRequestStatus@@@Z @ 64 NONAME ; void RSearchServerSubSession::Flush(class TRequestStatus &)
+	?Field@CSearchDocument@@QBEPBVCDocumentField@@ABVTDesC16@@@Z @ 65 NONAME ; class CDocumentField const * CSearchDocument::Field(class TDesC16 const &) const
+	?NewLC@CSearchDocument@@SAPAV1@AAVRReadStream@@@Z @ 66 NONAME ; class CSearchDocument * CSearchDocument::NewLC(class RReadStream &)
+	?StopHouseKeeping@RSearchServerSession@@QAEHXZ @ 67 NONAME ; int RSearchServerSession::StopHouseKeeping(void)
+	?AddFieldL@CSearchDocument@@QAEAAVCDocumentField@@ABVTDesC16@@0H@Z @ 68 NONAME ; class CDocumentField & CSearchDocument::AddFieldL(class TDesC16 const &, class TDesC16 const &, int)
+	?Field@CSearchDocument@@QBEABVCDocumentField@@H@Z @ 69 NONAME ; class CDocumentField const & CSearchDocument::Field(int) const
+	?SetAnalyzerL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 70 NONAME ; void CCPixIndexer::SetAnalyzerL(class TDesC16 const &)
+	?ResetL@RSearchServerSubSession@@QAEXXZ @ 71 NONAME ; void RSearchServerSubSession::ResetL(void)
+	?FieldCount@CSearchDocument@@QBEHXZ @ 72 NONAME ; int CSearchDocument::FieldCount(void) const
+	?NewLC@CCPixSearcher@@SAPAV1@AAVRSearchServerSession@@ABVTDesC16@@@Z @ 73 NONAME ; class CCPixSearcher * CCPixSearcher::NewLC(class RSearchServerSession &, class TDesC16 const &)
+	?Excerpt@CSearchDocument@@QBEABVTDesC16@@XZ @ 74 NONAME ; class TDesC16 const & CSearchDocument::Excerpt(void) const
+	?GetBaseAppClass@CCPixIndexer@@QBEABVTDesC16@@XZ @ 75 NONAME ; class TDesC16 const & CCPixIndexer::GetBaseAppClass(void) const
+	?OpenDatabaseL@CCPixIndexer@@QAEXABVTDesC16@@@Z @ 76 NONAME ; void CCPixIndexer::OpenDatabaseL(class TDesC16 const &)
+	?SetAnalyzerL@CCPixSearcher@@QAEXAAVMCPixSetAnalyzerRequestObserver@@ABVTDesC16@@@Z @ 77 NONAME ; void CCPixSearcher::SetAnalyzerL(class MCPixSetAnalyzerRequestObserver &, class TDesC16 const &)
+	?Boost@CSearchDocument@@QBEMXZ @ 78 NONAME ; float CSearchDocument::Boost(void) const
+	?SearchL@RSearchServerSubSession@@QAEXABVTDesC16@@@Z @ 79 NONAME ; void RSearchServerSubSession::SearchL(class TDesC16 const &)
+	?DefineVolume@RSearchServerSession@@QAEHABVTDesC16@@0@Z @ 80 NONAME ; int RSearchServerSession::DefineVolume(class TDesC16 const &, class TDesC16 const &)
+	?InternalizeL@CSearchDocument@@QAEXAAVRReadStream@@@Z @ 81 NONAME ; void CSearchDocument::InternalizeL(class RReadStream &)
+	?Name@CDocumentField@@QBEABVTDesC16@@XZ @ 82 NONAME ; class TDesC16 const & CDocumentField::Name(void) const
+	?Reset@RSearchServerSubSession@@QAEXAAVTRequestStatus@@@Z @ 83 NONAME ; void RSearchServerSubSession::Reset(class TRequestStatus &)
+	?AddL@CCPixIndexer@@QAEXAAVMCPixIndexingRequestObserver@@ABVCSearchDocument@@@Z @ 84 NONAME ; void CCPixIndexer::AddL(class MCPixIndexingRequestObserver &, class CSearchDocument const &)
+	?SetQueryParserL@CCPixSearcher@@QAEXAAVMCPixSetQueryParserRequestObserver@@W4TQueryParser@1@@Z @ 85 NONAME ; void CCPixSearcher::SetQueryParserL(class MCPixSetQueryParserRequestObserver &, enum CCPixSearcher::TQueryParser)
+	?RemoveField@CSearchDocument@@QAEHABVTDesC16@@@Z @ 86 NONAME ; int CSearchDocument::RemoveField(class TDesC16 const &)
+	?Add@RSearchServerSubSession@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 87 NONAME ; void RSearchServerSubSession::Add(class TDesC8 const &, class TRequestStatus &)
+	?SetQueryParser@RSearchServerSubSession@@QAEXHAAVTRequestStatus@@@Z @ 88 NONAME ; void RSearchServerSubSession::SetQueryParser(int, class TRequestStatus &)
+	?FlushL@CCPixIndexer@@QAEXXZ @ 89 NONAME ; void CCPixIndexer::FlushL(void)
+	?ContinueHouseKeeping@RSearchServerSession@@QAEHXZ @ 90 NONAME ; int RSearchServerSession::ContinueHouseKeeping(void)
+	?GetDocumentL@CCPixSearcher@@QAEXHAAVMCPixNextDocumentRequestObserver@@@Z @ 91 NONAME ; void CCPixSearcher::GetDocumentL(int, class MCPixNextDocumentRequestObserver &)
+	?NewLC@CCPixIndexer@@SAPAV1@AAVRSearchServerSession@@@Z @ 92 NONAME ; class CCPixIndexer * CCPixIndexer::NewLC(class RSearchServerSession &)
+	?SetBoost@CDocumentField@@QAEXM@Z @ 93 NONAME ; void CDocumentField::SetBoost(float)
+	??1CCPixIndexer@@UAE@XZ @ 94 NONAME ; CCPixIndexer::~CCPixIndexer(void)
+	?GetBatchDocumentL@CCPixSearcher@@QAEPAPAVCSearchDocument@@HAAHH@Z @ 95 NONAME ; class CSearchDocument * * CCPixSearcher::GetBatchDocumentL(int, int &, int)
+	?NewL@CSearchDocument@@SAPAV1@AAVRReadStream@@@Z @ 96 NONAME ; class CSearchDocument * CSearchDocument::NewL(class RReadStream &)
+	?UpdateL@RSearchServerSubSession@@QAEXABVTDesC8@@@Z @ 97 NONAME ; void RSearchServerSubSession::UpdateL(class TDesC8 const &)
+	?UnDefineVolume@RSearchServerSession@@QAEHABVTDesC16@@@Z @ 98 NONAME ; int RSearchServerSession::UnDefineVolume(class TDesC16 const &)
+	?ExternalizeL@CDocumentField@@QBEXAAVRWriteStream@@@Z @ 99 NONAME ; void CDocumentField::ExternalizeL(class RWriteStream &) const
+	?AddL@RSearchServerSubSession@@QAEXABVTDesC8@@@Z @ 100 NONAME ; void RSearchServerSubSession::AddL(class TDesC8 const &)
 
--- a/searcher/searchclient/eabi/cpixsearchclientu.def	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchclient/eabi/cpixsearchclientu.def	Wed Aug 18 10:53:26 2010 +0300
@@ -24,91 +24,96 @@
 	_ZN13CCPixSearcher12SetAnalyzerLERK7TDesC16 @ 23 NONAME
 	_ZN13CCPixSearcher13OpenDatabaseLER32MCPixOpenDatabaseRequestObserverRK7TDesC16 @ 24 NONAME
 	_ZN13CCPixSearcher13OpenDatabaseLERK7TDesC16 @ 25 NONAME
-	_ZN13CCPixSearcher4NewLER20RSearchServerSessionRK7TDesC16 @ 26 NONAME
-	_ZN13CCPixSearcher5NewLCER20RSearchServerSessionRK7TDesC16 @ 27 NONAME
-	_ZN13CCPixSearcher7SearchLER26MCPixSearchRequestObserverRK7TDesC16S4_ @ 28 NONAME
-	_ZN13CCPixSearcher7SearchLERK7TDesC16S2_ @ 29 NONAME
-	_ZN13CCPixSearcherD0Ev @ 30 NONAME
-	_ZN13CCPixSearcherD1Ev @ 31 NONAME
-	_ZN13CCPixSearcherD2Ev @ 32 NONAME
-	_ZN14CDocumentField12InternalizeLER11RReadStream @ 33 NONAME
-	_ZN14CDocumentField4NewLER11RReadStream @ 34 NONAME
-	_ZN14CDocumentField4NewLERK7TDesC16S2_i @ 35 NONAME
-	_ZN14CDocumentField5NewLCER11RReadStream @ 36 NONAME
-	_ZN14CDocumentField5NewLCERK7TDesC16S2_i @ 37 NONAME
-	_ZN14CDocumentField8SetBoostEf @ 38 NONAME
-	_ZN14CDocumentFieldD0Ev @ 39 NONAME
-	_ZN14CDocumentFieldD1Ev @ 40 NONAME
-	_ZN14CDocumentFieldD2Ev @ 41 NONAME
-	_ZN15CSearchDocument11AddExcerptLERK7TDesC16 @ 42 NONAME
-	_ZN15CSearchDocument11RemoveFieldERK7TDesC16 @ 43 NONAME
-	_ZN15CSearchDocument12InternalizeLER11RReadStream @ 44 NONAME
-	_ZN15CSearchDocument4NewLER11RReadStream @ 45 NONAME
-	_ZN15CSearchDocument4NewLERK7TDesC16S2_S2_NS_9TFilterIdE @ 46 NONAME
-	_ZN15CSearchDocument5NewLCER11RReadStream @ 47 NONAME
-	_ZN15CSearchDocument5NewLCERK7TDesC16S2_S2_NS_9TFilterIdE @ 48 NONAME
-	_ZN15CSearchDocument8SetBoostEf @ 49 NONAME
-	_ZN15CSearchDocument9AddFieldLERK7TDesC16S2_i @ 50 NONAME
-	_ZN15CSearchDocumentD0Ev @ 51 NONAME
-	_ZN15CSearchDocumentD1Ev @ 52 NONAME
-	_ZN15CSearchDocumentD2Ev @ 53 NONAME
-	_ZN20RSearchServerSession12DefineVolumeERK7TDesC16S2_ @ 54 NONAME
-	_ZN20RSearchServerSession14UnDefineVolumeERK7TDesC16 @ 55 NONAME
-	_ZN20RSearchServerSession5CloseEv @ 56 NONAME
-	_ZN20RSearchServerSession7ConnectEv @ 57 NONAME
-	_ZN20RSearchServerSessionC1Ev @ 58 NONAME
-	_ZN20RSearchServerSessionC2Ev @ 59 NONAME
-	_ZN23RSearchServerSubSession11GetDocumentEiR14TRequestStatus @ 60 NONAME
-	_ZN23RSearchServerSubSession11SetAnalyzerERK7TDesC16R14TRequestStatus @ 61 NONAME
-	_ZN23RSearchServerSubSession12GetDocumentLEi @ 62 NONAME
-	_ZN23RSearchServerSubSession12SetAnalyzerLERK7TDesC16 @ 63 NONAME
-	_ZN23RSearchServerSubSession18GetDocumentObjectLEv @ 64 NONAME
-	_ZN23RSearchServerSubSession3AddERK6TDesC8R14TRequestStatus @ 65 NONAME
-	_ZN23RSearchServerSubSession4AddLERK6TDesC8 @ 66 NONAME
-	_ZN23RSearchServerSubSession5FlushER14TRequestStatus @ 67 NONAME
-	_ZN23RSearchServerSubSession5ResetER14TRequestStatus @ 68 NONAME
-	_ZN23RSearchServerSubSession6DeleteERK7TDesC16R14TRequestStatus @ 69 NONAME
-	_ZN23RSearchServerSubSession6FlushLEv @ 70 NONAME
-	_ZN23RSearchServerSubSession6ResetLEv @ 71 NONAME
-	_ZN23RSearchServerSubSession6SearchERK7TDesC16R14TRequestStatus @ 72 NONAME
-	_ZN23RSearchServerSubSession6UpdateERK6TDesC8R14TRequestStatus @ 73 NONAME
-	_ZN23RSearchServerSubSession7DeleteLERK7TDesC16 @ 74 NONAME
-	_ZN23RSearchServerSubSession7SearchLERK7TDesC16 @ 75 NONAME
-	_ZN23RSearchServerSubSession7UpdateLERK6TDesC8 @ 76 NONAME
-	_ZNK12CCPixIndexer14IsDatabaseOpenEv @ 77 NONAME
-	_ZNK12CCPixIndexer15GetBaseAppClassEv @ 78 NONAME
-	_ZNK13CCPixSearcher14IsDatabaseOpenEv @ 79 NONAME
-	_ZNK13CCPixSearcher15GetBaseAppClassEv @ 80 NONAME
-	_ZNK14CDocumentField12ExternalizeLER12RWriteStream @ 81 NONAME
-	_ZNK14CDocumentField4NameEv @ 82 NONAME
-	_ZNK14CDocumentField4SizeEv @ 83 NONAME
-	_ZNK14CDocumentField5BoostEv @ 84 NONAME
-	_ZNK14CDocumentField5ValueEv @ 85 NONAME
-	_ZNK14CDocumentField6ConfigEv @ 86 NONAME
-	_ZNK15CSearchDocument10FieldCountEv @ 87 NONAME
-	_ZNK15CSearchDocument12ExternalizeLER12RWriteStream @ 88 NONAME
-	_ZNK15CSearchDocument2IdEv @ 89 NONAME
-	_ZNK15CSearchDocument4SizeEv @ 90 NONAME
-	_ZNK15CSearchDocument5BoostEv @ 91 NONAME
-	_ZNK15CSearchDocument5FieldERK7TDesC16 @ 92 NONAME
-	_ZNK15CSearchDocument5FieldEi @ 93 NONAME
-	_ZNK15CSearchDocument7ExcerptEv @ 94 NONAME
-	_ZNK15CSearchDocument8AppClassEv @ 95 NONAME
-	_ZNK20RSearchServerSession7VersionEv @ 96 NONAME
-	_ZNK23RSearchServerSubSession9CancelAllEv @ 97 NONAME
-	_ZTI12CCPixIndexer @ 98 NONAME ; #<TI>#
-	_ZTI13CCPixSearcher @ 99 NONAME ; #<TI>#
-	_ZTI14CDocumentField @ 100 NONAME ; #<TI>#
-	_ZTI15CSearchDocument @ 101 NONAME ; #<TI>#
-	_ZTV12CCPixIndexer @ 102 NONAME ; #<VT>#
-	_ZTV13CCPixSearcher @ 103 NONAME ; #<VT>#
-	_ZTV14CDocumentField @ 104 NONAME ; #<VT>#
-	_ZTV15CSearchDocument @ 105 NONAME ; #<VT>#
-	_ZN20RSearchServerSession16StopHouseKeepingEv @ 106 NONAME
-	_ZN20RSearchServerSession17ForceHouseKeepingEv @ 107 NONAME
-	_ZN20RSearchServerSession20ContinueHouseKeepingEv @ 108 NONAME
-	_ZN13CCPixSearcher15SetQueryParserLENS_12TQueryParserE @ 109 NONAME
-	_ZN13CCPixSearcher15SetQueryParserLER34MCPixSetQueryParserRequestObserverNS_12TQueryParserE @ 110 NONAME
-	_ZN23RSearchServerSubSession14SetQueryParserEiR14TRequestStatus @ 111 NONAME
-	_ZN23RSearchServerSubSession15SetQueryParserLEi @ 112 NONAME
+	_ZN13CCPixSearcher15SetQueryParserLENS_12TQueryParserE @ 26 NONAME
+	_ZN13CCPixSearcher15SetQueryParserLER34MCPixSetQueryParserRequestObserverNS_12TQueryParserE @ 27 NONAME
+	_ZN13CCPixSearcher17GetBatchDocumentLEiR32MCPixNextDocumentRequestObserveri @ 28 NONAME
+	_ZN13CCPixSearcher17GetBatchDocumentLEiRii @ 29 NONAME
+	_ZN13CCPixSearcher4NewLER20RSearchServerSessionRK7TDesC16 @ 30 NONAME
+	_ZN13CCPixSearcher5NewLCER20RSearchServerSessionRK7TDesC16 @ 31 NONAME
+	_ZN13CCPixSearcher7SearchLER26MCPixSearchRequestObserverRK7TDesC16S4_ @ 32 NONAME
+	_ZN13CCPixSearcher7SearchLERK7TDesC16S2_ @ 33 NONAME
+	_ZN13CCPixSearcherD0Ev @ 34 NONAME
+	_ZN13CCPixSearcherD1Ev @ 35 NONAME
+	_ZN13CCPixSearcherD2Ev @ 36 NONAME
+	_ZN14CDocumentField12InternalizeLER11RReadStream @ 37 NONAME
+	_ZN14CDocumentField4NewLER11RReadStream @ 38 NONAME
+	_ZN14CDocumentField4NewLERK7TDesC16S2_i @ 39 NONAME
+	_ZN14CDocumentField5NewLCER11RReadStream @ 40 NONAME
+	_ZN14CDocumentField5NewLCERK7TDesC16S2_i @ 41 NONAME
+	_ZN14CDocumentField8SetBoostEf @ 42 NONAME
+	_ZN14CDocumentFieldD0Ev @ 43 NONAME
+	_ZN14CDocumentFieldD1Ev @ 44 NONAME
+	_ZN14CDocumentFieldD2Ev @ 45 NONAME
+	_ZN15CSearchDocument11AddExcerptLERK7TDesC16 @ 46 NONAME
+	_ZN15CSearchDocument11RemoveFieldERK7TDesC16 @ 47 NONAME
+	_ZN15CSearchDocument12InternalizeLER11RReadStream @ 48 NONAME
+	_ZN15CSearchDocument4NewLER11RReadStream @ 49 NONAME
+	_ZN15CSearchDocument4NewLERK7TDesC16S2_S2_NS_9TFilterIdE @ 50 NONAME
+	_ZN15CSearchDocument5NewLCER11RReadStream @ 51 NONAME
+	_ZN15CSearchDocument5NewLCERK7TDesC16S2_S2_NS_9TFilterIdE @ 52 NONAME
+	_ZN15CSearchDocument8SetBoostEf @ 53 NONAME
+	_ZN15CSearchDocument9AddFieldLERK7TDesC16S2_i @ 54 NONAME
+	_ZN15CSearchDocumentD0Ev @ 55 NONAME
+	_ZN15CSearchDocumentD1Ev @ 56 NONAME
+	_ZN15CSearchDocumentD2Ev @ 57 NONAME
+	_ZN20RSearchServerSession12DefineVolumeERK7TDesC16S2_ @ 58 NONAME
+	_ZN20RSearchServerSession14UnDefineVolumeERK7TDesC16 @ 59 NONAME
+	_ZN20RSearchServerSession16StopHouseKeepingEv @ 60 NONAME
+	_ZN20RSearchServerSession17ForceHouseKeepingEv @ 61 NONAME
+	_ZN20RSearchServerSession20ContinueHouseKeepingEv @ 62 NONAME
+	_ZN20RSearchServerSession5CloseEv @ 63 NONAME
+	_ZN20RSearchServerSession7ConnectEv @ 64 NONAME
+	_ZN20RSearchServerSessionC1Ev @ 65 NONAME
+	_ZN20RSearchServerSessionC2Ev @ 66 NONAME
+	_ZN23RSearchServerSubSession11GetDocumentEiR14TRequestStatus @ 67 NONAME
+	_ZN23RSearchServerSubSession11SetAnalyzerERK7TDesC16R14TRequestStatus @ 68 NONAME
+	_ZN23RSearchServerSubSession12GetDocumentLEi @ 69 NONAME
+	_ZN23RSearchServerSubSession12SetAnalyzerLERK7TDesC16 @ 70 NONAME
+	_ZN23RSearchServerSubSession14SetQueryParserEiR14TRequestStatus @ 71 NONAME
+	_ZN23RSearchServerSubSession15SetQueryParserLEi @ 72 NONAME
+	_ZN23RSearchServerSubSession16GetBatchDocumentEiR14TRequestStatusi @ 73 NONAME
+	_ZN23RSearchServerSubSession17GetBatchDocumentLEiRii @ 74 NONAME
+	_ZN23RSearchServerSubSession18GetDocumentObjectLEv @ 75 NONAME
+	_ZN23RSearchServerSubSession23GetBatchDocumentObjectLERi @ 76 NONAME
+	_ZN23RSearchServerSubSession3AddERK6TDesC8R14TRequestStatus @ 77 NONAME
+	_ZN23RSearchServerSubSession4AddLERK6TDesC8 @ 78 NONAME
+	_ZN23RSearchServerSubSession5FlushER14TRequestStatus @ 79 NONAME
+	_ZN23RSearchServerSubSession5ResetER14TRequestStatus @ 80 NONAME
+	_ZN23RSearchServerSubSession6DeleteERK7TDesC16R14TRequestStatus @ 81 NONAME
+	_ZN23RSearchServerSubSession6FlushLEv @ 82 NONAME
+	_ZN23RSearchServerSubSession6ResetLEv @ 83 NONAME
+	_ZN23RSearchServerSubSession6SearchERK7TDesC16R14TRequestStatus @ 84 NONAME
+	_ZN23RSearchServerSubSession6UpdateERK6TDesC8R14TRequestStatus @ 85 NONAME
+	_ZN23RSearchServerSubSession7DeleteLERK7TDesC16 @ 86 NONAME
+	_ZN23RSearchServerSubSession7SearchLERK7TDesC16 @ 87 NONAME
+	_ZN23RSearchServerSubSession7UpdateLERK6TDesC8 @ 88 NONAME
+	_ZNK12CCPixIndexer14IsDatabaseOpenEv @ 89 NONAME
+	_ZNK12CCPixIndexer15GetBaseAppClassEv @ 90 NONAME
+	_ZNK13CCPixSearcher14IsDatabaseOpenEv @ 91 NONAME
+	_ZNK13CCPixSearcher15GetBaseAppClassEv @ 92 NONAME
+	_ZNK14CDocumentField12ExternalizeLER12RWriteStream @ 93 NONAME
+	_ZNK14CDocumentField4NameEv @ 94 NONAME
+	_ZNK14CDocumentField4SizeEv @ 95 NONAME
+	_ZNK14CDocumentField5BoostEv @ 96 NONAME
+	_ZNK14CDocumentField5ValueEv @ 97 NONAME
+	_ZNK14CDocumentField6ConfigEv @ 98 NONAME
+	_ZNK15CSearchDocument10FieldCountEv @ 99 NONAME
+	_ZNK15CSearchDocument12ExternalizeLER12RWriteStream @ 100 NONAME
+	_ZNK15CSearchDocument2IdEv @ 101 NONAME
+	_ZNK15CSearchDocument4SizeEv @ 102 NONAME
+	_ZNK15CSearchDocument5BoostEv @ 103 NONAME
+	_ZNK15CSearchDocument5FieldERK7TDesC16 @ 104 NONAME
+	_ZNK15CSearchDocument5FieldEi @ 105 NONAME
+	_ZNK15CSearchDocument7ExcerptEv @ 106 NONAME
+	_ZNK15CSearchDocument8AppClassEv @ 107 NONAME
+	_ZNK20RSearchServerSession7VersionEv @ 108 NONAME
+	_ZNK23RSearchServerSubSession9CancelAllEv @ 109 NONAME
+	_ZTI12CCPixIndexer @ 110 NONAME
+	_ZTI13CCPixSearcher @ 111 NONAME
+	_ZTI14CDocumentField @ 112 NONAME
+	_ZTI15CSearchDocument @ 113 NONAME
+	_ZTV12CCPixIndexer @ 114 NONAME
+	_ZTV13CCPixSearcher @ 115 NONAME
+	_ZTV14CDocumentField @ 116 NONAME
+	_ZTV15CSearchDocument @ 117 NONAME
 
--- a/searcher/searchclient/group/searchclient.mmp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchclient/group/searchclient.mmp	Wed Aug 18 10:53:26 2010 +0300
@@ -41,6 +41,6 @@
 
 LIBRARY         flogger.lib 
 
-CAPABILITY        CAP_GENERAL_DLL -DRM
+CAPABILITY        CAP_GENERAL_DLL
 
 // End of File
--- a/searcher/searchclient/inc/searchservercommon.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchclient/inc/searchservercommon.h	Wed Aug 18 10:53:26 2010 +0300
@@ -62,6 +62,8 @@
     ESearchServerSearch,
     ESearchServerGetDocument,
     ESearchServerGetDocumentObject,
+    ESearchServerGetBatchDocument,
+    ESearchServerGetBatchDocumentObject,
     ESearchServerAdd,
     ESearchServerUpdate,
     ESearchServerDelete,
--- a/searcher/searchclient/src/ccpixsearcher.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchclient/src/ccpixsearcher.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -279,6 +279,37 @@
 	SetActive();     
     }
 
+EXPORT_C CSearchDocument** CCPixSearcher::GetBatchDocumentL(TInt aIndex, TInt& aReturnDoc, TInt aCount)
+    {
+    PERFORMANCE_LOG_START("CCPixSearcher::GetBatchDocumentL");
+    
+	if ( !iIsDatabaseOpen ) 	User::Leave( KErrNotReady );
+	if ( IsActive() )
+		{
+		User::Leave(KErrInUse);
+		}
+
+	return iSubSession.GetBatchDocumentL(aIndex,aReturnDoc, aCount);
+    }
+
+EXPORT_C void CCPixSearcher::GetBatchDocumentL(TInt aIndex, MCPixNextDocumentRequestObserver& aObserver, TInt aCount)
+    {
+    PERFORMANCE_LOG_START("CCPixSearcher::GetBatchDocumentL");
+    
+    if ( !iIsDatabaseOpen ) 	User::Leave( KErrNotReady );
+	if ( IsActive() )
+		{
+		User::Leave(KErrInUse); // Need ::RunError to handle this
+		}
+	
+	iObserver.iNextDocument = &aObserver;
+	
+	iState = EStateGetBatchDocument;
+	iSubSession.GetBatchDocument(aIndex, iStatus, aCount);
+	SetActive();     
+    }
+	
+	
 // CCPixSearcher::RunL()
 // Invoked to handle responses from the server.
 void CCPixSearcher::RunL()
@@ -341,6 +372,27 @@
 		        }
 		    }
 		    break;
+			
+		case EStateGetBatchDocument:
+		    {
+			// Fetch search results and call back at the observer
+		    CSearchDocument** document = 0;
+		    TInt retCount = 0;
+		    TRAPD( err, document = iSubSession.GetBatchDocumentObjectL( retCount ) );
+		    if ( observer.iNextDocument )
+		        {
+		        if ( err == KErrNone )
+		            {
+		            observer.iNextDocument->HandleBatchDocumentL(iStatus.Int(),retCount, document);
+		            }
+		        else
+		            {
+		            observer.iNextDocument->HandleBatchDocumentL(err, retCount, document);
+		            }
+		        }
+		    }
+			break;
+		
 
 		case EStateNone:
 		    // Do nothing, dont panic.
--- a/searcher/searchclient/src/rsearchserversession.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchclient/src/rsearchserversession.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -153,6 +153,11 @@
 
 void RSearchServerSubSession::Close()
 	{
+	if (iSizeList)
+       {
+       delete iSizeList;
+       iSizeList = NULL;
+       }
 	RSubSessionBase::CloseSubSession(ESearchServerCloseSubSession);
 	}
 
@@ -310,6 +315,94 @@
 	return document;
 	}
 
+	// RSearchServerSubSession::GetBatchDocumentL()
+EXPORT_C CSearchDocument** RSearchServerSubSession::GetBatchDocumentL(TInt aIndex, TInt& aReturnDoc, TInt aCount)
+	{
+	PERFORMANCE_LOG_START("RSearchServerSubSession::GetBatchDocumentL");
+	
+	if (!aCount) return NULL;
+	
+	iDocumentSize = 0;
+	iReqCount = aCount;
+	
+	if (iSizeList)
+	    {
+	    delete iSizeList;
+	    iSizeList = NULL;
+	    }
+	iSizeList = STATIC_CAST(TInt *, User::AllocZL(iReqCount * sizeof(TInt)));
+    TPtr8 blob((TUint8*)iSizeList, iReqCount * sizeof(TInt));
+	// Message arguments for the server
+	TIpcArgs args(aIndex, iReqCount, &blob);
+	iDocSizeArray.Reset();
+	User::LeaveIfError( SendReceive(ESearchServerGetBatchDocument, args ) );	
+	
+	return GetBatchDocumentObjectL( aReturnDoc ); 
+	}
+	
+EXPORT_C void RSearchServerSubSession::GetBatchDocument(TInt aIndex, TRequestStatus& aStatus, TInt aCount)
+	{
+	PERFORMANCE_LOG_START("RSearchServerSubSession::GetBatchDocument");
+
+	iDocumentSize = 0;
+	iReqCount = aCount;
+	    
+    if (iSizeList)
+        {
+        delete iSizeList;
+        iSizeList = NULL;
+        }
+    iSizeList = STATIC_CAST(TInt *, User::AllocZL(iReqCount * sizeof(TInt)));
+    //iDocSizeArray
+    TPtr8 blob((TUint8*)iSizeList, iReqCount * sizeof(TInt));
+	    
+    // Message arguments for the server
+    TIpcArgs args(aIndex, aCount, &blob);
+    
+	SendReceive(ESearchServerGetBatchDocument, args, aStatus );
+	}
+	
+EXPORT_C CSearchDocument** RSearchServerSubSession::GetBatchDocumentObjectL( TInt& aRetCount )
+	{
+	PERFORMANCE_LOG_START("CCPixSearcher::GetBatchDocumentObjectL");
+	CSearchDocument** document = NULL;
+	TInt i ,totalsize = 0;
+	for ( i = 0; i< iReqCount; i++ )
+        {
+        if( *(iSizeList+i) )
+            {
+            totalsize += *(iSizeList+i);
+            }
+        else break;
+        }   
+	aRetCount = i;
+	
+	if ( aRetCount> 0 && totalsize )
+	    {	    
+	    //document = (CSearchDocument**)malloc ( sizeof(CSearchDocument*) * (i-1));
+	    document = STATIC_CAST(CSearchDocument**, User::AllocL( aRetCount * sizeof(CSearchDocument*)));
+	    HBufC8* buf = HBufC8::NewLC(totalsize +2 );
+        TPtr8 ptr = buf->Des();
+        User::LeaveIfError(SendReceive(ESearchServerGetBatchDocumentObject, TIpcArgs(&ptr)));	    
+	    TInt startpos = 0;
+	    TInt endpos = 0;
+	    for ( TInt arrCount= 0; arrCount < aRetCount ; arrCount++)
+                {
+                endpos = *(iSizeList + arrCount) -4;
+                //endpos = startpos + iDocSizeArray[arrCount];
+                TPtrC8 tempptr = ptr.Mid( startpos , endpos );
+                startpos += endpos;	        
+                RDesReadStream stream;
+                stream.Open(tempptr);
+                stream.PushL();
+                document[arrCount] = CSearchDocument::NewL(stream);
+                CleanupStack::PopAndDestroy(&stream);
+                }
+        CleanupStack::PopAndDestroy(buf);	    
+	    }		
+	return document;
+	}
+	
 // RSearchServerSubSession::CancelSearch()
 // Cancels outstanding search from server
 EXPORT_C void RSearchServerSubSession::CancelAll() const
--- a/searcher/searchclient/traces/CCPixSearcherTraces.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchclient/traces/CCPixSearcherTraces.h	Wed Aug 18 10:53:26 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __CCPIXSEARCHERTRACES_H__
--- a/searcher/searchclient/traces/RSearchServerSessionTraces.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchclient/traces/RSearchServerSessionTraces.h	Wed Aug 18 10:53:26 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __RSEARCHSERVERSESSIONTRACES_H__
--- a/searcher/searchserver/inc/CCPixAbstractSearcher.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/inc/CCPixAbstractSearcher.h	Wed Aug 18 10:53:26 2010 +0300
@@ -68,6 +68,20 @@
 	 * @return Document. Ownership is transferred to the caller of this function.
 	 */
 	virtual CSearchDocument* GetDocumentCompleteL() = 0;
+	
+	/**
+	 * Gets list of documents from the current search results.
+	 * @param aObserver Observing object for this asyncronous call
+	 * @param aMessage The requesting message 
+	 * @parma aIndex index of the requested document 
+	 */
+	virtual void GetBatchDocumentL(TInt aIndex, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage,  TInt count) = 0;
+	
+	/**
+	 * Complete the previous GetBatchDocumentL
+	 * @return array of Documents. Ownership is transferred to the caller of this function.
+	 */
+	virtual RPointerArray<CSearchDocument> GetBatchDocumentCompleteL() = 0;
 
 	/**
 	 * Creates new database (and destroys existing) if path is given. Otherwise, opens existing database.
@@ -95,7 +109,11 @@
 	
 public: 
 	
-	static CSearchDocument* ConvertDocumentL( cpix_Document* aDocument ); 
+	static CSearchDocument* ConvertDocumentL( cpix_Document* aDocument );
+	
+	static RPointerArray<CSearchDocument> ConvertBatchDocumentL( cpix_Document** aDocument, TInt count ); 
+	
+	static RArray<TInt> docSizeArray;
 
 	};
 
--- a/searcher/searchserver/inc/ccpixasyncronizer.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/inc/ccpixasyncronizer.h	Wed Aug 18 10:53:26 2010 +0300
@@ -22,6 +22,7 @@
 	{
 	ECPixTaskTypeSearch = 0,
 	ECPixTaskTypeGetDocument,
+	ECPixTaskTypeGetBatchDocument,
 	ECPixTaskTypeAdd,
 	ECPixTaskTypeUpdate,	
 	ECPixTaskTypeDelete,
--- a/searcher/searchserver/inc/ccpixsearch.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/inc/ccpixsearch.h	Wed Aug 18 10:53:26 2010 +0300
@@ -101,6 +101,20 @@
 	 * @return Document. Ownership is transferred to the caller of this function.
 	 */
 	CSearchDocument* GetDocumentCompleteL();
+	
+	/**
+	 * Gets list of documents from the current search results.
+	 * @param aObserver Observing object for this asyncronous call
+	 * @param aMessage The requesting message 
+	 * @parma aIndex index of the requested document 
+	 */
+	void GetBatchDocumentL(TInt aIndex, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage, TInt aCount);
+	
+	/**
+	 * Complete the previous GetBatchDocumentL
+	 * @return array of Document. Ownership is transferred to the caller of this function.
+	 */
+	RPointerArray<CSearchDocument> GetBatchDocumentCompleteL();
 
 	/**
 	 * Creates new database (and destroys existing) if path is given. Otherwise, opens existing database.
@@ -207,11 +221,18 @@
 	CCPixAsyncronizer* iAsyncronizer;
 	cpix_JobId iPendingJobId;
 	TPendingTask iPendingTask;
-	
+	/**
+	 * stores the requested batch document 
+	 */
+	cpix_Document** ibatchDocuments;
+	/**
+	 * Requested batch document count 
+	 */
+	TInt ibatchDocCount;
 	/**
 	 * Needed until the cpix is changed so that the docResults gives out the document 
 	 */
-	cpix_Document iCurrentCpixDocument;
+	cpix_Document* iCurrentCpixDocument;
 };
 
 
--- a/searcher/searchserver/inc/csearchserversubsession.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/inc/csearchserversubsession.h	Wed Aug 18 10:53:26 2010 +0300
@@ -100,6 +100,26 @@
 	 * @param aMessage Message from client.
 	 */
 	void GetDocumentObjectL(const RMessage2& aMessage);
+	
+	/**
+     * GetBatchDocumentL.
+     * Client gets the list of documents (result) when SearchL has completed
+     * @param aMessage Message from client.
+     */
+	void GetBatchDocumentL(const RMessage2& aMessage);
+	
+	/**
+     * GetBatchDocumentCompleteL.
+     * Completes an previous call to GetBatchDocumentL 
+     */
+	void GetBatchDocumentCompleteL(const RMessage2& aMessage);
+	
+	/**
+     * GetBatchDocumentObjectL.
+     * Client gets the object after GetBatchDocumentL() has completed 
+     * @param aMessage Message from client.
+     */
+	void GetBatchDocumentObjectL(const RMessage2& aMessage);
 
 	/**
 	 * AddL.
@@ -176,10 +196,12 @@
 	void LimitExcerptToMaxLengthL(CSearchDocument* aSearchDocument);
 		
 private:
+    TInt count;
 	CCPixIdxDb* iIndexDb;
 	CCPixAbstractSearcher* iSearchDb;
 	CSearchDocument* iNextDocument;
 	CSearchServerSession* iSession;
+	RPointerArray<CSearchDocument> idocList;
 };
 
 #endif /* CSEARCHSERVERSUBSESSION_H_ */
--- a/searcher/searchserver/src/CCPixAbstractSearcher.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/src/CCPixAbstractSearcher.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -10,7 +10,11 @@
 #include "SearchServerHelper.h"
 #include "CSearchDocument.h"
 
-CCPixAbstractSearcher::~CCPixAbstractSearcher() {} 
+RArray<TInt> CCPixAbstractSearcher::docSizeArray;
+
+CCPixAbstractSearcher::~CCPixAbstractSearcher() {
+docSizeArray.Close();
+} 
 
 
 namespace {
@@ -93,9 +97,98 @@
 		document->AddFieldL(namePtr, stringvalue);
 		}
 	
-	CleanupStack::PopAndDestroy(docFieldEnum);
-	
+	CleanupStack::PopAndDestroy(docFieldEnum);	
 	CleanupStack::Pop(document);
-	
+	delete aDocument;
 	return document;
 	}
+	
+RPointerArray<CSearchDocument> CCPixAbstractSearcher::ConvertBatchDocumentL( cpix_Document** aDocument, TInt aCount )
+	{
+	// Read first the system fields that are passed as constructor parameters 
+	//
+    RPointerArray<CSearchDocument> docArray;
+    docSizeArray.Reset();    
+    //docArray.Reset(); // delete each element
+    
+    for( TInt i= 0;i< aCount;i++ )
+        {
+        cpix_Document* nextDocument = aDocument[i];
+        
+        if( nextDocument->ptr_ )
+            {
+            const wchar_t* documentId = cpix_Document_getFieldValue( nextDocument, LCPIX_DOCUID_FIELD);
+            SearchServerHelper::CheckCpixErrorL(nextDocument, KErrDatabaseQueryFailed);
+            
+            TPtrC documentIdPtr(KNullDesC);
+            if (documentId)
+                documentIdPtr.Set(reinterpret_cast<const TUint16*>(documentId));
+        
+            const wchar_t* documentAppClass = cpix_Document_getFieldValue(nextDocument, LCPIX_APPCLASS_FIELD);
+            SearchServerHelper::CheckCpixErrorL(nextDocument, KErrDatabaseQueryFailed);
+            
+            TPtrC documentAppClassPtr(KNullDesC);
+            if (documentAppClass)
+                documentAppClassPtr.Set(reinterpret_cast<const TUint16*>(documentAppClass));
+        
+            const wchar_t* documentExcerpt = cpix_Document_getFieldValue(nextDocument, LCPIX_EXCERPT_FIELD);
+            SearchServerHelper::CheckCpixErrorL(nextDocument, KErrDatabaseQueryFailed);
+            
+            TPtrC documentExcerptPtr(KNullDesC);
+            if (documentExcerpt)
+                documentExcerptPtr.Set(reinterpret_cast<const TUint16*>(documentExcerpt));
+        
+            // Setup the document
+            // 
+            
+            CSearchDocument* document = CSearchDocument::NewLC(documentIdPtr, documentAppClassPtr, documentExcerptPtr);
+            
+            // Enumerate the field of cpix_Document and add each of them 
+            // into the CSearchDocument object. 
+            // 
+            
+            cpix_DocFieldEnum* docFieldEnum = cpix_Document_fields(nextDocument);
+            SearchServerHelper::CheckCpixErrorL(nextDocument, KErrDocumentAccessFailed);
+        
+            CleanupStack::PushL( TCleanupItem(CpixDocFieldEnumDestroyer, docFieldEnum) ); 
+            
+            cpix_Field field;
+            while (cpix_DocFieldEnum_hasMore(docFieldEnum))
+                {
+                cpix_DocFieldEnum_next(docFieldEnum, &field);
+                SearchServerHelper::CheckCpixErrorL(docFieldEnum, KErrDatabaseQueryFailed);
+                
+                const wchar_t* name = cpix_Field_name(&field);
+                SearchServerHelper::CheckCpixErrorL(&field, KErrDatabaseQueryFailed);
+        
+                TPtrC namePtr( reinterpret_cast<const TUint16*>( name ) );
+                if (    namePtr == TPtrC( (TUint16*)LCPIX_DOCUID_FIELD )
+                     || namePtr == TPtrC( (TUint16*)LCPIX_APPCLASS_FIELD )
+                     || namePtr == TPtrC( (TUint16*)LCPIX_EXCERPT_FIELD ) )
+                    {
+                    continue;  // These fields have already been added
+                    }
+        
+                const wchar_t* value = cpix_Field_stringValue(&field);
+                SearchServerHelper::CheckCpixErrorL(&field, KErrDatabaseQueryFailed);
+                
+                TPtrC stringvalue( reinterpret_cast<const TUint16*>( value ) );
+                
+                // NOTE: Also system fields will be iterated. Because  
+                //       the field name is not checked, all _appclass,
+                //       _excerpt etc. fields  will be overwritten. 
+                document->AddFieldL(namePtr, stringvalue);
+                }	
+            CleanupStack::PopAndDestroy(docFieldEnum);	
+            CleanupStack::Pop(document);
+            docSizeArray.AppendL( document->Size());
+            docArray.AppendL( document );
+            delete nextDocument;
+            nextDocument = NULL;                      
+            }
+        else break;
+        }
+	delete aDocument;
+	aDocument = NULL;
+	return docArray;
+	}
--- a/searcher/searchserver/src/ccpixsearch.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/src/ccpixsearch.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -61,7 +61,7 @@
 
 	delete iBaseAppClass;
 	delete iDefaultSearchFieldZ;
-	
+	delete ibatchDocuments;
 	cpix_Query_destroy(iQuery);
 	cpix_QueryParser_destroy(iQueryParser);
 	cpix_Analyzer_destroy(iAnalyzer);
@@ -208,7 +208,10 @@
 		}
 	
     iPendingTask = EPendingTaskDocument;
-    iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, &iCurrentCpixDocument, (void*)this, &CompletionCallback);
+    
+    iCurrentCpixDocument = new cpix_Document;
+    iCurrentCpixDocument->ptr_ = NULL;
+    iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, &iCurrentCpixDocument, (void*)this, &CompletionCallback,1);
     if ( cpix_Failed(iHits) )
         {
         SearchServerHelper::LogErrorL(*(iHits->err_));
@@ -218,6 +221,37 @@
     iAsyncronizer->Start(ECPixTaskTypeGetDocument, aObserver, aMessage);
 	OstTraceFunctionExit0( CCPIXSEARCH_GETDOCUMENTL_EXIT );
 	}
+	
+void CCPixSearch::GetBatchDocumentL(TInt aIndex, MCPixAsyncronizerObserver* aObserver, const RMessage2& aMessage, TInt aCount)
+	{	
+	PERFORMANCE_LOG_START("CCPixSearch::GetBatchDocumentL");
+	
+	if (iPendingTask != EPendingTaskNone)
+	     User::Leave(KErrInUse);
+	
+	if (aIndex<0 || aIndex >= iDocumentCount )
+        {
+        User::Leave(KErrDocumentAccessFailed);
+        }
+	
+	ibatchDocCount = aCount;	
+	ibatchDocuments = STATIC_CAST(cpix_Document**, User::AllocZL(aCount * sizeof(cpix_Document*)));
+	for (int i =0; i< aCount; i++)
+	    {
+            ibatchDocuments[i] = new cpix_Document;
+            ibatchDocuments[i]->ptr_ = NULL;
+	    }
+	
+    iPendingTask = EPendingTaskDocument;
+    iPendingJobId = cpix_Hits_asyncDoc(iHits, aIndex, ibatchDocuments, (void*)this, &CompletionCallback, aCount);
+    if ( cpix_Failed(iHits) )
+        {
+        SearchServerHelper::LogErrorL(*(iHits->err_));
+        cpix_ClearError(iHits);
+        User::Leave(KErrDocumentAccessFailed);
+        }
+    iAsyncronizer->Start(ECPixTaskTypeGetBatchDocument, aObserver, aMessage);
+	}
 
 CSearchDocument* CCPixSearch::GetDocumentCompleteL()
 	{
@@ -230,7 +264,7 @@
 	cpix_Hits_asyncDocResults(iHits, iPendingJobId);
 	SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed);
 	
-	return ConvertDocumentL( &iCurrentCpixDocument );
+	return ConvertDocumentL( iCurrentCpixDocument );
 #if 0 // TODO XXX TIM
 	const wchar_t* documentId = cpix_Document_getFieldValue(&iCurrentCpixDocument, LCPIX_DOCUID_FIELD);
 	SearchServerHelper::CheckCpixErrorL(&iCurrentCpixDocument, KErrDatabaseQueryFailed);
@@ -295,6 +329,19 @@
 	return document;
 #endif // 0
 	}
+	
+RPointerArray<CSearchDocument> CCPixSearch::GetBatchDocumentCompleteL()
+	{
+	PERFORMANCE_LOG_START("CCPixSearch::GetBatchDocumentCompleteL");
+	
+    // Request is no more pending
+    iPendingTask = EPendingTaskNone;
+	
+	cpix_Hits_asyncDocResults(iHits, iPendingJobId);
+	SearchServerHelper::CheckCpixErrorL(iHits, KErrDocumentAccessFailed);
+	
+	return ConvertBatchDocumentL( ibatchDocuments, ibatchDocCount );
+	}
 
 void CCPixSearch::SetAnalyzerL(const TDesC& aAnalyzer)
 	{
@@ -388,4 +435,4 @@
 	{
 	return (iIdxDb != NULL);
 	}
-
+// End of File
--- a/searcher/searchserver/src/csearchserver.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/src/csearchserver.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -104,7 +104,7 @@
 //
 CSearchServer* CSearchServer::NewLC()
 	{
-	CSearchServer* searchServer = new ( ELeave ) CSearchServer( EPriorityNormal );
+	CSearchServer* searchServer = new ( ELeave ) CSearchServer( CActive::EPriorityStandard );
 	CleanupStack::PushL(searchServer);
 	searchServer->ConstructL();
 	return searchServer;
@@ -120,7 +120,9 @@
 	OstTraceFunctionEntry0( CSEARCHSERVER_CONSTRUCTL_ENTRY );
 	
 	CPIXLOGSTRING("Creating search server");
-	
+	RProcess process;
+    process.SetPriority( EPriorityBackground );
+    process.Close();
 	// Create new container index
 	iContainerIndex = CObjectConIx::NewL();
 	
--- a/searcher/searchserver/src/csearchserversession.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/src/csearchserversession.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -230,6 +230,18 @@
             subsession->GetDocumentObjectL(aMessage);
             RECORDED_EXECUTION_END("getDocumentObject")
             break;
+            
+        case ESearchServerGetBatchDocument:
+            RECORDED_EXECUTION_BEGIN
+            subsession->GetBatchDocumentL(aMessage);
+            RECORDED_EXECUTION_END("getDocument")
+            break;
+
+        case ESearchServerGetBatchDocumentObject:
+            RECORDED_EXECUTION_BEGIN
+            subsession->GetBatchDocumentObjectL(aMessage);
+            RECORDED_EXECUTION_END("getDocumentObject")
+            break;
 
         case ESearchServerCancelAll:
             RECORDED_EXECUTION_BEGIN
--- a/searcher/searchserver/src/csearchserversubsession.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/src/csearchserversubsession.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -72,10 +72,13 @@
 	delete iIndexDb;
 	delete iSearchDb;	
 	delete iNextDocument;
+	idocList.ResetAndDestroy();
+	idocList.Close();
 }
 
 void CSearchServerSubSession::ConstructL()
 {
+    count = 0;
 	iIndexDb = CCPixIdxDb::NewL();
 	iSearchDb = CCPixSearch::NewL();
 }
@@ -259,6 +262,32 @@
 	OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTL_EXIT );
 	}
 	
+void CSearchServerSubSession::GetBatchDocumentL(const RMessage2& aMessage)
+	{
+	PERFORMANCE_LOG_START("CSearchServerSubSession::GetBatchDocumentL");
+	
+	// Sanity check
+	if (!iSearchDb->IsOpen())
+		{
+		iSession->PanicClient(aMessage, EDatabaseNotOpen);
+		return;
+		}
+	
+	// buf for the search terms
+	TInt index = aMessage.Int0();
+	count = aMessage.Int1();
+	
+	for (int i =0; i < idocList.Count(); i++)
+	    {
+	    delete idocList[i];
+	    idocList[i] = NULL;
+	    }
+	idocList.Reset();
+	LOG_PLAYER_RECORD( CLogPlayerRecorder::LogGetDocumentL( reinterpret_cast<TUint>( this ), index ) );
+	
+	iSearchDb->GetBatchDocumentL(index, this, aMessage, count);
+	}
+	
 void CSearchServerSubSession::GetDocumentCompleteL(const RMessage2& aMessage)
 	{
 	OstTraceFunctionEntry0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_ENTRY );
@@ -270,6 +299,14 @@
 	OstTraceFunctionExit0( CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_EXIT );
 	}
 
+void CSearchServerSubSession::GetBatchDocumentCompleteL(const RMessage2& aMessage)
+	{
+	PERFORMANCE_LOG_START("CSearchServerSubSession::GetBatchDocumentCompleteL");	
+	idocList = iSearchDb->GetBatchDocumentCompleteL();
+	const TPtrC8 ptr((const TUint8*)&(iSearchDb->docSizeArray[0]), sizeof(TInt) * iSearchDb->docSizeArray.Count());
+	aMessage.WriteL(2, ptr);
+	}
+	
 // CSearchServerSession::GetDocumentObjectL()
 // Client gets the object after GetDocumentL() has completed 
 void CSearchServerSubSession::GetDocumentObjectL(const RMessage2& aMessage)
@@ -319,6 +356,53 @@
 	aMessage.Complete(KErrNone);		
 	OstTraceFunctionExit0( DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT );
 	}
+	
+// CSearchServerSession::GetBatchDocumentObjectL()
+// Client gets the object after GetBatchDocumentL() has completed 
+void CSearchServerSubSession::GetBatchDocumentObjectL(const RMessage2& aMessage)
+	{
+	PERFORMANCE_LOG_START("CSearchServerSubSession::GetBatchDocumentObjectL");
+	
+	// Sanity check
+	if ( !iSearchDb || !iSearchDb->IsOpen() )
+		{
+		iSession->PanicClient(aMessage, EDatabaseNotOpen);
+		return;
+		}
+	TInt totalSize = 0;
+	for ( TInt i= 0; i < iSearchDb->docSizeArray.Count(); i++)
+	    totalSize += iSearchDb->docSizeArray[i];	
+	
+	// Create long enough descriptor for serialized hits
+	HBufC8* buf = HBufC8::NewLC(totalSize +1);
+	TPtr8 ptr = buf->Des();
+	// Initialize a new stream
+    RDesWriteStream stream;
+    stream.Open(ptr);
+    stream.PushL();
+	        
+	for(TInt i= 0; i < idocList.Count(); i++)
+        {
+        if ( idocList[i] )
+             {                
+             // Externalize hits to the stream//             
+             idocList[i]->ExternalizeL(stream);
+             }
+        }
+    // Commit and destroy the stream
+    stream.CommitL();
+    TInt len2 = ptr.Length();
+    CleanupStack::PopAndDestroy(&stream);
+
+    // write the serialized hits in to the message
+    aMessage.WriteL(0, ptr);
+
+    // Delete descriptor
+    CleanupStack::PopAndDestroy(buf);
+    
+	// Complete the request
+	aMessage.Complete(KErrNone);
+	}
 
 void CSearchServerSubSession::AddL(const RMessage2& aMessage)
 	{
@@ -360,7 +444,11 @@
 
 void CSearchServerSubSession::LimitExcerptToMaxLengthL(CSearchDocument* aSearchDocument)
     {
+	//This is commented because HIGHLIGHTER uses full expcerpt field, 
+	//no need to limit excerpt
     //check if excerpt is more then maximum allowed
+#ifdef USE_HIGHLIGHTER
+#else
     if(aSearchDocument->Excerpt().Length() > MAX_EXCERPT_LENGTH)
         {
         OstTraceExt1( TRACE_NORMAL, CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL, "CSearchServerSubSession::LimitExcerptToMaxLengthL;docuid=%S", (aSearchDocument->Id()) );
@@ -375,6 +463,7 @@
         aSearchDocument->AddExcerptL(*bufExcerpt);
         CleanupStack::PopAndDestroy(bufExcerpt);
         }
+#endif
     }
 
 void CSearchServerSubSession::AddCompleteL(const RMessage2& /*aMessage*/)
@@ -498,6 +587,11 @@
 				TRAP(aError, GetDocumentCompleteL(aMessage));
 				break;
 				}
+			case ECPixTaskTypeGetBatchDocument:
+			    {
+			    TRAP(aError, GetBatchDocumentCompleteL(aMessage));
+			    break;
+			    }
 			case ECPixTaskTypeAdd:
 				{
 				TRAP(aError, AddCompleteL(aMessage));
--- a/searcher/searchserver/traces/CCPixIdxDbTraces.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/traces/CCPixIdxDbTraces.h	Wed Aug 18 10:53:26 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __CCPIXIDXDBTRACES_H__
@@ -15,6 +15,9 @@
 
 
 #ifndef __KERNEL_MODE__
+#ifndef __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__
+#define __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__
+
 inline TBool OstTraceGen1( TUint32 aTraceID, const TDesC16& aParam1 )
     {
     TBool retval;
@@ -49,10 +52,16 @@
         }
     return retval;
     }
+
+#endif // __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__
+
 #endif
 
 
 #ifndef __KERNEL_MODE__
+#ifndef __OSTTRACEGEN2_TUINT32_CONST_TDESC16REF_CONST_TDESC16REF__
+#define __OSTTRACEGEN2_TUINT32_CONST_TDESC16REF_CONST_TDESC16REF__
+
 inline TBool OstTraceGen2( TUint32 aTraceID, const TDesC16& aParam1, const TDesC16& aParam2 )
     {
     TBool retval = BTraceFiltered8( EXTRACT_GROUP_ID(aTraceID), EOstTraceActivationQuery, KOstTraceComponentID, aTraceID );
@@ -133,6 +142,9 @@
         }
     return retval;
     }
+
+#endif // __OSTTRACEGEN2_TUINT32_CONST_TDESC16REF_CONST_TDESC16REF__
+
 #endif
 
 
--- a/searcher/searchserver/traces/CCPixSearchTraces.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/traces/CCPixSearchTraces.h	Wed Aug 18 10:53:26 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __CCPIXSEARCHTRACES_H__
--- a/searcher/searchserver/traces/CSearchServerSessionTraces.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/traces/CSearchServerSessionTraces.h	Wed Aug 18 10:53:26 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __CSEARCHSERVERSESSIONTRACES_H__
--- a/searcher/searchserver/traces/CSearchServerSubSessionTraces.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/traces/CSearchServerSubSessionTraces.h	Wed Aug 18 10:53:26 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __CSEARCHSERVERSUBSESSIONTRACES_H__
@@ -21,11 +21,14 @@
 #define CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_ENTRY 0x8a0014
 #define CSEARCHSERVERSUBSESSION_GETDOCUMENTCOMPLETEL_EXIT 0x8a0015
 #define CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_ENTRY 0x8a0016
-#define CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT 0x8a0017
 #define DUP1_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT 0x8a0018
+#define CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT 0x8a0019
 
 
 #ifndef __KERNEL_MODE__
+#ifndef __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__
+#define __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__
+
 inline TBool OstTraceGen1( TUint32 aTraceID, const TDesC16& aParam1 )
     {
     TBool retval;
@@ -60,6 +63,9 @@
         }
     return retval;
     }
+
+#endif // __OSTTRACEGEN1_TUINT32_CONST_TDESC16REF__
+
 #endif
 
 
--- a/searcher/searchserver/traces/CSearchServerTraces.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/traces/CSearchServerTraces.h	Wed Aug 18 10:53:26 2010 +0300
@@ -1,4 +1,4 @@
-// Created by TraceCompiler 2.1.2
+// Created by TraceCompiler 2.2.3
 // DO NOT EDIT, CHANGES WILL BE LOST
 
 #ifndef __CSEARCHSERVERTRACES_H__
--- a/searcher/searchserver/traces/OstTraceDefinitions.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/traces/OstTraceDefinitions.h	Wed Aug 18 10:53:26 2010 +0300
@@ -2,6 +2,6 @@
 #define __OSTTRACEDEFINITIONS_H__
 // OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler
 // REMOVE BEFORE CHECK-IN TO VERSION CONTROL
-//#define OST_TRACE_COMPILER_IN_USE
+#define OST_TRACE_COMPILER_IN_USE
 #include <opensystemtrace.h>
 #endif
--- a/searcher/searchserver/traces/fixed_id.definitions	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/searchserver/traces/fixed_id.definitions	Wed Aug 18 10:53:26 2010 +0300
@@ -14,7 +14,7 @@
 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTL_ENTRY=0x11
 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTL_EXIT=0x12
 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_ENTRY=0x16
-[TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT=0x17
+[TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT=0x19
 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_SEARCHCOMPLETEL_ENTRY=0xf
 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_SEARCHCOMPLETEL_EXIT=0x10
 [TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_SEARCHL_ENTRY=0xc
@@ -39,3 +39,4 @@
 [TRACE]TRACE_NORMAL[0x86]_DUP1_CSEARCHSERVERSUBSESSION_CSEARCHSERVERSUBSESSION=0xc
 [TRACE]TRACE_NORMAL[0x86]_DUP1_CSEARCHSERVERSUBSESSION_LIMITEXCERPTTOMAXLENGTHL=0xe
 [TRACE]TRACE_NORMAL[0x86]_DUP2_CPIXIDXDB_DUMPDOCUMENT=0x3
+[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CSEARCHSERVERSUBSESSION_GETDOCUMENTOBJECTL_EXIT=0x17
--- a/searcher/tsrc/cpixsearchertest/conf/cpixsearchertest.cfg	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/tsrc/cpixsearchertest/conf/cpixsearchertest.cfg	Wed Aug 18 10:53:26 2010 +0300
@@ -295,4 +295,18 @@
 foobar TestExerptLength
 delete foobar
 [Endtest]
+
+[Test]
+title TestGetBatchdoc
+create cpixsearchertest foobar
+foobar TestGetBatchdoc
+delete foobar
+[Endtest]
+
+[Test]
+title TestAsyncGetBatchdoc
+create cpixsearchertest foobar
+foobar TestAsyncGetBatchdoc
+delete foobar
+[Endtest]
  
\ No newline at end of file
--- a/searcher/tsrc/cpixsearchertest/group/cpixsearchertest.mmp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/tsrc/cpixsearchertest/group/cpixsearchertest.mmp	Wed Aug 18 10:53:26 2010 +0300
@@ -82,6 +82,7 @@
 USERINCLUDE   ./../../../../searchsrv_plat/cpix_utility_api/inc
 
 USERINCLUDE  ../../../searchclient/inc
+USERINCLUDE  ../../../searchclient/traces
 SOURCEPATH ../../../searchclient/src
 
 SOURCE rsearchserversession.cpp
@@ -94,4 +95,6 @@
 LIBRARY   FLOGGER.lib
 LIBRARY   estor.lib
 LIBRARY   efsrv.lib
+
+EPOCALLOWDLLDATA
 // End of File
--- a/searcher/tsrc/cpixsearchertest/inc/cpixsearchertest.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/tsrc/cpixsearchertest/inc/cpixsearchertest.h	Wed Aug 18 10:53:26 2010 +0300
@@ -180,6 +180,8 @@
         virtual TInt TestGetDocumentAsyncL( CStifItemParser& aItem );
         virtual TInt TestGetInvalidDocumentAsyncL( CStifItemParser& aItem );
         virtual TInt TestExerptLengthL( CStifItemParser& aItem );
+        virtual TInt TestGetBatchdocL( CStifItemParser& aItem );
+        virtual TInt TestAsyncGetBatchdocL( CStifItemParser& aItem );
         /**
          * Method used to log version of test class
          */
--- a/searcher/tsrc/cpixsearchertest/inc/cpixsearchertester.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/tsrc/cpixsearchertest/inc/cpixsearchertester.h	Wed Aug 18 10:53:26 2010 +0300
@@ -60,6 +60,7 @@
 
 public: // From MCPixNextDocumentRequestObserver
     void HandleDocumentL(TInt aError, CSearchDocument* aDocument);
+    void HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument);
     
 public: // From MAOTestObserver
     void CallCompleted( int i );
@@ -116,6 +117,11 @@
     void testGetInvalidDocumentAsync();
     
     TInt testEcerptLenth();
+    
+    void testgetbatchdoc();
+    
+    void testasyncgetbatchdoc();
+    
 private:
     CCPixSearcher* iSearcher;
     RSearchServerSession iSession;
@@ -128,6 +134,7 @@
     CSearchDocument* iDocument;
     TBool iHandleDocumentLFunctionCalled; // ETrue if HandleDocumentL called
     TBool iHandleSetAnalyzerCalled; // ETrue if HandleSetAnalyzerResultL called
+    TInt iretcount;
     };
 
 #endif /* CPIXSEARCHERTESTER_H_ */
--- a/searcher/tsrc/cpixsearchertest/src/cpixsearchertestBlocks.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/tsrc/cpixsearchertest/src/cpixsearchertestBlocks.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -164,6 +164,8 @@
         ENTRY( "TestGetDocumentAsync", Ccpixsearchertest::TestGetDocumentAsyncL),
         ENTRY( "TestGetInvalidDocumentAsync", Ccpixsearchertest::TestGetInvalidDocumentAsyncL),
         ENTRY( "TestExerptLength", Ccpixsearchertest::TestExerptLengthL),
+        ENTRY( "TestGetBatchdoc", Ccpixsearchertest::TestGetBatchdocL),
+        ENTRY( "TestAsyncGetBatchdoc", Ccpixsearchertest::TestAsyncGetBatchdocL),
         
         //ADD NEW ENTRY HERE
         // [test cases entries] - Do not remove
@@ -982,6 +984,49 @@
     doLog( iLog, err, KTestFormBaseAppClassNoError );
         return err;
     }
+
+// -----------------------------------------------------------------------------
+// Ccpixsearchertest::TestGetBatchdocL
+// -----------------------------------------------------------------------------
+//
+TInt Ccpixsearchertest::TestGetBatchdocL( CStifItemParser& /*aItem*/ )
+    {
+    _LIT( KTestFormBaseAppClassNoError, "TestGetBatchdocL: No Error" ); 
+    CTestSearcher* testsearcher = new CTestSearcher();
+    testsearcher->initialsetUp();
+    testsearcher->createandinitindexer();
+    testsearcher->createsearcher();
+    testsearcher->harvesttestcontent( 10 );
+    TRAPD ( err , testsearcher->testgetbatchdoc() );    
+    testsearcher->ReleaseIndexer();
+    testsearcher->ReleaseSearcher();
+    testsearcher->tearDown();
+    delete testsearcher;
+    doLog( iLog, err, KTestFormBaseAppClassNoError );
+    return err;
+    }
+// -----------------------------------------------------------------------------
+// Ccpixsearchertest::TestAsyncGetBatchdocL
+// -----------------------------------------------------------------------------
+//
+TInt Ccpixsearchertest::TestAsyncGetBatchdocL( CStifItemParser& /*aItem*/ )
+    {
+    _LIT( KTestFormBaseAppClassNoError, "TestAsyncGetBatchdocL: No Error" ); 
+     CTestSearcher* testsearcher = new CTestSearcher();
+     testsearcher->initialsetUp();
+     testsearcher->createandinitindexer();
+     testsearcher->createsearcher();
+     testsearcher->harvesttestcontent( 10 );
+     testsearcher->InitAsyncComponents();
+     TRAPD ( err , testsearcher->testasyncgetbatchdoc() );    
+     testsearcher->ReleaseIndexer();
+     testsearcher->ReleaseSearcher();
+     testsearcher->ReleaseAsyncComponents();
+     testsearcher->tearDown();
+     delete testsearcher;
+     doLog( iLog, err, KTestFormBaseAppClassNoError );
+     return err;
+    }
 // -----------------------------------------------------------------------------
 // Ccpixsearchertest::?member_function
 // ?implementation_description
--- a/searcher/tsrc/cpixsearchertest/src/cpixsearchertester.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/tsrc/cpixsearchertest/src/cpixsearchertester.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -234,6 +234,21 @@
         iWait->AsyncStop();
         }
     }
+void CTestSearcher::HandleBatchDocumentL(TInt /*aError*/, TInt aReturnCount, CSearchDocument** aDocument)
+    {
+    iHandleDocumentLFunctionCalled = ETrue;
+    
+    if (iWait && iWait->IsStarted())
+            {
+            for (int i=0; i<aReturnCount; i++)
+                delete aDocument[i];
+            delete aDocument;
+            
+            TS_ASSERT(aReturnCount == iretcount);
+            
+            iWait->AsyncStop();
+            }
+    }
 
 // Timeout callback
 void CTestSearcher::CallCompleted( int /* i */ )
@@ -571,3 +586,69 @@
         }
     return ( length > 125 )?KErrGeneral:KErrNone;
     }
+
+void CTestSearcher::testgetbatchdoc()
+    {
+    //Make sure Hit count is 7 
+    TInt hitcount = iSearcher->SearchL(KQueryString);
+    CSearchDocument** doc = NULL;
+    if ( hitcount )
+        {
+        TInt retcount=0,count=3;
+        doc = iSearcher->GetBatchDocumentL(0,retcount,count);
+        for (int i=0; i<retcount; i++)
+            delete doc[i];
+        delete doc;
+        doc = NULL;
+        TS_ASSERT(retcount == 3);
+        //check the extreme conditions
+        retcount = 0;
+        doc = iSearcher->GetBatchDocumentL(3,retcount,count);
+        for (int i=0; i<retcount; i++)
+            delete doc[i];
+        delete doc;
+        doc = NULL;
+        TS_ASSERT(retcount == 3);
+        
+        retcount = 0;
+        doc = iSearcher->GetBatchDocumentL(4,retcount,count);
+        for (int i=0; i<retcount; i++)
+            delete doc[i];
+        delete doc;
+        doc = NULL;
+        TS_ASSERT(retcount == 2);
+        
+        retcount = 0;
+        TRAPD(err, doc = iSearcher->GetBatchDocumentL(11,retcount,count));
+        TS_ASSERT(err == KErrDocumentAccessFailed);
+        TS_ASSERT(retcount == 0);
+        }
+    return;
+    }
+
+void CTestSearcher::testasyncgetbatchdoc()
+    {
+    //Make sure Hit count is 7 
+    TInt hitcount = iSearcher->SearchL(KQueryString);
+    if (hitcount)
+        {
+        TInt count =3;
+        iretcount = 3;
+        iSearcher->GetBatchDocumentL(0,*this,count);
+        iWait->Start();
+        
+        iretcount = 3;
+        iSearcher->GetBatchDocumentL(3,*this,count);
+        iWait->Start();
+        
+        iretcount = 2;
+        iSearcher->GetBatchDocumentL(4,*this,count);
+        iWait->Start();
+        
+        iretcount = 0;
+        iSearcher->GetBatchDocumentL(11,*this,count);
+        iWait->Start();
+                
+        }
+    return;
+    }
--- a/searcher/tsrc/logplayer/inc/logplayermanager.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/tsrc/logplayer/inc/logplayermanager.h	Wed Aug 18 10:53:26 2010 +0300
@@ -94,6 +94,7 @@
     
     // Dummy implementation
     void HandleDocumentL(TInt /*aError*/, CSearchDocument* /*aDocument*/) {}
+    void HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument) {}
 
 public: // New functions
     
--- a/searcher/tsrc/robustnesstest/inc/csearchingworker.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/tsrc/robustnesstest/inc/csearchingworker.h	Wed Aug 18 10:53:26 2010 +0300
@@ -54,6 +54,7 @@
 public: // From MCPixNextDocumentRequestObserver
     
     virtual void HandleDocumentL(TInt /*aError*/, CSearchDocument* /*aDocument*/);
+    virtual void HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument) ;
 
 public: // Statistics 
 	
--- a/searcher/tsrc/robustnesstest/src/csearchingworker.cpp	Tue Jul 06 15:30:04 2010 +0300
+++ b/searcher/tsrc/robustnesstest/src/csearchingworker.cpp	Wed Aug 18 10:53:26 2010 +0300
@@ -230,6 +230,9 @@
 void CSearchingWorker::HandleDocumentL(TInt /*aError*/, CSearchDocument* /*aDocument*/)
 	{
 	}
+void CSearchingWorker::HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument)
+    {
+    }
 
 TInt CSearchingWorker::ConsumeSearches() 
 	{
--- a/searchsrv_plat/cpix_framework_api/inc/ccpixsearcher.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchsrv_plat/cpix_framework_api/inc/ccpixsearcher.h	Wed Aug 18 10:53:26 2010 +0300
@@ -235,6 +235,36 @@
          * @return Next available document or NULL, if no more documents can be found
 		 */
 		IMPORT_C void GetDocumentL(TInt aIndex, MCPixNextDocumentRequestObserver& aObserver);
+		
+		/**
+	     * GetBatchDocumentL
+	     * Iterates throught the search result's document list (hits), that is stored in the 
+	     * server side. The accessed list is ranked and the best matching document is heading 
+	     * the result list. First call of this method, return best matching, then second best 
+	     * matching and so forth until all documents have been found. Method returns NULL, 
+	     * when no more documents can be found.
+	     *
+	     * Leaves with KErrInUse, if asynchronous request is pending and 
+	     * KErrNotReady, if no database has been succefullly opened.
+         *
+         * @todo Having also GetDocumentLC would be nice
+         * @return Next available document or NULL, if no more documents can be found. Ownership is transferred
+	     */
+		IMPORT_C CSearchDocument** GetBatchDocumentL(TInt aIndex, TInt& aReturnDoc, TInt aCount = 1);
+		
+		/**
+	     * GetBatchDocumentL
+		 * Iterates throught the search result's document list (hits), that is stored in the 
+	     * server side. The accessed list is ranked and the best matching document isheading 
+	     * the result lest. When the request has been completed a callback to 
+	     * MSearchObserver::HandleDocumentL is issued. 
+	     *
+	     * Leaves with KErrInUse, if asynchronous request is pending and 
+	     * KErrNotReady, if no database has been succefullly opened.
+	     *
+         * @return Next available document or NULL, if no more documents can be found
+		 */
+		IMPORT_C void GetBatchDocumentL(TInt aIndex, MCPixNextDocumentRequestObserver& aObserver, TInt aCount = 1);
 				
 	protected: // Functions from base classes
 	
@@ -287,6 +317,7 @@
 			EStateOpenDatabase, 
 			EStateSearch, 
 			EStateGetDocument,
+			EStateGetBatchDocument,
 			EStateSetAnalyzer,
 			EStateSetQueryParser
 			};
--- a/searchsrv_plat/cpix_framework_api/inc/mcpixsearcherobserver.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchsrv_plat/cpix_framework_api/inc/mcpixsearcherobserver.h	Wed Aug 18 10:53:26 2010 +0300
@@ -72,6 +72,16 @@
 		* @aDocument The received document. Ownership of is transfered to the observer. NULL if no more documents.
 		*/
 		virtual void HandleDocumentL(TInt aError, CSearchDocument* aDocument) = 0;
+		
+			/**
+		* HandleBatchDocumentL.
+		* Handle list of documents received from the server. 
+		* @param aError Completion code of a asynchronous request. KErrNone if operation
+		* was succesful, otherwise system wide error code.
+		* @param aReturnCount count of the documents returned.
+		* @aDocument The received document. Ownership of is transfered to the observer. NULL if no more documents.
+		*/
+		virtual void HandleBatchDocumentL(TInt aError, TInt aReturnCount, CSearchDocument** aDocument) = 0;
 	};
 
 
--- a/searchsrv_plat/cpix_framework_api/inc/rsearchserversession.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchsrv_plat/cpix_framework_api/inc/rsearchserversession.h	Wed Aug 18 10:53:26 2010 +0300
@@ -203,6 +203,28 @@
 	 * @return The document object. Ownership is transferred to the caller 
 	 */
 	IMPORT_C CSearchDocument* GetDocumentObjectL();
+	
+	/**
+     * GetBatchDocument. Synchronous version.
+     * Gets a list of document from the search results. 
+     */
+    IMPORT_C CSearchDocument** GetBatchDocumentL(TInt aIndex, TInt& aReturnDoc, TInt aCount);
+    
+    /**
+      * GetBatchDocument. Asynchronous version.
+      * Prepares a list of document from the search results. After this request
+      * complets, document can be read by using GetBatchDocumentObjectL. 
+      * @param aStatus The TRequestStatus object to be used for async comms.
+      */
+    IMPORT_C void GetBatchDocument(TInt aIndex, TRequestStatus& aStatus, TInt aCount);
+    
+    /**
+	 * GetBatchDocumentObjectL.
+	 * Get the actual Batch document object prepared by the asynchronous GetDocument request.
+	 * @return The document object. Ownership is transferred to the caller 
+	 * Note: aRetCount will have the count of the documents returned
+	 */
+	IMPORT_C CSearchDocument** GetBatchDocumentObjectL( TInt& aRetCount);
 
     /**
 	 * AddL. Synchronous version
@@ -286,11 +308,19 @@
     * iDocumentSize, bytes needed for the next document
     */
     TInt iDocumentSize;
+    /**
+    * iDocSizeArray, array of docs sizes
+    */
+    RArray<TInt> iDocSizeArray;
     
     /**
      * Package for document size.
      */
     TPckg<TInt> iDocumentSizePckg;
+    
+    TInt* iSizeList;
+    
+    TInt iReqCount;
 
 };
 
--- a/searchsrv_plat/cpix_search_api/group/bld.inf	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchsrv_plat/cpix_search_api/group/bld.inf	Wed Aug 18 10:53:26 2010 +0300
@@ -22,7 +22,7 @@
 
 PRJ_EXPORTS
 
-../inc/qcpixcommon.h	         MW_LAYER_PLATFORM_EXPORT_PATH(qcpixcommon.h)
-../inc/qcpixdocument.h	     	 MW_LAYER_PLATFORM_EXPORT_PATH(qcpixdocument.h)
-../inc/qcpixdocumentfield.h    MW_LAYER_PLATFORM_EXPORT_PATH(qcpixdocumentfield.h)
-../inc/qcpixsearcher.h  		   MW_LAYER_PLATFORM_EXPORT_PATH(qcpixsearcher.h)
+../inc/cpixcommon.h	     MW_LAYER_PLATFORM_EXPORT_PATH(cpixcommon.h)
+../inc/cpixdocument.h	     MW_LAYER_PLATFORM_EXPORT_PATH(cpixdocument.h)
+../inc/cpixdocumentfield.h   MW_LAYER_PLATFORM_EXPORT_PATH(cpixdocumentfield.h)
+../inc/cpixsearcher.h  	     MW_LAYER_PLATFORM_EXPORT_PATH(cpixsearcher.h)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchsrv_plat/cpix_search_api/inc/cpixcommon.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* 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:  Qt common search APIs
+*
+*/
+
+
+#ifndef CPIXCOMMON_H_
+#define CPIXCOMMON_H_
+
+#ifndef THROWS_EXCEPTION
+#define THROWS_EXCEPTION
+#endif
+
+/**
+ * Maximum string length.
+ * */ 
+//@TODO:sai: Is this a sane value?
+const int KMaxStringLength = 256;
+
+#endif /* CPIXCOMMON_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchsrv_plat/cpix_search_api/inc/cpixdocument.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,174 @@
+/*
+* 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:  Qt search document APIs
+*
+*/
+
+#ifndef _CPIXDOCUMENT_H
+#define _CPIXDOCUMENT_H
+
+#ifdef BUILD_DLL
+#define DLL_EXPORT Q_DECL_EXPORT
+#else
+#define DLL_EXPORT Q_DECL_IMPORT
+#endif
+
+/**
+ * @file
+ * @ingroup Qt Search ClientAPI
+ * @brief Contains CpixDocument APIs
+ */
+
+#include <QObject>
+#include <cpixcommon.h>
+
+//Forward  Declaration
+class CpixDocumentPrivate;
+class CpixDocumentField;
+
+/**
+ * @brief Represents the document returned as a result of a search query.
+ * @ingroup ClientAPI
+ * 
+ * Link against: cpixsearch.lib 
+ */
+class DLL_EXPORT CpixDocument: public QObject
+    {
+    Q_OBJECT
+public:
+    //@TODO: The following enums are copied over from S60. They need to 
+    // be moved to a common file so that they can be shared by s60, qt and openc.
+    /**
+     * TStored defines wheter the value is stored to database.
+     * If value is stored to database, it can be retrieved from search result. 
+     */
+    enum Stored
+        {
+        StoreYes = 1,
+        StoreNo = 2
+        };
+
+    /**
+     * TIndexed defines how the value of the field is indexed. 
+     * If value is indexed, it can be searched. 
+     */
+    enum Indexed
+        {
+        IndexNo = 16,
+        IndexTokenized = 32,
+        IndexUnTokenized = 64
+        };
+
+    /**
+     * TAggregated defines how the value of the field are exposed 
+     * for aggregation. Aggregated field can be found with generic searches. 
+     * If aggregation is not specified, all indexed field are aggeregated by
+     * default. Note: that also non-indexed fields can be aggregated.
+     */
+    enum Aggregated
+        {
+        AggregateNo = 1<<30,
+        AggregateYes = 1<<31,
+        AggregateDefault = 0
+        };
+    /**
+     * By default, field value is stored to database and it's indexed as tokenized strings.
+     */
+    static const int DefaultConfig = StoreYes | IndexTokenized | AggregateDefault;
+
+    static const float KDefaultBoost; 
+
+public:
+    /**
+       * Constructor.
+       * Creates a CpixDocument object and return a pointer to the created object.
+       * @return A pointer to the created instance of CpixDocument.
+       */
+    static CpixDocument* newInstance();
+
+    /**
+     * Destructor
+     */
+    virtual ~CpixDocument();
+    
+    /**
+     * Getter: Gets the document identifier.
+     * @return document identifier.
+     */
+    QString docId() const;
+    
+    /**
+     * Getter: Gets the document excert.
+     * @return document excerpt.
+     */
+    QString excerpt() const;
+    
+    /**
+     * Getter: Gets the document's base app class.
+     * @return document's base app class.
+     */
+    QString baseAppClass() const;
+
+    /**
+     * Getter: Gets the field at aIndex in the document.
+     * @param aIndex index of the field that is to be retrieved.
+     * @return CpixDocumentField that was at aIndex.
+     */
+    const CpixDocumentField& field( const int aIndex ) const THROWS_EXCEPTION;
+    
+    /**
+     * Getter: Gets the field count.
+     * @return The number of the fields in the document.
+     */
+    int fieldCount() const;
+    
+    /**
+     * Setter: Sets the document identifier for the document.
+     * @param aDocId the document identifier to be set.
+     */
+    void setDocId(const QString aDocId);
+    
+    /**
+     * Setter: Sets the excerpt for the document.
+     * @param aExcerpt the excerpt to be set.
+     */
+    void setExcerpt(const QString aExcerpt);
+    
+    /**
+     * Setter: Sets the base app class for the document.
+     * @param aBaseAppClass the base app class to be set.
+     */
+    void setBaseAppClass(const QString aBaseAppClass);
+
+    /**
+     * Setter: Adds a field with aName, aValue and aConfig to the document.
+     * @param aName The name of the field
+     * @param aValue The value of the field
+     * @param aConfig The config of the field
+     * @return the CpixDocumentField that was added to the document.
+     */
+    void addField(const QString aName, const QString aValue, const int aConfig = CpixDocument::DefaultConfig);
+
+private:
+    /**
+     * Default constructor
+     */
+    CpixDocument();
+
+private:
+    CpixDocumentPrivate* const iPvtImpl;
+	Q_DECLARE_PRIVATE_D( iPvtImpl, CpixDocument )
+    };
+
+#endif //_CPIXDOCUMENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchsrv_plat/cpix_search_api/inc/cpixdocumentfield.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,118 @@
+/*
+* 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:  Qt search document field APIs
+*
+*/
+
+#ifndef _CPIXDOCUMENTFIELD_H
+#define _CPIXDOCUMENTFIELD_H
+
+#ifdef BUILD_DLL
+#define DLL_EXPORT Q_DECL_EXPORT
+#else
+#define DLL_EXPORT Q_DECL_IMPORT
+#endif
+
+/**
+ * @file
+ * @ingroup Qt Search ClientAPI
+ * @brief Contains CCPixDocument field APIs
+ */
+
+#include <QObject>
+
+//Forward decelaration
+class CpixDocumentFieldPrivate;
+
+/**
+ * @brief Represents the fields of documents returned as a result of a search query.
+ * @ingroup ClientAPI
+ * 
+ * Link against: cpixsearch.lib 
+ */
+class DLL_EXPORT CpixDocumentField: public QObject
+    {
+    Q_OBJECT
+public:
+    /**
+     * Constructor.
+     * Creates a CpixDocumentField object and return a pointer to the created object.
+     * @param aName Name of the field
+     * @param aValue Value of the field
+     * @param aConfig Config for the field
+     * @return A pointer to the created instance of CpixDocumentField.
+     * 
+     * @note After using this constructor, the client has to mandatorily call 
+     * SetDatabase() before invoking any search.
+     */
+    static CpixDocumentField* newInstance( const QString aName, const QString aValue, const int aConfig );
+
+    /**
+     * Destructor.
+     */
+    virtual ~CpixDocumentField();
+
+    /**
+     * Getter: Gets the name of the field.
+     * @return The name of the field
+     */
+    QString name() const;
+
+    /**
+     * Getter: Gets the Value of the field.
+     * @return The value of the field
+     */
+    QString value() const;
+
+    /**
+     * Getter: Gets the Config of the field.
+     * @return The config of the field
+     */
+    int config() const;
+
+    /**
+     * Setter: Sets the Name of the field.
+     * @param aName The name of the field
+     */
+    void setName(const QString aName); 
+
+    /**
+     * Setter: Sets the Value of the field.
+     * @param aValue The value of the field
+     */
+    void setValue(const QString aValue);
+
+    /**
+     * Setter: Sets the Name of the field.
+     * @param aConfig The config of the field
+     */
+    void setConfig(const int aConfig);
+
+private:
+	/**
+     * Constructor.
+     * Creates a CpixDocumentField object and return a pointer to the created object.
+     * @param aName Name of the field
+     * @param aValue Value of the field
+     * @param aConfig Config for the field
+     * @return A pointer to the created instance of CpixDocumentField.
+     */
+    CpixDocumentField(const QString aName, const QString aValue, const int aConfig);
+
+private:
+    CpixDocumentFieldPrivate* const iPvtImpl;
+	Q_DECLARE_PRIVATE_D( iPvtImpl, CpixDocumentField )
+    };		
+
+#endif //_CPIXDOCUMENTFIELD_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchsrv_plat/cpix_search_api/inc/cpixsearcher.h	Wed Aug 18 10:53:26 2010 +0300
@@ -0,0 +1,284 @@
+/*
+* 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:  Qt search APIs
+*
+*/
+
+#ifndef _CPIXSEARCHER_H
+#define _CPIXSEARCHER_H
+
+//Uncomment the following line to enable performance measurements
+//#define OST_TRACE_COMPILER_IN_USE
+
+#ifdef OST_TRACE_COMPILER_IN_USE
+
+#include <qdatetime.h>
+#include <qdebug.h>
+#define PERF_SEARCH_START_TIMER  searchTimer.start();
+#define PERF_SEARCH_RESTART_TIMER searchTimer.restart();
+#define PERF_SEARCH_ENDLOG qDebug() << "Search QT API took: " << searchTimer.elapsed() << "msec";
+
+#define PERF_GETDOC_START_TIMER  getDocumentTimer.start();
+#define PERF_GETDOC_RESTART_TIMER getDocumentTimer.restart();
+#define PERF_GETDOC_ENDLOG qDebug() << "Search QT API took: " << getDocumentTimer.elapsed() << "msec";
+
+#define PERF_TIME_NOW(message) qDebug() << "Search QT API: " << QString(message) << ": " << QTime::currentTime().toString("hh:mm:ss.zzz");
+
+#else 
+
+#define PERF_SEARCH_START_TIMER  
+#define PERF_SEARCH_RESTART_TIMER 
+#define PERF_SEARCH_ENDLOG 
+#define PERF_GETDOC_START_TIMER
+#define PERF_GETDOC_RESTART_TIMER
+#define PERF_GETDOC_ENDLOG
+#define PERF_TIME_NOW(message)
+
+#endif
+
+/**
+ * @file
+ * @ingroup Search Client API fpr Qt Clients
+ * @brief Contains CCPixSearcher used for searching
+ */
+
+#ifdef BUILD_DLL
+#define DLL_EXPORT Q_DECL_EXPORT
+#else
+#define DLL_EXPORT Q_DECL_IMPORT
+#endif
+
+#include <QObject>
+#include <cpixcommon.h>
+
+//forward declarations
+class CpixDocument;
+class CpixSearcherPrivate;
+
+// CLASS DECLARATION
+/**
+ * @brief Used for searching.
+ * @ingroup Qt Search Client API
+ * Link against: cpixsearch.lib 
+ * 
+ * An instance of CpixSearcher is used to commit search operations.
+ * 
+ * Example code:
+ * 
+ * Usecase 1: Sync calls. 
+ * \code
+ * CpixSearcher* searcher = CpixSearcher::newInstance("root");
+ * if(searcher){
+ *      int hitCount = searcher->search("search for me");
+ *      for(int i=0; i<hitCount; i++) {
+ *      CpixDocument* doc = document(0);
+ *      // do something with doc.
+ *      delete doc;
+ *      }
+ *  }
+ * \endcode
+ * 
+ * Usecase 2: Sync calls with explicit SetDatabase().
+ * \code
+ * CpixSearcher* searcher = CpixSearcher::newInstance();
+ * searcher->SetDatabase("root");
+ * int hitCount = searcher->search("search for me");
+ * for(int i=0; i<hitCount; i++) {
+ *      try{
+ *          CpixDocument* doc = document(i);
+ *          // do something with doc.
+ *          delete doc;
+ *      catch(...){
+ *      //Do Cleanup
+ *      }
+ * }
+ * \endcode
+ * 
+ * Usecase 3: Async Calls
+ * \code
+ * 
+ * iCurrentDocumentCount = 0;
+ * 
+ * CpixSearcher* searcher = CpixSearcher::newInstance("root");
+ * connect(searcher, SIGNAL(handleSearchResults(int,int)), this, SLOT(ClientHandleSearchCompleteSlot(int,int)) );
+ * connect(searcher, SIGNAL(handleDocument(int,CpixDocument*)), this, SLOT(ClientHandleGetDocumentCompleteSlot(int,CpixDocument*)) );
+ * int hitCount = searcher->search("search for me");
+ * GetDocumentAsync( iCurrentDocumentCount++ );
+ * 
+ * ClientClass::ClientHandleGetDocumentCompleteSlot(int aError, CpixDocument* aDocument){
+ *  if( KErrNone != aError ){
+ *  //do something with aDocument
+ *  }
+ *  documentAsync( iCurrentDocumentCount++ ); //Now get the next document.
+ * }
+ * 
+ * \endcode
+ * 
+ */
+class DLL_EXPORT CpixSearcher: public QObject
+    {
+    Q_OBJECT
+public:
+    /**
+       * Constructor.
+       * Creates a CpixSearcher object and return a pointer to the created object.
+       * @return A pointer to the created instance of CCPixSearcher.
+       * 
+       * @note After using this constructor, the client has to mandatorily call 
+       * SetDatabase() before invoking any search.
+       */
+    static CpixSearcher* newInstance();
+    
+    /**
+     * Overloaded constructor
+     * Creates a CCPixSearcher object and return a pointer to the created object.
+     * If this constructor is used, the client can directly invoke Search without
+     * the need to call SetDatabase.
+     * @param aBaseAppClass The baseAppClass on which to invoke searches on.
+     * @param aDefaultSearchField Default field where the keywords are searched from.
+     * @return A pointer to the created instance of CCPixSearcher.
+     */
+    static CpixSearcher* newInstance( QString aBaseAppClass, QString aDefaultSearchField=NULL );
+
+    /**
+     * Destructor. 
+     */
+    ~CpixSearcher();
+    
+    /**
+     * Synchronously set (or change the database, if already set) on which to invoke subsequent searches.
+     * @param aBaseAppClass baseAppClass whose corresponding database is to be opened.
+     */
+    void setDatabase(QString aBaseAppClass) THROWS_EXCEPTION;
+
+    /**
+     * Asynchronously set (or change the database, if already set) on which to invoke subsequent searches.
+     * @param aBaseAppClass baseAppClass whose corresponding database is to be opened.
+     *
+     * @note Client is notified on completion of this call via HandleDatabaseSet signal.
+     */
+    void setDatabaseAsync(QString aBaseAppClass) THROWS_EXCEPTION;
+
+    /**
+     * Syncronously search for aSearchString.
+     * @param aSearchString keywords to be searched for.
+     * @param aDefaultSearchField Default field where the keywords are searched from.
+     * @return Estimated number of documents containing aSearchString.
+     */
+    int search(QString aSearchString, QString aDefaultSearchField=NULL) THROWS_EXCEPTION;
+
+    /**
+     * Asyncronously search for aSearchString.
+     * @param aSearchString keywords to be searched for.
+     * @param aDefaultSearchField Default field where the keywords are searched from.
+     * @return Estimated number of documents containing aSearchString.
+     *
+     * @note Client is notified on completion of this call via HandleSearchResults signal.
+     */
+    void searchAsync(QString aSearchString, QString aDefaultSearchField=NULL) THROWS_EXCEPTION;
+
+    /**
+     * Synchronously get the document with index aIndex.
+     * @param aIndex Index of document to be retrieved
+     * @return A pointer to CpixDocument that has been retrieved. Null on error.
+     *
+     * @note This should be called only after the synchronous search call has returned
+     *      and aIndex should be between 0 and estimated count returned by Search().
+     */     
+    CpixDocument* document(int aIndex) THROWS_EXCEPTION;
+
+    /**
+     * Asynchronously get the document with index aIndex.
+     * @param aIndex Index of document to be retrieved
+     *
+     * @note This should be called only after the synchronous search call has returned
+     *      and aIndex should be between 0 and estimated count returned by Search().
+     */     
+    void documentAsync(int aIndex) THROWS_EXCEPTION;
+	
+	/**
+     * Synchronously get the count,aCount of batch documens with index aIndex.
+     * @param aIndex starting Index of document to be retrieved
+	 * @param aCount number of documents requested
+	 * @param aReturnDoc number of documents returned
+     * @return A double pointer to CpixDocument that has been retrieved. Null on error.
+     *
+     * @note This should be called only after the synchronous search call has returned
+     *      and aIndex should be between 0 and estimated count returned by Search().
+	 *      It is the client duty to free the memory allocated for the returned CpixDocument**
+	 *      deallocation of the memory can be done based on the value returned in aReturnDoc
+     */     
+    CpixDocument** batchdocument(int aIndex,int& aReturnDoc, int aCount = 1) THROWS_EXCEPTION;
+
+    /**
+     * Asynchronously get the batch documents with index aIndex.
+     * @param aIndex Starting Index of documents to be retrieved
+	 * @param aCount number of documents requested
+     *
+     * @note This should be called only after the synchronous search call has returned
+     *      and aIndex should be between 0 and estimated count returned by Search().
+     */     
+    void batchdocumentAsync(int aIndex, int aCount = 1) THROWS_EXCEPTION;
+    
+    /**
+     * Cancels any outstanding searches.
+     */
+    void cancelSearch();
+
+signals:
+    /**
+     * Notify completion of SetDatabaseAsyc
+     * @param aError Completion (error) code of SetDatabaseAsync
+     */
+    void handleDatabaseSet(int aError);
+
+    /**
+     * Notify completion of SearchAsyc
+     * @param aError Completion (error) code of SearchAsyc
+     * @param aEstimatedResultCount Estimated number of documents found after SearchAsync
+     */     
+    void handleSearchResults(int aError, int aEstimatedResultCount);
+
+    /**
+     * Notify completion of documentAsyc
+     * @param aError Completion (error) code of GetDatabaseAsyc
+     * @param aDocument The requested document.
+     */     
+    void handleDocument(int aError, CpixDocument* aDocument);
+	
+	/**
+     * Notify completion of BatchdocumentAsyc
+     * @param aError Completion (error) code of GetDatabaseAsyc
+     * @param aDocument The requested document.
+     */     
+    void handleBatchDocuments(int aError,int aRetCount, CpixDocument** aDocument);
+
+private:
+    /**
+       * Defaul constructor.
+       * Creates a CpixSearcher object and return a pointer to the created object.
+       * @return A pointer to the created instance of CCPixSearcher.
+       */
+    CpixSearcher();
+    
+    CpixSearcherPrivate* const iPvtImpl;
+    Q_DECLARE_PRIVATE_D( iPvtImpl, CpixSearcher )
+    
+#ifdef OST_TRACE_COMPILER_IN_USE
+    QTime searchTimer; 
+    QTime getDocumentTimer;
+#endif
+    };
+
+#endif //_CPIXSEARCHER_H
--- a/searchsrv_plat/cpix_search_api/inc/qcpixcommon.h	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* 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:  Qt common search APIs
-*
-*/
-
-
-#ifndef QCPIXCOMMON_H_
-#define QCPIXCOMMON_H_
-
-#ifndef THROWS_EXCEPTION
-#define THROWS_EXCEPTION
-#endif
-
-/**
- * Maximum string length.
- * */ 
-//@TODO:sai: Is this a sane value?
-const int KMaxStringLength = 256;
-
-#endif /* QCPIXCOMMON_H_ */
--- a/searchsrv_plat/cpix_search_api/inc/qcpixdocument.h	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-/*
-* 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:  Qt search document APIs
-*
-*/
-
-#ifndef _QCPIXDOCUMENT_H
-#define _QCPIXDOCUMENT_H
-
-#ifdef BUILD_DLL
-#define DLL_EXPORT Q_DECL_EXPORT
-#else
-#define DLL_EXPORT Q_DECL_IMPORT
-#endif
-
-/**
- * @file
- * @ingroup Qt Search ClientAPI
- * @brief Contains CCPixDocument APIs
- */
-
-#include <QObject>
-
-//Forward  Declaration
-class QCPixDocumentPrivate;
-class QCPixDocumentField;
-
-/**
- * @brief Represents the document returned as a result of a search query.
- * @ingroup ClientAPI
- * 
- * Link against: QCPixSearchClient.lib 
- */
-class DLL_EXPORT QCPixDocument: public QObject
-    {
-    Q_OBJECT
-public:
-    //@TODO: The following enums are copied over from S60. They need to 
-    // be moved to a common file so that they can be shared by s60, qt and openc.
-    /**
-     * TStored defines wheter the value is stored to database.
-     * If value is stored to database, it can be retrieved from search result. 
-     */
-    enum TStored
-        {
-        EStoreYes = 1,
-        EStoreNo = 2
-        };
-
-    /**
-     * TIndexed defines how the value of the field is indexed. 
-     * If value is indexed, it can be searched. 
-     */
-    enum TIndexed
-        {
-        EIndexNo = 16,
-        EIndexTokenized = 32,
-        EIndexUnTokenized = 64
-        };
-
-    /**
-     * TAggregated defines how the value of the field are exposed 
-     * for aggregation. Aggregated field can be found with generic searches. 
-     * If aggregation is not specified, all indexed field are aggeregated by
-     * default. Note: that also non-indexed fields can be aggregated.
-     */
-    enum TAggregated
-        {
-        EAggregateNo = 1<<30,
-        EAggregateYes = 1<<31,
-        EAggregateDefault = 0
-        };
-    /**
-     * By default, field value is stored to database and it's indexed as tokenized strings.
-     */
-    static const TInt KDefaultConfig = EStoreYes | EIndexTokenized | EAggregateDefault;
-
-    static const TReal32 KDefaultBoost; 
-
-public:
-    /**
-       * Constructor.
-       * Creates a QCPixDocument object and return a pointer to the created object.
-       * @return A pointer to the created instance of CCPixDocument.
-       */
-    static QCPixDocument* newInstance();
-
-    /**
-     * Destructor
-     */
-    virtual ~QCPixDocument();
-    
-    /**
-     * Getter: Gets the document identifier.
-     * @return document identifier.
-     */
-    QString docId() const;
-    
-    /**
-     * Getter: Gets the document excert.
-     * @return document excerpt.
-     */
-    QString excerpt() const;
-    
-    /**
-     * Getter: Gets the document's base app class.
-     * @return document's base app class.
-     */
-    QString baseAppClass() const;
-
-    /**
-     * Getter: Gets the field at aIndex in the document.
-     * @param aIndex index of the field that is to be retrieved.
-     * @return QCPixDocumentField that was at aIndex.
-     */
-    const QCPixDocumentField& field( const int aIndex ) const;
-    
-    /**
-     * Getter: Gets the field count.
-     * @return The number of the fields in the document.
-     */
-    int fieldCount() const;
-    
-    /**
-     * Setter: Sets the document identifier for the document.
-     * @param aDocId the document identifier to be set.
-     */
-    void setDocId(const QString aDocId);
-    
-    /**
-     * Setter: Sets the excerpt for the document.
-     * @param aExcerpt the excerpt to be set.
-     */
-    void setExcerpt(const QString aExcerpt);
-    
-    /**
-     * Setter: Sets the base app class for the document.
-     * @param aBaseAppClass the base app class to be set.
-     */
-    void setBaseAppClass(const QString aBaseAppClass);
-
-    /**
-     * Setter: Adds a field with aName, aValue and aConfig to the document.
-     * @param aName The name of the field
-     * @param aValue The value of the field
-     * @param aConfig The config of the field
-     * @return the QCPixDocumentField that was added to the document.
-     */
-    void addField(const QString aName, const QString aValue, const int aConfig = QCPixDocument::KDefaultConfig);
-
-private:
-    /**
-     * Default constructor
-     */
-    QCPixDocument();
-
-private:
-    QCPixDocumentPrivate* const iPvtImpl;
-	Q_DECLARE_PRIVATE_D( iPvtImpl, QCPixDocument )
-    };
-
-#endif //_QCPIXDOCUMENT_H
--- a/searchsrv_plat/cpix_search_api/inc/qcpixdocumentfield.h	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
-* 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:  Qt search document field APIs
-*
-*/
-
-#ifndef _QCPIXDOCUMENTFIELD_H
-#define _QCPIXDOCUMENTFIELD_H
-
-#ifdef BUILD_DLL
-#define DLL_EXPORT Q_DECL_EXPORT
-#else
-#define DLL_EXPORT Q_DECL_IMPORT
-#endif
-
-/**
- * @file
- * @ingroup Qt Search ClientAPI
- * @brief Contains CCPixDocument field APIs
- */
-
-#include <QObject>
-
-//Forward decelaration
-class QCPixDocumentFieldPrivate;
-
-/**
- * @brief Represents the fields of documents returned as a result of a search query.
- * @ingroup ClientAPI
- * 
- * Link against: QCPixSearchClient.lib 
- */
-class DLL_EXPORT QCPixDocumentField: public QObject
-    {
-    Q_OBJECT
-public:
-    /**
-     * Constructor.
-     * Creates a QCPixDocumentField object and return a pointer to the created object.
-     * @param aName Name of the field
-     * @param aValue Value of the field
-     * @param aConfig Config for the field
-     * @return A pointer to the created instance of QCPixDocumentField.
-     * 
-     * @note After using this constructor, the client has to mandatorily call 
-     * SetDatabase() before invoking any search.
-     */
-    static QCPixDocumentField* newInstance( const QString aName, const QString aValue, const int aConfig );
-
-    /**
-     * Destructor.
-     */
-    virtual ~QCPixDocumentField();
-
-    /**
-     * Getter: Gets the name of the field.
-     * @return The name of the field
-     */
-    QString name() const;
-
-    /**
-     * Getter: Gets the Value of the field.
-     * @return The value of the field
-     */
-    QString value() const;
-
-    /**
-     * Getter: Gets the Config of the field.
-     * @return The config of the field
-     */
-    int config() const;
-
-    /**
-     * Setter: Sets the Name of the field.
-     * @param aName The name of the field
-     */
-    void setName(const QString aName); 
-
-    /**
-     * Setter: Sets the Value of the field.
-     * @param aValue The value of the field
-     */
-    void setValue(const QString aValue);
-
-    /**
-     * Setter: Sets the Name of the field.
-     * @param aConfig The config of the field
-     */
-    void setConfig(const int aConfig);
-
-private:
-	/**
-     * Constructor.
-     * Creates a QCPixDocumentField object and return a pointer to the created object.
-     * @param aName Name of the field
-     * @param aValue Value of the field
-     * @param aConfig Config for the field
-     * @return A pointer to the created instance of QCPixDocumentField.
-     */
-    QCPixDocumentField(const QString aName, const QString aValue, const int aConfig);
-
-private:
-    QCPixDocumentFieldPrivate* const iPvtImpl;
-	Q_DECLARE_PRIVATE_D( iPvtImpl, QCPixDocumentField )
-    };		
-
-#endif //_QCPIXDOCUMENTFIELD_H
--- a/searchsrv_plat/cpix_search_api/inc/qcpixsearcher.h	Tue Jul 06 15:30:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,263 +0,0 @@
-/*
-* 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:  Qt search APIs
-*
-*/
-
-#ifndef _QCPIXSEARCHER_H
-#define _QCPIXSEARCHER_H
-
-//Uncomment the following line to enable performance measurements
-//#define OST_TRACE_COMPILER_IN_USE
-
-#ifdef OST_TRACE_COMPILER_IN_USE
-
-#include <qdatetime.h>
-#include <qdebug.h>
-#define PERF_SEARCH_START_TIMER  searchTimer.start();
-#define PERF_SEARCH_RESTART_TIMER searchTimer.restart();
-#define PERF_SEARCH_ENDLOG qDebug() << "Search QT API took: " << searchTimer.elapsed() << "msec";
-
-#define PERF_GETDOC_START_TIMER  getDocumentTimer.start();
-#define PERF_GETDOC_RESTART_TIMER getDocumentTimer.restart();
-#define PERF_GETDOC_ENDLOG qDebug() << "Search QT API took: " << getDocumentTimer.elapsed() << "msec";
-
-#define PERF_TIME_NOW(message) qDebug() << "Search QT API: " << QString(message) << ": " << QTime::currentTime().toString("hh:mm:ss.zzz");
-
-#else 
-
-#define PERF_SEARCH_START_TIMER  
-#define PERF_SEARCH_RESTART_TIMER 
-#define PERF_SEARCH_ENDLOG 
-#define PERF_GETDOC_START_TIMER
-#define PERF_GETDOC_RESTART_TIMER
-#define PERF_GETDOC_ENDLOG
-#define PERF_TIME_NOW(message)
-
-#endif
-
-/**
- * @file
- * @ingroup Search Client API fpr Qt Clients
- * @brief Contains CCPixSearcher used for searching
- */
-
-#ifdef BUILD_DLL
-#define DLL_EXPORT Q_DECL_EXPORT
-#else
-#define DLL_EXPORT Q_DECL_IMPORT
-#endif
-
-#include <QObject>
-#include <qcpixcommon.h>
-
-//forward declarations
-class QCPixDocument;
-class QCPixSearcherPrivate;
-
-// CLASS DECLARATION
-/**
- * @brief Used for searching.
- * @ingroup Qt Search Client API
- * Link against: qcpixsearchclient.lib 
- * 
- * An instance of QCPixSearcher is used to commit search operations.
- * 
- * Example code:
- * 
- * Usecase 1: Sync calls. 
- * \code
- * QCPixSearcher* searcher = QCPixSearcher::newInstance("root");
- * if(searcher){
- *		int hitCount = searcher->Search("search for me");
- *		for(int i=0; i<hitCount; i++) {
- *		QCPixDocument* doc = GetDocument(0);
- *		// do something with doc.
- *		delete doc;
- *		}
- *	}
- * \endcode
- * 
- * Usecase 2: Sync calls with explicit SetDatabase().
- * \code
- * QCPixSearcher* searcher = QCPixSearcher::newInstance();
- * searcher->SetDatabase("root");
- * int hitCount = searcher->Search("search for me");
- * for(int i=0; i<hitCount; i++) {
- *		try{
- *			QCPixDocument* doc = GetDocument(i);
- *			// do something with doc.
- *			delete doc;
- *		catch(...){
- *      //Do Cleanup
- *		}
- * }
- * \endcode
- * 
- * Usecase 3: Async Calls
- * \code
- * 
- * iCurrentDocumentCount = 0;
- * 
- * QCPixSearcher* searcher = QCPixSearcher::newInstance("root");
- * connect(searcher, SIGNAL(handleSearchResults(int,int)), this, SLOT(ClientHandleSearchCompleteSlot(int,int)) );
- * connect(searcher, SIGNAL(handleDocument(int,QCPixDocument*)), this, SLOT(ClientHandleGetDocumentCompleteSlot(int,QCPixDocument*)) );
- * int hitCount = searcher->Search("search for me");
- * GetDocumentAsync( iCurrentDocumentCount++ );
- * 
- * ClientClass::ClientHandleGetDocumentCompleteSlot(int aError, QCPixDocument* aDocument){
- *  if( KErrNone != aError ){
- *  //do something with aDocument
- *  }
- *  GetDocumentAsync( iCurrentDocumentCount++ ); //Now get the next document.
- * }
- * 
- * \endcode
- * 
- */
-class DLL_EXPORT QCPixSearcher: public QObject
-    {
-    Q_OBJECT
-public:
-    /**
-       * Constructor.
-       * Creates a QCPixSearcher object and return a pointer to the created object.
-       * @return A pointer to the created instance of CCPixSearcher.
-       * 
-       * @note After using this constructor, the client has to mandatorily call 
-       * SetDatabase() before invoking any search.
-       */
-    static QCPixSearcher* newInstance();
-    
-    /**
-     * Overloaded constructor
-     * Creates a CCPixSearcher object and return a pointer to the created object.
-     * If this constructor is used, the client can directly invoke Search without
-     * the need to call SetDatabase.
-     * @param aBaseAppClass The baseAppClass on which to invoke searches on.
-     * @param aDefaultSearchField Default field where the keywords are searched from.
-     * @return A pointer to the created instance of CCPixSearcher.
-     */
-    static QCPixSearcher* newInstance( QString aBaseAppClass, QString aDefaultSearchField=NULL );
-
-    /**
-     * Destructor. 
-     */
-    ~QCPixSearcher();
-    
-    /**
-     * Synchronously set (or change the database, if already set) on which to invoke subsequent searches.
-     * @param aBaseAppClass baseAppClass whose corresponding database is to be opened.
-     */
-    void setDatabase(QString aBaseAppClass) THROWS_EXCEPTION;
-
-    /**
-     * Asynchronously set (or change the database, if already set) on which to invoke subsequent searches.
-     * @param aBaseAppClass baseAppClass whose corresponding database is to be opened.
-     *
-     * @note Client is notified on completion of this call via HandleDatabaseSet signal.
-     */
-    void setDatabaseAsync(QString aBaseAppClass) THROWS_EXCEPTION;
-
-    /**
-     * Syncronously search for aSearchString.
-     * @param aSearchString keywords to be searched for.
-     * @param aDefaultSearchField Default field where the keywords are searched from.
-     * @return Estimated number of documents containing aSearchString.
-     */
-    int search(QString aSearchString, QString aDefaultSearchField=NULL) THROWS_EXCEPTION;
-
-    /**
-     * Asyncronously search for aSearchString.
-     * @param aSearchString keywords to be searched for.
-     * @param aDefaultSearchField Default field where the keywords are searched from.
-     * @return Estimated number of documents containing aSearchString.
-     *
-     * @note Client is notified on completion of this call via HandleSearchResults signal.
-     */
-    void searchAsync(QString aSearchString, QString aDefaultSearchField=NULL) THROWS_EXCEPTION;
-
-    /**
-     * Synchronously get the document with index aIndex.
-     * @param aIndex Index of document to be retrieved
-     * @return A pointer to QCPixDocument that has been retrieved. Null on error.
-     *
-     * @note This should be called only after the synchronous search call has returned
-     * 		and aIndex should be between 0 and estimated count returned by Search().
-     */		
-    QCPixDocument* getDocument(int aIndex) THROWS_EXCEPTION;
-
-    /**
-     * Asynchronously get the document with index aIndex.
-     * @param aIndex Index of document to be retrieved
-     * @return A pointer to QCPixDocument that has been retrieved. Null on error.
-     *
-     * @note This should be called only after the synchronous search call has returned
-     * 		and aIndex should be between 0 and estimated count returned by Search().
-     */		
-    void getDocumentAsync(int aIndex) THROWS_EXCEPTION;
-    
-    /**
-     * Cancels any outstanding searches.
-     */
-    void cancelSearch();
-
-signals:
-    /**
-     * Notify completion of SetDatabaseAsyc
-     * @param aError Completion (error) code of SetDatabaseAsync
-     */
-    void handleDatabaseSet(int aError);
-
-    /**
-     * Notify completion of SearchAsyc
-     * @param aError Completion (error) code of SearchAsyc
-     * @param aEstimatedResultCount Estimated number of documents found after SearchAsync
-     */		
-    void handleSearchResults(int aError, int aEstimatedResultCount);
-
-    /**
-     * Notify completion of GetDatabaseAsyc
-     * @param aError Completion (error) code of GetDatabaseAsyc
-     * @param aDocument The requested document.
-     */		
-    void handleDocument(int aError, QCPixDocument* aDocument);
-
-private:
-    /**
-     * Default Constructor.
-     */
-    QCPixSearcher();
-    
-    /**
-       * Constructor.
-       * Creates a QCPixSearcher object and return a pointer to the created object.
-       * @param aDefaultSearchField Default field where the keywords are searched from.
-       * @return A pointer to the created instance of CCPixSearcher.
-       * 
-       * @note After using this constructor, the client has to mandatorily call 
-       * SetDatabase() before invoking any search.
-       */
-    QCPixSearcher( QString aDefaultSearchField=NULL );
-    
-    QCPixSearcherPrivate* const iPvtImpl;
-    Q_DECLARE_PRIVATE_D( iPvtImpl, QCPixSearcher )
-    
-#ifdef OST_TRACE_COMPILER_IN_USE
-    QTime searchTimer; 
-    QTime getDocumentTimer;
-#endif
-    };
-
-#endif //_QCPIXSEARCHER_H
--- a/searchsrv_plat/cpix_utility_api/inc/cpixmaindefs.h	Tue Jul 06 15:30:04 2010 +0300
+++ b/searchsrv_plat/cpix_utility_api/inc/cpixmaindefs.h	Wed Aug 18 10:53:26 2010 +0300
@@ -196,7 +196,7 @@
  */
 #define DEFAULT_CPIX_DIR "c:\\Data\\"
 #define DEFAULT_CLUCENE_LOCK_DIR "c:\\system\\temp"
-#define DEFAULT_RESOURCE_DIR "c:\\Data\\"
+#define DEFAULT_RESOURCE_DIR "z:\\resource\\cpix"
 
 
 
--- a/sis/cpixsearch.pkg.source	Tue Jul 06 15:30:04 2010 +0300
+++ b/sis/cpixsearch.pkg.source	Wed Aug 18 10:53:26 2010 +0300
@@ -94,10 +94,10 @@
 "$(EPOCROOT)epoc32\release\armv5\$(TARGET)\cpixfileplugin.dll"
 -"c:\sys\bin\cpixfileplugin.dll"
 
-"$(EPOCROOT)epoc32\data\z\resource\plugins\cpixbookmarksplugin.rsc"
--"c:\resource\plugins\cpixbookmarksplugin.rsc"
-"$(EPOCROOT)epoc32\release\armv5\$(TARGET)\cpixbookmarksplugin.dll"
--"c:\sys\bin\cpixbookmarksplugin.dll"
+;"$(EPOCROOT)epoc32\data\z\resource\plugins\cpixbookmarksplugin.rsc"
+;-"c:\resource\plugins\cpixbookmarksplugin.rsc"
+;"$(EPOCROOT)epoc32\release\armv5\$(TARGET)\cpixbookmarksplugin.dll"
+;-"c:\sys\bin\cpixbookmarksplugin.dll"
 
 "$(EPOCROOT)epoc32\data\z\resource\plugins\cpixcalendarplugin.rsc"
 -"c:\resource\plugins\cpixcalendarplugin.rsc"
@@ -119,7 +119,7 @@
 -"c:\sys\bin\cpixnotesplugin.dll"
 
 
-"\epoc32\release\armv5\$(TARGET)\qcpixsearchclient.dll"    - "!:\sys\bin\qcpixsearchclient.dll"
+"\epoc32\release\armv5\$(TARGET)\cpixsearch.dll"    - "!:\sys\bin\cpixsearch.dll"
 
 @"centrep.sisx", (0x10202BE9)
 ;Email Plugin