/* * Ivy, C interface * * Copyright (C) 1997-2006 * Centre d'Études de la Navigation Aérienne * * Bind syntax for extracting message comtent * using regexp or other * * Authors: François-Régis Colin * * $Id: ivybind.h,v 1.5.2.3 2006/04/21 15:51:55 fcolin Exp $ * * Please refer to file version.h for the * copyright notice regarding this software */ /* Module de gestion de la syntaxe des messages Ivy */ #pragma once #define USE_PCRE #ifdef USE_PCRE #include #else /* we don't USE_PCRE */ #define MAX_MSG_FIELDS 200 #include "Regexp.h" #endif /* USE_PCRE */ class IvyBinding { public: /* Creation, Compilation */ IvyBinding(); ~IvyBinding(); /* Mise en place des Filtrages */ static void SetFilter( int argc, const char ** argv ); static int Filter( const char *expression ); /* Creation, Compilation */ bool Compile( const char *expression, int *erroffset, const char **errmessage ); /* Execution , extraction */ int Exec( const char * message ); void Match( const char *message, int argnum, int *arglen, const char **arg ); const char* getExpression(); private: /* Expression en clair */ std::string expression_string; #ifdef USE_PCRE pcre *regexp; pcre_extra *inspect; int ovectorsize; int* ovector; #else /* we don't USE_PCRE */ Regexp *regexp; /* la regexp sous forme machine */ //regmatch_t match[MAX_MSG_FIELDS+1]; /* resultat du match */ #endif /* USE_PCRE */ int nb_match; };