File: idmef-value-type.h

package info (click to toggle)
libprelude 1.0.0-11.9
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 24,456 kB
  • ctags: 17,851
  • sloc: ansic: 190,841; cpp: 38,769; xml: 30,141; sh: 11,668; makefile: 692; python: 481; awk: 341; yacc: 238; lex: 186; perl: 5
file content (120 lines) | stat: -rw-r--r-- 3,554 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*****
*
* Copyright (C) 2003, 2004, 2005 PreludeIDS Technologies. All Rights Reserved.
* Author: Yoann Vandoorselaere <yoann.v@prelude-ids.com>
*
* This file is part of the Prelude library.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING.  If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*
*****/

#ifndef _IDMEF_VALUE_TYPE_H
#define _IDMEF_VALUE_TYPE_H

#include "idmef-time.h"
#include "prelude-string.h"

#ifdef __cplusplus
 extern "C" {
#endif

typedef enum {
        IDMEF_VALUE_TYPE_ERROR   =  -1,
        IDMEF_VALUE_TYPE_UNKNOWN =   0,
        IDMEF_VALUE_TYPE_INT8    =   1,
        IDMEF_VALUE_TYPE_UINT8   =   2,
        IDMEF_VALUE_TYPE_INT16   =   3,
        IDMEF_VALUE_TYPE_UINT16  =   4,
        IDMEF_VALUE_TYPE_INT32   =   5,
        IDMEF_VALUE_TYPE_UINT32  =   6,
        IDMEF_VALUE_TYPE_INT64   =   7,
        IDMEF_VALUE_TYPE_UINT64  =   8,
        IDMEF_VALUE_TYPE_FLOAT   =   9,
        IDMEF_VALUE_TYPE_DOUBLE  =  10,
        IDMEF_VALUE_TYPE_STRING  =  11,
        IDMEF_VALUE_TYPE_TIME    =  12,
        IDMEF_VALUE_TYPE_DATA    =  13,
        IDMEF_VALUE_TYPE_ENUM    =  14,
        IDMEF_VALUE_TYPE_LIST    =  15,
        IDMEF_VALUE_TYPE_CLASS   =  16
} idmef_value_type_id_t;


typedef struct {
        void *object;
        int class_id;
} idmef_value_type_class_t;

typedef struct {
        int value;
        int class_id;
} idmef_value_type_enum_t;


typedef union {
        int8_t int8_val;
        uint8_t uint8_val;
        int16_t int16_val;
        uint16_t uint16_val;
        int32_t int32_val;
        uint32_t uint32_val;
        int64_t int64_val;
        uint64_t uint64_val;
        float float_val;
        double double_val;
        prelude_string_t *string_val;
        idmef_time_t *time_val;
        idmef_data_t *data_val;
        prelude_list_t list_val;
        idmef_value_type_enum_t enum_val;
        idmef_value_type_class_t class_val;
} idmef_value_type_data_t;


typedef struct {
        idmef_value_type_id_t id;
        idmef_value_type_data_t data;
} idmef_value_type_t;


#include "idmef-criteria.h"

int idmef_value_type_ref(const idmef_value_type_t *src);

int idmef_value_type_copy(const idmef_value_type_t *src, void *dst);

int idmef_value_type_read(idmef_value_type_t *dst, const char *buf);

int idmef_value_type_write(const idmef_value_type_t *src, prelude_string_t *out);

void idmef_value_type_destroy(idmef_value_type_t *type);

int idmef_value_type_clone(const idmef_value_type_t *src, idmef_value_type_t *dst);

int idmef_value_type_compare(const idmef_value_type_t *type1, const idmef_value_type_t *type2,
                             idmef_criterion_operator_t op);

int idmef_value_type_check_operator(idmef_value_type_id_t type, idmef_criterion_operator_t op);

int idmef_value_type_get_applicable_operators(idmef_value_type_id_t type, idmef_criterion_operator_t *result);

const char *idmef_value_type_to_string(idmef_value_type_id_t type);

#ifdef __cplusplus
 }
#endif

#endif