## idmef-criteria idmef-criteria — |

## Synopsis

    enum        idmef_criterion_operator_t;
    typedef     idmef_criteria_t;
    typedef     idmef_criterion_t;
    const char* idmef_criterion_operator_to_string
                                                (idmef_criterion_operator_t op);
    int         idmef_criterion_new             (idmef_criterion_t **criterion,
                                                 idmef_path_t *path,
                                                 idmef_criterion_value_t *value,
                                                 idmef_criterion_operator_t op);
    void        idmef_criterion_destroy         (idmef_criterion_t *criterion);
    int         idmef_criterion_clone           (idmef_criterion_t *criterion,
                                                 idmef_criterion_t **dst);
    int         idmef_criterion_print           (const idmef_criterion_t *criterion,
                                                 prelude_io_t *fd);
    int         idmef_criterion_to_string       (const idmef_criterion_t *criterion,
                                                 prelude_string_t *out);
    idmef_path_t* idmef_criterion_get_path      (idmef_criterion_t *criterion);
    idmef_criterion_value_t* idmef_criterion_get_value
                                                (idmef_criterion_t *criterion);
    idmef_criterion_operator_t idmef_criterion_get_operator
                                                (idmef_criterion_t *criterion);
    int         idmef_criterion_match           (idmef_criterion_t *criterion,
                                                 idmef_message_t *message);
    int         idmef_criteria_new              (idmef_criteria_t **criteria);
    void        idmef_criteria_destroy          (idmef_criteria_t *criteria);
    int         idmef_criteria_clone            (idmef_criteria_t *src,
                                                 idmef_criteria_t **dst);
    int         idmef_criteria_print            (idmef_criteria_t *criteria,
                                                 prelude_io_t *fd);
    int         idmef_criteria_to_string        (idmef_criteria_t *criteria,
                                                 prelude_string_t *out);
    prelude_bool_t idmef_criteria_is_criterion  (idmef_criteria_t *criteria);
    idmef_criterion_t* idmef_criteria_get_criterion
                                                (idmef_criteria_t *criteria);
    void        idmef_criteria_set_criterion    (idmef_criteria_t *criteria,
                                                 idmef_criterion_t *criterion);
    void        idmef_criteria_or_criteria      (idmef_criteria_t *criteria,
                                                 idmef_criteria_t *criteria2);
    int         idmef_criteria_and_criteria     (idmef_criteria_t *criteria,
                                                 idmef_criteria_t *criteria2);
    int         idmef_criteria_match            (idmef_criteria_t *criteria,
                                                 idmef_message_t *message);
    idmef_criteria_t* idmef_criteria_get_or     (idmef_criteria_t *criteria);
    idmef_criteria_t* idmef_criteria_get_and    (idmef_criteria_t *criteria);
    int         idmef_criteria_new_from_string  (idmef_criteria_t **criteria,
                                                 const char *str);

## Description

## Details

### enum idmef_criterion_operator_t

    typedef enum {
            IDMEF_CRITERION_OPERATOR_NOT               = 0x8000,
            IDMEF_CRITERION_OPERATOR_NOCASE            = 0x4000,

            IDMEF_CRITERION_OPERATOR_EQUAL             = 0x0001,
            IDMEF_CRITERION_OPERATOR_EQUAL_NOCASE      = IDMEF_CRITERION_OPERATOR_EQUAL|IDMEF_CRITERION_OPERATOR_NOCASE,
            IDMEF_CRITERION_OPERATOR_NOT_EQUAL         = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_EQUAL,
            IDMEF_CRITERION_OPERATOR_NOT_EQUAL_NOCASE  = IDMEF_CRITERION_OPERATOR_NOT_EQUAL|IDMEF_CRITERION_OPERATOR_EQUAL_NOCASE,

            IDMEF_CRITERION_OPERATOR_LESSER            = 0x0002,
            IDMEF_CRITERION_OPERATOR_LESSER_OR_EQUAL   = IDMEF_CRITERION_OPERATOR_LESSER|IDMEF_CRITERION_OPERATOR_EQUAL,

            IDMEF_CRITERION_OPERATOR_GREATER           = 0x0004,
            IDMEF_CRITERION_OPERATOR_GREATER_OR_EQUAL  = IDMEF_CRITERION_OPERATOR_GREATER|IDMEF_CRITERION_OPERATOR_EQUAL,

            IDMEF_CRITERION_OPERATOR_SUBSTR            = 0x0008,
            IDMEF_CRITERION_OPERATOR_SUBSTR_NOCASE     = IDMEF_CRITERION_OPERATOR_SUBSTR|IDMEF_CRITERION_OPERATOR_NOCASE,
            IDMEF_CRITERION_OPERATOR_NOT_SUBSTR        = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_SUBSTR,
            IDMEF_CRITERION_OPERATOR_NOT_SUBSTR_NOCASE = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_SUBSTR_NOCASE,

            IDMEF_CRITERION_OPERATOR_REGEX             = 0x0010,
            IDMEF_CRITERION_OPERATOR_REGEX_NOCASE      = IDMEF_CRITERION_OPERATOR_REGEX|IDMEF_CRITERION_OPERATOR_NOCASE,
            IDMEF_CRITERION_OPERATOR_NOT_REGEX         = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_REGEX,
            IDMEF_CRITERION_OPERATOR_NOT_REGEX_NOCASE  = IDMEF_CRITERION_OPERATOR_NOT|IDMEF_CRITERION_OPERATOR_REGEX_NOCASE,

            IDMEF_CRITERION_OPERATOR_NULL              = 0x0020,
            IDMEF_CRITERION_OPERATOR_NOT_NULL          = IDMEF_CRITERION_OPERATOR_NULL|IDMEF_CRITERION_OPERATOR_NOT
    } idmef_criterion_operator_t;

### idmef_criteria_t

    typedef struct idmef_criteria idmef_criteria_t;

### idmef_criterion_t

    typedef struct idmef_criterion idmef_criterion_t;

### idmef_criterion_operator_to_string ()

    const char* idmef_criterion_operator_to_string
                                                (idmef_criterion_operator_t op);

Transforms `op` to string.

`op` : | idmef_criterion_operator_t type.
Returns : | A pointer to an operator string or NULL.

### idmef_criterion_new ()

    int         idmef_criterion_new             (idmef_criterion_t **criterion,
                                                 idmef_path_t *path,
                                                 idmef_criterion_value_t *value,
                                                 idmef_criterion_operator_t op);

Creates a new idmef_criterion_t object and store it in `criterion`. Matching this criterion will result in comparing the object value pointed by `path` against the provided `value`, using `op`.

`criterion` : | Address where to store the created idmef_criterion_t object.
`path` : | Pointer to an idmef_path_t object.
`value` : | Pointer to an idmef_criterion_value_t object.
`op` : | idmef_criterion_operator_t to use for matching this criterion.
Returns : | 0 on success, a negative value if an error occured.

### idmef_criterion_destroy ()

    void        idmef_criterion_destroy         (idmef_criterion_t *criterion);

Destroys `criterion` and its content.

`criterion` : | Pointer to a idmef_criterion_t object.

### idmef_criterion_clone ()

    int         idmef_criterion_clone           (idmef_criterion_t *criterion,
                                                 idmef_criterion_t **dst);

Clones `criterion` and stores the cloned criterion within `dst`.

`criterion` : | Pointer to a idmef_criterion_t object to clone.
`dst` : | Address where to store the cloned idmef_criterion_t object.
Returns : | 0 on success, a negative value if an error occured.

### idmef_criterion_print ()

    int         idmef_criterion_print           (const idmef_criterion_t *criterion,
                                                 prelude_io_t *fd);

Dump `criterion` to `fd` in the form of: [path] [operator] [value]

Or if there is no value associated with the criterion: [operator] [path]

`criterion` : | Pointer to a idmef_criterion_t object.
`fd` : | Pointer to a prelude_io_t object.
Returns : | 0 on success, a negative value if an error occured.

### idmef_criterion_to_string ()

    int         idmef_criterion_to_string       (const idmef_criterion_t *criterion,
                                                 prelude_string_t *out);

Dump `criterion` as a string to the `out` buffer in the form of: [path] [operator] [value]

Or if there is no value associated with the criterion: [operator] [path]

`criterion` : | Pointer to a idmef_criterion_t object.
`out` : | Pointer to a prelude_string_t object.
Returns : | 0 on success, a negative value if an error occured.

### idmef_criterion_get_path ()

    idmef_path_t* idmef_criterion_get_path      (idmef_criterion_t *criterion);

Used to access the idmef_path_t object associated with `criterion`.

`criterion` : | Pointer to a idmef_criterion_t object.
Returns : | the idmef_path_t object associated with `criterion`.

### idmef_criterion_get_value ()

    idmef_criterion_value_t* idmef_criterion_get_value
                                                (idmef_criterion_t *criterion);

Used to access the idmef_criterion_value_t associated with `criterion`. There might be no value specifically if the provided idmef_criterion_operator_t was IDMEF_CRITERION_OPERATOR_NULL or IDMEF_CRITERION_OPERATOR_NOT_NULL.

`criterion` : | Pointer to a idmef_criterion_t object.
Returns : | the idmef_criterion_value_t object associated with `criterion`.

### idmef_criterion_get_operator ()

    idmef_criterion_operator_t idmef_criterion_get_operator
                                                (idmef_criterion_t *criterion);

Used to access the idmef_criterion_operator_t enumeration associated with `criterion`.

`criterion` : | Pointer to a idmef_criterion_t object.
Returns : | the idmef_criterion_operator_t associated with `criterion`.

### idmef_criterion_match ()

    int         idmef_criterion_match           (idmef_criterion_t *criterion,
                                                 idmef_message_t *message);

Matches `message` against the provided `criterion`. This implies retrieving the value associated with `criterion` path, and matching it with the `idmef_criterion_value_t` object within `criterion`.

`criterion` : | Pointer to a idmef_criterion_t object.
`message` : | Pointer to a idmef_message_t object to match against `criterion`.
Returns : | 1 for a match, 0 for no match, or a negative value if an error occured.

### idmef_criteria_new ()

    int         idmef_criteria_new              (idmef_criteria_t **criteria);

Creates a new idmef_criteria_t object and store it into `criteria`.

`criteria` : | Address where to store the created idmef_criteria_t object.
Returns : | 0 on success, a negative value if an error occured.

### idmef_criteria_destroy ()

    void        idmef_criteria_destroy          (idmef_criteria_t *criteria);

Destroys `criteria` and its content.

`criteria` : | Pointer to a idmef_criteria_t object.

### idmef_criteria_clone ()

    int         idmef_criteria_clone            (idmef_criteria_t *src,
                                                 idmef_criteria_t **dst);

Clones `src` and stores the cloned criteria within `dst`.

`src` : | Pointer to a idmef_criteria_t object to clone.
`dst` : | Address where to store the cloned idmef_criteria_t object.
Returns : | 0 on success, a negative value if an error occured.

### idmef_criteria_print ()

    int         idmef_criteria_print            (idmef_criteria_t *criteria,
                                                 prelude_io_t *fd);

`criteria` : |
`fd` : |
Returns : |

### idmef_criteria_to_string ()

    int         idmef_criteria_to_string        (idmef_criteria_t *criteria,
                                                 prelude_string_t *out);

`criteria` : |
`out` : |
Returns : |

### idmef_criteria_is_criterion ()

    prelude_bool_t idmef_criteria_is_criterion  (idmef_criteria_t *criteria);

`criteria` : |
Returns : |

### idmef_criteria_get_criterion ()

    idmef_criterion_t* idmef_criteria_get_criterion
                                                (idmef_criteria_t *criteria);

`criteria` : |
Returns : |

### idmef_criteria_set_criterion ()

    void        idmef_criteria_set_criterion    (idmef_criteria_t *criteria,
                                                 idmef_criterion_t *criterion);

`criteria` : |
`criterion` : |

### idmef_criteria_or_criteria ()

    void        idmef_criteria_or_criteria      (idmef_criteria_t *criteria,
                                                 idmef_criteria_t *criteria2);

`criteria` : |
`criteria2` : |

### idmef_criteria_and_criteria ()

    int         idmef_criteria_and_criteria     (idmef_criteria_t *criteria,
                                                 idmef_criteria_t *criteria2);

`criteria` : |
`criteria2` : |
Returns : |

### idmef_criteria_match ()

    int         idmef_criteria_match            (idmef_criteria_t *criteria,
                                                 idmef_message_t *message);

Matches `message` against the provided criteria.

`criteria` : | Pointer to a idmef_criteria_t object.
`message` : | Pointer to a idmef_message_t message.
Returns : | 1 if criteria match, 0 if it did not, a negative value if an error occured.

### idmef_criteria_get_or ()

    idmef_criteria_t* idmef_criteria_get_or     (idmef_criteria_t *criteria);

`criteria` : |
Returns : |

### idmef_criteria_get_and ()

    idmef_criteria_t* idmef_criteria_get_and    (idmef_criteria_t *criteria);

`criteria` : |
Returns : |

### idmef_criteria_new_from_string ()

    int         idmef_criteria_new_from_string  (idmef_criteria_t **criteria,
                                                 const char *str);

`criteria` : |
`str` : |
Returns : |