/*! ** Notice: Gubby Copyright 2003 Christian Stigen Larsen ** Author: ** ** $Id: grep.h,v 1.7 2003/03/14 13:58:55 cslsublevel3org Exp $ ** ** This file is part of Gubby. ** ** Gubby is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** Gubby 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 General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with Gubby; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ** */ #if !defined(INC_GREP_H) #define INC_GREP_H #include #include #include //! Finds lines _beginning_ with string needle. Calls virtual found() for each matching line. class grep { std::vector trig; //! Can be overridden to make own matching routines (e.g. regex) virtual bool ismatch(const char* needle, const char* haystack) const; public: virtual ~grep() { } virtual void found(const std::string& line, const int triggerno) = 0; void find(std::ifstream& haystack); inline void addtrigger(const std::string& trigger) { trig.push_back(trigger); } inline const std::string& gettrigger(const int n) const { return trig[n]; } }; #endif