summaryrefslogtreecommitdiff
path: root/xmlhelp/source/cxxhelp/inc/qe/DocGenerator.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmlhelp/source/cxxhelp/inc/qe/DocGenerator.hxx')
-rw-r--r--xmlhelp/source/cxxhelp/inc/qe/DocGenerator.hxx393
1 files changed, 107 insertions, 286 deletions
diff --git a/xmlhelp/source/cxxhelp/inc/qe/DocGenerator.hxx b/xmlhelp/source/cxxhelp/inc/qe/DocGenerator.hxx
index 27e545af06cf..08d4f508505d 100644
--- a/xmlhelp/source/cxxhelp/inc/qe/DocGenerator.hxx
+++ b/xmlhelp/source/cxxhelp/inc/qe/DocGenerator.hxx
@@ -1,286 +1,107 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: DocGenerator.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-#ifndef _XMLSEARCH_QE_DOCGENERATOR_HXX_
-#define _XMLSEARCH_QE_DOCGENERATOR_HXX_
-
-#include <rtl/ref.hxx>
-#ifndef _RTL_USTRING_HXX__
-#include <rtl/ustring.hxx>
-#endif
-#include <excep/XmlSearchExceptions.hxx>
-#include <qe/XmlIndex.hxx>
-#include <qe/ConceptData.hxx>
-#include <util/CompressorIterator.hxx>
-#include <util/Decompressor.hxx>
-
-
-namespace xmlsearch {
-
- namespace qe {
-
-
- class Query;
-
-
- class NonnegativeIntegerGenerator
- {
- public:
-
- static const sal_Int32 END;
-
- virtual ~NonnegativeIntegerGenerator() { };
- virtual sal_Int32 first() throw( xmlsearch::excep::XmlSearchException ) = 0;
- virtual sal_Int32 next() throw( xmlsearch::excep::XmlSearchException ) = 0;
- };
-
-
- class NextDocGenerator
- {
- public:
-
- NextDocGenerator( ConceptData* cd,XmlIndex* env );
-
- ~NextDocGenerator() { delete iterator_; }
-
- sal_Int32 first() throw( xmlsearch::excep::XmlSearchException )
- {
- return ( document_ = ( iterator_ ? iterator_->first() : NonnegativeIntegerGenerator::END ) );
- }
-
- sal_Int32 next() throw( xmlsearch::excep::XmlSearchException )
- {
- if( iterator_ )
- return document_ = iterator_->next();
-
- throw xmlsearch::excep::XmlSearchException( rtl::OUString::createFromAscii( "NextDocGenerator::next ->" ) );
- }
-
- sal_Int32 getDocument() { return document_; }
-
- sal_Int32 getConcept() { return concept_; }
-
- sal_Int32 getQueryMask() { return queryMask_; }
-
- rtl::Reference< ConceptData > getTerms() { return terms_; }
-
- bool smallerThan( NextDocGenerator* other )
- {
- return
- (document_ < other->document_)
- ||
- (document_ == other->document_ && concept_ < other->concept_);
- }
-
-
- private:
-
- sal_Int32 document_,concept_,queryMask_;
- rtl::Reference< ConceptData > terms_;
- NonnegativeIntegerGenerator* iterator_;
- };
-
-
- class NextDocGeneratorHeap
- {
- public:
-
- NextDocGeneratorHeap()
- : nonEmpty_( false ),
- heapSize_( 0 ),
- free_( 0 )
-
- {
- }
-
- ~NextDocGeneratorHeap()
- {
- reset();
- }
-
- void reset();
-
- void addGenerator( NextDocGenerator* gen );
-
- void start();
-
- bool isNonEmpty() const { return nonEmpty_; }
-
- void step() throw( xmlsearch::excep::XmlSearchException );
-
- sal_Int32 getDocument() { return heap_[0]->getDocument(); }
-
- sal_Int32 getConcept() { return heap_[0]->getConcept(); }
-
- sal_Int32 getQueryMask() { return heap_[0]->getQueryMask(); }
-
- rtl::Reference< ConceptData > getTerms() { return heap_[0]->getTerms(); }
-
- bool atDocument( sal_Int32 document );
-
-
- private:
-
- bool nonEmpty_;
-
- sal_Int32 heapSize_,free_;
-
- std::vector< NextDocGenerator* > heap_;
-
- void heapify( sal_Int32 i );
- };
-
-
-
- class RoleFiller
- {
- public:
-
- static RoleFiller* STOP() { return &roleFiller_; }
-
- RoleFiller();
-
- RoleFiller( sal_Int32 nColumns,
- ConceptData* first,
- sal_Int32 role,
- sal_Int32 pos,
- sal_Int32 parentContext,
- sal_Int32 limit );
-
- ~RoleFiller();
-
- void acquire() { ++m_nRefcount; }
- void release() { if( ! --m_nRefcount ) delete this; }
-
- void scoreList( Query* ,sal_Int32 );
-
- sal_Int32 getConcept();
-
- void use( std::vector< RoleFiller*>& place,sal_Int32 query );
-
- private:
-
- static RoleFiller roleFiller_;
-
- sal_uInt32 m_nRefcount;
- sal_uInt8 fixedRole_;
- sal_Int16 filled_;
- sal_Int32 begin_,end_,parentContext_,limit_;
-
- RoleFiller* next_;
- std::vector< RoleFiller* > fillers_;
-
- ConceptData* conceptData_;
-
- double penalty( Query* query,sal_Int32 nColumns );
-
- void makeQueryHit( Query* query,sal_Int32 doc,double penalty_ );
-
- void considerReplacementWith( RoleFiller* replacement );
-
- double getScore() { return conceptData_->getScore(); }
- };
-
-
-
- class ConceptGroupGenerator
- : public xmlsearch::util::CompressorIterator
- {
- public:
-
- static const sal_Int32 NConceptsInGroup;
-
- ConceptGroupGenerator();
-
- ConceptGroupGenerator( sal_Int32 dataL,sal_Int8* data,sal_Int32 index,sal_Int32 k );
-
- virtual ~ConceptGroupGenerator();
-
- void init( sal_Int32 bytesL,sal_Int8* bytes,sal_Int32 index,sal_Int32 k );
-
- bool next() throw( xmlsearch::excep::XmlSearchException );
-
- void generateFillers( std::vector< RoleFiller* >& array );
-
- sal_Int32 position() { return last_; }
-
- void value( sal_Int32 value_ ) { last_ += value_; }
-
- sal_Int32 decodeConcepts( sal_Int32 k, sal_Int32 shift, sal_Int32 *concepts ) throw( xmlsearch::excep::XmlSearchException );
-
- void addTerms( sal_Int32 index, ConceptData* terms );
-
- private:
-
- static const sal_Int32 BitsInLabel;
-
- sal_Int32 last_,k1_,k2_;
- std::vector< rtl::Reference< ConceptData > > table_;
- xmlsearch::util::Decompressor* bits_;
- rtl::Reference< ConceptData> cData_;
- };
-
-
- class GeneratorHeap
- {
- public:
-
- GeneratorHeap()
- : heapSize_( 0 ),
- free_( 0 )
- { }
-
- ~GeneratorHeap() { reset(); }
-
- bool start( std::vector< RoleFiller* >& start ) throw( xmlsearch::excep::XmlSearchException );
-
- bool next( std::vector< RoleFiller* >& start ) throw( xmlsearch::excep::XmlSearchException );
-
- void reset();
-
- void addGenerator( ConceptGroupGenerator* cd );
-
- private:
-
- sal_Int32 heapSize_,free_;
-
- std::vector< ConceptGroupGenerator* > heap_;
-
- void buildHeap();
-
- void heapify( sal_Int32 root );
-
- };
-
-
-
- }
-}
-
-#endif
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: DocGenerator.hxx,v $
+ * $Revision: 1.3 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _XMLSEARCH_QE_DOCGENERATOR_HXX_
+#define _XMLSEARCH_QE_DOCGENERATOR_HXX_
+
+#include <rtl/ref.hxx>
+#ifndef _RTL_USTRING_HXX__
+#include <rtl/ustring.hxx>
+#endif
+#include <excep/XmlSearchExceptions.hxx>
+#include <util/CompressorIterator.hxx>
+#include <util/Decompressor.hxx>
+
+
+namespace xmlsearch {
+
+ namespace qe {
+
+
+ class Query;
+
+
+ class NonnegativeIntegerGenerator
+ {
+ public:
+
+ static const sal_Int32 END;
+
+ virtual ~NonnegativeIntegerGenerator() { };
+ virtual sal_Int32 first() throw( xmlsearch::excep::XmlSearchException ) = 0;
+ virtual sal_Int32 next() throw( xmlsearch::excep::XmlSearchException ) = 0;
+ };
+
+
+ class RoleFiller
+ {
+ public:
+
+ static RoleFiller* STOP() { return &roleFiller_; }
+
+ RoleFiller();
+
+ ~RoleFiller();
+
+ void acquire() { ++m_nRefcount; }
+ void release() { if( ! --m_nRefcount ) delete this; }
+
+ private:
+
+ static RoleFiller roleFiller_;
+
+ sal_uInt32 m_nRefcount;
+ sal_uInt8 fixedRole_;
+ sal_Int16 filled_;
+ sal_Int32 begin_,end_,parentContext_,limit_;
+
+ RoleFiller* next_;
+ std::vector< RoleFiller* > fillers_;
+ };
+
+
+ class GeneratorHeap
+ {
+ public:
+
+ GeneratorHeap()
+ : heapSize_( 0 ),
+ free_( 0 )
+ { }
+ private:
+
+ sal_Int32 heapSize_,free_;
+ };
+
+
+
+ }
+}
+
+#endif