diff options
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/htsearch/OperatorQuery.h')
-rw-r--r-- | debian/htdig/htdig-3.2.0b6/htsearch/OperatorQuery.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/htsearch/OperatorQuery.h b/debian/htdig/htdig-3.2.0b6/htsearch/OperatorQuery.h new file mode 100644 index 00000000..5c612ccf --- /dev/null +++ b/debian/htdig/htdig-3.2.0b6/htsearch/OperatorQuery.h @@ -0,0 +1,68 @@ +#ifndef _OperatorQuery_h_ +#define _OperatorQuery_h_ + +// +// OperatorQuery.h +// +// OperatorQuery: (abstract class) a query that combines result lists +// returned by other queries kept in an operand list. +// how they are combined is tbd by the concrete classes. +// +// Part of the ht://Dig package <http://www.htdig.org/> +// Copyright (c) 1995-2004 The ht://Dig Group +// For copyright details, see the file COPYING in your distribution +// or the GNU Library General Public License (LGPL) version 2 or later +// <http://www.gnu.org/copyleft/lgpl.html> +// +// $Id: OperatorQuery.h,v 1.4 2004/05/28 13:15:24 lha Exp $ +// + +// +// for details about the basic architectural pattern see the book: +// Design Patterns, by the infamous GoF +// Interpreter pattern +// + +#ifdef HAVE_CONFIG_H +#include "htconfig.h" +#endif + +#include "Query.h" +#include "List.h" + +// abstract +class OperatorQuery : public Query +{ +public: + virtual ~OperatorQuery() + { + operands.Destroy(); + } + + // add an operand to the operation + void Add(Query *operand) + { + operands.Add(operand); + } + +protected: + OperatorQuery() {} + + // get results from operands and combine them ad-hoc + virtual ResultList *Evaluate() = 0; + + // keyword name of the operation + virtual String OperatorString() const = 0; + + // human-readable unparsed string + virtual String GetLogicalWords() const; + + // cache index + String GetSignature() const + { return String("Compound:")+GetLogicalWords(); } + + // children query operands + List operands; +}; + +#endif |