/src/unit/src/nxt_array.h
Line | Count | Source |
1 | | |
2 | | /* |
3 | | * Copyright (C) Igor Sysoev |
4 | | * Copyright (C) NGINX, Inc. |
5 | | */ |
6 | | |
7 | | #ifndef _NXT_ARRAY_H_INCLUDED_ |
8 | | #define _NXT_ARRAY_H_INCLUDED_ |
9 | | |
10 | | |
11 | | typedef struct { |
12 | | void *elts; |
13 | | /* nelts has uint32_t type because it is used most often. */ |
14 | | uint32_t nelts; |
15 | | uint16_t size; |
16 | | uint16_t nalloc; |
17 | | nxt_mp_t *mem_pool; |
18 | | } nxt_array_t; |
19 | | |
20 | | |
21 | | nxt_inline void |
22 | | nxt_array_init(nxt_array_t *array, nxt_mp_t *mp, size_t size) |
23 | 0 | { |
24 | 0 | array->elts = nxt_pointer_to(array, sizeof(nxt_array_t)); |
25 | 0 | array->size = size; |
26 | 0 | array->mem_pool = mp; |
27 | 0 | } Unexecuted instantiation: nxt_basic_fuzz.c:nxt_array_init Unexecuted instantiation: nxt_lib.c:nxt_array_init Unexecuted instantiation: nxt_errno.c:nxt_array_init Unexecuted instantiation: nxt_malloc.c:nxt_array_init Unexecuted instantiation: nxt_file.c:nxt_array_init Unexecuted instantiation: nxt_process.c:nxt_array_init Unexecuted instantiation: nxt_process_title.c:nxt_array_init Unexecuted instantiation: nxt_port_socket.c:nxt_array_init Unexecuted instantiation: nxt_port_memory.c:nxt_array_init Unexecuted instantiation: nxt_port_rpc.c:nxt_array_init Unexecuted instantiation: nxt_port.c:nxt_array_init Unexecuted instantiation: nxt_random.c:nxt_array_init Unexecuted instantiation: nxt_mp.c:nxt_array_init Unexecuted instantiation: nxt_string.c:nxt_array_init Unexecuted instantiation: nxt_utf8.c:nxt_array_init Unexecuted instantiation: nxt_parse.c:nxt_array_init Unexecuted instantiation: nxt_sprintf.c:nxt_array_init Unexecuted instantiation: nxt_log.c:nxt_array_init Unexecuted instantiation: nxt_djb_hash.c:nxt_array_init Unexecuted instantiation: nxt_murmur_hash.c:nxt_array_init Unexecuted instantiation: nxt_lvlhsh.c:nxt_array_init Unexecuted instantiation: nxt_buf.c:nxt_array_init Unexecuted instantiation: nxt_sendbuf.c:nxt_array_init Unexecuted instantiation: nxt_thread.c:nxt_array_init Unexecuted instantiation: nxt_thread_mutex.c:nxt_array_init Unexecuted instantiation: nxt_spinlock.c:nxt_array_init Unexecuted instantiation: nxt_thread_time.c:nxt_array_init Unexecuted instantiation: nxt_time_parse.c:nxt_array_init Unexecuted instantiation: nxt_work_queue.c:nxt_array_init Unexecuted instantiation: nxt_service.c:nxt_array_init Unexecuted instantiation: nxt_log_moderation.c:nxt_array_init Unexecuted instantiation: nxt_event_engine.c:nxt_array_init Unexecuted instantiation: nxt_timer.c:nxt_array_init Unexecuted instantiation: nxt_runtime.c:nxt_array_init Unexecuted instantiation: nxt_main_process.c:nxt_array_init Unexecuted instantiation: nxt_signal_handlers.c:nxt_array_init Unexecuted instantiation: nxt_controller.c:nxt_array_init Unexecuted instantiation: nxt_router.c:nxt_array_init Unexecuted instantiation: nxt_router_access_log.c:nxt_array_init Unexecuted instantiation: nxt_h1proto.c:nxt_array_init Unexecuted instantiation: nxt_status.c:nxt_array_init Unexecuted instantiation: nxt_http_request.c:nxt_array_init Unexecuted instantiation: nxt_http_response.c:nxt_array_init Unexecuted instantiation: nxt_http_error.c:nxt_array_init Unexecuted instantiation: nxt_http_route.c:nxt_array_init Unexecuted instantiation: nxt_http_route_addr.c:nxt_array_init Unexecuted instantiation: nxt_http_rewrite.c:nxt_array_init Unexecuted instantiation: nxt_http_set_headers.c:nxt_array_init Unexecuted instantiation: nxt_http_return.c:nxt_array_init Unexecuted instantiation: nxt_http_static.c:nxt_array_init Unexecuted instantiation: nxt_http_proxy.c:nxt_array_init Unexecuted instantiation: nxt_http_chunk_parse.c:nxt_array_init Unexecuted instantiation: nxt_http_variables.c:nxt_array_init Unexecuted instantiation: nxt_application.c:nxt_array_init Unexecuted instantiation: nxt_external.c:nxt_array_init Unexecuted instantiation: nxt_port_hash.c:nxt_array_init Unexecuted instantiation: nxt_sha1.c:nxt_array_init Unexecuted instantiation: nxt_websocket.c:nxt_array_init Unexecuted instantiation: nxt_http_websocket.c:nxt_array_init Unexecuted instantiation: nxt_h1proto_websocket.c:nxt_array_init Unexecuted instantiation: nxt_fs.c:nxt_array_init Unexecuted instantiation: nxt_http_compression.c:nxt_array_init Unexecuted instantiation: nxt_epoll_engine.c:nxt_array_init Unexecuted instantiation: nxt_poll_engine.c:nxt_array_init Unexecuted instantiation: nxt_select_engine.c:nxt_array_init Unexecuted instantiation: nxt_linux_sendfile.c:nxt_array_init Unexecuted instantiation: nxt_clone.c:nxt_array_init Unexecuted instantiation: nxt_gmtime.c:nxt_array_init Unexecuted instantiation: nxt_time.c:nxt_array_init Unexecuted instantiation: nxt_mem_map.c:nxt_array_init Unexecuted instantiation: nxt_socket.c:nxt_array_init Unexecuted instantiation: nxt_socketpair.c:nxt_array_init Unexecuted instantiation: nxt_socket_msg.c:nxt_array_init Unexecuted instantiation: nxt_credential.c:nxt_array_init Unexecuted instantiation: nxt_isolation.c:nxt_array_init Unexecuted instantiation: nxt_signal.c:nxt_array_init Unexecuted instantiation: nxt_rbtree.c:nxt_array_init Unexecuted instantiation: nxt_var.c:nxt_array_init Unexecuted instantiation: nxt_tstr.c:nxt_array_init Unexecuted instantiation: nxt_file_name.c:nxt_array_init Unexecuted instantiation: nxt_array.c:nxt_array_init Unexecuted instantiation: nxt_list.c:nxt_array_init Unexecuted instantiation: nxt_thread_pool.c:nxt_array_init Unexecuted instantiation: nxt_conn.c:nxt_array_init Unexecuted instantiation: nxt_conn_connect.c:nxt_array_init Unexecuted instantiation: nxt_conn_accept.c:nxt_array_init Unexecuted instantiation: nxt_conn_read.c:nxt_array_init Unexecuted instantiation: nxt_conn_write.c:nxt_array_init Unexecuted instantiation: nxt_conn_close.c:nxt_array_init Unexecuted instantiation: nxt_sockaddr.c:nxt_array_init Unexecuted instantiation: nxt_listen_socket.c:nxt_array_init Unexecuted instantiation: nxt_upstream.c:nxt_array_init Unexecuted instantiation: nxt_upstream_round_robin.c:nxt_array_init Unexecuted instantiation: nxt_http_parse.c:nxt_array_init Unexecuted instantiation: nxt_capability.c:nxt_array_init Unexecuted instantiation: nxt_conf.c:nxt_array_init Unexecuted instantiation: nxt_conf_validation.c:nxt_array_init Unexecuted instantiation: nxt_fs_mount.c:nxt_array_init Unexecuted instantiation: nxt_recvbuf.c:nxt_array_init Unexecuted instantiation: nxt_semaphore.c:nxt_array_init |
28 | | |
29 | | NXT_EXPORT nxt_array_t *nxt_array_create(nxt_mp_t *mp, nxt_uint_t n, |
30 | | size_t size); |
31 | | NXT_EXPORT void nxt_array_destroy(nxt_array_t *array); |
32 | | NXT_EXPORT void *nxt_array_add(nxt_array_t *array); |
33 | | NXT_EXPORT void *nxt_array_zero_add(nxt_array_t *array); |
34 | | NXT_EXPORT void nxt_array_remove(nxt_array_t *array, void *elt); |
35 | | NXT_EXPORT nxt_array_t *nxt_array_copy(nxt_mp_t *mp, nxt_array_t *dst, |
36 | | nxt_array_t *src); |
37 | | |
38 | | #define nxt_array_last(array) \ |
39 | 0 | nxt_pointer_to((array)->elts, (array)->size * ((array)->nelts - 1)) |
40 | | |
41 | | |
42 | | #define nxt_array_reset(array) \ |
43 | | (array)->nelts = 0; |
44 | | |
45 | | |
46 | | #define nxt_array_is_empty(array) \ |
47 | 0 | ((array)->nelts == 0) |
48 | | |
49 | | |
50 | | nxt_inline void * |
51 | | nxt_array_remove_last(nxt_array_t *array) |
52 | 0 | { |
53 | 0 | array->nelts--; |
54 | 0 | return nxt_pointer_to(array->elts, array->size * array->nelts); |
55 | 0 | } Unexecuted instantiation: nxt_basic_fuzz.c:nxt_array_remove_last Unexecuted instantiation: nxt_lib.c:nxt_array_remove_last Unexecuted instantiation: nxt_errno.c:nxt_array_remove_last Unexecuted instantiation: nxt_malloc.c:nxt_array_remove_last Unexecuted instantiation: nxt_file.c:nxt_array_remove_last Unexecuted instantiation: nxt_process.c:nxt_array_remove_last Unexecuted instantiation: nxt_process_title.c:nxt_array_remove_last Unexecuted instantiation: nxt_port_socket.c:nxt_array_remove_last Unexecuted instantiation: nxt_port_memory.c:nxt_array_remove_last Unexecuted instantiation: nxt_port_rpc.c:nxt_array_remove_last Unexecuted instantiation: nxt_port.c:nxt_array_remove_last Unexecuted instantiation: nxt_random.c:nxt_array_remove_last Unexecuted instantiation: nxt_mp.c:nxt_array_remove_last Unexecuted instantiation: nxt_string.c:nxt_array_remove_last Unexecuted instantiation: nxt_utf8.c:nxt_array_remove_last Unexecuted instantiation: nxt_parse.c:nxt_array_remove_last Unexecuted instantiation: nxt_sprintf.c:nxt_array_remove_last Unexecuted instantiation: nxt_log.c:nxt_array_remove_last Unexecuted instantiation: nxt_djb_hash.c:nxt_array_remove_last Unexecuted instantiation: nxt_murmur_hash.c:nxt_array_remove_last Unexecuted instantiation: nxt_lvlhsh.c:nxt_array_remove_last Unexecuted instantiation: nxt_buf.c:nxt_array_remove_last Unexecuted instantiation: nxt_sendbuf.c:nxt_array_remove_last Unexecuted instantiation: nxt_thread.c:nxt_array_remove_last Unexecuted instantiation: nxt_thread_mutex.c:nxt_array_remove_last Unexecuted instantiation: nxt_spinlock.c:nxt_array_remove_last Unexecuted instantiation: nxt_thread_time.c:nxt_array_remove_last Unexecuted instantiation: nxt_time_parse.c:nxt_array_remove_last Unexecuted instantiation: nxt_work_queue.c:nxt_array_remove_last Unexecuted instantiation: nxt_service.c:nxt_array_remove_last Unexecuted instantiation: nxt_log_moderation.c:nxt_array_remove_last Unexecuted instantiation: nxt_event_engine.c:nxt_array_remove_last Unexecuted instantiation: nxt_timer.c:nxt_array_remove_last Unexecuted instantiation: nxt_runtime.c:nxt_array_remove_last Unexecuted instantiation: nxt_main_process.c:nxt_array_remove_last Unexecuted instantiation: nxt_signal_handlers.c:nxt_array_remove_last Unexecuted instantiation: nxt_controller.c:nxt_array_remove_last Unexecuted instantiation: nxt_router.c:nxt_array_remove_last Unexecuted instantiation: nxt_router_access_log.c:nxt_array_remove_last Unexecuted instantiation: nxt_h1proto.c:nxt_array_remove_last Unexecuted instantiation: nxt_status.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_request.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_response.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_error.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_route.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_route_addr.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_rewrite.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_set_headers.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_return.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_static.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_proxy.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_chunk_parse.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_variables.c:nxt_array_remove_last Unexecuted instantiation: nxt_application.c:nxt_array_remove_last Unexecuted instantiation: nxt_external.c:nxt_array_remove_last Unexecuted instantiation: nxt_port_hash.c:nxt_array_remove_last Unexecuted instantiation: nxt_sha1.c:nxt_array_remove_last Unexecuted instantiation: nxt_websocket.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_websocket.c:nxt_array_remove_last Unexecuted instantiation: nxt_h1proto_websocket.c:nxt_array_remove_last Unexecuted instantiation: nxt_fs.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_compression.c:nxt_array_remove_last Unexecuted instantiation: nxt_epoll_engine.c:nxt_array_remove_last Unexecuted instantiation: nxt_poll_engine.c:nxt_array_remove_last Unexecuted instantiation: nxt_select_engine.c:nxt_array_remove_last Unexecuted instantiation: nxt_linux_sendfile.c:nxt_array_remove_last Unexecuted instantiation: nxt_clone.c:nxt_array_remove_last Unexecuted instantiation: nxt_gmtime.c:nxt_array_remove_last Unexecuted instantiation: nxt_time.c:nxt_array_remove_last Unexecuted instantiation: nxt_mem_map.c:nxt_array_remove_last Unexecuted instantiation: nxt_socket.c:nxt_array_remove_last Unexecuted instantiation: nxt_socketpair.c:nxt_array_remove_last Unexecuted instantiation: nxt_socket_msg.c:nxt_array_remove_last Unexecuted instantiation: nxt_credential.c:nxt_array_remove_last Unexecuted instantiation: nxt_isolation.c:nxt_array_remove_last Unexecuted instantiation: nxt_signal.c:nxt_array_remove_last Unexecuted instantiation: nxt_rbtree.c:nxt_array_remove_last Unexecuted instantiation: nxt_var.c:nxt_array_remove_last Unexecuted instantiation: nxt_tstr.c:nxt_array_remove_last Unexecuted instantiation: nxt_file_name.c:nxt_array_remove_last Unexecuted instantiation: nxt_array.c:nxt_array_remove_last Unexecuted instantiation: nxt_list.c:nxt_array_remove_last Unexecuted instantiation: nxt_thread_pool.c:nxt_array_remove_last Unexecuted instantiation: nxt_conn.c:nxt_array_remove_last Unexecuted instantiation: nxt_conn_connect.c:nxt_array_remove_last Unexecuted instantiation: nxt_conn_accept.c:nxt_array_remove_last Unexecuted instantiation: nxt_conn_read.c:nxt_array_remove_last Unexecuted instantiation: nxt_conn_write.c:nxt_array_remove_last Unexecuted instantiation: nxt_conn_close.c:nxt_array_remove_last Unexecuted instantiation: nxt_sockaddr.c:nxt_array_remove_last Unexecuted instantiation: nxt_listen_socket.c:nxt_array_remove_last Unexecuted instantiation: nxt_upstream.c:nxt_array_remove_last Unexecuted instantiation: nxt_upstream_round_robin.c:nxt_array_remove_last Unexecuted instantiation: nxt_http_parse.c:nxt_array_remove_last Unexecuted instantiation: nxt_capability.c:nxt_array_remove_last Unexecuted instantiation: nxt_conf.c:nxt_array_remove_last Unexecuted instantiation: nxt_conf_validation.c:nxt_array_remove_last Unexecuted instantiation: nxt_fs_mount.c:nxt_array_remove_last Unexecuted instantiation: nxt_recvbuf.c:nxt_array_remove_last Unexecuted instantiation: nxt_semaphore.c:nxt_array_remove_last |
56 | | |
57 | | |
58 | | #endif /* _NXT_ARRAY_H_INCLUDED_ */ |