aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/lib/queue.h
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2024-03-09 15:00:41 -0700
committerJosh Rahm <joshuarahm@gmail.com>2024-03-09 15:00:41 -0700
commit7a7f497b483cd65e340064f23ed1c73425ecba0a (patch)
treed5c99ea22a1e10300d06165f8ac96df6b0dc59e1 /src/nvim/lib/queue.h
parent1b7b916b7631ddf73c38e3a0070d64e4636cb2f3 (diff)
parentade1b12f49c3b3914c74847d791eb90ea90b56b7 (diff)
downloadrneovim-7a7f497b483cd65e340064f23ed1c73425ecba0a.tar.gz
rneovim-7a7f497b483cd65e340064f23ed1c73425ecba0a.tar.bz2
rneovim-7a7f497b483cd65e340064f23ed1c73425ecba0a.zip
Merge remote-tracking branch 'upstream/master' into aucmd_textputpost
Diffstat (limited to 'src/nvim/lib/queue.h')
-rw-r--r--src/nvim/lib/queue.h92
1 files changed, 0 insertions, 92 deletions
diff --git a/src/nvim/lib/queue.h b/src/nvim/lib/queue.h
deleted file mode 100644
index 40769e44b5..0000000000
--- a/src/nvim/lib/queue.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Queue implemented by circularly-linked list.
-//
-// Adapted from libuv. Simpler and more efficient than klist.h for implementing
-// queues that support arbitrary insertion/removal.
-//
-// Copyright (c) 2013, Ben Noordhuis <info@bnoordhuis.nl>
-//
-// Permission to use, copy, modify, and/or distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-#pragma once
-
-#include <stddef.h>
-
-#include "nvim/func_attr.h"
-
-typedef struct _queue {
- struct _queue *next;
- struct _queue *prev;
-} QUEUE;
-
-// Public macros.
-#define QUEUE_DATA(ptr, type, field) \
- ((type *)((char *)(ptr) - offsetof(type, field)))
-
-// Important note: the node currently being processed can be safely deleted.
-// otherwise, mutating the list while QUEUE_FOREACH is iterating over its
-// elements results in undefined behavior.
-#define QUEUE_FOREACH(q, h, code) \
- (q) = (h)->next; \
- while ((q) != (h)) { \
- QUEUE *next = q->next; \
- code \
- (q) = next; \
- }
-
-// ffi.cdef is unable to swallow `bool` in place of `int` here.
-static inline int QUEUE_EMPTY(const QUEUE *const q)
- FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
-{
- return q == q->next;
-}
-
-#define QUEUE_HEAD(q) (q)->next
-
-static inline void QUEUE_INIT(QUEUE *const q) FUNC_ATTR_ALWAYS_INLINE
-{
- q->next = q;
- q->prev = q;
-}
-
-static inline void QUEUE_ADD(QUEUE *const h, QUEUE *const n)
- FUNC_ATTR_ALWAYS_INLINE
-{
- h->prev->next = n->next;
- n->next->prev = h->prev;
- h->prev = n->prev;
- h->prev->next = h;
-}
-
-static inline void QUEUE_INSERT_HEAD(QUEUE *const h, QUEUE *const q)
- FUNC_ATTR_ALWAYS_INLINE
-{
- q->next = h->next;
- q->prev = h;
- q->next->prev = q;
- h->next = q;
-}
-
-static inline void QUEUE_INSERT_TAIL(QUEUE *const h, QUEUE *const q)
- FUNC_ATTR_ALWAYS_INLINE
-{
- q->next = h;
- q->prev = h->prev;
- q->prev->next = q;
- h->prev = q;
-}
-
-static inline void QUEUE_REMOVE(QUEUE *const q) FUNC_ATTR_ALWAYS_INLINE
-{
- q->prev->next = q->next;
- q->next->prev = q->prev;
-}