aGrUM  0.16.0
link.h
Go to the documentation of this file.
1 
30 #ifndef GUM_MULTI_DIM_FUNCTION_GRAPH_LINK_H
31 #define GUM_MULTI_DIM_FUNCTION_GRAPH_LINK_H
32 
33 // ============================================================================
34 #include <agrum/agrum.h>
35 // ============================================================================
37 // ============================================================================
38 
39 namespace gum {
40 
50  template < typename T >
51  class Link {
52  public:
53  // ============================================================================
55  // ============================================================================
57 
61  explicit Link(const T& elem);
62 
66  Link(const T& elem, Link< T >* nextLink);
67 
71  ~Link();
72 
76  void* operator new(size_t s);
77 
81  void operator delete(void* p);
82 
84  // ============================================================================
86  // ============================================================================
88 
92  const T& element() const;
93 
97  T& element();
98 
102  const Link< T >* nextLink() const;
103 
107  Link< T >* nextLink();
108 
112  void setNextLink(Link< T >* newLink);
113 
115 
116  private:
119 
122  };
123 
133  template < typename T >
134  class LinkedList {
135  public:
136  // ============================================================================
138  // ============================================================================
140 
141  // ============================================================================
143  // ============================================================================
144  LinkedList();
145 
146  // ============================================================================
148  // ============================================================================
149  ~LinkedList();
150 
151  // ============================================================================
153  // ============================================================================
154  void* operator new(size_t s);
155 
156  // ============================================================================
158  // ============================================================================
159  void operator delete(void* p);
160 
162  // ============================================================================
164  // ============================================================================
166 
170  const Link< T >* list() const;
171 
175  Link< T >* list();
176 
180  void clear();
181 
185  void addLink(const T& elem);
186 
190  void searchAndRemoveLink(const T& elem);
191 
193 
194  private:
197  };
198 
199 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS
200  extern template class Link< Idx >;
201 #endif
202 
203 } // End of namespace gum
204 
206 
207 #endif /* GUM_MULTI_DIM_FUNCTION_GRAPH_LINK_H */
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Copyright 2005-2019 Pierre-Henri WUILLEMIN et Christophe GONZALES (LIP6) {prenom.nom}_at_lip6.fr.
Definition: agrum.h:25
Link< T > * __firstLink
The first link of our list.
Definition: link.h:196
Chain list allocated using the SmallObjectAllocator.
Definition: link.h:134