/* tag: Tom Lord Tue Dec 4 14:41:43 2001 (re.h)
*/
/* re.h -
*
****************************************************************
* Copyright (C) 2000 Tom Lord
*
* See the file "COPYING" for further information about
* the copyright and warranty status of this work.
*/
#ifndef INCLUDE__RX_UNICODE__RE_H
#define INCLUDE__RX_UNICODE__RE_H
#include "hackerlab/unicode/unicode.h"
#include "hackerlab/rx/tree.h"
#include "hackerlab/rx/nfa.h"
enum rx_xml_syntax_options
{
rx_xml_syntax_xml = 0,
rx_xml_syntax_unicode_escapes = 1,
rx_xml_syntax_consistent_metacharacters = 2,
rx_xml_syntax_dot_dot_ranges = 4,
rx_xml_syntax_carrot_set_difference = 8,
rx_xml_syntax_add_branch = 16,
rx_xml_syntax_no_newlines = 32,
rx_xml_syntax_no_cr = 64,
rx_xml_syntax_no_linesep = 128,
rx_xml_syntax_dot_star_prefix = 256,
};
#define rx_xml_syntax_unigrep ( rx_xml_syntax_unicode_escapes \
| rx_xml_syntax_consistent_metacharacters \
| rx_xml_syntax_dot_dot_ranges \
| rx_xml_syntax_carrot_set_difference)
enum rx_xml_recomp_errno
{
rx_xml_recomp_OK,
rx_xml_recomp_OUT_OF_MEMORY,
rx_xml_recomp_BAD_DUPLICATION_RANGE,
rx_xml_recomp_GARBAGE_AFTER_REGEXP,
rx_xml_recomp_MISSING_RPAREN,
rx_xml_recomp_BOGUS_CHAR,
rx_xml_recomp_MISSING_COMMA,
rx_xml_recomp_MISSING_BRACE,
rx_xml_recomp_BOGUS_CATEGORY_ESCAPE,
rx_xml_recomp_BOGUS_CHARACTER_CLASS,
};
struct rx_xml_rebuf
{
struct rx_exp_node * exp;
struct rx_unfa * nfa;
};
typedef struct rx_xml_rebuf rx_xml_rebuf;
enum rx_xml_rematch_errno
{
rx_xml_rematch_OK,
rx_xml_rematch_BAD_ENCODING,
rx_xml_rematch_ILLEGAL_STR,
rx_xml_rematch_OUT_OF_MEMORY,
};
enum rx_xml_longest_status
{
rx_xml_longest_error,
rx_xml_longest_out_of_input_match,
rx_xml_longest_out_of_input_nomatch,
rx_xml_longest_found,
rx_xml_longest_nomatch,
};
enum rx_xml_prefix_status
{
rx_xml_prefix_error,
rx_xml_prefix_out_of_input,
rx_xml_prefix_found,
rx_xml_prefix_nomatch,
};
/* automatically generated __STDC__ prototypes */
extern enum rx_xml_recomp_errno rx_xml_recomp (rx_xml_rebuf * re,
enum uni_encoding_scheme encoding,
uni_string source,
size_t length);
extern enum rx_xml_recomp_errno rx_xml_recomp_branch (rx_xml_rebuf * re,
enum uni_encoding_scheme encoding,
uni_string source,
size_t length);
extern enum rx_xml_recomp_errno rx_xml_recomp_opts (rx_xml_rebuf * re,
enum uni_encoding_scheme encoding,
uni_string src,
size_t len,
t_ulong syntax_options,
bits cset);
extern void rx_xml_free_re (rx_xml_rebuf * re);
extern int rx_xml_is_match (enum rx_xml_rematch_errno * errn,
rx_xml_rebuf * re,
enum uni_encoding_scheme encoding,
uni_string string,
size_t length);
extern enum rx_xml_longest_status rx_xml_longest_match (enum rx_xml_rematch_errno * errn,
size_t * match_len,
rx_xml_rebuf * re,
enum uni_encoding_scheme encoding,
uni_string string,
size_t length);
extern enum rx_xml_prefix_status rx_xml_prefix_match (enum rx_xml_rematch_errno * errn,
rx_xml_rebuf * re,
enum uni_encoding_scheme encoding,
uni_string string,
size_t length);
#endif /* INCLUDE__RX_UNICODE__RE_H */
syntax highlighted by Code2HTML, v. 0.9.1