diff options
| author | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
|---|---|---|
| committer | The Android Open Source Project <initial-contribution@android.com> | 2008-10-21 07:00:00 -0700 |
| commit | 2ad60cfc28e14ee8f0bb038720836a4696c478ad (patch) | |
| tree | 19f1bb30ab7ff96f1e3e59a60b61dcd2aeddda93 /vm/PointerSet.h | |
| download | android_dalvik-2ad60cfc28e14ee8f0bb038720836a4696c478ad.tar.gz android_dalvik-2ad60cfc28e14ee8f0bb038720836a4696c478ad.tar.bz2 android_dalvik-2ad60cfc28e14ee8f0bb038720836a4696c478ad.zip | |
Initial Contribution
Diffstat (limited to 'vm/PointerSet.h')
| -rw-r--r-- | vm/PointerSet.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/vm/PointerSet.h b/vm/PointerSet.h new file mode 100644 index 000000000..acc56f9bc --- /dev/null +++ b/vm/PointerSet.h @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* + * Maintain an expanding set of unique pointer values. The set is + * kept in sorted order. + */ +#ifndef _DALVIK_POINTERSET +#define _DALVIK_POINTERSET + +struct PointerSet; /* private */ +typedef struct PointerSet PointerSet; + +/* + * Allocate a new PointerSet. + * + * Returns NULL on failure. + */ +PointerSet* dvmPointerSetAlloc(int initialSize); + +/* + * Free up a PointerSet. + */ +void dvmPointerSetFree(PointerSet* pSet); + +/* + * Get the number of pointers currently stored in the list. + */ +int dvmPointerSetGetCount(const PointerSet* pSet); + +/* + * Get the Nth entry from the list. + */ +const void* dvmPointerSetGetEntry(const PointerSet* pSet, int i); + +/* + * Insert a new entry into the list. If it already exists, this returns + * without doing anything. + */ +void dvmPointerSetAddEntry(PointerSet* pSet, const void* ptr); + +/* + * Returns "true" if the element was successfully removed. + */ +bool dvmPointerSetRemoveEntry(PointerSet* pSet, const void* ptr); + +/* + * Returns "true" if the value appears, "false" otherwise. If "pIndex" is + * non-NULL, it will receive the matching index or the index of a nearby + * element. + */ +bool dvmPointerSetHas(const PointerSet* pSet, const void* ptr, int* pIndex); + +/* + * Find an entry in the set. Returns the index, or -1 if not found. + */ +INLINE int dvmPointerSetFind(const PointerSet* pSet, const void* ptr) { + int idx; + if (!dvmPointerSetHas(pSet, ptr, &idx)) + idx = -1; + return idx; +} + +/* + * Print the list contents to stdout. For debugging. + */ +void dvmPointerSetDump(const PointerSet* pSet); + +#endif /*_DALVIK_POINTERSET*/ |
