]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_update_policy.hpp
update
[l4.git] / l4 / pkg / libstdc++-v3 / contrib / libstdc++-v3-4.1.0 / docs / html / ext / pb_assoc / sample_update_policy.hpp
1 /** \r
2 * @file sample_update_policy.hpp\r
3 * Contains a sample policy for list update containers.\r
4\r
5 * Copyright Ami Tavory, IBM-HRL, 2004.\r
6\r
7 * Permission to use, copy, modify, sell, and distribute this software\r
8 *       is hereby granted without fee, provided that the above copyright notice\r
9 *       appears in all copies, and that both that copyright notice and this\r
10 *       permission notice appear in supporting documentation.\r
11 *\r
12 * None of the above authors, nor IBM Haifa Research Laboratories, make any\r
13 *       representation about the suitability of this software for any\r
14 *       purpose. It is provided "as is" without express or implied warranty.\r
15 **/\r
16 \r
17 \r
18 #ifndef SAMPLE_UPDATE_POLICY_HPP\r
19 #define SAMPLE_UPDATE_POLICY_HPP\r
20 \r
21 \r
22 /**\r
23 * <class\r
24 *       description = "A sample list-update policy."\r
25 *  comment = "This class serves to show the interface a list update functor\r
26 *       needs to support.">\r
27 **/\r
28 class sample_update_policy\r
29 {\r
30 /**\r
31 *******************************************************************************\r
32 *******************************************************************************\r
33 * <public_methods_group>\r
34 **/\r
35 public:\r
36         /**\r
37         ***************************************************************************\r
38         ***************************************************************************\r
39         ** <group description = "Constructors, destructor, and related.">\r
40         **/\r
41 \r
42         /*\r
43         * <fn description = "Default constructor."\r
44         *       comment = "Must be default constructible.">\r
45         **/\r
46                 sample_update_policy\r
47                 ();\r
48         /** </fn> **/\r
49 \r
50         /*\r
51         * <fn description = "Copy constructor."\r
52         *       comment = "Must be copy constructible.">\r
53         **/\r
54                 sample_update_policy\r
55                 (const sample_update_policy &r_other);\r
56         /** </fn> **/\r
57 \r
58         /*\r
59         * <fn description = "Swaps content."\r
60         *       comment = "Must be swappable (if there is such a word).">\r
61         **/\r
62         inline void\r
63                 swap\r
64                 (sample_update_policy &r_other);\r
65         /** </fn> **/\r
66 \r
67         /*\r
68         ***************************************************************************\r
69         ***************************************************************************\r
70         * </group>\r
71         **/\r
72 \r
73 /**\r
74 *******************************************************************************\r
75 *******************************************************************************\r
76 * </public_methods_group>\r
77 **/\r
78 \r
79 \r
80 /**\r
81 *******************************************************************************\r
82 *******************************************************************************\r
83 * <protected_types_group>\r
84 **/\r
85 protected:\r
86 \r
87         /**\r
88         ***************************************************************************\r
89         ***************************************************************************\r
90         ** <group description = "Metadata definitions.">\r
91         **/\r
92 \r
93         /**\r
94         * <tdef description = "Metadata on which this functor operates."\r
95         *       comment = "The class must declare the metadata type on which it\r
96         *               operates; the list-update based containers will append to \r
97         *               each node an object of this type.">\r
98         **/\r
99         typedef\r
100                 some_metadata_type\r
101                 metadata_type;\r
102         /** </tdef> **/\r
103 \r
104 \r
105         /*\r
106         ***************************************************************************\r
107         ***************************************************************************\r
108         * </group>\r
109         **/\r
110 \r
111 /**\r
112 *******************************************************************************\r
113 *******************************************************************************\r
114 * </protected_types_group>\r
115 **/\r
116 \r
117 \r
118 /**\r
119 *******************************************************************************\r
120 *******************************************************************************\r
121 * <protected_methods_group>\r
122 **/\r
123 protected:\r
124         /**\r
125         ***************************************************************************\r
126         ***************************************************************************\r
127         ** <group description = "Metadata operations.">\r
128         **/\r
129 \r
130         /*\r
131         * <fn description = "Creates a metadata object."\r
132         *       comment = "A list-update based container object  will call this\r
133         *               method to create a metadata type when a node is created.">\r
134         **/\r
135         metadata_type\r
136                 operator()\r
137                 () const;\r
138         /** </fn> **/\r
139 \r
140         /*\r
141         * <fn description = "Decides whether a metadata object should be \r
142         *       moved to the front of the list. A list-update based containers object \r
143         *       will call this\r
144         *       method to decide whether to move a node to the front of \r
145         *       the list. The method shoule return true if the node should\r
146         *       be moved to the front of the list."\r
147         *       comment = "@@sample_update_policy_metadata_reference">\r
148         **/\r
149         bool \r
150                 operator()\r
151                 (metadata_reference r_data) const;\r
152         /** </fn> **/\r
153 \r
154         /*\r
155         ***************************************************************************\r
156         ***************************************************************************\r
157         * </group>\r
158         **/\r
159 \r
160 /**\r
161 *******************************************************************************\r
162 *******************************************************************************\r
163 * </protected_methods_group>\r
164 **/\r
165 };\r
166 /**\r
167 * </class>\r
168 **/\r
169 \r
170 \r
171 #endif // #ifndef SAMPLE_UPDATE_POLICY_HPP\r