OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libstdc++-v3/] [docs/] [html/] [ext/] [pb_assoc/] [sample_resize_policy.hpp] - Blame information for rev 20

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 20 jlechner
/**
2
* @file sample_resize_policy.hpp
3
* Contains a sample resize policy for hash tables.
4
*
5
* Copyright Ami Tavory, IBM-HRL, 2004.
6
*
7
* Permission to use, copy, modify, sell, and distribute this software
8
*   is hereby granted without fee, provided that the above copyright notice
9
*   appears in all copies, and that both that copyright notice and this
10
*   permission notice appear in supporting documentation,
11
*
12
* None of the above authors, nor IBM Haifa Research Laboratories, make any
13
*   representation about the suitability of this software for any
14
*   purpose. It is provided "as is" without express or implied warranty.
15
**/
16
 
17
 
18
#ifndef SAMPLE_RESIZE_POLICY_HPP
19
#define SAMPLE_RESIZE_POLICY_HPP
20
 
21
 
22
/**
23
* <class
24
*   description = "A sample resize policy."
25
*  comment = "This class serves to show the interface a resize policy
26
*       needs to support.">
27
**/
28
class sample_resize_policy
29
{
30
/**
31
*******************************************************************************
32
*******************************************************************************
33
* <public_methods_group>
34
**/
35
public:
36
        /**
37
        ***************************************************************************
38
        ***************************************************************************
39
        ** <group description = "Constructors, destructor, and related.">
40
        **/
41
 
42
        /*
43
        * <fn description = "Default constructor."
44
        *       comment = "Must be default constructible.">
45
        **/
46
                sample_resize_policy
47
                ();
48
        /** </fn> **/
49
 
50
        /*
51
        * <fn description = "Copy constructor."
52
        *       comment = "Must be copy constructible.">
53
        **/
54
                sample_range_hashing
55
                (const sample_resize_policy &r_other);
56
        /** </fn> **/
57
 
58
        /*
59
        * <fn description = "Swaps content."
60
        *       comment = "Must be swappable (if there is such a word).">
61
        **/
62
        inline void
63
                swap
64
                (sample_resize_policy &r_other);
65
        /** </fn> **/
66
 
67
        /*
68
        ***************************************************************************
69
        ***************************************************************************
70
        * </group>
71
        **/
72
 
73
 
74
/**
75
*******************************************************************************
76
*******************************************************************************
77
* </public_methods_group>
78
**/
79
 
80
 
81
/**
82
*******************************************************************************
83
*******************************************************************************
84
* <protected_methods_group>
85
**/
86
protected:
87
        /**
88
        ***************************************************************************
89
        ***************************************************************************
90
        ** <group description = "Insert search notifications."
91
        **  comment = "Notifications called during an insert operation.">
92
        **/
93
 
94
        /*
95
        * <fn description = "Notifies a search started.">
96
        **/
97
        inline void
98
                notify_insert_search_start
99
                ();
100
        /** </fn> **/
101
 
102
        /*
103
        * <fn description = "Notifies a search encountered a collision.">
104
        **/
105
        inline void
106
                notify_insert_search_collision
107
                ();
108
        /** </fn> **/
109
 
110
        /*
111
        * <fn description = "Notifies a search ended.">
112
        **/
113
        inline void
114
                notify_insert_search_end
115
                ();
116
        /** </fn> **/
117
 
118
        /*
119
        ***************************************************************************
120
        ***************************************************************************
121
        * </group>
122
        **/
123
 
124
 
125
        /**
126
        ***************************************************************************
127
        ***************************************************************************
128
        ** <group description = "Find search notifications."
129
        **  comment = "Notifications called during a find operation.">
130
        **/
131
 
132
        /*
133
        * <fn description = "Notifies a search started.">
134
        **/
135
        inline void
136
                notify_find_search_start
137
                ();
138
        /** </fn> **/
139
 
140
        /*
141
        * <fn description = "Notifies a search encountered a collision.">
142
        **/
143
        inline void
144
                notify_find_search_collision
145
                ();
146
        /** </fn> **/
147
 
148
        /*
149
        * <fn description = "Notifies a search ended.">
150
        **/
151
        inline void
152
                notify_find_search_end
153
                ();
154
        /** </fn> **/
155
 
156
        /*
157
        ***************************************************************************
158
        ***************************************************************************
159
        * </group>
160
        **/
161
 
162
 
163
        /**
164
        ***************************************************************************
165
        ***************************************************************************
166
        ** <group description = "Erase search notifications."
167
        **  comment = "Notifications called during an insert operation.">
168
        **/
169
 
170
        /*
171
        * <fn description = "Notifies a search started.">
172
        **/
173
        inline void
174
                notify_erase_search_start
175
                ();
176
        /** </fn> **/
177
 
178
        /*
179
        * <fn description = "Notifies a search encountered a collision.">
180
        **/
181
        inline void
182
                notify_erase_search_collision
183
                ();
184
        /** </fn> **/
185
 
186
        /*
187
        * <fn description = "Notifies a search ended.">
188
        **/
189
        inline void
190
                notify_erase_search_end
191
                ();
192
        /** </fn> **/
193
 
194
        /*
195
        ***************************************************************************
196
        ***************************************************************************
197
        * </group>
198
        **/
199
 
200
 
201
        /**
202
        ***************************************************************************
203
        ***************************************************************************
204
        ** <group description = "Content change notifications."
205
        **  comment = "Notifications called when the content of the table
206
        **        changes in a way that can affect the resize policy.">
207
        **/
208
 
209
        /*
210
        * <fn description = "Notifies an element was inserted.">
211
        **/
212
        inline void
213
                notify_inserted
214
                (size_type num_e);
215
        /** </fn> **/
216
 
217
        /*
218
        * <fn description = "Notifies an element was erased.">
219
        **/
220
        inline void
221
                notify_erased
222
                (size_type num_e);
223
        /** </fn> **/
224
 
225
        /*
226
        * <fn description = "Notifies the table was cleared.">
227
        **/
228
        void
229
                notify_cleared
230
                ();
231
        /** </fn> **/
232
 
233
        /*
234
        ***************************************************************************
235
        ***************************************************************************
236
        * </group>
237
        **/
238
 
239
 
240
        /**
241
        ***************************************************************************
242
        ***************************************************************************
243
        ** <group description = "Size change notifications."
244
        **  comment = "Notifications called when the table changes size.">
245
        **/
246
 
247
        /*
248
        * <fn description = "Notifies the table was resized to new_size.">
249
        **/
250
        void
251
                notify_resized
252
                (size_type new_size);
253
        /** </fn> **/
254
 
255
        /*
256
        ***************************************************************************
257
        ***************************************************************************
258
        * </group>
259
        **/
260
 
261
 
262
        /**
263
        ***************************************************************************
264
        ***************************************************************************
265
        ** <group description = "Queries."
266
        **  comment = "Called to query whether/how to resize.">
267
        **/
268
 
269
        /*
270
        * <fn description = "Queries initial size.">
271
        **/
272
        size_type
273
                get_init_size
274
                () const;
275
        /** </fn> **/
276
 
277
        /*
278
        * <fn description = "Queries whether a resize is needed.">
279
        **/
280
        inline bool
281
                is_resize_needed
282
                () const;
283
        /** </fn> **/
284
 
285
        /*
286
        * <fn description = "Queries what the new size should be.">
287
        **/
288
        size_type
289
                get_new_size
290
                (size_type size, size_type num_used_e) const;
291
        /** </fn> **/
292
 
293
        /*
294
        ***************************************************************************
295
        ***************************************************************************
296
        * </group>
297
        **/
298
 
299
/**
300
*******************************************************************************
301
*******************************************************************************
302
* </protected_methods_group>
303
**/
304
};
305
/**
306
* </class>
307
**/
308
 
309
 
310
#endif // #ifndef SAMPLE_RESIZE_POLICY_HPP

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.