Changes to attempt to silence bcc64x
[ACE_TAO.git] / ACE / ace / Intrusive_List_Node.h
blob73506d48ba70382d25aa493a1adb8c4c054ac5e6
1 // -*- C++ -*-
3 //=============================================================================
4 /**
5 * @file Intrusive_List_Node.h
7 * @author Carlos O'Ryan <coryan@uci.edu>
8 */
9 //=============================================================================
11 #ifndef ACE_INTRUSIVE_LIST_NODE_H
12 #define ACE_INTRUSIVE_LIST_NODE_H
13 #include /**/ "ace/pre.h"
15 #include /**/ "ace/config-lite.h"
17 #if !defined (ACE_LACKS_PRAGMA_ONCE)
18 # pragma once
19 #endif /* ACE_LACKS_PRAGMA_ONCE */
21 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
23 /**
24 * @class ACE_Intrusive_List_Node
26 * @brief Implement the requirements for ACE_Intrusive_List
28 * The class should be used as follows:
30 * class My_Object : public ACE_Intrusive_List_Node<My_Object> {<BR>
31 * ....<BR>
32 * };<BR>
34 * However, ACE is supported on platforms that would surely get
35 * confused using such templates, the class is provided as a helper
36 * for our lucky users that only need portability to modern C++
37 * compilers.
39 template <class T>
40 class ACE_Intrusive_List_Node
42 public:
43 /** @name Accesors and modifiers to the next and previous pointers
46 //@{
47 T *prev () const;
48 void prev (T *);
49 T *next () const;
50 void next (T *);
51 //@}
53 protected:
54 /// Constructor
55 /**
56 * The constructor is protected, because only derived classes should
57 * be instantiated.
59 ACE_Intrusive_List_Node () = default;
61 private:
62 /// Head and tail of the list
63 T *prev_ {};
64 T *next_ {};
67 ACE_END_VERSIONED_NAMESPACE_DECL
69 #if defined (__ACE_INLINE__)
70 #include "ace/Intrusive_List_Node.inl"
71 #endif /* __ACE_INLINE__ */
73 #include "ace/Intrusive_List_Node.cpp"
75 #include /**/ "ace/post.h"
76 #endif /* ACE_INTRUSIVE_LIST_NODE_H */