projects
/
apps
/
pfixtools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implements filter runner.
[apps/pfixtools.git]
/
postlicyd
/
filter.h
diff --git
a/postlicyd/filter.h
b/postlicyd/filter.h
index
986e6cf
..
8a1aacb
100644
(file)
--- a/
postlicyd/filter.h
+++ b/
postlicyd/filter.h
@@
-39,11
+39,13
@@
#include "common.h"
#include "filter_tokens.h"
#include "hook_tokens.h"
#include "common.h"
#include "filter_tokens.h"
#include "hook_tokens.h"
+#include "param_tokens.h"
#include "query.h"
#include "array.h"
typedef filter_token filter_type_t;
typedef hook_token filter_result_t;
#include "query.h"
#include "array.h"
typedef filter_token filter_type_t;
typedef hook_token filter_result_t;
+typedef param_token filter_param_id_t;
typedef struct filter_hook_t {
filter_result_t type;
typedef struct filter_hook_t {
filter_result_t type;
@@
-54,11
+56,11
@@
typedef struct filter_hook_t {
} filter_hook_t;
ARRAY(filter_hook_t)
} filter_hook_t;
ARRAY(filter_hook_t)
-typedef struct filter_param
s
_t {
-
char *nam
e;
+typedef struct filter_param_t {
+
filter_param_id_t typ
e;
char *value;
char *value;
-} filter_param
s
_t;
-ARRAY(filter_param
s
_t)
+} filter_param_t;
+ARRAY(filter_param_t)
typedef struct filter_t {
char *name;
typedef struct filter_t {
char *name;
@@
-67,7
+69,7
@@
typedef struct filter_t {
A(filter_hook_t) hooks;
void *data;
A(filter_hook_t) hooks;
void *data;
- A(filter_param
s
_t) params;
+ A(filter_param_t) params;
} filter_t;
ARRAY(filter_t)
} filter_t;
ARRAY(filter_t)
@@
-78,6
+80,9
@@
ARRAY(filter_t)
#define CHECK_HOOK(Hook) \
assert(Hook != HTK_UNKNOWN && Hook != HTK_count \
&& "Unknown hook")
#define CHECK_HOOK(Hook) \
assert(Hook != HTK_UNKNOWN && Hook != HTK_count \
&& "Unknown hook")
+#define CHECK_PARAM(Param) \
+ assert(Param != ATK_UNKNOWN && Param != ATK_count \
+ && "Unknown param")
typedef filter_result_t (*filter_runner_t)(const filter_t *filter,
const query_t *query);
typedef filter_result_t (*filter_runner_t)(const filter_t *filter,
const query_t *query);
@@
-91,6
+96,9
@@
filter_type_t filter_register(const char *type, filter_constructor_t constructor
__attribute__((nonnull(2)))
filter_result_t filter_hook_register(filter_type_t filter, const char *name);
__attribute__((nonnull(2)))
filter_result_t filter_hook_register(filter_type_t filter, const char *name);
+__attribute__((nonnull(2)))
+filter_param_id_t filter_param_register(filter_type_t filter, const char *name);
+
__attribute__((nonnull(1)))
static inline void filter_init(filter_t *filter)
{
__attribute__((nonnull(1)))
static inline void filter_init(filter_t *filter)
{
@@
-146,9
+154,8
@@
static inline void filter_hook_wipe(filter_hook_t *hook)
}
__attribute__((nonnull(1)))
}
__attribute__((nonnull(1)))
-static inline void filter_params_wipe(filter_param
s
_t *param)
+static inline void filter_params_wipe(filter_param_t *param)
{
{
- p_delete(¶m->name);
p_delete(¶m->value);
}
p_delete(¶m->value);
}
@@
-156,7
+163,7
@@
__attribute__((nonnull(1)))
void filter_wipe(filter_t *filter);
__attribute__((nonnull(1,2)))
void filter_wipe(filter_t *filter);
__attribute__((nonnull(1,2)))
-filter_
result_t
filter_run(const filter_t *filter, const query_t *query);
+filter_
hook_t *
filter_run(const filter_t *filter, const query_t *query);
#endif
#endif