X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibmdb%2Fmidl.h;h=beafb097c0b2355f197e8cb0707475d4da512043;hb=c7fe1f466e8bfcac0c9169c741710c76807a11ba;hp=cf4a2b2924e196a486f123ad41326a8a378d750c;hpb=92a63ff79026fa3f2373cde4bb6793f132b8f287;p=openldap diff --git a/libraries/libmdb/midl.h b/libraries/libmdb/midl.h index cf4a2b2924..beafb097c0 100644 --- a/libraries/libmdb/midl.h +++ b/libraries/libmdb/midl.h @@ -11,7 +11,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2000-2011 The OpenLDAP Foundation. + * Copyright 2000-2012 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -36,8 +36,7 @@ * @{ */ /** A generic ID number. These were entryIDs in back-bdb. - * It should be the largest integer type supported on a machine. - * It should be equal to the size of a pointer. + * Preferably it should have the same size as a pointer. */ typedef size_t ID; @@ -111,12 +110,37 @@ typedef ID *IDL; int mdb_midl_insert( IDL ids, ID id ); #endif + /** Allocate an IDL. + * Allocates memory for an IDL of a default size. + * @return IDL on success, NULL on failure. + */ +IDL mdb_midl_alloc(); + + /** Free an IDL. + * @param[in] ids The IDL to free. + */ +void mdb_midl_free(IDL ids); + + /** Shrink an IDL. + * Return the IDL to the default size if it has grown larger. + * @param[in,out] idp Address of the IDL to shrink. + * @return 0 on no change, non-zero if shrunk. + */ +int mdb_midl_shrink(IDL *idp); + /** Append an ID onto an IDL. - * @param[in,out] ids The IDL to append to. + * @param[in,out] idp Address of the IDL to append to. * @param[in] id The ID to append. - * @return 0 on success, -2 if the IDL is too large. + * @return 0 on success, -1 if the IDL is too large. + */ +int mdb_midl_append( IDL *idp, ID id ); + + /** Append an IDL onto an IDL. + * @param[in,out] idp Address of the IDL to append to. + * @param[in] app The IDL to append. + * @return 0 on success, -1 if the IDL is too large. */ -int mdb_midl_append( IDL ids, ID id ); +int mdb_midl_append_list( IDL *idp, IDL app ); /** Sort an IDL. * @param[in,out] ids The IDL to sort. @@ -148,7 +172,7 @@ unsigned mdb_mid2l_search( ID2L ids, ID id ); /** Insert an ID2 into a ID2L. * @param[in,out] ids The ID2L to insert into. * @param[in] id The ID2 to insert. - * @return 0 on success, -1 if the ID was already present in the MIDL2. + * @return 0 on success, -1 if the ID was already present in the ID2L. */ int mdb_mid2l_insert( ID2L ids, ID2 *id );