|
1 /* |
|
2 * Copyright 1998-2003 Sun Microsystems, Inc. All Rights Reserved. |
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
4 * |
|
5 * This code is free software; you can redistribute it and/or modify it |
|
6 * under the terms of the GNU General Public License version 2 only, as |
|
7 * published by the Free Software Foundation. Sun designates this |
|
8 * particular file as subject to the "Classpath" exception as provided |
|
9 * by Sun in the LICENSE file that accompanied this code. |
|
10 * |
|
11 * This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 * version 2 for more details (a copy is included in the LICENSE file that |
|
15 * accompanied this code). |
|
16 * |
|
17 * You should have received a copy of the GNU General Public License version |
|
18 * 2 along with this work; if not, write to the Free Software Foundation, |
|
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 * |
|
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
|
22 * CA 95054 USA or visit www.sun.com if you need additional information or |
|
23 * have any questions. |
|
24 */ |
|
25 |
|
26 #ifndef JDWP_BAG_H |
|
27 #define JDWP_BAG_H |
|
28 |
|
29 #include <jni.h> |
|
30 |
|
31 /* Declare general routines for manipulating a bag data structure. |
|
32 * Synchronized use is the responsibility of caller. |
|
33 */ |
|
34 |
|
35 struct bag; |
|
36 |
|
37 /* Must be used to create a bag. itemSize is the size |
|
38 * of the items stored in the bag. initialAllocation is a hint |
|
39 * for the initial number of items to allocate. Returns the |
|
40 * allocated bag, returns NULL if out of memory. |
|
41 */ |
|
42 struct bag *bagCreateBag(int itemSize, int initialAllocation); |
|
43 |
|
44 /* |
|
45 * Copy bag contents to another new bag. The new bag is returned, or |
|
46 * NULL if out of memory. |
|
47 */ |
|
48 struct bag *bagDup(struct bag *); |
|
49 |
|
50 /* Destroy the bag and reclaim the space it uses. |
|
51 */ |
|
52 void bagDestroyBag(struct bag *theBag); |
|
53 |
|
54 /* Find 'key' in bag. Assumes first entry in item is a pointer. |
|
55 * Return found item pointer, NULL if not found. |
|
56 */ |
|
57 void *bagFind(struct bag *theBag, void *key); |
|
58 |
|
59 /* Add space for an item in the bag. |
|
60 * Return allocated item pointer, NULL if no memory. |
|
61 */ |
|
62 void *bagAdd(struct bag *theBag); |
|
63 |
|
64 /* Delete specified item from bag. |
|
65 * Does no checks. |
|
66 */ |
|
67 void bagDelete(struct bag *theBag, void *condemned); |
|
68 |
|
69 /* Delete all items from the bag. |
|
70 */ |
|
71 void bagDeleteAll(struct bag *theBag); |
|
72 |
|
73 /* Return the count of items stored in the bag. |
|
74 */ |
|
75 int bagSize(struct bag *theBag); |
|
76 |
|
77 /* Enumerate over the items in the bag, calling 'func' for |
|
78 * each item. The function is passed the item and the user |
|
79 * supplied 'arg'. Abort the enumeration if the function |
|
80 * returns FALSE. Return TRUE if the enumeration completed |
|
81 * successfully and FALSE if it was aborted. |
|
82 * Addition and deletion during enumeration is not supported. |
|
83 */ |
|
84 typedef jboolean (*bagEnumerateFunction)(void *item, void *arg); |
|
85 |
|
86 jboolean bagEnumerateOver(struct bag *theBag, |
|
87 bagEnumerateFunction func, void *arg); |
|
88 |
|
89 #endif |