version 1.10, 2000/04/03 18:45:48
|
version 1.11, 2000/04/24 11:31:56
|
Line 21
|
Line 21
|
#include <libxml/xmlmemory.h> |
#include <libxml/xmlmemory.h> |
#include <libxml/uri.h> |
#include <libxml/uri.h> |
|
|
/** |
/* |
* alpha = lowalpha | upalpha |
* alpha = lowalpha | upalpha |
*/ |
*/ |
#define IS_ALPHA(x) (IS_LOWALPHA(x) || IS_UPALPHA(x)) |
#define IS_ALPHA(x) (IS_LOWALPHA(x) || IS_UPALPHA(x)) |
|
|
|
|
/** |
/* |
* lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | |
* lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | |
* "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | |
* "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | |
* "u" | "v" | "w" | "x" | "y" | "z" |
* "u" | "v" | "w" | "x" | "y" | "z" |
Line 35
|
Line 35
|
|
|
#define IS_LOWALPHA(x) (((x) >= 'a') && ((x) <= 'z')) |
#define IS_LOWALPHA(x) (((x) >= 'a') && ((x) <= 'z')) |
|
|
/** |
/* |
* upalpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | |
* upalpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | |
* "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | |
* "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | |
* "U" | "V" | "W" | "X" | "Y" | "Z" |
* "U" | "V" | "W" | "X" | "Y" | "Z" |
*/ |
*/ |
#define IS_UPALPHA(x) (((x) >= 'A') && ((x) <= 'Z')) |
#define IS_UPALPHA(x) (((x) >= 'A') && ((x) <= 'Z')) |
|
|
/** |
/* |
* digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
* digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" |
*/ |
*/ |
|
|
#define IS_DIGIT(x) (((x) >= '0') && ((x) <= '9')) |
#define IS_DIGIT(x) (((x) >= '0') && ((x) <= '9')) |
|
|
/** |
/* |
* alphanum = alpha | digit |
* alphanum = alpha | digit |
*/ |
*/ |
|
|
#define IS_ALPHANUM(x) (IS_ALPHA(x) || IS_DIGIT(x)) |
#define IS_ALPHANUM(x) (IS_ALPHA(x) || IS_DIGIT(x)) |
|
|
/** |
/* |
* he(x) = digit | "A" | "B" | "C" | "D" | "E" | "F" | |
* hex = digit | "A" | "B" | "C" | "D" | "E" | "F" | |
* "a" | "b" | "c" | "d" | "e" | "f" |
* "a" | "b" | "c" | "d" | "e" | "f" |
*/ |
*/ |
|
|
#define IS_HEX(x) ((IS_DIGIT(x)) || (((x) >= 'a') && ((x) <= 'f')) || \ |
#define IS_HEX(x) ((IS_DIGIT(x)) || (((x) >= 'a') && ((x) <= 'f')) || \ |
(((x) >= 'A') && ((x) <= 'F'))) |
(((x) >= 'A') && ((x) <= 'F'))) |
|
|
/** |
/* |
* mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" |
* mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" |
*/ |
*/ |
|
|
Line 71
|
Line 71
|
((x) == '(') || ((x) == ')')) |
((x) == '(') || ((x) == ')')) |
|
|
|
|
/** |
/* |
* reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," |
* reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," |
*/ |
*/ |
|
|
Line 79
|
Line 79
|
((x) == ':') || ((x) == '@') || ((x) == '&') || ((x) == '=') || \ |
((x) == ':') || ((x) == '@') || ((x) == '&') || ((x) == '=') || \ |
((x) == '+') || ((x) == '$') || ((x) == ',')) |
((x) == '+') || ((x) == '$') || ((x) == ',')) |
|
|
/** |
/* |
* unreserved = alphanum | mark |
* unreserved = alphanum | mark |
*/ |
*/ |
|
|
#define IS_UNRESERVED(x) (IS_ALPHANUM(x) || IS_MARK(x)) |
#define IS_UNRESERVED(x) (IS_ALPHANUM(x) || IS_MARK(x)) |
|
|
/** |
/* |
* escaped = "%" hex hex |
* escaped = "%" hex hex |
*/ |
*/ |
|
|
#define IS_ESCAPED(p) ((*(p) == '%') && (IS_HEX((p)[1])) && \ |
#define IS_ESCAPED(p) ((*(p) == '%') && (IS_HEX((p)[1])) && \ |
(IS_HEX((p)[2]))) |
(IS_HEX((p)[2]))) |
|
|
/** |
/* |
* uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" | |
* uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" | |
* "&" | "=" | "+" | "$" | "," |
* "&" | "=" | "+" | "$" | "," |
*/ |
*/ |
Line 101
|
Line 101
|
((*(p) == '@')) || ((*(p) == '&')) || ((*(p) == '=')) ||\ |
((*(p) == '@')) || ((*(p) == '&')) || ((*(p) == '=')) ||\ |
((*(p) == '+')) || ((*(p) == '$')) || ((*(p) == ','))) |
((*(p) == '+')) || ((*(p) == '$')) || ((*(p) == ','))) |
|
|
/** |
/* |
* pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | "," |
* pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | "," |
*/ |
*/ |
#define IS_PCHAR(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ |
#define IS_PCHAR(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ |
Line 109
|
Line 109
|
((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) ||\ |
((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) ||\ |
((*(p) == ','))) |
((*(p) == ','))) |
|
|
/** |
/* |
* rel_segment = 1*( unreserved | escaped | |
* rel_segment = 1*( unreserved | escaped | |
* ";" | "@" | "&" | "=" | "+" | "$" | "," ) |
* ";" | "@" | "&" | "=" | "+" | "$" | "," ) |
*/ |
*/ |
Line 119
|
Line 119
|
((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || \ |
((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || \ |
((*(p) == ','))) |
((*(p) == ','))) |
|
|
/** |
/* |
* scheme = alpha *( alpha | digit | "+" | "-" | "." ) |
* scheme = alpha *( alpha | digit | "+" | "-" | "." ) |
*/ |
*/ |
|
|
#define IS_SCHEME(x) ((IS_ALPHA(x)) || (IS_DIGIT(x)) || \ |
#define IS_SCHEME(x) ((IS_ALPHA(x)) || (IS_DIGIT(x)) || \ |
((x) == '+') || ((x) == '-') || ((x) == '.')) |
((x) == '+') || ((x) == '-') || ((x) == '.')) |
|
|
/** |
/* |
* reg_name = 1*( unreserved | escaped | "$" | "," | |
* reg_name = 1*( unreserved | escaped | "$" | "," | |
* ";" | ":" | "@" | "&" | "=" | "+" ) |
* ";" | ":" | "@" | "&" | "=" | "+" ) |
*/ |
*/ |
Line 136
|
Line 136
|
((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) || \ |
((*(p) == ':')) || ((*(p) == '@')) || ((*(p) == '&')) || \ |
((*(p) == '=')) || ((*(p) == '+'))) |
((*(p) == '=')) || ((*(p) == '+'))) |
|
|
/** |
/* |
* userinfo = *( unreserved | escaped | ";" | ":" | "&" | "=" | |
* userinfo = *( unreserved | escaped | ";" | ":" | "&" | "=" | |
* "+" | "$" | "," ) |
* "+" | "$" | "," ) |
*/ |
*/ |
Line 145
|
Line 145
|
((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || \ |
((*(p) == '=')) || ((*(p) == '+')) || ((*(p) == '$')) || \ |
((*(p) == ','))) |
((*(p) == ','))) |
|
|
/** |
/* |
* uric = reserved | unreserved | escaped |
* uric = reserved | unreserved | escaped |
*/ |
*/ |
|
|
#define IS_URIC(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ |
#define IS_URIC(p) ((IS_UNRESERVED(*(p))) || (IS_ESCAPED(p)) || \ |
(IS_RESERVED(*(p)))) |
(IS_RESERVED(*(p)))) |
|
|
/** |
/* |
* Skip to next pointer char, handle escaped sequences |
* Skip to next pointer char, handle escaped sequences |
*/ |
*/ |
|
|
#define NEXT(p) ((*p == '%')? p += 3 : p++) |
#define NEXT(p) ((*p == '%')? p += 3 : p++) |
|
|
/** |
/* |
* Productions from the spec. |
* Productions from the spec. |
* |
* |
* authority = server | reg_name |
* authority = server | reg_name |