Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtjoms Rimdjonoks <artjoms.rimdjonoks@zabbix.com>2022-03-25 12:44:38 +0300
committerArtjoms Rimdjonoks <artjoms.rimdjonoks@zabbix.com>2022-03-25 12:45:07 +0300
commit80c10cefdc51977371019110091d97285a5eb525 (patch)
tree510e80332b41af9ef97e257e37eaed3743f898cf /include/zbxalgo.h
parent85a194e848a437d95f7dd3721628901928be5a1c (diff)
.......... [DEV-2130] consolidated vector data in header
Diffstat (limited to 'include/zbxalgo.h')
-rw-r--r--include/zbxalgo.h262
1 files changed, 130 insertions, 132 deletions
diff --git a/include/zbxalgo.h b/include/zbxalgo.h
index bdcbd11b92b..f67bfaec28b 100644
--- a/include/zbxalgo.h
+++ b/include/zbxalgo.h
@@ -21,6 +21,7 @@
#define ZABBIX_ZBXALGO_H
#include "common.h"
+#include "log.h"
/* generic */
@@ -345,142 +346,10 @@ ZBX_VECTOR_DECL(ptr_pair, zbx_ptr_pair_t)
ZBX_VECTOR_DECL(uint64_pair, zbx_uint64_pair_t)
ZBX_VECTOR_DECL(dbl, double)
-/* this function is only for use with zbx_vector_XXX_clear_ext() */
-/* and only if the vector does not contain nested allocations */
-void zbx_ptr_free(void *data);
-void zbx_str_free(char *data);
-
-/* 128 bit unsigned integer handling */
-#define uset128(base, hi64, lo64) (base)->hi = hi64; (base)->lo = lo64
-
-void uinc128_64(zbx_uint128_t *base, zbx_uint64_t value);
-void uinc128_128(zbx_uint128_t *base, const zbx_uint128_t *value);
-void udiv128_64(zbx_uint128_t *result, const zbx_uint128_t *dividend, zbx_uint64_t value);
-void umul64_64(zbx_uint128_t *result, zbx_uint64_t value, zbx_uint64_t factor);
-
-unsigned int zbx_isqrt32(unsigned int value);
-
-char *zbx_gen_uuid4(const char *seed);
-
-/* expression evaluation */
-
-#define ZBX_INFINITY (1.0 / 0.0) /* "Positive infinity" value used as a fatal error code */
-#define ZBX_UNKNOWN (-1.0 / 0.0) /* "Negative infinity" value used as a code for "Unknown" */
-
-#define ZBX_UNKNOWN_STR "ZBX_UNKNOWN" /* textual representation of ZBX_UNKNOWN */
-#define ZBX_UNKNOWN_STR_LEN ZBX_CONST_STRLEN(ZBX_UNKNOWN_STR)
-
-int evaluate(double *value, const char *expression, char *error, size_t max_error_len,
- zbx_vector_ptr_t *unknown_msgs);
-int evaluate_unknown(const char *expression, double *value, char *error, size_t max_error_len);
-double evaluate_string_to_double(const char *in);
-
-/* forecasting */
-
-#define ZBX_MATH_ERROR -1.0
-
-typedef enum
-{
- FIT_LINEAR,
- FIT_POLYNOMIAL,
- FIT_EXPONENTIAL,
- FIT_LOGARITHMIC,
- FIT_POWER,
- FIT_INVALID
-}
-zbx_fit_t;
-
-typedef enum
-{
- MODE_VALUE,
- MODE_MAX,
- MODE_MIN,
- MODE_DELTA,
- MODE_AVG,
- MODE_INVALID
-}
-zbx_mode_t;
-
-int zbx_fit_code(char *fit_str, zbx_fit_t *fit, unsigned *k, char **error);
-int zbx_mode_code(char *mode_str, zbx_mode_t *mode, char **error);
-double zbx_forecast(double *t, double *x, int n, double now, double time, zbx_fit_t fit, unsigned k, zbx_mode_t mode);
-double zbx_timeleft(double *t, double *x, int n, double now, double threshold, zbx_fit_t fit, unsigned k);
-
-
-/* fifo queue of pointers */
-
-typedef struct
-{
- void **values;
- int alloc_num;
- int head_pos;
- int tail_pos;
-}
-zbx_queue_ptr_t;
-
-#define zbx_queue_ptr_empty(queue) ((queue)->head_pos == (queue)->tail_pos ? SUCCEED : FAIL)
-
-int zbx_queue_ptr_values_num(zbx_queue_ptr_t *queue);
-void zbx_queue_ptr_reserve(zbx_queue_ptr_t *queue, int num);
-void zbx_queue_ptr_compact(zbx_queue_ptr_t *queue);
-void zbx_queue_ptr_create(zbx_queue_ptr_t *queue);
-void zbx_queue_ptr_destroy(zbx_queue_ptr_t *queue);
-void zbx_queue_ptr_push(zbx_queue_ptr_t *queue, void *value);
-void *zbx_queue_ptr_pop(zbx_queue_ptr_t *queue);
-void zbx_queue_ptr_remove_value(zbx_queue_ptr_t *queue, const void *value);
-
-/* list item data */
-typedef struct list_item
-{
- struct list_item *next;
- void *data;
-}
-zbx_list_item_t;
-
-/* list data */
-typedef struct
-{
- zbx_list_item_t *head;
- zbx_list_item_t *tail;
- zbx_mem_malloc_func_t mem_malloc_func;
- zbx_mem_realloc_func_t mem_realloc_func;
- zbx_mem_free_func_t mem_free_func;
-}
-zbx_list_t;
-
-/* queue item data */
-typedef struct
-{
- zbx_list_t *list;
- zbx_list_item_t *current;
- zbx_list_item_t *next;
-}
-zbx_list_iterator_t;
-
-void zbx_list_create(zbx_list_t *queue);
-void zbx_list_create_ext(zbx_list_t *queue, zbx_mem_malloc_func_t mem_malloc_func, zbx_mem_free_func_t mem_free_func);
-void zbx_list_destroy(zbx_list_t *list);
-void zbx_list_append(zbx_list_t *list, void *value, zbx_list_item_t **inserted);
-void zbx_list_insert_after(zbx_list_t *list, zbx_list_item_t *after, void *value, zbx_list_item_t **inserted);
-void zbx_list_prepend(zbx_list_t *list, void *value, zbx_list_item_t **inserted);
-int zbx_list_pop(zbx_list_t *list, void **value);
-int zbx_list_peek(const zbx_list_t *list, void **value);
-void zbx_list_iterator_init(zbx_list_t *list, zbx_list_iterator_t *iterator);
-int zbx_list_iterator_next(zbx_list_iterator_t *iterator);
-int zbx_list_iterator_peek(const zbx_list_iterator_t *iterator, void **value);
-void zbx_list_iterator_clear(zbx_list_iterator_t *iterator);
-int zbx_list_iterator_equal(const zbx_list_iterator_t *iterator1, const zbx_list_iterator_t *iterator2);
-int zbx_list_iterator_isset(const zbx_list_iterator_t *iterator);
-void zbx_list_iterator_update(zbx_list_iterator_t *iterator);
-
-/**/
-
ZBX_PTR_VECTOR_DECL(tags, zbx_tag_t*)
#define ZBX_VECTOR_ARRAY_GROWTH_FACTOR 3/2
-#include "log.h"
-
#define ZBX_VECTOR_IMPL(__id, __type) \
\
static void __vector_ ## __id ## _ensure_free_space(zbx_vector_ ## __id ## _t *vector) \
@@ -750,4 +619,133 @@ void zbx_vector_ ## __id ## _clear_ext(zbx_vector_ ## __id ## _t *vector, \
} \
}
/* vector implementation end */
+
+/* this function is only for use with zbx_vector_XXX_clear_ext() */
+/* and only if the vector does not contain nested allocations */
+void zbx_ptr_free(void *data);
+void zbx_str_free(char *data);
+
+/* 128 bit unsigned integer handling */
+#define uset128(base, hi64, lo64) (base)->hi = hi64; (base)->lo = lo64
+
+void uinc128_64(zbx_uint128_t *base, zbx_uint64_t value);
+void uinc128_128(zbx_uint128_t *base, const zbx_uint128_t *value);
+void udiv128_64(zbx_uint128_t *result, const zbx_uint128_t *dividend, zbx_uint64_t value);
+void umul64_64(zbx_uint128_t *result, zbx_uint64_t value, zbx_uint64_t factor);
+
+unsigned int zbx_isqrt32(unsigned int value);
+
+char *zbx_gen_uuid4(const char *seed);
+
+/* expression evaluation */
+
+#define ZBX_INFINITY (1.0 / 0.0) /* "Positive infinity" value used as a fatal error code */
+#define ZBX_UNKNOWN (-1.0 / 0.0) /* "Negative infinity" value used as a code for "Unknown" */
+
+#define ZBX_UNKNOWN_STR "ZBX_UNKNOWN" /* textual representation of ZBX_UNKNOWN */
+#define ZBX_UNKNOWN_STR_LEN ZBX_CONST_STRLEN(ZBX_UNKNOWN_STR)
+
+int evaluate(double *value, const char *expression, char *error, size_t max_error_len,
+ zbx_vector_ptr_t *unknown_msgs);
+int evaluate_unknown(const char *expression, double *value, char *error, size_t max_error_len);
+double evaluate_string_to_double(const char *in);
+
+/* forecasting */
+
+#define ZBX_MATH_ERROR -1.0
+
+typedef enum
+{
+ FIT_LINEAR,
+ FIT_POLYNOMIAL,
+ FIT_EXPONENTIAL,
+ FIT_LOGARITHMIC,
+ FIT_POWER,
+ FIT_INVALID
+}
+zbx_fit_t;
+
+typedef enum
+{
+ MODE_VALUE,
+ MODE_MAX,
+ MODE_MIN,
+ MODE_DELTA,
+ MODE_AVG,
+ MODE_INVALID
+}
+zbx_mode_t;
+
+int zbx_fit_code(char *fit_str, zbx_fit_t *fit, unsigned *k, char **error);
+int zbx_mode_code(char *mode_str, zbx_mode_t *mode, char **error);
+double zbx_forecast(double *t, double *x, int n, double now, double time, zbx_fit_t fit, unsigned k, zbx_mode_t mode);
+double zbx_timeleft(double *t, double *x, int n, double now, double threshold, zbx_fit_t fit, unsigned k);
+
+
+/* fifo queue of pointers */
+
+typedef struct
+{
+ void **values;
+ int alloc_num;
+ int head_pos;
+ int tail_pos;
+}
+zbx_queue_ptr_t;
+
+#define zbx_queue_ptr_empty(queue) ((queue)->head_pos == (queue)->tail_pos ? SUCCEED : FAIL)
+
+int zbx_queue_ptr_values_num(zbx_queue_ptr_t *queue);
+void zbx_queue_ptr_reserve(zbx_queue_ptr_t *queue, int num);
+void zbx_queue_ptr_compact(zbx_queue_ptr_t *queue);
+void zbx_queue_ptr_create(zbx_queue_ptr_t *queue);
+void zbx_queue_ptr_destroy(zbx_queue_ptr_t *queue);
+void zbx_queue_ptr_push(zbx_queue_ptr_t *queue, void *value);
+void *zbx_queue_ptr_pop(zbx_queue_ptr_t *queue);
+void zbx_queue_ptr_remove_value(zbx_queue_ptr_t *queue, const void *value);
+
+/* list item data */
+typedef struct list_item
+{
+ struct list_item *next;
+ void *data;
+}
+zbx_list_item_t;
+
+/* list data */
+typedef struct
+{
+ zbx_list_item_t *head;
+ zbx_list_item_t *tail;
+ zbx_mem_malloc_func_t mem_malloc_func;
+ zbx_mem_realloc_func_t mem_realloc_func;
+ zbx_mem_free_func_t mem_free_func;
+}
+zbx_list_t;
+
+/* queue item data */
+typedef struct
+{
+ zbx_list_t *list;
+ zbx_list_item_t *current;
+ zbx_list_item_t *next;
+}
+zbx_list_iterator_t;
+
+void zbx_list_create(zbx_list_t *queue);
+void zbx_list_create_ext(zbx_list_t *queue, zbx_mem_malloc_func_t mem_malloc_func, zbx_mem_free_func_t mem_free_func);
+void zbx_list_destroy(zbx_list_t *list);
+void zbx_list_append(zbx_list_t *list, void *value, zbx_list_item_t **inserted);
+void zbx_list_insert_after(zbx_list_t *list, zbx_list_item_t *after, void *value, zbx_list_item_t **inserted);
+void zbx_list_prepend(zbx_list_t *list, void *value, zbx_list_item_t **inserted);
+int zbx_list_pop(zbx_list_t *list, void **value);
+int zbx_list_peek(const zbx_list_t *list, void **value);
+void zbx_list_iterator_init(zbx_list_t *list, zbx_list_iterator_t *iterator);
+int zbx_list_iterator_next(zbx_list_iterator_t *iterator);
+int zbx_list_iterator_peek(const zbx_list_iterator_t *iterator, void **value);
+void zbx_list_iterator_clear(zbx_list_iterator_t *iterator);
+int zbx_list_iterator_equal(const zbx_list_iterator_t *iterator1, const zbx_list_iterator_t *iterator2);
+int zbx_list_iterator_isset(const zbx_list_iterator_t *iterator);
+void zbx_list_iterator_update(zbx_list_iterator_t *iterator);
+
#endif