/*************************************************************************** * tdeio-locate: KDE I/O Slave for the locate command * * * * Copyright (C) 2005 by Tobi Vollebregt * * tobivollebregt@gmail.com * * * * Thanks to Google's Summer Of Code Program! * * * * Copyright (C) 2004 by Armin Straub * * linux@arminstraub.de * * * * This program was initially written by Michael Schuerig. * * Although I have completely rewritten it, most ideas are adopted * * from his original work. * * * * Copyright (C) 2002 by Michael Schuerig * * michael@schuerig.de * * * * * * This program 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. * ***************************************************************************/ #include #include "pattern.h" LocateRegExp::LocateRegExp(const TQString& pattern, bool ignoreCase) { m_ignoreCase = ignoreCase; setPattern(pattern); } LocateRegExp::LocateRegExp() { } LocateRegExp::~LocateRegExp() { } bool LocateRegExp::isMatching(const TQString& file) const { bool matching = m_regExp.search(file) >= 0; if (m_negated) { matching = !matching; } return matching; } int LocateRegExp::getMatchPosition() const { // Why is TQRegExp::pos() non const? return const_cast(this)->m_regExp.pos(); } int LocateRegExp::getMatchedLength() const { return m_regExp.matchedLength(); } void LocateRegExp::setPattern(const TQString& pattern) { m_negated = false; m_pattern = pattern; if ((m_pattern.length() > 0) && (m_pattern[0] == '!')) { m_negated = true; m_pattern = m_pattern.mid(1, m_pattern.length()-1); } m_regExp = TQRegExp(m_pattern, !m_ignoreCase); } TQString LocateRegExp::getPattern() const { return m_pattern; } LocateRegExpList::~LocateRegExpList() { } LocateRegExpList& LocateRegExpList::operator = (const TQStringList& list) { clear(); TQStringList::ConstIterator it = list.begin(); for (; it != list.end(); ++it) { append(LocateRegExp((*it), (*it) == (*it).lower())); } return *this; } bool LocateRegExpList::isMatchingOne(const TQString& file) const { bool matches = false; LocateRegExpList::ConstIterator it = begin(); for (; !matches && (it != end()); ++it) { matches = (*it).isMatching(file); } return matches; } bool LocateRegExpList::isMatchingAll(const TQString& file) const { bool matches = true; LocateRegExpList::ConstIterator it = begin(); for (; matches && (it != end()); ++it) { matches = (*it).isMatching(file); } return matches; }