typedef enum {
    TOKEN_STRING,
    TOKEN_RE,
    TOKEN_AND,
} token_type_t;
} token_t;
} backref_t;

... all lack namespace-safety.

as do:

typedef const char *(*string_func_t)(request_rec*, const char*);
typedef int (*opt_func_t)(request_rec*, ap_parse_node_t*, string_func_t);

which are also undocumented and lacking parameter names.  What should 
such callbacks do/return?

AP_DECLARE(ap_parse_node_t*) ap_expr_parse(apr_pool_t *pool, const char *expr,
                                           int *was_error);

the "was_error" parameter seems to be redundant with the function 
returning NULL to indicate error?

The grammar of the expression being parsed is undocumented.  (well, I 
could guess that it might happen to match the grammar documented in the 
mod_include docs, but could everybody guess that?)

The purpose of the the *_func_t callbacks is pretty unclear without 
reference to the grammar.

The naming of the "TOKEN_ACCESS" constant seems to be a throwback to the 
use of this API in mod_include?

AP_DECLARE(apr_status_t) ap_expr_init(apr_pool_t *pool);

this is a purely internal interface so needn't be exposed to modules 
AFAICT.

Regards, Joe

Reply via email to