Logo Search packages:      
Sourcecode: codeblocks version File versions  Download package

TextFileSearcher.h

/***************************************************************
 * Name:      TextFileSearcher
 * Purpose:   TextFileSearcher is an abstract class that is used
 *            to search text files.
 *            Derived classes allows text searches using text
 *            or regular expressions.
 * Author:    Jerome ANTOINE
 * Created:   2007-04-07
 * Copyright: Jerome ANTOINE
 * License:   GPL
 **************************************************************/

#ifndef TEXT_FILE_SEARCHER_H
#define TEXT_FILE_SEARCHER_H

#include <wx/string.h>
#include <wx/textfile.h>

class TextFileSearcher
{
public:
      enum eFileSearcherReturn
      {
            idStringFound=0,
            idStringNotFound,
            idFileNotFound,
            idFileOpenError
      };

      /** BuildTextFileSearcher
        * Builds a TextFileSearcherRegEx or a TextFileSearcherText pointer depending on regEx
        * @return TextFileSearcher* : NULL if failure (regular expression syntax for example)
        */
      // We don't use ThreadSearchFindData to limit coupling
      static TextFileSearcher* BuildTextFileSearcher(const wxString& searchText,
                                                                           bool matchCase,
                                                                           bool matchWordBegin,
                                                                           bool matchWord,
                                                                           bool regEx);


      /** Destructor. */
      virtual ~TextFileSearcher() {};

      /** Return true if line matches search text.
        * This method must be implemented in derived classes to allows using
        * different search strategies (at least simple text and regular expressions).
        * @param line : the text line to match.
        * @return true if line matches search text.
        */
      virtual bool MatchLine(wxString line) = 0;

      /** Return true if object is OK.
        * Exists to test validity of the object, mainly for reg ex syntax errors.
        * @param pErrorMessage : error message if object is not valid. May be NULL
        *                        if it is not necessary to get it.
        * @return true if object is Ok, ie usable.
        */
      virtual bool IsOk(wxString* pErrorMessage = NULL);

      /** Return true if Line matches search text.
        * This method must be implemented in derived classes to allows using
        * different search strategies (at least simple text and regular expressions use.
        * @param filePath : file path in which we look for m_SearchText
        * @param foundLines : array that stores a list of line number and line text
        * @return true if success (error can only come from bad reg ex or file open
        * failure).
        */
      eFileSearcherReturn FindInFile(const wxString& filePath, wxArrayString &foundLines);

protected:
      /** Constructor. */
      // We don't use ThreadSearchFindData to limit coupling
      TextFileSearcher(const wxString& searchText, bool matchCase, bool matchWordBegin, bool matchWord):
                               m_SearchText(searchText),
                               m_MatchCase(matchCase),
                               m_MatchWordBegin(matchWordBegin),
                               m_MatchWord(matchWord)
      {}

      wxString   m_SearchText;
      bool       m_MatchCase;
      bool       m_MatchWordBegin;
      bool       m_MatchWord;
      wxTextFile m_TextFile;
};

#endif // TEXT_FILE_SEARCHER_H

Generated by  Doxygen 1.6.0   Back to index