* Copyright (c) 1998-2007 Matthijs Hollemans
* All rights reserved. Distributed under the terms of the MIT License.
*/
#ifndef GREPPER_H
#define GREPPER_H
#include <Messenger.h>
class FileIterator;
class Model;
class Grepper {
public:
Grepper(const char* pattern, const char* glob, const Model* model,
const BHandler* target,
FileIterator* iterator);
virtual ~Grepper();
bool IsValid() const;
void Start();
void Cancel();
private:
static int32 _SpawnRunnerThread(void* cookie);
static int32 _SpawnWriterThread(void* cookie);
int32 _RunnerThread();
int32 _WriterThread();
void _SetPattern(const char* source);
bool _EscapeSpecialChars(char* buffer,
ssize_t bufferSize);
private:
char* fPattern;
char* fGlob;
BMessenger fTarget;
bool fRegularExpression : 1;
bool fCaseSensitive : 1;
uint32 fEncoding;
FileIterator* fIterator;
thread_id fRunnerThreadId;
int fXargsInput;
volatile bool fMustQuit;
};
#endif