Annotation of embedaddon/lighttpd/src/array.h, revision 1.1

1.1     ! misho       1: #ifndef ARRAY_H
        !             2: #define ARRAY_H
        !             3: 
        !             4: #ifdef HAVE_CONFIG_H
        !             5: # include "config.h"
        !             6: #endif
        !             7: 
        !             8: #ifdef HAVE_PCRE_H
        !             9: # include <pcre.h>
        !            10: #endif
        !            11: 
        !            12: #include "buffer.h"
        !            13: 
        !            14: #include <stdlib.h>
        !            15: 
        !            16: #define DATA_IS_STRING(x) (x->type == TYPE_STRING)
        !            17: 
        !            18: typedef enum { TYPE_UNSET, TYPE_STRING, TYPE_COUNT, TYPE_ARRAY, TYPE_INTEGER, TYPE_FASTCGI, TYPE_CONFIG } data_type_t;
        !            19: #define DATA_UNSET \
        !            20:        data_type_t type; \
        !            21:        buffer *key; \
        !            22:        int is_index_key; /* 1 if key is a array index (autogenerated keys) */ \
        !            23:        struct data_unset *(*copy)(const struct data_unset *src); \
        !            24:        void (* free)(struct data_unset *p); \
        !            25:        void (* reset)(struct data_unset *p); \
        !            26:        int (*insert_dup)(struct data_unset *dst, struct data_unset *src); \
        !            27:        void (*print)(const struct data_unset *p, int depth)
        !            28: 
        !            29: typedef struct data_unset {
        !            30:        DATA_UNSET;
        !            31: } data_unset;
        !            32: 
        !            33: typedef struct {
        !            34:        data_unset  **data;
        !            35: 
        !            36:        size_t *sorted;
        !            37: 
        !            38:        size_t used;
        !            39:        size_t size;
        !            40: 
        !            41:        size_t unique_ndx;
        !            42: 
        !            43:        size_t next_power_of_2;
        !            44:        int is_weakref; /* data is weakref, don't bother the data */
        !            45: } array;
        !            46: 
        !            47: typedef struct {
        !            48:        DATA_UNSET;
        !            49: 
        !            50:        int count;
        !            51: } data_count;
        !            52: 
        !            53: data_count *data_count_init(void);
        !            54: 
        !            55: typedef struct {
        !            56:        DATA_UNSET;
        !            57: 
        !            58:        buffer *value;
        !            59: } data_string;
        !            60: 
        !            61: data_string *data_string_init(void);
        !            62: data_string *data_response_init(void);
        !            63: 
        !            64: typedef struct {
        !            65:        DATA_UNSET;
        !            66: 
        !            67:        array *value;
        !            68: } data_array;
        !            69: 
        !            70: data_array *data_array_init(void);
        !            71: 
        !            72: /**
        !            73:  * possible compare ops in the configfile parser
        !            74:  */
        !            75: typedef enum {
        !            76:        CONFIG_COND_UNSET,
        !            77:        CONFIG_COND_EQ,      /** == */
        !            78:        CONFIG_COND_MATCH,   /** =~ */
        !            79:        CONFIG_COND_NE,      /** != */
        !            80:        CONFIG_COND_NOMATCH  /** !~ */
        !            81: } config_cond_t;
        !            82: 
        !            83: /**
        !            84:  * possible fields to match against
        !            85:  */
        !            86: typedef enum {
        !            87:        COMP_UNSET,
        !            88:        COMP_SERVER_SOCKET,
        !            89:        COMP_HTTP_URL,
        !            90:        COMP_HTTP_HOST,
        !            91:        COMP_HTTP_REFERER,
        !            92:        COMP_HTTP_USER_AGENT,
        !            93:        COMP_HTTP_LANGUAGE,
        !            94:        COMP_HTTP_COOKIE,
        !            95:        COMP_HTTP_REMOTE_IP,
        !            96:        COMP_HTTP_QUERY_STRING,
        !            97:        COMP_HTTP_SCHEME,
        !            98:        COMP_HTTP_REQUEST_METHOD,
        !            99: 
        !           100:        COMP_LAST_ELEMENT
        !           101: } comp_key_t;
        !           102: 
        !           103: /* $HTTP["host"] ==    "incremental.home.kneschke.de" { ... }
        !           104:  * for print:   comp_key      op    string
        !           105:  * for compare: comp          cond  string/regex
        !           106:  */
        !           107: 
        !           108: typedef struct _data_config data_config;
        !           109: struct _data_config {
        !           110:        DATA_UNSET;
        !           111: 
        !           112:        array *value;
        !           113: 
        !           114:        buffer *comp_key;
        !           115:        comp_key_t comp;
        !           116: 
        !           117:        config_cond_t cond;
        !           118:        buffer *op;
        !           119: 
        !           120:        int context_ndx; /* more or less like an id */
        !           121:        array *childs;
        !           122:        /* nested */
        !           123:        data_config *parent;
        !           124:        /* for chaining only */
        !           125:        data_config *prev;
        !           126:        data_config *next;
        !           127: 
        !           128:        buffer *string;
        !           129: #ifdef HAVE_PCRE_H
        !           130:        pcre   *regex;
        !           131:        pcre_extra *regex_study;
        !           132: #endif
        !           133: };
        !           134: 
        !           135: data_config *data_config_init(void);
        !           136: 
        !           137: typedef struct {
        !           138:        DATA_UNSET;
        !           139: 
        !           140:        int value;
        !           141: } data_integer;
        !           142: 
        !           143: data_integer *data_integer_init(void);
        !           144: 
        !           145: typedef struct {
        !           146:        DATA_UNSET;
        !           147: 
        !           148:        buffer *host;
        !           149: 
        !           150:        unsigned short port;
        !           151: 
        !           152:        time_t disable_ts;
        !           153:        int is_disabled;
        !           154:        size_t balance;
        !           155: 
        !           156:        int usage; /* fair-balancing needs the no. of connections active on this host */
        !           157:        int last_used_ndx; /* round robin */
        !           158: } data_fastcgi;
        !           159: 
        !           160: data_fastcgi *data_fastcgi_init(void);
        !           161: 
        !           162: array *array_init(void);
        !           163: array *array_init_array(array *a);
        !           164: void array_free(array *a);
        !           165: void array_reset(array *a);
        !           166: int array_insert_unique(array *a, data_unset *str);
        !           167: data_unset *array_pop(array *a);
        !           168: int array_print(array *a, int depth);
        !           169: data_unset *array_get_unused_element(array *a, data_type_t t);
        !           170: data_unset *array_get_element(array *a, const char *key);
        !           171: void array_set_key_value(array *hdrs, const char *key, size_t key_len, const char *value, size_t val_len);
        !           172: data_unset *array_replace(array *a, data_unset *du);
        !           173: int array_strcasecmp(const char *a, size_t a_len, const char *b, size_t b_len);
        !           174: void array_print_indent(int depth);
        !           175: size_t array_get_max_key_length(array *a);
        !           176: 
        !           177: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>