P4C
The P4 Compiler
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
slist.h
1
17
18#ifndef BACKENDS_TOFINO_BF_ASM_SLIST_H_
19#define BACKENDS_TOFINO_BF_ASM_SLIST_H_
20
21template <class T>
22class slist {
23 const slist *next;
24 T value;
25
26 public:
27 explicit slist(T v) : next(nullptr), value(v) {}
28 slist(T v, const slist *n) : next(n), value(v) {}
29 typedef T value_type;
30 class iterator : public std::iterator<std::forward_iterator_tag, T> {
31 friend class slist;
32 const slist *ptr;
33 iterator() : ptr(nullptr) {}
34 explicit iterator(const slist *p) : ptr(p) {}
35
36 public:
37 iterator &operator++() {
38 ptr = ptr->next;
39 return *this;
40 }
41 bool operator==(const iterator &a) const { return ptr == a.ptr; }
42 bool operator!=(const iterator &a) const { return ptr != a.ptr; }
43 const T &operator*() const { return ptr->value; }
44 const T *operator->() const { return &ptr->value; }
45 };
46 typedef iterator const_iterator;
47
48 iterator begin() const { return iterator(this); }
49 iterator end() const { return iterator(); }
50};
51
52#endif /* BACKENDS_TOFINO_BF_ASM_SLIST_H_ */
Definition slist.h:30