Menu

Commit [r2596]  Maximize  Restore  History

Collapsed all TSearch derived classes into single TSearch class, which was made final.

Changed TSearchFactory accordingly.

delphidabbler 2012-12-17

changed /trunk/Src/USearch.pas
/trunk/Src/USearch.pas Diff Switch to side-by-side view
--- a/trunk/Src/USearch.pas
+++ b/trunk/Src/USearch.pas
@@ -358,8 +358,10 @@
     indicate whether a given snippet matches a search by overriding the Match
     method.
   }
-  TSearch = class abstract(TInterfacedObject)
-    function GetCriteria: ISearchCriteria; virtual; abstract;
+  TSearch = class sealed(TInterfacedObject, ISearch)
+  strict private
+    var
+      fCriteria: ISearchCriteria;
   protected
     { ISearch methods }
     function Execute(const InList, FoundList: TSnippetList): Boolean;
@@ -369,135 +371,9 @@
         @param FoundList [in] List of snippets that match the search criteria.
         @return True if some snippets were found or false if search failed.
       }
-  end;
-
-  {
-  TCompilerSearch:
-    Class that finds snippets depending on how they compile with specified
-    compilers.
-  }
-  TCompilerSearch = class(TSearch, ISearch)
-  strict private
-    fCriteria: ICompilerSearchCriteria;
-      {Search criteria}
-  protected
-    { ISearch methods not defined in base class }
-    function GetCriteria: ISearchCriteria; override;
-      {Read accessor for Criteria property.
-        @return Criteria to be applied to search.
-      }
+    function GetCriteria: ISearchCriteria;
   public
-    constructor Create(const Criteria: ICompilerSearchCriteria);
-      {Class constructor. Sets up compiler search.
-        @param Critera [in] Criteria for this search.
-      }
-  end;
-
-  {
-  TTextSearch:
-    Class that finds snippets that match specified text.
-  }
-  TTextSearch = class(TSearch, ISearch)
-  strict private
-    fCriteria: ITextSearchCriteria;
-      {Search criteria}
-  protected
-    { ISearch methods not defined in base class }
-    function GetCriteria: ISearchCriteria; override;
-      {Read accessor for Criteria property.
-        @return Criteria to be applied to search.
-      }
-  public
-    constructor Create(const Criteria: ITextSearchCriteria);
-      {Class constructor. Sets up text search.
-        @param Critera [in] Criteria for this search.
-      }
-  end;
-
-  {
-  TSelectionSearch:
-    Class that selects snippets specified in a list.
-  }
-  TSelectionSearch = class(TSearch, ISearch)
-  strict private
-    fCriteria: ISelectionSearchCriteria;
-      {Search criteria}
-  protected
-    { ISearch methods not defined in base class }
-    function GetCriteria: ISearchCriteria; override;
-      {Read accessor for Criteria property.
-        @return Criteria to be applied to search.
-      }
-  public
-    constructor Create(const Criteria: ISelectionSearchCriteria);
-      {Class constructor. Sets up selection search.
-        @param Critera [in] Criteria for this search.
-      }
-  end;
-
-  TStoredSelectionSearch = class(TSearch, ISearch)
-  strict private
-    fCriteria: IStoredSelectionSearchCriteria;
-      {Search criteria}
-  protected
-    { ISearch methods not defined in base class }
-    function GetCriteria: ISearchCriteria; override;
-      {Read accessor for Criteria property.
-        @return Criteria to be applied to search.
-      }
-  public
-    constructor Create(const Criteria: IStoredSelectionSearchCriteria);
-      {Class constructor. Sets up selection search.
-        @param Critera [in] Criteria for this search.
-      }
-  end;
-
-  {
-  TXRefSearch:
-    Class that searches for snippets cross-referenced by a specified snippet.
-  }
-  TXRefSearch = class(TSearch, ISearch)
-  strict private
-    fCriteria: IXRefSearchCriteria;
-      {Search criteria}
-  protected
-    { ISearch methods not defined in base class }
-    function GetCriteria: ISearchCriteria; override;
-      {Read accessor for Criteria property.
-        @return Criteria to be applied to search.
-      }
-  public
-    constructor Create(const Criteria: IXRefSearchCriteria);
-      {Class constructor. Sets up cross-reference search.
-        @param Critera [in] Criteria for this search.
-      }
-  end;
-
-  {
-  TNulSearch:
-    Class that finds all snippets - a nul search.
-  }
-  TNulSearch = class(TInterfacedObject, ISearch)
-  strict private
-    fCriteria: ISearchCriteria;
-      {Search criteria}
-  protected
-    { ISearch methods }
-    function GetCriteria: ISearchCriteria;
-      {Read accessor for Criteria property.
-        @return Criteria to be applied to search.
-      }
-    function Execute(const InList, FoundList: TSnippetList): Boolean;
-      {Executes the search, determining which of a list of snippets match the
-      search criteria.
-        @param InList [in] List of snippets that the search is applied to.
-        @param FoundList [in] List of snippets that match the search criteria.
-        @return True if some snippets were found or false if search failed.
-      }
-  public
-    constructor Create;
-      {Class constructor. Sets up nul search.
-      }
+    constructor Create(const Criteria: ISearchCriteria);
   end;
 
   {
@@ -758,6 +634,13 @@
 
 { TSearch }
 
+constructor TSearch.Create(const Criteria: ISearchCriteria);
+begin
+  Assert(Assigned(Criteria), ClassName + '.Create: Criteria is nil');
+  inherited Create;
+  fCriteria := Criteria;
+end;
+
 function TSearch.Execute(const InList, FoundList: TSnippetList): Boolean;
   {Executes the search, determining which of a list of snippets match the search
   criteria.
@@ -779,101 +662,7 @@
   Result := FoundList.Count > 0;
 end;
 
-{ TCompilerSearch }
-
-constructor TCompilerSearch.Create(const Criteria: ICompilerSearchCriteria);
-  {Class constructor. Sets up compiler search.
-    @param Critera [in] Criteria for this search.
-  }
-begin
-  Assert(Assigned(Criteria), ClassName + '.Create: Criteria is nil');
-  inherited Create;
-  // Record search criteria
-  fCriteria := Criteria;
-end;
-
-function TCompilerSearch.GetCriteria: ISearchCriteria;
-  {Read accessor for Criteria property.
-    @return Criteria to be applied to search.
-  }
-begin
-  Result := fCriteria;
-end;
-
-{ TTextSearch }
-
-constructor TTextSearch.Create(const Criteria: ITextSearchCriteria);
-  {Class constructor. Sets up text search.
-    @param Critera [in] Criteria for this search.
-  }
-begin
-  Assert(Assigned(Criteria), ClassName + '.Create: Criteria is nil');
-  inherited Create;
-  // Record search criteria
-  fCriteria := Criteria;
-end;
-
-function TTextSearch.GetCriteria: ISearchCriteria;
-  {Read accessor for Criteria property.
-    @return Criteria to be applied to search.
-  }
-begin
-  Result := fCriteria;
-end;
-
-{ TSelectionSearch }
-
-constructor TSelectionSearch.Create(const Criteria: ISelectionSearchCriteria);
-  {Class constructor. Sets up selection search.
-    @param Critera [in] Criteria for this search.
-  }
-begin
-  Assert(Assigned(Criteria), ClassName + '.Create: Criteria is nil');
-  inherited Create;
-  // Record search criteria
-  fCriteria := Criteria;
-end;
-
-function TSelectionSearch.GetCriteria: ISearchCriteria;
-  {Read accessor for Criteria property.
-    @return Criteria to be applied to search.
-  }
-begin
-  Result := fCriteria;
-end;
-
-{ TStoredSelectionSearch }
-
-constructor TStoredSelectionSearch.Create(
-  const Criteria: IStoredSelectionSearchCriteria);
-begin
-  Assert(Assigned(Criteria), ClassName + '.Create: Criteria is nil');
-  inherited Create;
-  fCriteria := Criteria;
-end;
-
-function TStoredSelectionSearch.GetCriteria: ISearchCriteria;
-begin
-  Result := fCriteria;
-end;
-
-{ TXRefSearch }
-
-constructor TXRefSearch.Create(const Criteria: IXRefSearchCriteria);
-  {Class constructor. Sets up cross-reference search.
-    @param Critera [in] Criteria for this search.
-  }
-begin
-  Assert(Assigned(Criteria), ClassName + '.Create: Criteria is nil');
-  inherited Create;
-  // Record search criteria
-  fCriteria := Criteria;
-end;
-
-function TXRefSearch.GetCriteria: ISearchCriteria;
-  {Read accessor for Criteria property.
-    @return Criteria to be applied to search.
-  }
+function TSearch.GetCriteria: ISearchCriteria;
 begin
   Result := fCriteria;
 end;
@@ -900,42 +689,6 @@
     fBitmap.LoadFromResourceName(HInstance, GlyphResourceName);
   end;
   Result := fBitmap;
-end;
-
-{ TNulSearch }
-
-constructor TNulSearch.Create;
-  {Class constructor. Sets up nul search.
-  }
-begin
-  inherited Create;
-  // Create nul search criteria object
-  fCriteria := TNulSearchCriteria.Create;
-end;
-
-function TNulSearch.Execute(const InList, FoundList: TSnippetList): Boolean;
-  {Executes the search, determining which of a list of snippets match the
-  search criteria.
-    @param InList [in] List of snippets that the search is applied to.
-    @param FoundList [in] List of snippets that match the search criteria.
-    @return True if some snippets were found or false if search failed.
-  }
-begin
-  Assert(Assigned(InList), ClassName + '.Execute: InList is nil');
-  Assert(Assigned(FoundList), ClassName + '.Execute: FoundList is nil');
-  Assert(InList <> FoundList, ClassName + '.Execute: InList = FoundList');
-  // Nul search finds all items: simply copy source list to found list
-  FoundList.Assign(InList);
-  // Return true unless there are no snippets in original
-  Result := InList.Count > 0;
-end;
-
-function TNulSearch.GetCriteria: ISearchCriteria;
-  {Read accessor for Criteria property.
-    @return Criteria to be applied to search.
-  }
-begin
-  Result := fCriteria;
 end;
 
 { TCompilerSearchCriteria }
@@ -1444,7 +1197,7 @@
     @return ISearch interface to compiler search object instance.
   }
 begin
-  Result := TCompilerSearch.Create(Criteria);
+  Result := TSearch.Create(Criteria);
 end;
 
 class function TSearchFactory.CreateNulSearch: ISearch;
@@ -1452,7 +1205,7 @@
     @return ISearch interface to nul search object instance.
   }
 begin
-  Result := TNulSearch.Create;
+  Result := TSearch.Create(TNulSearchCriteria.Create);
 end;
 
 class function TSearchFactory.CreateSelectionSearch(
@@ -1462,13 +1215,13 @@
     @return ISearch interface to selection search object instance.
   }
 begin
-  Result := TSelectionSearch.Create(Criteria);
+  Result := TSearch.Create(Criteria);
 end;
 
 class function TSearchFactory.CreateStoredSelectionSearch(
   const Criteria: IStoredSelectionSearchCriteria): ISearch;
 begin
-  Result := TStoredSelectionSearch.Create(Criteria);
+  Result := TSearch.Create(Criteria);
 end;
 
 class function TSearchFactory.CreateTextSearch(
@@ -1478,7 +1231,7 @@
     @return ISearch interface to text search object instance.
   }
 begin
-  Result := TTextSearch.Create(Criteria);
+  Result := TSearch.Create(Criteria);
 end;
 
 class function TSearchFactory.CreateXRefSearch(
@@ -1488,7 +1241,7 @@
     @return ISearch interface to cross-reference search object instance.
   }
 begin
-  Result := TXRefSearch.Create(Criteria);
+  Result := TSearch.Create(Criteria);
 end;
 
 { TSearchCriteriaFactory }
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.