00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined (octave_regex_match_h)
00024 #define octave_regex_match_h 1
00025
00026 #include <string>
00027
00028 #if defined (HAVE_REGEX)
00029 #if defined (__MINGW32__)
00030 #define __restrict
00031 #endif
00032 #if defined (HAVE_SYS_TYPES_H)
00033 #include <sys/types.h>
00034 #endif
00035 #include <regex.h>
00036 #endif
00037
00038 #include "Array.h"
00039 #include "str-vec.h"
00040
00041 class
00042 OCTAVE_API
00043 regex_match
00044 {
00045 public:
00046
00047 regex_match (const std::string& p, bool insen = false)
00048 : pat (p), case_insen (insen) { init (); }
00049
00050 regex_match (const string_vector& p = string_vector (), bool insen = false)
00051 : pat (p), case_insen (insen) { init (); }
00052
00053 regex_match (const regex_match& gm)
00054 : pat (gm.pat), case_insen (gm.case_insen) { init (); }
00055
00056 regex_match& operator = (const regex_match& gm);
00057
00058 ~regex_match (void);
00059
00060 void set_pattern (const std::string& p);
00061
00062 void set_pattern (const string_vector& p);
00063
00064 bool match (const std::string&);
00065
00066 Array<bool> match (const string_vector&);
00067
00068 private:
00069
00070 void init (void);
00071
00072
00073 string_vector pat;
00074
00075
00076 bool case_insen;
00077
00078 #if HAVE_REGEX
00079 regex_t *compiled;
00080 #endif
00081
00082 };
00083
00084 #endif
00085
00086
00087
00088
00089
00090