Squid Web Cache master
Loading...
Searching...
No Matches
wordlist.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 1996-2025 The Squid Software Foundation and contributors
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9#ifndef SQUID_SRC_WORDLIST_H
10#define SQUID_SRC_WORDLIST_H
11
12#include "globals.h"
13#include "sbuf/List.h"
14
15#include <iterator>
16
17class wordlist;
18
21{
22public:
23 using value_type = const char *;
24
25 explicit WordlistIterator(const wordlist * const wl): w(wl) {}
26
27 auto operator ==(const WordlistIterator &rhs) const { return this->w == rhs.w; }
28 auto operator !=(const WordlistIterator &rhs) const { return this->w != rhs.w; }
29
30 inline value_type operator *() const;
32
33private:
34 const wordlist *w;
35};
36
42{
44 friend char *wordlistChopHead(wordlist **);
45
46public:
48
49 wordlist() : key(nullptr), next(nullptr) {}
50 // create a new wordlist node, with a copy of k as key
51 explicit wordlist(const char *k) : key(xstrdup(k)), next(nullptr) {}
52
53 wordlist(const wordlist &) = delete;
54 wordlist &operator=(const wordlist &) = delete;
55
56 auto begin() const { return const_iterator(this); }
57 auto end() const { return const_iterator(nullptr); }
58
59 char *key;
61
62private:
63 // does not free data members.
64 ~wordlist() = default;
65};
66
67class MemBuf;
68
73const char *wordlistAdd(wordlist **, const char *);
74
79void wordlistCat(const wordlist *, MemBuf *);
80
83
91
92inline WordlistIterator &
94{
95 w = w->next;
96 return *this;
97}
98
101{
102 return w->key;
103}
104
105#endif /* SQUID_SRC_WORDLIST_H */
106
minimal iterator for read-only traversal of wordlist objects
Definition wordlist.h:21
WordlistIterator(const wordlist *const wl)
Definition wordlist.h:25
const wordlist * w
Definition wordlist.h:34
WordlistIterator & operator++()
Definition wordlist.h:93
auto operator!=(const WordlistIterator &rhs) const
Definition wordlist.h:28
const char * value_type
Definition wordlist.h:23
value_type operator*() const
Definition wordlist.h:100
auto operator==(const WordlistIterator &rhs) const
Definition wordlist.h:27
MEMPROXY_CLASS(wordlist)
auto end() const
Definition wordlist.h:57
WordlistIterator const_iterator
Definition wordlist.h:47
wordlist(const char *k)
Definition wordlist.h:51
wordlist()
Definition wordlist.h:49
char * key
Definition wordlist.h:59
auto begin() const
Definition wordlist.h:56
~wordlist()=default
wordlist & operator=(const wordlist &)=delete
friend char * wordlistChopHead(wordlist **)
Definition wordlist.cc:42
wordlist * next
Definition wordlist.h:60
wordlist(const wordlist &)=delete
#define xstrdup
void wordlistDestroy(wordlist **)
destroy a wordlist
Definition wordlist.cc:16
void wordlistCat(const wordlist *, MemBuf *)
Definition wordlist.cc:35
const char * wordlistAdd(wordlist **, const char *)
Definition wordlist.cc:25
char * wordlistChopHead(wordlist **)
Definition wordlist.cc:42