version 1.1, 2013/10/14 10:32:47
|
version 1.1.1.2, 2016/11/02 10:35:00
|
Line 1
|
Line 1
|
#ifndef ARRAY_H |
#ifndef ARRAY_H |
#define ARRAY_H |
#define ARRAY_H |
|
#include "first.h" |
|
|
#ifdef HAVE_CONFIG_H |
|
# include "config.h" |
|
#endif |
|
|
|
#ifdef HAVE_PCRE_H |
#ifdef HAVE_PCRE_H |
# include <pcre.h> |
# include <pcre.h> |
#endif |
#endif |
|
|
#include "buffer.h" |
#include "buffer.h" |
|
#include "vector.h" |
|
|
#include <stdlib.h> |
#include <stdlib.h> |
|
|
Line 35 typedef struct {
|
Line 33 typedef struct {
|
|
|
size_t *sorted; |
size_t *sorted; |
|
|
size_t used; | size_t used; /* <= SSIZE_MAX */ |
size_t size; |
size_t size; |
|
|
size_t unique_ndx; |
size_t unique_ndx; |
|
|
size_t next_power_of_2; |
|
int is_weakref; /* data is weakref, don't bother the data */ |
|
} array; |
} array; |
|
|
typedef struct { |
typedef struct { |
Line 105 typedef enum {
|
Line 100 typedef enum {
|
* for compare: comp cond string/regex |
* for compare: comp cond string/regex |
*/ |
*/ |
|
|
typedef struct _data_config data_config; | typedef struct data_config data_config; |
struct _data_config { | DEFINE_TYPED_VECTOR_NO_RELEASE(config_weak, data_config*); |
| |
| struct data_config { |
DATA_UNSET; |
DATA_UNSET; |
|
|
array *value; |
array *value; |
Line 118 struct _data_config {
|
Line 115 struct _data_config {
|
buffer *op; |
buffer *op; |
|
|
int context_ndx; /* more or less like an id */ |
int context_ndx; /* more or less like an id */ |
array *childs; | vector_config_weak children; |
/* nested */ |
/* nested */ |
data_config *parent; |
data_config *parent; |
/* for chaining only */ |
/* for chaining only */ |
Line 163 array *array_init(void);
|
Line 160 array *array_init(void);
|
array *array_init_array(array *a); |
array *array_init_array(array *a); |
void array_free(array *a); |
void array_free(array *a); |
void array_reset(array *a); |
void array_reset(array *a); |
int array_insert_unique(array *a, data_unset *str); | void array_insert_unique(array *a, data_unset *entry); |
data_unset *array_pop(array *a); | data_unset *array_pop(array *a); /* only works on "simple" lists with autogenerated keys */ |
int array_print(array *a, int depth); |
int array_print(array *a, int depth); |
data_unset *array_get_unused_element(array *a, data_type_t t); |
data_unset *array_get_unused_element(array *a, data_type_t t); |
data_unset *array_get_element(array *a, const char *key); |
data_unset *array_get_element(array *a, const char *key); |
|
data_unset *array_extract_element(array *a, const char *key); /* removes found entry from array */ |
void array_set_key_value(array *hdrs, const char *key, size_t key_len, const char *value, size_t val_len); |
void array_set_key_value(array *hdrs, const char *key, size_t key_len, const char *value, size_t val_len); |
data_unset *array_replace(array *a, data_unset *du); | void array_replace(array *a, data_unset *entry); |
int array_strcasecmp(const char *a, size_t a_len, const char *b, size_t b_len); |
int array_strcasecmp(const char *a, size_t a_len, const char *b, size_t b_len); |
void array_print_indent(int depth); |
void array_print_indent(int depth); |
size_t array_get_max_key_length(array *a); |
size_t array_get_max_key_length(array *a); |