/* * 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 #define OVECSIZE 60 /* must be multiple of 3, for regexp return */ #include #else /* we don't USE_PCRE */ #define MAX_MSG_FIELDS 200 #include "Regex.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 ); private: #ifdef USE_PCRE pcre *regexp; pcre_extra *inspect; int nb_match; int ovector[OVECSIZE]; #else /* we don't USE_PCRE */ regex_t regexp; /* la regexp sous forme machine */ regmatch_t match[MAX_MSG_FIELDS+1]; /* resultat du match */ #endif /* USE_PCRE */ };