From b654ecae9031bb844102021bf0dc2277d37735ef Mon Sep 17 00:00:00 2001 From: fcolin Date: Thu, 1 Feb 2007 13:01:09 +0000 Subject: Utilisateur : Fcolin Date : 1/06/06 Heure : 15:54 Créé Commentaire: Separation module de traitement regexp (vss 1) --- Bus/Ivy/IvyBinding.h | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Bus/Ivy/IvyBinding.h (limited to 'Bus/Ivy/IvyBinding.h') diff --git a/Bus/Ivy/IvyBinding.h b/Bus/Ivy/IvyBinding.h new file mode 100644 index 0000000..44a87ee --- /dev/null +++ b/Bus/Ivy/IvyBinding.h @@ -0,0 +1,58 @@ +/* + * 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 */ + +}; \ No newline at end of file -- cgit v1.1