search.h
上传用户:psq1974
上传日期:2007-01-06
资源大小:1195k
文件大小:2k
源码类别:

mpeg/mp3

开发平台:

C/C++

  1. /* Copyright (C) 1998, 1999 State University of New York at Stony Brook
  2.    Author: Andrew V. Shuvalov ( andrew@ecsl.cs.sunysb.edu )
  3.    Software license is located in file "COPYING"
  4. */
  5. #ifndef _search_h_
  6. #define _search_h_
  7. #include "string_of_text.h"
  8. #include "gtk_search_win.h"
  9. /** abstract base class */
  10. class BoolSearchOperation {
  11. protected:
  12.   const WordDb &wordDb;
  13.   BoolSearchOperation *left;
  14.   BoolSearchOperation *right;
  15.   /** place result here */
  16.   WordOccurencesT WordOccurences;
  17. public:
  18.   BoolSearchOperation( const WordDb &wdb ) : wordDb( wdb ), 
  19.     left( NULL ), right( NULL ) {}
  20.   virtual const WordOccurencesT &get_result() = 0;
  21.   /** priority level is */
  22.   int precedence() const;
  23.   static int precedence( SearchItem::type type );
  24.   virtual SearchItem::type get_type() const = 0;
  25.   BoolSearchOperation *create_by_childs_and_item
  26.   ( BoolSearchOperation *leftchild, BoolSearchOperation *rightchild,
  27.     const SearchItem &item ) const;
  28.   /** this call may be recursive */
  29.   static BoolSearchOperation *merge_search_items
  30.   ( BoolSearchOperation *head, BoolSearchOperation *right,
  31.     const SearchItem &item );
  32. };
  33. /** this class hold the result of search */
  34. class BoolSearchOperationResult : public BoolSearchOperation {
  35. public:
  36.   BoolSearchOperationResult( const WordDb &wdb, const WordOccurencesT &wo ) 
  37.     : BoolSearchOperation( wdb )
  38.     {
  39.       WordOccurences = wo;
  40.     }
  41.   virtual const WordOccurencesT &get_result() {
  42.     return WordOccurences;
  43.   }
  44.   virtual SearchItem::type get_type() const { return SearchItem::result; }
  45. };
  46. class BoolSearchOperationAnd : public BoolSearchOperation {
  47. public:
  48.   BoolSearchOperationAnd( const WordDb &wdb ) :
  49.     BoolSearchOperation( wdb ) {}
  50.   virtual const WordOccurencesT &get_result();
  51.   virtual SearchItem::type get_type() const { return SearchItem::and; }
  52. };
  53. class BoolSearchOperationAndNot : public BoolSearchOperation {
  54. public:
  55.   BoolSearchOperationAndNot( const WordDb &wdb ) :
  56.     BoolSearchOperation( wdb ) {}
  57.   virtual const WordOccurencesT &get_result();
  58.   virtual SearchItem::type get_type() const { return SearchItem::andnot; }
  59. };
  60. class BoolSearchOperationOr : public BoolSearchOperation {
  61. public:
  62.   BoolSearchOperationOr( const WordDb &wdb ) :
  63.     BoolSearchOperation( wdb ) {}
  64.   virtual const WordOccurencesT &get_result();
  65.   virtual SearchItem::type get_type() const { return SearchItem::or; }
  66. };
  67. #endif // _search_h_