aboutsummaryrefslogtreecommitdiff
path: root/src/include/gnunet_container_lib.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/gnunet_container_lib.h')
-rw-r--r--src/include/gnunet_container_lib.h655
1 files changed, 324 insertions, 331 deletions
diff --git a/src/include/gnunet_container_lib.h b/src/include/gnunet_container_lib.h
index 8796fdcb6..d811995ff 100644
--- a/src/include/gnunet_container_lib.h
+++ b/src/include/gnunet_container_lib.h
@@ -16,7 +16,7 @@
16 along with this program. If not, see <http://www.gnu.org/licenses/>. 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
18 SPDX-License-Identifier: AGPL3.0-or-later 18 SPDX-License-Identifier: AGPL3.0-or-later
19*/ 19 */
20 20
21/** 21/**
22 * @author Christian Grothoff 22 * @author Christian Grothoff
@@ -67,10 +67,10 @@
67 * #GNUNET_NO if compression did not help 67 * #GNUNET_NO if compression did not help
68 */ 68 */
69int 69int
70GNUNET_try_compression (const char *data, 70GNUNET_try_compression(const char *data,
71 size_t old_size, 71 size_t old_size,
72 char **result, 72 char **result,
73 size_t *new_size); 73 size_t *new_size);
74 74
75 75
76/** 76/**
@@ -84,7 +84,7 @@ GNUNET_try_compression (const char *data,
84 * @return NULL on error, buffer of @a output_size decompressed bytes otherwise 84 * @return NULL on error, buffer of @a output_size decompressed bytes otherwise
85 */ 85 */
86char * 86char *
87GNUNET_decompress (const char *input, size_t input_size, size_t output_size); 87GNUNET_decompress(const char *input, size_t input_size, size_t output_size);
88 88
89 89
90#if HAVE_EXTRACTOR_H 90#if HAVE_EXTRACTOR_H
@@ -99,8 +99,7 @@ GNUNET_decompress (const char *input, size_t input_size, size_t output_size);
99 * Enumeration defining various sources of keywords. See also 99 * Enumeration defining various sources of keywords. See also
100 * http://dublincore.org/documents/1998/09/dces/ 100 * http://dublincore.org/documents/1998/09/dces/
101 */ 101 */
102enum EXTRACTOR_MetaType 102enum EXTRACTOR_MetaType {
103{
104 EXTRACTOR_METATYPE_RESERVED = 0, 103 EXTRACTOR_METATYPE_RESERVED = 0,
105 EXTRACTOR_METATYPE_MIMETYPE = 1, 104 EXTRACTOR_METATYPE_MIMETYPE = 1,
106 EXTRACTOR_METATYPE_FILENAME = 2, 105 EXTRACTOR_METATYPE_FILENAME = 2,
@@ -124,14 +123,12 @@ enum EXTRACTOR_MetaType
124 EXTRACTOR_METATYPE_ORIGINAL_TITLE = 162, 123 EXTRACTOR_METATYPE_ORIGINAL_TITLE = 162,
125 EXTRACTOR_METATYPE_GNUNET_FULL_DATA = 174, 124 EXTRACTOR_METATYPE_GNUNET_FULL_DATA = 174,
126 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME = 180, 125 EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME = 180,
127
128}; 126};
129 127
130/** 128/**
131 * Format in which the extracted meta data is presented. 129 * Format in which the extracted meta data is presented.
132 */ 130 */
133enum EXTRACTOR_MetaFormat 131enum EXTRACTOR_MetaFormat {
134{
135 /** 132 /**
136 * Format is unknown. 133 * Format is unknown.
137 */ 134 */
@@ -231,9 +228,9 @@ typedef int (*GNUNET_CONTAINER_HashCodeIterator) (void *cls,
231 * @return the bloomfilter 228 * @return the bloomfilter
232 */ 229 */
233struct GNUNET_CONTAINER_BloomFilter * 230struct GNUNET_CONTAINER_BloomFilter *
234GNUNET_CONTAINER_bloomfilter_load (const char *filename, 231GNUNET_CONTAINER_bloomfilter_load(const char *filename,
235 size_t size, 232 size_t size,
236 unsigned int k); 233 unsigned int k);
237 234
238 235
239/** 236/**
@@ -251,9 +248,9 @@ GNUNET_CONTAINER_bloomfilter_load (const char *filename,
251 * @return the bloomfilter 248 * @return the bloomfilter
252 */ 249 */
253struct GNUNET_CONTAINER_BloomFilter * 250struct GNUNET_CONTAINER_BloomFilter *
254GNUNET_CONTAINER_bloomfilter_init (const char *data, 251GNUNET_CONTAINER_bloomfilter_init(const char *data,
255 size_t size, 252 size_t size,
256 unsigned int k); 253 unsigned int k);
257 254
258 255
259/** 256/**
@@ -266,7 +263,7 @@ GNUNET_CONTAINER_bloomfilter_init (const char *data,
266 * @return #GNUNET_SYSERR if the data array of the wrong size 263 * @return #GNUNET_SYSERR if the data array of the wrong size
267 */ 264 */
268int 265int
269GNUNET_CONTAINER_bloomfilter_get_raw_data ( 266GNUNET_CONTAINER_bloomfilter_get_raw_data(
270 const struct GNUNET_CONTAINER_BloomFilter *bf, 267 const struct GNUNET_CONTAINER_BloomFilter *bf,
271 char *data, 268 char *data,
272 size_t size); 269 size_t size);
@@ -281,7 +278,7 @@ GNUNET_CONTAINER_bloomfilter_get_raw_data (
281 * @return #GNUNET_YES if the element is in the filter, #GNUNET_NO if not 278 * @return #GNUNET_YES if the element is in the filter, #GNUNET_NO if not
282 */ 279 */
283int 280int
284GNUNET_CONTAINER_bloomfilter_test ( 281GNUNET_CONTAINER_bloomfilter_test(
285 const struct GNUNET_CONTAINER_BloomFilter *bf, 282 const struct GNUNET_CONTAINER_BloomFilter *bf,
286 const struct GNUNET_HashCode *e); 283 const struct GNUNET_HashCode *e);
287 284
@@ -294,8 +291,8 @@ GNUNET_CONTAINER_bloomfilter_test (
294 * @param e the element 291 * @param e the element
295 */ 292 */
296void 293void
297GNUNET_CONTAINER_bloomfilter_add (struct GNUNET_CONTAINER_BloomFilter *bf, 294GNUNET_CONTAINER_bloomfilter_add(struct GNUNET_CONTAINER_BloomFilter *bf,
298 const struct GNUNET_HashCode *e); 295 const struct GNUNET_HashCode *e);
299 296
300 297
301/** 298/**
@@ -306,8 +303,8 @@ GNUNET_CONTAINER_bloomfilter_add (struct GNUNET_CONTAINER_BloomFilter *bf,
306 * @param e the element to remove 303 * @param e the element to remove
307 */ 304 */
308void 305void
309GNUNET_CONTAINER_bloomfilter_remove (struct GNUNET_CONTAINER_BloomFilter *bf, 306GNUNET_CONTAINER_bloomfilter_remove(struct GNUNET_CONTAINER_BloomFilter *bf,
310 const struct GNUNET_HashCode *e); 307 const struct GNUNET_HashCode *e);
311 308
312 309
313/** 310/**
@@ -318,7 +315,7 @@ GNUNET_CONTAINER_bloomfilter_remove (struct GNUNET_CONTAINER_BloomFilter *bf,
318 * @return copy of bf 315 * @return copy of bf
319 */ 316 */
320struct GNUNET_CONTAINER_BloomFilter * 317struct GNUNET_CONTAINER_BloomFilter *
321GNUNET_CONTAINER_bloomfilter_copy ( 318GNUNET_CONTAINER_bloomfilter_copy(
322 const struct GNUNET_CONTAINER_BloomFilter *bf); 319 const struct GNUNET_CONTAINER_BloomFilter *bf);
323 320
324 321
@@ -331,7 +328,7 @@ GNUNET_CONTAINER_bloomfilter_copy (
331 * @param bf the filter 328 * @param bf the filter
332 */ 329 */
333void 330void
334GNUNET_CONTAINER_bloomfilter_free (struct GNUNET_CONTAINER_BloomFilter *bf); 331GNUNET_CONTAINER_bloomfilter_free(struct GNUNET_CONTAINER_BloomFilter *bf);
335 332
336 333
337/** 334/**
@@ -341,7 +338,7 @@ GNUNET_CONTAINER_bloomfilter_free (struct GNUNET_CONTAINER_BloomFilter *bf);
341 * @return addresses set per element in the bf 338 * @return addresses set per element in the bf
342 */ 339 */
343size_t 340size_t
344GNUNET_CONTAINER_bloomfilter_get_element_addresses ( 341GNUNET_CONTAINER_bloomfilter_get_element_addresses(
345 const struct GNUNET_CONTAINER_BloomFilter *bf); 342 const struct GNUNET_CONTAINER_BloomFilter *bf);
346 343
347 344
@@ -353,7 +350,7 @@ GNUNET_CONTAINER_bloomfilter_get_element_addresses (
353 * @return number of bytes used for the data of the bloom filter 350 * @return number of bytes used for the data of the bloom filter
354 */ 351 */
355size_t 352size_t
356GNUNET_CONTAINER_bloomfilter_get_size ( 353GNUNET_CONTAINER_bloomfilter_get_size(
357 const struct GNUNET_CONTAINER_BloomFilter *bf); 354 const struct GNUNET_CONTAINER_BloomFilter *bf);
358 355
359 356
@@ -364,7 +361,7 @@ GNUNET_CONTAINER_bloomfilter_get_size (
364 * @param bf the filter 361 * @param bf the filter
365 */ 362 */
366void 363void
367GNUNET_CONTAINER_bloomfilter_clear (struct GNUNET_CONTAINER_BloomFilter *bf); 364GNUNET_CONTAINER_bloomfilter_clear(struct GNUNET_CONTAINER_BloomFilter *bf);
368 365
369 366
370/** 367/**
@@ -380,9 +377,9 @@ GNUNET_CONTAINER_bloomfilter_clear (struct GNUNET_CONTAINER_BloomFilter *bf);
380 * @return #GNUNET_OK on success 377 * @return #GNUNET_OK on success
381 */ 378 */
382int 379int
383GNUNET_CONTAINER_bloomfilter_or (struct GNUNET_CONTAINER_BloomFilter *bf, 380GNUNET_CONTAINER_bloomfilter_or(struct GNUNET_CONTAINER_BloomFilter *bf,
384 const char *data, 381 const char *data,
385 size_t size); 382 size_t size);
386 383
387 384
388/** 385/**
@@ -396,7 +393,7 @@ GNUNET_CONTAINER_bloomfilter_or (struct GNUNET_CONTAINER_BloomFilter *bf,
396 * @return #GNUNET_OK on success 393 * @return #GNUNET_OK on success
397 */ 394 */
398int 395int
399GNUNET_CONTAINER_bloomfilter_or2 ( 396GNUNET_CONTAINER_bloomfilter_or2(
400 struct GNUNET_CONTAINER_BloomFilter *bf, 397 struct GNUNET_CONTAINER_BloomFilter *bf,
401 const struct GNUNET_CONTAINER_BloomFilter *to_or); 398 const struct GNUNET_CONTAINER_BloomFilter *to_or);
402 399
@@ -414,11 +411,11 @@ GNUNET_CONTAINER_bloomfilter_or2 (
414 * @param k the new number of #GNUNET_CRYPTO_hash-function to apply per element 411 * @param k the new number of #GNUNET_CRYPTO_hash-function to apply per element
415 */ 412 */
416void 413void
417GNUNET_CONTAINER_bloomfilter_resize (struct GNUNET_CONTAINER_BloomFilter *bf, 414GNUNET_CONTAINER_bloomfilter_resize(struct GNUNET_CONTAINER_BloomFilter *bf,
418 GNUNET_CONTAINER_HashCodeIterator iterator, 415 GNUNET_CONTAINER_HashCodeIterator iterator,
419 void *iterator_cls, 416 void *iterator_cls,
420 size_t size, 417 size_t size,
421 unsigned int k); 418 unsigned int k);
422 419
423 420
424/* ****************** metadata ******************* */ 421/* ****************** metadata ******************* */
@@ -437,7 +434,7 @@ struct GNUNET_CONTAINER_MetaData;
437 * @return empty meta-data container 434 * @return empty meta-data container
438 */ 435 */
439struct GNUNET_CONTAINER_MetaData * 436struct GNUNET_CONTAINER_MetaData *
440GNUNET_CONTAINER_meta_data_create (void); 437GNUNET_CONTAINER_meta_data_create(void);
441 438
442 439
443/** 440/**
@@ -448,7 +445,7 @@ GNUNET_CONTAINER_meta_data_create (void);
448 * @return duplicate meta-data container 445 * @return duplicate meta-data container
449 */ 446 */
450struct GNUNET_CONTAINER_MetaData * 447struct GNUNET_CONTAINER_MetaData *
451GNUNET_CONTAINER_meta_data_duplicate ( 448GNUNET_CONTAINER_meta_data_duplicate(
452 const struct GNUNET_CONTAINER_MetaData *md); 449 const struct GNUNET_CONTAINER_MetaData *md);
453 450
454 451
@@ -459,7 +456,7 @@ GNUNET_CONTAINER_meta_data_duplicate (
459 * @param md what to free 456 * @param md what to free
460 */ 457 */
461void 458void
462GNUNET_CONTAINER_meta_data_destroy (struct GNUNET_CONTAINER_MetaData *md); 459GNUNET_CONTAINER_meta_data_destroy(struct GNUNET_CONTAINER_MetaData *md);
463 460
464 461
465/** 462/**
@@ -474,7 +471,7 @@ GNUNET_CONTAINER_meta_data_destroy (struct GNUNET_CONTAINER_MetaData *md);
474 * @return #GNUNET_YES if they are equal 471 * @return #GNUNET_YES if they are equal
475 */ 472 */
476int 473int
477GNUNET_CONTAINER_meta_data_test_equal ( 474GNUNET_CONTAINER_meta_data_test_equal(
478 const struct GNUNET_CONTAINER_MetaData *md1, 475 const struct GNUNET_CONTAINER_MetaData *md1,
479 const struct GNUNET_CONTAINER_MetaData *md2); 476 const struct GNUNET_CONTAINER_MetaData *md2);
480 477
@@ -498,13 +495,13 @@ GNUNET_CONTAINER_meta_data_test_equal (
498 * data_mime_type and plugin_name are not considered for "exists" checks 495 * data_mime_type and plugin_name are not considered for "exists" checks
499 */ 496 */
500int 497int
501GNUNET_CONTAINER_meta_data_insert (struct GNUNET_CONTAINER_MetaData *md, 498GNUNET_CONTAINER_meta_data_insert(struct GNUNET_CONTAINER_MetaData *md,
502 const char *plugin_name, 499 const char *plugin_name,
503 enum EXTRACTOR_MetaType type, 500 enum EXTRACTOR_MetaType type,
504 enum EXTRACTOR_MetaFormat format, 501 enum EXTRACTOR_MetaFormat format,
505 const char *data_mime_type, 502 const char *data_mime_type,
506 const char *data, 503 const char *data,
507 size_t data_size); 504 size_t data_size);
508 505
509 506
510/** 507/**
@@ -516,8 +513,8 @@ GNUNET_CONTAINER_meta_data_insert (struct GNUNET_CONTAINER_MetaData *md,
516 * @param in metadata to merge 513 * @param in metadata to merge
517 */ 514 */
518void 515void
519GNUNET_CONTAINER_meta_data_merge (struct GNUNET_CONTAINER_MetaData *md, 516GNUNET_CONTAINER_meta_data_merge(struct GNUNET_CONTAINER_MetaData *md,
520 const struct GNUNET_CONTAINER_MetaData *in); 517 const struct GNUNET_CONTAINER_MetaData *in);
521 518
522 519
523/** 520/**
@@ -532,10 +529,10 @@ GNUNET_CONTAINER_meta_data_merge (struct GNUNET_CONTAINER_MetaData *md,
532 * @return #GNUNET_OK on success, #GNUNET_SYSERR if the item does not exist in md 529 * @return #GNUNET_OK on success, #GNUNET_SYSERR if the item does not exist in md
533 */ 530 */
534int 531int
535GNUNET_CONTAINER_meta_data_delete (struct GNUNET_CONTAINER_MetaData *md, 532GNUNET_CONTAINER_meta_data_delete(struct GNUNET_CONTAINER_MetaData *md,
536 enum EXTRACTOR_MetaType type, 533 enum EXTRACTOR_MetaType type,
537 const char *data, 534 const char *data,
538 size_t data_size); 535 size_t data_size);
539 536
540 537
541/** 538/**
@@ -545,7 +542,7 @@ GNUNET_CONTAINER_meta_data_delete (struct GNUNET_CONTAINER_MetaData *md,
545 * @param md metadata to manipulate 542 * @param md metadata to manipulate
546 */ 543 */
547void 544void
548GNUNET_CONTAINER_meta_data_clear (struct GNUNET_CONTAINER_MetaData *md); 545GNUNET_CONTAINER_meta_data_clear(struct GNUNET_CONTAINER_MetaData *md);
549 546
550 547
551/** 548/**
@@ -556,7 +553,7 @@ GNUNET_CONTAINER_meta_data_clear (struct GNUNET_CONTAINER_MetaData *md);
556 * @param md metadata to modify 553 * @param md metadata to modify
557 */ 554 */
558void 555void
559GNUNET_CONTAINER_meta_data_add_publication_date ( 556GNUNET_CONTAINER_meta_data_add_publication_date(
560 struct GNUNET_CONTAINER_MetaData *md); 557 struct GNUNET_CONTAINER_MetaData *md);
561 558
562 559
@@ -571,9 +568,9 @@ GNUNET_CONTAINER_meta_data_add_publication_date (
571 * @return number of entries 568 * @return number of entries
572 */ 569 */
573int 570int
574GNUNET_CONTAINER_meta_data_iterate (const struct GNUNET_CONTAINER_MetaData *md, 571GNUNET_CONTAINER_meta_data_iterate(const struct GNUNET_CONTAINER_MetaData *md,
575 EXTRACTOR_MetaDataProcessor iter, 572 EXTRACTOR_MetaDataProcessor iter,
576 void *iter_cls); 573 void *iter_cls);
577 574
578 575
579/** 576/**
@@ -588,7 +585,7 @@ GNUNET_CONTAINER_meta_data_iterate (const struct GNUNET_CONTAINER_MetaData *md,
588 * @return NULL if no entry was found 585 * @return NULL if no entry was found
589 */ 586 */
590char * 587char *
591GNUNET_CONTAINER_meta_data_get_by_type ( 588GNUNET_CONTAINER_meta_data_get_by_type(
592 const struct GNUNET_CONTAINER_MetaData *md, 589 const struct GNUNET_CONTAINER_MetaData *md,
593 enum EXTRACTOR_MetaType type); 590 enum EXTRACTOR_MetaType type);
594 591
@@ -606,7 +603,7 @@ GNUNET_CONTAINER_meta_data_get_by_type (
606 * otherwise client is responsible for freeing the value! 603 * otherwise client is responsible for freeing the value!
607 */ 604 */
608char * 605char *
609GNUNET_CONTAINER_meta_data_get_first_by_types ( 606GNUNET_CONTAINER_meta_data_get_first_by_types(
610 const struct GNUNET_CONTAINER_MetaData *md, 607 const struct GNUNET_CONTAINER_MetaData *md,
611 ...); 608 ...);
612 609
@@ -621,7 +618,7 @@ GNUNET_CONTAINER_meta_data_get_first_by_types (
621 * @return number of bytes in thumbnail, 0 if not available 618 * @return number of bytes in thumbnail, 0 if not available
622 */ 619 */
623size_t 620size_t
624GNUNET_CONTAINER_meta_data_get_thumbnail ( 621GNUNET_CONTAINER_meta_data_get_thumbnail(
625 const struct GNUNET_CONTAINER_MetaData *md, 622 const struct GNUNET_CONTAINER_MetaData *md,
626 unsigned char **thumb); 623 unsigned char **thumb);
627 624
@@ -630,8 +627,7 @@ GNUNET_CONTAINER_meta_data_get_thumbnail (
630 * @ingroup metadata 627 * @ingroup metadata
631 * Options for metadata serialization. 628 * Options for metadata serialization.
632 */ 629 */
633enum GNUNET_CONTAINER_MetaDataSerializationOptions 630enum GNUNET_CONTAINER_MetaDataSerializationOptions {
634{
635 /** 631 /**
636 * @ingroup metadata 632 * @ingroup metadata
637 * Serialize all of the data. 633 * Serialize all of the data.
@@ -669,7 +665,7 @@ enum GNUNET_CONTAINER_MetaDataSerializationOptions
669 * space) 665 * space)
670 */ 666 */
671ssize_t 667ssize_t
672GNUNET_CONTAINER_meta_data_serialize ( 668GNUNET_CONTAINER_meta_data_serialize(
673 const struct GNUNET_CONTAINER_MetaData *md, 669 const struct GNUNET_CONTAINER_MetaData *md,
674 char **target, 670 char **target,
675 size_t max, 671 size_t max,
@@ -684,7 +680,7 @@ GNUNET_CONTAINER_meta_data_serialize (
684 * @return number of bytes needed for serialization, -1 on error 680 * @return number of bytes needed for serialization, -1 on error
685 */ 681 */
686ssize_t 682ssize_t
687GNUNET_CONTAINER_meta_data_get_serialized_size ( 683GNUNET_CONTAINER_meta_data_get_serialized_size(
688 const struct GNUNET_CONTAINER_MetaData *md); 684 const struct GNUNET_CONTAINER_MetaData *md);
689 685
690 686
@@ -698,7 +694,7 @@ GNUNET_CONTAINER_meta_data_get_serialized_size (
698 * bad format) 694 * bad format)
699 */ 695 */
700struct GNUNET_CONTAINER_MetaData * 696struct GNUNET_CONTAINER_MetaData *
701GNUNET_CONTAINER_meta_data_deserialize (const char *input, size_t size); 697GNUNET_CONTAINER_meta_data_deserialize(const char *input, size_t size);
702 698
703 699
704/* ******************************* HashMap **************************** */ 700/* ******************************* HashMap **************************** */
@@ -720,9 +716,7 @@ struct GNUNET_CONTAINER_MultiHashMapIterator;
720 * @ingroup hashmap 716 * @ingroup hashmap
721 * Options for storing values in the HashMap. 717 * Options for storing values in the HashMap.
722 */ 718 */
723enum GNUNET_CONTAINER_MultiHashMapOption 719enum GNUNET_CONTAINER_MultiHashMapOption {
724{
725
726 /** 720 /**
727 * @ingroup hashmap 721 * @ingroup hashmap
728 * If a value with the given key exists, replace it. Note that the 722 * If a value with the given key exists, replace it. Note that the
@@ -791,7 +785,7 @@ typedef int (*GNUNET_CONTAINER_MulitHashMapIteratorCallback) (
791 * @return NULL on error 785 * @return NULL on error
792 */ 786 */
793struct GNUNET_CONTAINER_MultiHashMap * 787struct GNUNET_CONTAINER_MultiHashMap *
794GNUNET_CONTAINER_multihashmap_create (unsigned int len, int do_not_copy_keys); 788GNUNET_CONTAINER_multihashmap_create(unsigned int len, int do_not_copy_keys);
795 789
796 790
797/** 791/**
@@ -802,7 +796,7 @@ GNUNET_CONTAINER_multihashmap_create (unsigned int len, int do_not_copy_keys);
802 * @param map the map 796 * @param map the map
803 */ 797 */
804void 798void
805GNUNET_CONTAINER_multihashmap_destroy ( 799GNUNET_CONTAINER_multihashmap_destroy(
806 struct GNUNET_CONTAINER_MultiHashMap *map); 800 struct GNUNET_CONTAINER_MultiHashMap *map);
807 801
808 802
@@ -818,7 +812,7 @@ GNUNET_CONTAINER_multihashmap_destroy (
818 * key-value pairs with value NULL 812 * key-value pairs with value NULL
819 */ 813 */
820void * 814void *
821GNUNET_CONTAINER_multihashmap_get ( 815GNUNET_CONTAINER_multihashmap_get(
822 const struct GNUNET_CONTAINER_MultiHashMap *map, 816 const struct GNUNET_CONTAINER_MultiHashMap *map,
823 const struct GNUNET_HashCode *key); 817 const struct GNUNET_HashCode *key);
824 818
@@ -836,9 +830,9 @@ GNUNET_CONTAINER_multihashmap_get (
836 * is not in the map 830 * is not in the map
837 */ 831 */
838int 832int
839GNUNET_CONTAINER_multihashmap_remove (struct GNUNET_CONTAINER_MultiHashMap *map, 833GNUNET_CONTAINER_multihashmap_remove(struct GNUNET_CONTAINER_MultiHashMap *map,
840 const struct GNUNET_HashCode *key, 834 const struct GNUNET_HashCode *key,
841 const void *value); 835 const void *value);
842 836
843/** 837/**
844 * @ingroup hashmap 838 * @ingroup hashmap
@@ -850,7 +844,7 @@ GNUNET_CONTAINER_multihashmap_remove (struct GNUNET_CONTAINER_MultiHashMap *map,
850 * @return number of values removed 844 * @return number of values removed
851 */ 845 */
852int 846int
853GNUNET_CONTAINER_multihashmap_remove_all ( 847GNUNET_CONTAINER_multihashmap_remove_all(
854 struct GNUNET_CONTAINER_MultiHashMap *map, 848 struct GNUNET_CONTAINER_MultiHashMap *map,
855 const struct GNUNET_HashCode *key); 849 const struct GNUNET_HashCode *key);
856 850
@@ -864,7 +858,7 @@ GNUNET_CONTAINER_multihashmap_remove_all (
864 * @return number of values removed 858 * @return number of values removed
865 */ 859 */
866unsigned int 860unsigned int
867GNUNET_CONTAINER_multihashmap_clear (struct GNUNET_CONTAINER_MultiHashMap *map); 861GNUNET_CONTAINER_multihashmap_clear(struct GNUNET_CONTAINER_MultiHashMap *map);
868 862
869 863
870/** 864/**
@@ -878,7 +872,7 @@ GNUNET_CONTAINER_multihashmap_clear (struct GNUNET_CONTAINER_MultiHashMap *map);
878 * #GNUNET_NO if not 872 * #GNUNET_NO if not
879 */ 873 */
880int 874int
881GNUNET_CONTAINER_multihashmap_contains ( 875GNUNET_CONTAINER_multihashmap_contains(
882 const struct GNUNET_CONTAINER_MultiHashMap *map, 876 const struct GNUNET_CONTAINER_MultiHashMap *map,
883 const struct GNUNET_HashCode *key); 877 const struct GNUNET_HashCode *key);
884 878
@@ -895,7 +889,7 @@ GNUNET_CONTAINER_multihashmap_contains (
895 * #GNUNET_NO if not 889 * #GNUNET_NO if not
896 */ 890 */
897int 891int
898GNUNET_CONTAINER_multihashmap_contains_value ( 892GNUNET_CONTAINER_multihashmap_contains_value(
899 const struct GNUNET_CONTAINER_MultiHashMap *map, 893 const struct GNUNET_CONTAINER_MultiHashMap *map,
900 const struct GNUNET_HashCode *key, 894 const struct GNUNET_HashCode *key,
901 const void *value); 895 const void *value);
@@ -915,7 +909,7 @@ GNUNET_CONTAINER_multihashmap_contains_value (
915 * value already exists 909 * value already exists
916 */ 910 */
917int 911int
918GNUNET_CONTAINER_multihashmap_put ( 912GNUNET_CONTAINER_multihashmap_put(
919 struct GNUNET_CONTAINER_MultiHashMap *map, 913 struct GNUNET_CONTAINER_MultiHashMap *map,
920 const struct GNUNET_HashCode *key, 914 const struct GNUNET_HashCode *key,
921 void *value, 915 void *value,
@@ -929,7 +923,7 @@ GNUNET_CONTAINER_multihashmap_put (
929 * @return the number of key value pairs 923 * @return the number of key value pairs
930 */ 924 */
931unsigned int 925unsigned int
932GNUNET_CONTAINER_multihashmap_size ( 926GNUNET_CONTAINER_multihashmap_size(
933 const struct GNUNET_CONTAINER_MultiHashMap *map); 927 const struct GNUNET_CONTAINER_MultiHashMap *map);
934 928
935 929
@@ -944,7 +938,7 @@ GNUNET_CONTAINER_multihashmap_size (
944 * #GNUNET_SYSERR if it aborted iteration 938 * #GNUNET_SYSERR if it aborted iteration
945 */ 939 */
946int 940int
947GNUNET_CONTAINER_multihashmap_iterate ( 941GNUNET_CONTAINER_multihashmap_iterate(
948 struct GNUNET_CONTAINER_MultiHashMap *map, 942 struct GNUNET_CONTAINER_MultiHashMap *map,
949 GNUNET_CONTAINER_MulitHashMapIteratorCallback it, 943 GNUNET_CONTAINER_MulitHashMapIteratorCallback it,
950 void *it_cls); 944 void *it_cls);
@@ -964,7 +958,7 @@ GNUNET_CONTAINER_multihashmap_iterate (
964 * @return an iterator over the given multihashmap @a map 958 * @return an iterator over the given multihashmap @a map
965 */ 959 */
966struct GNUNET_CONTAINER_MultiHashMapIterator * 960struct GNUNET_CONTAINER_MultiHashMapIterator *
967GNUNET_CONTAINER_multihashmap_iterator_create ( 961GNUNET_CONTAINER_multihashmap_iterator_create(
968 const struct GNUNET_CONTAINER_MultiHashMap *map); 962 const struct GNUNET_CONTAINER_MultiHashMap *map);
969 963
970 964
@@ -984,7 +978,7 @@ GNUNET_CONTAINER_multihashmap_iterator_create (
984 * #GNUNET_NO if we are out of elements 978 * #GNUNET_NO if we are out of elements
985 */ 979 */
986int 980int
987GNUNET_CONTAINER_multihashmap_iterator_next ( 981GNUNET_CONTAINER_multihashmap_iterator_next(
988 struct GNUNET_CONTAINER_MultiHashMapIterator *iter, 982 struct GNUNET_CONTAINER_MultiHashMapIterator *iter,
989 struct GNUNET_HashCode *key, 983 struct GNUNET_HashCode *key,
990 const void **value); 984 const void **value);
@@ -997,7 +991,7 @@ GNUNET_CONTAINER_multihashmap_iterator_next (
997 * @param iter the iterator to destroy 991 * @param iter the iterator to destroy
998 */ 992 */
999void 993void
1000GNUNET_CONTAINER_multihashmap_iterator_destroy ( 994GNUNET_CONTAINER_multihashmap_iterator_destroy(
1001 struct GNUNET_CONTAINER_MultiHashMapIterator *iter); 995 struct GNUNET_CONTAINER_MultiHashMapIterator *iter);
1002 996
1003 997
@@ -1013,7 +1007,7 @@ GNUNET_CONTAINER_multihashmap_iterator_destroy (
1013 * #GNUNET_SYSERR if it aborted iteration 1007 * #GNUNET_SYSERR if it aborted iteration
1014 */ 1008 */
1015int 1009int
1016GNUNET_CONTAINER_multihashmap_get_multiple ( 1010GNUNET_CONTAINER_multihashmap_get_multiple(
1017 struct GNUNET_CONTAINER_MultiHashMap *map, 1011 struct GNUNET_CONTAINER_MultiHashMap *map,
1018 const struct GNUNET_HashCode *key, 1012 const struct GNUNET_HashCode *key,
1019 GNUNET_CONTAINER_MulitHashMapIteratorCallback it, 1013 GNUNET_CONTAINER_MulitHashMapIteratorCallback it,
@@ -1032,7 +1026,7 @@ GNUNET_CONTAINER_multihashmap_get_multiple (
1032 * @return the number of key value pairs processed, zero or one. 1026 * @return the number of key value pairs processed, zero or one.
1033 */ 1027 */
1034unsigned int 1028unsigned int
1035GNUNET_CONTAINER_multihashmap_get_random ( 1029GNUNET_CONTAINER_multihashmap_get_random(
1036 const struct GNUNET_CONTAINER_MultiHashMap *map, 1030 const struct GNUNET_CONTAINER_MultiHashMap *map,
1037 GNUNET_CONTAINER_MulitHashMapIteratorCallback it, 1031 GNUNET_CONTAINER_MulitHashMapIteratorCallback it,
1038 void *it_cls); 1032 void *it_cls);
@@ -1080,7 +1074,7 @@ struct GNUNET_CONTAINER_MultiPeerMap;
1080 * @return NULL on error 1074 * @return NULL on error
1081 */ 1075 */
1082struct GNUNET_CONTAINER_MultiPeerMap * 1076struct GNUNET_CONTAINER_MultiPeerMap *
1083GNUNET_CONTAINER_multipeermap_create (unsigned int len, int do_not_copy_keys); 1077GNUNET_CONTAINER_multipeermap_create(unsigned int len, int do_not_copy_keys);
1084 1078
1085 1079
1086/** 1080/**
@@ -1091,7 +1085,7 @@ GNUNET_CONTAINER_multipeermap_create (unsigned int len, int do_not_copy_keys);
1091 * @param map the map 1085 * @param map the map
1092 */ 1086 */
1093void 1087void
1094GNUNET_CONTAINER_multipeermap_destroy ( 1088GNUNET_CONTAINER_multipeermap_destroy(
1095 struct GNUNET_CONTAINER_MultiPeerMap *map); 1089 struct GNUNET_CONTAINER_MultiPeerMap *map);
1096 1090
1097 1091
@@ -1107,7 +1101,7 @@ GNUNET_CONTAINER_multipeermap_destroy (
1107 * key-value pairs with value NULL 1101 * key-value pairs with value NULL
1108 */ 1102 */
1109void * 1103void *
1110GNUNET_CONTAINER_multipeermap_get ( 1104GNUNET_CONTAINER_multipeermap_get(
1111 const struct GNUNET_CONTAINER_MultiPeerMap *map, 1105 const struct GNUNET_CONTAINER_MultiPeerMap *map,
1112 const struct GNUNET_PeerIdentity *key); 1106 const struct GNUNET_PeerIdentity *key);
1113 1107
@@ -1125,9 +1119,9 @@ GNUNET_CONTAINER_multipeermap_get (
1125 * is not in the map 1119 * is not in the map
1126 */ 1120 */
1127int 1121int
1128GNUNET_CONTAINER_multipeermap_remove (struct GNUNET_CONTAINER_MultiPeerMap *map, 1122GNUNET_CONTAINER_multipeermap_remove(struct GNUNET_CONTAINER_MultiPeerMap *map,
1129 const struct GNUNET_PeerIdentity *key, 1123 const struct GNUNET_PeerIdentity *key,
1130 const void *value); 1124 const void *value);
1131 1125
1132/** 1126/**
1133 * @ingroup hashmap 1127 * @ingroup hashmap
@@ -1139,7 +1133,7 @@ GNUNET_CONTAINER_multipeermap_remove (struct GNUNET_CONTAINER_MultiPeerMap *map,
1139 * @return number of values removed 1133 * @return number of values removed
1140 */ 1134 */
1141int 1135int
1142GNUNET_CONTAINER_multipeermap_remove_all ( 1136GNUNET_CONTAINER_multipeermap_remove_all(
1143 struct GNUNET_CONTAINER_MultiPeerMap *map, 1137 struct GNUNET_CONTAINER_MultiPeerMap *map,
1144 const struct GNUNET_PeerIdentity *key); 1138 const struct GNUNET_PeerIdentity *key);
1145 1139
@@ -1155,7 +1149,7 @@ GNUNET_CONTAINER_multipeermap_remove_all (
1155 * #GNUNET_NO if not 1149 * #GNUNET_NO if not
1156 */ 1150 */
1157int 1151int
1158GNUNET_CONTAINER_multipeermap_contains ( 1152GNUNET_CONTAINER_multipeermap_contains(
1159 const struct GNUNET_CONTAINER_MultiPeerMap *map, 1153 const struct GNUNET_CONTAINER_MultiPeerMap *map,
1160 const struct GNUNET_PeerIdentity *key); 1154 const struct GNUNET_PeerIdentity *key);
1161 1155
@@ -1172,7 +1166,7 @@ GNUNET_CONTAINER_multipeermap_contains (
1172 * #GNUNET_NO if not 1166 * #GNUNET_NO if not
1173 */ 1167 */
1174int 1168int
1175GNUNET_CONTAINER_multipeermap_contains_value ( 1169GNUNET_CONTAINER_multipeermap_contains_value(
1176 const struct GNUNET_CONTAINER_MultiPeerMap *map, 1170 const struct GNUNET_CONTAINER_MultiPeerMap *map,
1177 const struct GNUNET_PeerIdentity *key, 1171 const struct GNUNET_PeerIdentity *key,
1178 const void *value); 1172 const void *value);
@@ -1192,7 +1186,7 @@ GNUNET_CONTAINER_multipeermap_contains_value (
1192 * value already exists 1186 * value already exists
1193 */ 1187 */
1194int 1188int
1195GNUNET_CONTAINER_multipeermap_put ( 1189GNUNET_CONTAINER_multipeermap_put(
1196 struct GNUNET_CONTAINER_MultiPeerMap *map, 1190 struct GNUNET_CONTAINER_MultiPeerMap *map,
1197 const struct GNUNET_PeerIdentity *key, 1191 const struct GNUNET_PeerIdentity *key,
1198 void *value, 1192 void *value,
@@ -1207,7 +1201,7 @@ GNUNET_CONTAINER_multipeermap_put (
1207 * @return the number of key value pairs 1201 * @return the number of key value pairs
1208 */ 1202 */
1209unsigned int 1203unsigned int
1210GNUNET_CONTAINER_multipeermap_size ( 1204GNUNET_CONTAINER_multipeermap_size(
1211 const struct GNUNET_CONTAINER_MultiPeerMap *map); 1205 const struct GNUNET_CONTAINER_MultiPeerMap *map);
1212 1206
1213 1207
@@ -1222,7 +1216,7 @@ GNUNET_CONTAINER_multipeermap_size (
1222 * #GNUNET_SYSERR if it aborted iteration 1216 * #GNUNET_SYSERR if it aborted iteration
1223 */ 1217 */
1224int 1218int
1225GNUNET_CONTAINER_multipeermap_iterate ( 1219GNUNET_CONTAINER_multipeermap_iterate(
1226 struct GNUNET_CONTAINER_MultiPeerMap *map, 1220 struct GNUNET_CONTAINER_MultiPeerMap *map,
1227 GNUNET_CONTAINER_PeerMapIterator it, 1221 GNUNET_CONTAINER_PeerMapIterator it,
1228 void *it_cls); 1222 void *it_cls);
@@ -1243,7 +1237,7 @@ struct GNUNET_CONTAINER_MultiPeerMapIterator;
1243 * @return an iterator over the given multihashmap @a map 1237 * @return an iterator over the given multihashmap @a map
1244 */ 1238 */
1245struct GNUNET_CONTAINER_MultiPeerMapIterator * 1239struct GNUNET_CONTAINER_MultiPeerMapIterator *
1246GNUNET_CONTAINER_multipeermap_iterator_create ( 1240GNUNET_CONTAINER_multipeermap_iterator_create(
1247 const struct GNUNET_CONTAINER_MultiPeerMap *map); 1241 const struct GNUNET_CONTAINER_MultiPeerMap *map);
1248 1242
1249 1243
@@ -1263,7 +1257,7 @@ GNUNET_CONTAINER_multipeermap_iterator_create (
1263 * #GNUNET_NO if we are out of elements 1257 * #GNUNET_NO if we are out of elements
1264 */ 1258 */
1265int 1259int
1266GNUNET_CONTAINER_multipeermap_iterator_next ( 1260GNUNET_CONTAINER_multipeermap_iterator_next(
1267 struct GNUNET_CONTAINER_MultiPeerMapIterator *iter, 1261 struct GNUNET_CONTAINER_MultiPeerMapIterator *iter,
1268 struct GNUNET_PeerIdentity *key, 1262 struct GNUNET_PeerIdentity *key,
1269 const void **value); 1263 const void **value);
@@ -1276,7 +1270,7 @@ GNUNET_CONTAINER_multipeermap_iterator_next (
1276 * @param iter the iterator to destroy 1270 * @param iter the iterator to destroy
1277 */ 1271 */
1278void 1272void
1279GNUNET_CONTAINER_multipeermap_iterator_destroy ( 1273GNUNET_CONTAINER_multipeermap_iterator_destroy(
1280 struct GNUNET_CONTAINER_MultiPeerMapIterator *iter); 1274 struct GNUNET_CONTAINER_MultiPeerMapIterator *iter);
1281 1275
1282 1276
@@ -1292,7 +1286,7 @@ GNUNET_CONTAINER_multipeermap_iterator_destroy (
1292 * #GNUNET_SYSERR if it aborted iteration 1286 * #GNUNET_SYSERR if it aborted iteration
1293 */ 1287 */
1294int 1288int
1295GNUNET_CONTAINER_multipeermap_get_multiple ( 1289GNUNET_CONTAINER_multipeermap_get_multiple(
1296 struct GNUNET_CONTAINER_MultiPeerMap *map, 1290 struct GNUNET_CONTAINER_MultiPeerMap *map,
1297 const struct GNUNET_PeerIdentity *key, 1291 const struct GNUNET_PeerIdentity *key,
1298 GNUNET_CONTAINER_PeerMapIterator it, 1292 GNUNET_CONTAINER_PeerMapIterator it,
@@ -1311,7 +1305,7 @@ GNUNET_CONTAINER_multipeermap_get_multiple (
1311 * @return the number of key value pairs processed, zero or one. 1305 * @return the number of key value pairs processed, zero or one.
1312 */ 1306 */
1313unsigned int 1307unsigned int
1314GNUNET_CONTAINER_multipeermap_get_random ( 1308GNUNET_CONTAINER_multipeermap_get_random(
1315 const struct GNUNET_CONTAINER_MultiPeerMap *map, 1309 const struct GNUNET_CONTAINER_MultiPeerMap *map,
1316 GNUNET_CONTAINER_PeerMapIterator it, 1310 GNUNET_CONTAINER_PeerMapIterator it,
1317 void *it_cls); 1311 void *it_cls);
@@ -1359,7 +1353,7 @@ struct GNUNET_CONTAINER_MultiShortmap;
1359 * @return NULL on error 1353 * @return NULL on error
1360 */ 1354 */
1361struct GNUNET_CONTAINER_MultiShortmap * 1355struct GNUNET_CONTAINER_MultiShortmap *
1362GNUNET_CONTAINER_multishortmap_create (unsigned int len, int do_not_copy_keys); 1356GNUNET_CONTAINER_multishortmap_create(unsigned int len, int do_not_copy_keys);
1363 1357
1364 1358
1365/** 1359/**
@@ -1370,7 +1364,7 @@ GNUNET_CONTAINER_multishortmap_create (unsigned int len, int do_not_copy_keys);
1370 * @param map the map 1364 * @param map the map
1371 */ 1365 */
1372void 1366void
1373GNUNET_CONTAINER_multishortmap_destroy ( 1367GNUNET_CONTAINER_multishortmap_destroy(
1374 struct GNUNET_CONTAINER_MultiShortmap *map); 1368 struct GNUNET_CONTAINER_MultiShortmap *map);
1375 1369
1376 1370
@@ -1386,7 +1380,7 @@ GNUNET_CONTAINER_multishortmap_destroy (
1386 * key-value pairs with value NULL 1380 * key-value pairs with value NULL
1387 */ 1381 */
1388void * 1382void *
1389GNUNET_CONTAINER_multishortmap_get ( 1383GNUNET_CONTAINER_multishortmap_get(
1390 const struct GNUNET_CONTAINER_MultiShortmap *map, 1384 const struct GNUNET_CONTAINER_MultiShortmap *map,
1391 const struct GNUNET_ShortHashCode *key); 1385 const struct GNUNET_ShortHashCode *key);
1392 1386
@@ -1404,7 +1398,7 @@ GNUNET_CONTAINER_multishortmap_get (
1404 * is not in the map 1398 * is not in the map
1405 */ 1399 */
1406int 1400int
1407GNUNET_CONTAINER_multishortmap_remove ( 1401GNUNET_CONTAINER_multishortmap_remove(
1408 struct GNUNET_CONTAINER_MultiShortmap *map, 1402 struct GNUNET_CONTAINER_MultiShortmap *map,
1409 const struct GNUNET_ShortHashCode *key, 1403 const struct GNUNET_ShortHashCode *key,
1410 const void *value); 1404 const void *value);
@@ -1419,7 +1413,7 @@ GNUNET_CONTAINER_multishortmap_remove (
1419 * @return number of values removed 1413 * @return number of values removed
1420 */ 1414 */
1421int 1415int
1422GNUNET_CONTAINER_multishortmap_remove_all ( 1416GNUNET_CONTAINER_multishortmap_remove_all(
1423 struct GNUNET_CONTAINER_MultiShortmap *map, 1417 struct GNUNET_CONTAINER_MultiShortmap *map,
1424 const struct GNUNET_ShortHashCode *key); 1418 const struct GNUNET_ShortHashCode *key);
1425 1419
@@ -1435,7 +1429,7 @@ GNUNET_CONTAINER_multishortmap_remove_all (
1435 * #GNUNET_NO if not 1429 * #GNUNET_NO if not
1436 */ 1430 */
1437int 1431int
1438GNUNET_CONTAINER_multishortmap_contains ( 1432GNUNET_CONTAINER_multishortmap_contains(
1439 const struct GNUNET_CONTAINER_MultiShortmap *map, 1433 const struct GNUNET_CONTAINER_MultiShortmap *map,
1440 const struct GNUNET_ShortHashCode *key); 1434 const struct GNUNET_ShortHashCode *key);
1441 1435
@@ -1452,7 +1446,7 @@ GNUNET_CONTAINER_multishortmap_contains (
1452 * #GNUNET_NO if not 1446 * #GNUNET_NO if not
1453 */ 1447 */
1454int 1448int
1455GNUNET_CONTAINER_multishortmap_contains_value ( 1449GNUNET_CONTAINER_multishortmap_contains_value(
1456 const struct GNUNET_CONTAINER_MultiShortmap *map, 1450 const struct GNUNET_CONTAINER_MultiShortmap *map,
1457 const struct GNUNET_ShortHashCode *key, 1451 const struct GNUNET_ShortHashCode *key,
1458 const void *value); 1452 const void *value);
@@ -1472,7 +1466,7 @@ GNUNET_CONTAINER_multishortmap_contains_value (
1472 * value already exists 1466 * value already exists
1473 */ 1467 */
1474int 1468int
1475GNUNET_CONTAINER_multishortmap_put ( 1469GNUNET_CONTAINER_multishortmap_put(
1476 struct GNUNET_CONTAINER_MultiShortmap *map, 1470 struct GNUNET_CONTAINER_MultiShortmap *map,
1477 const struct GNUNET_ShortHashCode *key, 1471 const struct GNUNET_ShortHashCode *key,
1478 void *value, 1472 void *value,
@@ -1487,7 +1481,7 @@ GNUNET_CONTAINER_multishortmap_put (
1487 * @return the number of key value pairs 1481 * @return the number of key value pairs
1488 */ 1482 */
1489unsigned int 1483unsigned int
1490GNUNET_CONTAINER_multishortmap_size ( 1484GNUNET_CONTAINER_multishortmap_size(
1491 const struct GNUNET_CONTAINER_MultiShortmap *map); 1485 const struct GNUNET_CONTAINER_MultiShortmap *map);
1492 1486
1493 1487
@@ -1502,7 +1496,7 @@ GNUNET_CONTAINER_multishortmap_size (
1502 * #GNUNET_SYSERR if it aborted iteration 1496 * #GNUNET_SYSERR if it aborted iteration
1503 */ 1497 */
1504int 1498int
1505GNUNET_CONTAINER_multishortmap_iterate ( 1499GNUNET_CONTAINER_multishortmap_iterate(
1506 struct GNUNET_CONTAINER_MultiShortmap *map, 1500 struct GNUNET_CONTAINER_MultiShortmap *map,
1507 GNUNET_CONTAINER_ShortmapIterator it, 1501 GNUNET_CONTAINER_ShortmapIterator it,
1508 void *it_cls); 1502 void *it_cls);
@@ -1525,7 +1519,7 @@ struct GNUNET_CONTAINER_MultiShortmapIterator;
1525 * @return an iterator over the given multihashmap @a map 1519 * @return an iterator over the given multihashmap @a map
1526 */ 1520 */
1527struct GNUNET_CONTAINER_MultiShortmapIterator * 1521struct GNUNET_CONTAINER_MultiShortmapIterator *
1528GNUNET_CONTAINER_multishortmap_iterator_create ( 1522GNUNET_CONTAINER_multishortmap_iterator_create(
1529 const struct GNUNET_CONTAINER_MultiShortmap *map); 1523 const struct GNUNET_CONTAINER_MultiShortmap *map);
1530 1524
1531 1525
@@ -1545,7 +1539,7 @@ GNUNET_CONTAINER_multishortmap_iterator_create (
1545 * #GNUNET_NO if we are out of elements 1539 * #GNUNET_NO if we are out of elements
1546 */ 1540 */
1547int 1541int
1548GNUNET_CONTAINER_multishortmap_iterator_next ( 1542GNUNET_CONTAINER_multishortmap_iterator_next(
1549 struct GNUNET_CONTAINER_MultiShortmapIterator *iter, 1543 struct GNUNET_CONTAINER_MultiShortmapIterator *iter,
1550 struct GNUNET_ShortHashCode *key, 1544 struct GNUNET_ShortHashCode *key,
1551 const void **value); 1545 const void **value);
@@ -1558,7 +1552,7 @@ GNUNET_CONTAINER_multishortmap_iterator_next (
1558 * @param iter the iterator to destroy 1552 * @param iter the iterator to destroy
1559 */ 1553 */
1560void 1554void
1561GNUNET_CONTAINER_multishortmap_iterator_destroy ( 1555GNUNET_CONTAINER_multishortmap_iterator_destroy(
1562 struct GNUNET_CONTAINER_MultiShortmapIterator *iter); 1556 struct GNUNET_CONTAINER_MultiShortmapIterator *iter);
1563 1557
1564 1558
@@ -1574,7 +1568,7 @@ GNUNET_CONTAINER_multishortmap_iterator_destroy (
1574 * #GNUNET_SYSERR if it aborted iteration 1568 * #GNUNET_SYSERR if it aborted iteration
1575 */ 1569 */
1576int 1570int
1577GNUNET_CONTAINER_multishortmap_get_multiple ( 1571GNUNET_CONTAINER_multishortmap_get_multiple(
1578 struct GNUNET_CONTAINER_MultiShortmap *map, 1572 struct GNUNET_CONTAINER_MultiShortmap *map,
1579 const struct GNUNET_ShortHashCode *key, 1573 const struct GNUNET_ShortHashCode *key,
1580 GNUNET_CONTAINER_ShortmapIterator it, 1574 GNUNET_CONTAINER_ShortmapIterator it,
@@ -1593,7 +1587,7 @@ GNUNET_CONTAINER_multishortmap_get_multiple (
1593 * @return the number of key value pairs processed, zero or one. 1587 * @return the number of key value pairs processed, zero or one.
1594 */ 1588 */
1595unsigned int 1589unsigned int
1596GNUNET_CONTAINER_multishortmap_get_random ( 1590GNUNET_CONTAINER_multishortmap_get_random(
1597 const struct GNUNET_CONTAINER_MultiShortmap *map, 1591 const struct GNUNET_CONTAINER_MultiShortmap *map,
1598 GNUNET_CONTAINER_ShortmapIterator it, 1592 GNUNET_CONTAINER_ShortmapIterator it,
1599 void *it_cls); 1593 void *it_cls);
@@ -1642,7 +1636,7 @@ struct GNUNET_CONTAINER_MultiUuidmap;
1642 * @return NULL on error 1636 * @return NULL on error
1643 */ 1637 */
1644struct GNUNET_CONTAINER_MultiUuidmap * 1638struct GNUNET_CONTAINER_MultiUuidmap *
1645GNUNET_CONTAINER_multiuuidmap_create (unsigned int len, int do_not_copy_keys); 1639GNUNET_CONTAINER_multiuuidmap_create(unsigned int len, int do_not_copy_keys);
1646 1640
1647 1641
1648/** 1642/**
@@ -1653,7 +1647,7 @@ GNUNET_CONTAINER_multiuuidmap_create (unsigned int len, int do_not_copy_keys);
1653 * @param map the map 1647 * @param map the map
1654 */ 1648 */
1655void 1649void
1656GNUNET_CONTAINER_multiuuidmap_destroy ( 1650GNUNET_CONTAINER_multiuuidmap_destroy(
1657 struct GNUNET_CONTAINER_MultiUuidmap *map); 1651 struct GNUNET_CONTAINER_MultiUuidmap *map);
1658 1652
1659 1653
@@ -1669,7 +1663,7 @@ GNUNET_CONTAINER_multiuuidmap_destroy (
1669 * key-value pairs with value NULL 1663 * key-value pairs with value NULL
1670 */ 1664 */
1671void * 1665void *
1672GNUNET_CONTAINER_multiuuidmap_get ( 1666GNUNET_CONTAINER_multiuuidmap_get(
1673 const struct GNUNET_CONTAINER_MultiUuidmap *map, 1667 const struct GNUNET_CONTAINER_MultiUuidmap *map,
1674 const struct GNUNET_Uuid *key); 1668 const struct GNUNET_Uuid *key);
1675 1669
@@ -1687,9 +1681,9 @@ GNUNET_CONTAINER_multiuuidmap_get (
1687 * is not in the map 1681 * is not in the map
1688 */ 1682 */
1689int 1683int
1690GNUNET_CONTAINER_multiuuidmap_remove (struct GNUNET_CONTAINER_MultiUuidmap *map, 1684GNUNET_CONTAINER_multiuuidmap_remove(struct GNUNET_CONTAINER_MultiUuidmap *map,
1691 const struct GNUNET_Uuid *key, 1685 const struct GNUNET_Uuid *key,
1692 const void *value); 1686 const void *value);
1693 1687
1694/** 1688/**
1695 * @ingroup hashmap 1689 * @ingroup hashmap
@@ -1701,7 +1695,7 @@ GNUNET_CONTAINER_multiuuidmap_remove (struct GNUNET_CONTAINER_MultiUuidmap *map,
1701 * @return number of values removed 1695 * @return number of values removed
1702 */ 1696 */
1703int 1697int
1704GNUNET_CONTAINER_multiuuidmap_remove_all ( 1698GNUNET_CONTAINER_multiuuidmap_remove_all(
1705 struct GNUNET_CONTAINER_MultiUuidmap *map, 1699 struct GNUNET_CONTAINER_MultiUuidmap *map,
1706 const struct GNUNET_Uuid *key); 1700 const struct GNUNET_Uuid *key);
1707 1701
@@ -1717,7 +1711,7 @@ GNUNET_CONTAINER_multiuuidmap_remove_all (
1717 * #GNUNET_NO if not 1711 * #GNUNET_NO if not
1718 */ 1712 */
1719int 1713int
1720GNUNET_CONTAINER_multiuuidmap_contains ( 1714GNUNET_CONTAINER_multiuuidmap_contains(
1721 const struct GNUNET_CONTAINER_MultiUuidmap *map, 1715 const struct GNUNET_CONTAINER_MultiUuidmap *map,
1722 const struct GNUNET_Uuid *key); 1716 const struct GNUNET_Uuid *key);
1723 1717
@@ -1734,7 +1728,7 @@ GNUNET_CONTAINER_multiuuidmap_contains (
1734 * #GNUNET_NO if not 1728 * #GNUNET_NO if not
1735 */ 1729 */
1736int 1730int
1737GNUNET_CONTAINER_multiuuidmap_contains_value ( 1731GNUNET_CONTAINER_multiuuidmap_contains_value(
1738 const struct GNUNET_CONTAINER_MultiUuidmap *map, 1732 const struct GNUNET_CONTAINER_MultiUuidmap *map,
1739 const struct GNUNET_Uuid *key, 1733 const struct GNUNET_Uuid *key,
1740 const void *value); 1734 const void *value);
@@ -1754,7 +1748,7 @@ GNUNET_CONTAINER_multiuuidmap_contains_value (
1754 * value already exists 1748 * value already exists
1755 */ 1749 */
1756int 1750int
1757GNUNET_CONTAINER_multiuuidmap_put ( 1751GNUNET_CONTAINER_multiuuidmap_put(
1758 struct GNUNET_CONTAINER_MultiUuidmap *map, 1752 struct GNUNET_CONTAINER_MultiUuidmap *map,
1759 const struct GNUNET_Uuid *key, 1753 const struct GNUNET_Uuid *key,
1760 void *value, 1754 void *value,
@@ -1769,7 +1763,7 @@ GNUNET_CONTAINER_multiuuidmap_put (
1769 * @return the number of key value pairs 1763 * @return the number of key value pairs
1770 */ 1764 */
1771unsigned int 1765unsigned int
1772GNUNET_CONTAINER_multiuuidmap_size ( 1766GNUNET_CONTAINER_multiuuidmap_size(
1773 const struct GNUNET_CONTAINER_MultiUuidmap *map); 1767 const struct GNUNET_CONTAINER_MultiUuidmap *map);
1774 1768
1775 1769
@@ -1784,7 +1778,7 @@ GNUNET_CONTAINER_multiuuidmap_size (
1784 * #GNUNET_SYSERR if it aborted iteration 1778 * #GNUNET_SYSERR if it aborted iteration
1785 */ 1779 */
1786int 1780int
1787GNUNET_CONTAINER_multiuuidmap_iterate ( 1781GNUNET_CONTAINER_multiuuidmap_iterate(
1788 struct GNUNET_CONTAINER_MultiUuidmap *map, 1782 struct GNUNET_CONTAINER_MultiUuidmap *map,
1789 GNUNET_CONTAINER_MultiUuidmapIteratorCallback it, 1783 GNUNET_CONTAINER_MultiUuidmapIteratorCallback it,
1790 void *it_cls); 1784 void *it_cls);
@@ -1807,7 +1801,7 @@ struct GNUNET_CONTAINER_MultiUuidmapIterator;
1807 * @return an iterator over the given multihashmap @a map 1801 * @return an iterator over the given multihashmap @a map
1808 */ 1802 */
1809struct GNUNET_CONTAINER_MultiUuidmapIterator * 1803struct GNUNET_CONTAINER_MultiUuidmapIterator *
1810GNUNET_CONTAINER_multiuuidmap_iterator_create ( 1804GNUNET_CONTAINER_multiuuidmap_iterator_create(
1811 const struct GNUNET_CONTAINER_MultiUuidmap *map); 1805 const struct GNUNET_CONTAINER_MultiUuidmap *map);
1812 1806
1813 1807
@@ -1827,7 +1821,7 @@ GNUNET_CONTAINER_multiuuidmap_iterator_create (
1827 * #GNUNET_NO if we are out of elements 1821 * #GNUNET_NO if we are out of elements
1828 */ 1822 */
1829int 1823int
1830GNUNET_CONTAINER_multiuuidmap_iterator_next ( 1824GNUNET_CONTAINER_multiuuidmap_iterator_next(
1831 struct GNUNET_CONTAINER_MultiUuidmapIterator *iter, 1825 struct GNUNET_CONTAINER_MultiUuidmapIterator *iter,
1832 struct GNUNET_Uuid *key, 1826 struct GNUNET_Uuid *key,
1833 const void **value); 1827 const void **value);
@@ -1840,7 +1834,7 @@ GNUNET_CONTAINER_multiuuidmap_iterator_next (
1840 * @param iter the iterator to destroy 1834 * @param iter the iterator to destroy
1841 */ 1835 */
1842void 1836void
1843GNUNET_CONTAINER_multiuuidmap_iterator_destroy ( 1837GNUNET_CONTAINER_multiuuidmap_iterator_destroy(
1844 struct GNUNET_CONTAINER_MultiUuidmapIterator *iter); 1838 struct GNUNET_CONTAINER_MultiUuidmapIterator *iter);
1845 1839
1846 1840
@@ -1856,7 +1850,7 @@ GNUNET_CONTAINER_multiuuidmap_iterator_destroy (
1856 * #GNUNET_SYSERR if it aborted iteration 1850 * #GNUNET_SYSERR if it aborted iteration
1857 */ 1851 */
1858int 1852int
1859GNUNET_CONTAINER_multiuuidmap_get_multiple ( 1853GNUNET_CONTAINER_multiuuidmap_get_multiple(
1860 struct GNUNET_CONTAINER_MultiUuidmap *map, 1854 struct GNUNET_CONTAINER_MultiUuidmap *map,
1861 const struct GNUNET_Uuid *key, 1855 const struct GNUNET_Uuid *key,
1862 GNUNET_CONTAINER_MultiUuidmapIteratorCallback it, 1856 GNUNET_CONTAINER_MultiUuidmapIteratorCallback it,
@@ -1875,7 +1869,7 @@ GNUNET_CONTAINER_multiuuidmap_get_multiple (
1875 * @return the number of key value pairs processed, zero or one. 1869 * @return the number of key value pairs processed, zero or one.
1876 */ 1870 */
1877unsigned int 1871unsigned int
1878GNUNET_CONTAINER_multiuuidmap_get_random ( 1872GNUNET_CONTAINER_multiuuidmap_get_random(
1879 const struct GNUNET_CONTAINER_MultiUuidmap *map, 1873 const struct GNUNET_CONTAINER_MultiUuidmap *map,
1880 GNUNET_CONTAINER_MultiUuidmapIteratorCallback it, 1874 GNUNET_CONTAINER_MultiUuidmapIteratorCallback it,
1881 void *it_cls); 1875 void *it_cls);
@@ -1922,7 +1916,7 @@ typedef int (*GNUNET_CONTAINER_MulitHashMapIterator32Callback) (void *cls,
1922 * @return NULL on error 1916 * @return NULL on error
1923 */ 1917 */
1924struct GNUNET_CONTAINER_MultiHashMap32 * 1918struct GNUNET_CONTAINER_MultiHashMap32 *
1925GNUNET_CONTAINER_multihashmap32_create (unsigned int len); 1919GNUNET_CONTAINER_multihashmap32_create(unsigned int len);
1926 1920
1927 1921
1928/** 1922/**
@@ -1933,7 +1927,7 @@ GNUNET_CONTAINER_multihashmap32_create (unsigned int len);
1933 * @param map the map 1927 * @param map the map
1934 */ 1928 */
1935void 1929void
1936GNUNET_CONTAINER_multihashmap32_destroy ( 1930GNUNET_CONTAINER_multihashmap32_destroy(
1937 struct GNUNET_CONTAINER_MultiHashMap32 *map); 1931 struct GNUNET_CONTAINER_MultiHashMap32 *map);
1938 1932
1939 1933
@@ -1945,7 +1939,7 @@ GNUNET_CONTAINER_multihashmap32_destroy (
1945 * @return the number of key value pairs 1939 * @return the number of key value pairs
1946 */ 1940 */
1947unsigned int 1941unsigned int
1948GNUNET_CONTAINER_multihashmap32_size ( 1942GNUNET_CONTAINER_multihashmap32_size(
1949 const struct GNUNET_CONTAINER_MultiHashMap32 *map); 1943 const struct GNUNET_CONTAINER_MultiHashMap32 *map);
1950 1944
1951 1945
@@ -1961,7 +1955,7 @@ GNUNET_CONTAINER_multihashmap32_size (
1961 * key-value pairs with value NULL 1955 * key-value pairs with value NULL
1962 */ 1956 */
1963void * 1957void *
1964GNUNET_CONTAINER_multihashmap32_get ( 1958GNUNET_CONTAINER_multihashmap32_get(
1965 const struct GNUNET_CONTAINER_MultiHashMap32 *map, 1959 const struct GNUNET_CONTAINER_MultiHashMap32 *map,
1966 uint32_t key); 1960 uint32_t key);
1967 1961
@@ -1977,7 +1971,7 @@ GNUNET_CONTAINER_multihashmap32_get (
1977 * #GNUNET_SYSERR if it aborted iteration 1971 * #GNUNET_SYSERR if it aborted iteration
1978 */ 1972 */
1979int 1973int
1980GNUNET_CONTAINER_multihashmap32_iterate ( 1974GNUNET_CONTAINER_multihashmap32_iterate(
1981 struct GNUNET_CONTAINER_MultiHashMap32 *map, 1975 struct GNUNET_CONTAINER_MultiHashMap32 *map,
1982 GNUNET_CONTAINER_MulitHashMapIterator32Callback it, 1976 GNUNET_CONTAINER_MulitHashMapIterator32Callback it,
1983 void *it_cls); 1977 void *it_cls);
@@ -1996,7 +1990,7 @@ GNUNET_CONTAINER_multihashmap32_iterate (
1996 * is not in the map 1990 * is not in the map
1997 */ 1991 */
1998int 1992int
1999GNUNET_CONTAINER_multihashmap32_remove ( 1993GNUNET_CONTAINER_multihashmap32_remove(
2000 struct GNUNET_CONTAINER_MultiHashMap32 *map, 1994 struct GNUNET_CONTAINER_MultiHashMap32 *map,
2001 uint32_t key, 1995 uint32_t key,
2002 const void *value); 1996 const void *value);
@@ -2012,7 +2006,7 @@ GNUNET_CONTAINER_multihashmap32_remove (
2012 * @return number of values removed 2006 * @return number of values removed
2013 */ 2007 */
2014int 2008int
2015GNUNET_CONTAINER_multihashmap32_remove_all ( 2009GNUNET_CONTAINER_multihashmap32_remove_all(
2016 struct GNUNET_CONTAINER_MultiHashMap32 *map, 2010 struct GNUNET_CONTAINER_MultiHashMap32 *map,
2017 uint32_t key); 2011 uint32_t key);
2018 2012
@@ -2028,7 +2022,7 @@ GNUNET_CONTAINER_multihashmap32_remove_all (
2028 * #GNUNET_NO if not 2022 * #GNUNET_NO if not
2029 */ 2023 */
2030int 2024int
2031GNUNET_CONTAINER_multihashmap32_contains ( 2025GNUNET_CONTAINER_multihashmap32_contains(
2032 const struct GNUNET_CONTAINER_MultiHashMap32 *map, 2026 const struct GNUNET_CONTAINER_MultiHashMap32 *map,
2033 uint32_t key); 2027 uint32_t key);
2034 2028
@@ -2045,7 +2039,7 @@ GNUNET_CONTAINER_multihashmap32_contains (
2045 * #GNUNET_NO if not 2039 * #GNUNET_NO if not
2046 */ 2040 */
2047int 2041int
2048GNUNET_CONTAINER_multihashmap32_contains_value ( 2042GNUNET_CONTAINER_multihashmap32_contains_value(
2049 const struct GNUNET_CONTAINER_MultiHashMap32 *map, 2043 const struct GNUNET_CONTAINER_MultiHashMap32 *map,
2050 uint32_t key, 2044 uint32_t key,
2051 const void *value); 2045 const void *value);
@@ -2065,7 +2059,7 @@ GNUNET_CONTAINER_multihashmap32_contains_value (
2065 * value already exists 2059 * value already exists
2066 */ 2060 */
2067int 2061int
2068GNUNET_CONTAINER_multihashmap32_put ( 2062GNUNET_CONTAINER_multihashmap32_put(
2069 struct GNUNET_CONTAINER_MultiHashMap32 *map, 2063 struct GNUNET_CONTAINER_MultiHashMap32 *map,
2070 uint32_t key, 2064 uint32_t key,
2071 void *value, 2065 void *value,
@@ -2084,7 +2078,7 @@ GNUNET_CONTAINER_multihashmap32_put (
2084 * #GNUNET_SYSERR if it aborted iteration 2078 * #GNUNET_SYSERR if it aborted iteration
2085 */ 2079 */
2086int 2080int
2087GNUNET_CONTAINER_multihashmap32_get_multiple ( 2081GNUNET_CONTAINER_multihashmap32_get_multiple(
2088 struct GNUNET_CONTAINER_MultiHashMap32 *map, 2082 struct GNUNET_CONTAINER_MultiHashMap32 *map,
2089 uint32_t key, 2083 uint32_t key,
2090 GNUNET_CONTAINER_MulitHashMapIterator32Callback it, 2084 GNUNET_CONTAINER_MulitHashMapIterator32Callback it,
@@ -2104,7 +2098,7 @@ GNUNET_CONTAINER_multihashmap32_get_multiple (
2104 * @return an iterator over the given multihashmap map 2098 * @return an iterator over the given multihashmap map
2105 */ 2099 */
2106struct GNUNET_CONTAINER_MultiHashMap32Iterator * 2100struct GNUNET_CONTAINER_MultiHashMap32Iterator *
2107GNUNET_CONTAINER_multihashmap32_iterator_create ( 2101GNUNET_CONTAINER_multihashmap32_iterator_create(
2108 const struct GNUNET_CONTAINER_MultiHashMap32 *map); 2102 const struct GNUNET_CONTAINER_MultiHashMap32 *map);
2109 2103
2110 2104
@@ -2123,7 +2117,7 @@ GNUNET_CONTAINER_multihashmap32_iterator_create (
2123 * #GNUNET_NO if we are out of elements 2117 * #GNUNET_NO if we are out of elements
2124 */ 2118 */
2125int 2119int
2126GNUNET_CONTAINER_multihashmap32_iterator_next ( 2120GNUNET_CONTAINER_multihashmap32_iterator_next(
2127 struct GNUNET_CONTAINER_MultiHashMap32Iterator *iter, 2121 struct GNUNET_CONTAINER_MultiHashMap32Iterator *iter,
2128 uint32_t *key, 2122 uint32_t *key,
2129 const void **value); 2123 const void **value);
@@ -2135,7 +2129,7 @@ GNUNET_CONTAINER_multihashmap32_iterator_next (
2135 * @param iter the iterator to destroy 2129 * @param iter the iterator to destroy
2136 */ 2130 */
2137void 2131void
2138GNUNET_CONTAINER_multihashmap32_iterator_destroy ( 2132GNUNET_CONTAINER_multihashmap32_iterator_destroy(
2139 struct GNUNET_CONTAINER_MultiHashMapIterator *iter); 2133 struct GNUNET_CONTAINER_MultiHashMapIterator *iter);
2140 2134
2141 2135
@@ -2153,17 +2147,17 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2153 */ 2147 */
2154#define GNUNET_CONTAINER_DLL_insert(head, tail, element) \ 2148#define GNUNET_CONTAINER_DLL_insert(head, tail, element) \
2155 do \ 2149 do \
2156 { \ 2150 { \
2157 GNUNET_assert (((element)->prev == NULL) && ((head) != (element))); \ 2151 GNUNET_assert(((element)->prev == NULL) && ((head) != (element))); \
2158 GNUNET_assert (((element)->next == NULL) && ((tail) != (element))); \ 2152 GNUNET_assert(((element)->next == NULL) && ((tail) != (element))); \
2159 (element)->next = (head); \ 2153 (element)->next = (head); \
2160 (element)->prev = NULL; \ 2154 (element)->prev = NULL; \
2161 if ((tail) == NULL) \ 2155 if ((tail) == NULL) \
2162 (tail) = element; \ 2156 (tail) = element; \
2163 else \ 2157 else \
2164 (head)->prev = element; \ 2158 (head) ->prev = element; \
2165 (head) = (element); \ 2159 (head) = (element); \
2166 } while (0) 2160 } while (0)
2167 2161
2168 2162
2169/** 2163/**
@@ -2177,17 +2171,17 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2177 */ 2171 */
2178#define GNUNET_CONTAINER_DLL_insert_tail(head, tail, element) \ 2172#define GNUNET_CONTAINER_DLL_insert_tail(head, tail, element) \
2179 do \ 2173 do \
2180 { \ 2174 { \
2181 GNUNET_assert (((element)->prev == NULL) && ((head) != (element))); \ 2175 GNUNET_assert(((element)->prev == NULL) && ((head) != (element))); \
2182 GNUNET_assert (((element)->next == NULL) && ((tail) != (element))); \ 2176 GNUNET_assert(((element)->next == NULL) && ((tail) != (element))); \
2183 (element)->prev = (tail); \ 2177 (element)->prev = (tail); \
2184 (element)->next = NULL; \ 2178 (element)->next = NULL; \
2185 if ((head) == NULL) \ 2179 if ((head) == NULL) \
2186 (head) = element; \ 2180 (head) = element; \
2187 else \ 2181 else \
2188 (tail)->next = element; \ 2182 (tail) ->next = element; \
2189 (tail) = (element); \ 2183 (tail) = (element); \
2190 } while (0) 2184 } while (0)
2191 2185
2192 2186
2193/** 2187/**
@@ -2202,25 +2196,25 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2202 */ 2196 */
2203#define GNUNET_CONTAINER_DLL_insert_after(head, tail, other, element) \ 2197#define GNUNET_CONTAINER_DLL_insert_after(head, tail, other, element) \
2204 do \ 2198 do \
2205 { \ 2199 { \
2206 GNUNET_assert (((element)->prev == NULL) && ((head) != (element))); \ 2200 GNUNET_assert(((element)->prev == NULL) && ((head) != (element))); \
2207 GNUNET_assert (((element)->next == NULL) && ((tail) != (element))); \ 2201 GNUNET_assert(((element)->next == NULL) && ((tail) != (element))); \
2208 (element)->prev = (other); \ 2202 (element)->prev = (other); \
2209 if (NULL == other) \ 2203 if (NULL == other) \
2210 { \ 2204 { \
2211 (element)->next = (head); \ 2205 (element)->next = (head); \
2212 (head) = (element); \ 2206 (head) = (element); \
2213 } \ 2207 } \
2214 else \ 2208 else \
2215 { \ 2209 { \
2216 (element)->next = (other)->next; \ 2210 (element)->next = (other)->next; \
2217 (other)->next = (element); \ 2211 (other)->next = (element); \
2218 } \ 2212 } \
2219 if (NULL == (element)->next) \ 2213 if (NULL == (element)->next) \
2220 (tail) = (element); \ 2214 (tail) = (element); \
2221 else \ 2215 else \
2222 (element)->next->prev = (element); \ 2216 (element) ->next->prev = (element); \
2223 } while (0) 2217 } while (0)
2224 2218
2225 2219
2226/** 2220/**
@@ -2235,25 +2229,25 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2235 */ 2229 */
2236#define GNUNET_CONTAINER_DLL_insert_before(head, tail, other, element) \ 2230#define GNUNET_CONTAINER_DLL_insert_before(head, tail, other, element) \
2237 do \ 2231 do \
2238 { \ 2232 { \
2239 GNUNET_assert (((element)->prev == NULL) && ((head) != (element))); \ 2233 GNUNET_assert(((element)->prev == NULL) && ((head) != (element))); \
2240 GNUNET_assert (((element)->next == NULL) && ((tail) != (element))); \ 2234 GNUNET_assert(((element)->next == NULL) && ((tail) != (element))); \
2241 (element)->next = (other); \ 2235 (element)->next = (other); \
2242 if (NULL == other) \ 2236 if (NULL == other) \
2243 { \ 2237 { \
2244 (element)->prev = (tail); \ 2238 (element)->prev = (tail); \
2245 (tail) = (element); \ 2239 (tail) = (element); \
2246 } \ 2240 } \
2247 else \ 2241 else \
2248 { \ 2242 { \
2249 (element)->prev = (other)->prev; \ 2243 (element)->prev = (other)->prev; \
2250 (other)->prev = (element); \ 2244 (other)->prev = (element); \
2251 } \ 2245 } \
2252 if (NULL == (element)->prev) \ 2246 if (NULL == (element)->prev) \
2253 (head) = (element); \ 2247 (head) = (element); \
2254 else \ 2248 else \
2255 (element)->prev->next = (element); \ 2249 (element) ->prev->next = (element); \
2256 } while (0) 2250 } while (0)
2257 2251
2258 2252
2259/** 2253/**
@@ -2272,20 +2266,20 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2272 */ 2266 */
2273#define GNUNET_CONTAINER_DLL_remove(head, tail, element) \ 2267#define GNUNET_CONTAINER_DLL_remove(head, tail, element) \
2274 do \ 2268 do \
2275 { \ 2269 { \
2276 GNUNET_assert (((element)->prev != NULL) || ((head) == (element))); \ 2270 GNUNET_assert(((element)->prev != NULL) || ((head) == (element))); \
2277 GNUNET_assert (((element)->next != NULL) || ((tail) == (element))); \ 2271 GNUNET_assert(((element)->next != NULL) || ((tail) == (element))); \
2278 if ((element)->prev == NULL) \ 2272 if ((element)->prev == NULL) \
2279 (head) = (element)->next; \ 2273 (head) = (element)->next; \
2280 else \ 2274 else \
2281 (element)->prev->next = (element)->next; \ 2275 (element) ->prev->next = (element)->next; \
2282 if ((element)->next == NULL) \ 2276 if ((element)->next == NULL) \
2283 (tail) = (element)->prev; \ 2277 (tail) = (element)->prev; \
2284 else \ 2278 else \
2285 (element)->next->prev = (element)->prev; \ 2279 (element) ->next->prev = (element)->prev; \
2286 (element)->next = NULL; \ 2280 (element)->next = NULL; \
2287 (element)->prev = NULL; \ 2281 (element)->prev = NULL; \
2288 } while (0) 2282 } while (0)
2289 2283
2290 2284
2291/* ************ Multi-DLL interface, allows DLL elements to be 2285/* ************ Multi-DLL interface, allows DLL elements to be
@@ -2303,17 +2297,17 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2303 */ 2297 */
2304#define GNUNET_CONTAINER_MDLL_insert(mdll, head, tail, element) \ 2298#define GNUNET_CONTAINER_MDLL_insert(mdll, head, tail, element) \
2305 do \ 2299 do \
2306 { \ 2300 { \
2307 GNUNET_assert (((element)->prev_##mdll == NULL) && ((head) != (element))); \ 2301 GNUNET_assert(((element)->prev_ ## mdll == NULL) && ((head) != (element))); \
2308 GNUNET_assert (((element)->next_##mdll == NULL) && ((tail) != (element))); \ 2302 GNUNET_assert(((element)->next_ ## mdll == NULL) && ((tail) != (element))); \
2309 (element)->next_##mdll = (head); \ 2303 (element)->next_ ## mdll = (head); \
2310 (element)->prev_##mdll = NULL; \ 2304 (element)->prev_ ## mdll = NULL; \
2311 if ((tail) == NULL) \ 2305 if ((tail) == NULL) \
2312 (tail) = element; \ 2306 (tail) = element; \
2313 else \ 2307 else \
2314 (head)->prev_##mdll = element; \ 2308 (head) ->prev_ ## mdll = element; \
2315 (head) = (element); \ 2309 (head) = (element); \
2316 } while (0) 2310 } while (0)
2317 2311
2318 2312
2319/** 2313/**
@@ -2328,17 +2322,17 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2328 */ 2322 */
2329#define GNUNET_CONTAINER_MDLL_insert_tail(mdll, head, tail, element) \ 2323#define GNUNET_CONTAINER_MDLL_insert_tail(mdll, head, tail, element) \
2330 do \ 2324 do \
2331 { \ 2325 { \
2332 GNUNET_assert (((element)->prev_##mdll == NULL) && ((head) != (element))); \ 2326 GNUNET_assert(((element)->prev_ ## mdll == NULL) && ((head) != (element))); \
2333 GNUNET_assert (((element)->next_##mdll == NULL) && ((tail) != (element))); \ 2327 GNUNET_assert(((element)->next_ ## mdll == NULL) && ((tail) != (element))); \
2334 (element)->prev_##mdll = (tail); \ 2328 (element)->prev_ ## mdll = (tail); \
2335 (element)->next_##mdll = NULL; \ 2329 (element)->next_ ## mdll = NULL; \
2336 if ((head) == NULL) \ 2330 if ((head) == NULL) \
2337 (head) = element; \ 2331 (head) = element; \
2338 else \ 2332 else \
2339 (tail)->next_##mdll = element; \ 2333 (tail) ->next_ ## mdll = element; \
2340 (tail) = (element); \ 2334 (tail) = (element); \
2341 } while (0) 2335 } while (0)
2342 2336
2343 2337
2344/** 2338/**
@@ -2354,25 +2348,25 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2354 */ 2348 */
2355#define GNUNET_CONTAINER_MDLL_insert_after(mdll, head, tail, other, element) \ 2349#define GNUNET_CONTAINER_MDLL_insert_after(mdll, head, tail, other, element) \
2356 do \ 2350 do \
2357 { \ 2351 { \
2358 GNUNET_assert (((element)->prev_##mdll == NULL) && ((head) != (element))); \ 2352 GNUNET_assert(((element)->prev_ ## mdll == NULL) && ((head) != (element))); \
2359 GNUNET_assert (((element)->next_##mdll == NULL) && ((tail) != (element))); \ 2353 GNUNET_assert(((element)->next_ ## mdll == NULL) && ((tail) != (element))); \
2360 (element)->prev_##mdll = (other); \ 2354 (element)->prev_ ## mdll = (other); \
2361 if (NULL == other) \ 2355 if (NULL == other) \
2362 { \ 2356 { \
2363 (element)->next_##mdll = (head); \ 2357 (element)->next_ ## mdll = (head); \
2364 (head) = (element); \ 2358 (head) = (element); \
2365 } \ 2359 } \
2366 else \ 2360 else \
2367 { \ 2361 { \
2368 (element)->next_##mdll = (other)->next_##mdll; \ 2362 (element)->next_ ## mdll = (other)->next_ ## mdll; \
2369 (other)->next_##mdll = (element); \ 2363 (other)->next_ ## mdll = (element); \
2370 } \ 2364 } \
2371 if (NULL == (element)->next_##mdll) \ 2365 if (NULL == (element)->next_ ## mdll) \
2372 (tail) = (element); \ 2366 (tail) = (element); \
2373 else \ 2367 else \
2374 (element)->next_##mdll->prev_##mdll = (element); \ 2368 (element) ->next_ ## mdll->prev_ ## mdll = (element); \
2375 } while (0) 2369 } while (0)
2376 2370
2377 2371
2378/** 2372/**
@@ -2388,25 +2382,25 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2388 */ 2382 */
2389#define GNUNET_CONTAINER_MDLL_insert_before(mdll, head, tail, other, element) \ 2383#define GNUNET_CONTAINER_MDLL_insert_before(mdll, head, tail, other, element) \
2390 do \ 2384 do \
2391 { \ 2385 { \
2392 GNUNET_assert (((element)->prev_##mdll == NULL) && ((head) != (element))); \ 2386 GNUNET_assert(((element)->prev_ ## mdll == NULL) && ((head) != (element))); \
2393 GNUNET_assert (((element)->next_##mdll == NULL) && ((tail) != (element))); \ 2387 GNUNET_assert(((element)->next_ ## mdll == NULL) && ((tail) != (element))); \
2394 (element)->next_##mdll = (other); \ 2388 (element)->next_ ## mdll = (other); \
2395 if (NULL == other) \ 2389 if (NULL == other) \
2396 { \ 2390 { \
2397 (element)->prev = (tail); \ 2391 (element)->prev = (tail); \
2398 (tail) = (element); \ 2392 (tail) = (element); \
2399 } \ 2393 } \
2400 else \ 2394 else \
2401 { \ 2395 { \
2402 (element)->prev_##mdll = (other)->prev_##mdll; \ 2396 (element)->prev_ ## mdll = (other)->prev_ ## mdll; \
2403 (other)->prev_##mdll = (element); \ 2397 (other)->prev_ ## mdll = (element); \
2404 } \ 2398 } \
2405 if (NULL == (element)->prev_##mdll) \ 2399 if (NULL == (element)->prev_ ## mdll) \
2406 (head) = (element); \ 2400 (head) = (element); \
2407 else \ 2401 else \
2408 (element)->prev_##mdll->next_##mdll = (element); \ 2402 (element) ->prev_ ## mdll->next_ ## mdll = (element); \
2409 } while (0) 2403 } while (0)
2410 2404
2411 2405
2412/** 2406/**
@@ -2422,20 +2416,20 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2422 */ 2416 */
2423#define GNUNET_CONTAINER_MDLL_remove(mdll, head, tail, element) \ 2417#define GNUNET_CONTAINER_MDLL_remove(mdll, head, tail, element) \
2424 do \ 2418 do \
2425 { \ 2419 { \
2426 GNUNET_assert (((element)->prev_##mdll != NULL) || ((head) == (element))); \ 2420 GNUNET_assert(((element)->prev_ ## mdll != NULL) || ((head) == (element))); \
2427 GNUNET_assert (((element)->next_##mdll != NULL) || ((tail) == (element))); \ 2421 GNUNET_assert(((element)->next_ ## mdll != NULL) || ((tail) == (element))); \
2428 if ((element)->prev_##mdll == NULL) \ 2422 if ((element)->prev_ ## mdll == NULL) \
2429 (head) = (element)->next_##mdll; \ 2423 (head) = (element)->next_ ## mdll; \
2430 else \ 2424 else \
2431 (element)->prev_##mdll->next_##mdll = (element)->next_##mdll; \ 2425 (element) ->prev_ ## mdll->next_ ## mdll = (element)->next_ ## mdll; \
2432 if ((element)->next_##mdll == NULL) \ 2426 if ((element)->next_ ## mdll == NULL) \
2433 (tail) = (element)->prev_##mdll; \ 2427 (tail) = (element)->prev_ ## mdll; \
2434 else \ 2428 else \
2435 (element)->next_##mdll->prev_##mdll = (element)->prev_##mdll; \ 2429 (element) ->next_ ## mdll->prev_ ## mdll = (element)->prev_ ## mdll; \
2436 (element)->next_##mdll = NULL; \ 2430 (element)->next_ ## mdll = NULL; \
2437 (element)->prev_##mdll = NULL; \ 2431 (element)->prev_ ## mdll = NULL; \
2438 } while (0) 2432 } while (0)
2439 2433
2440 2434
2441/** 2435/**
@@ -2458,29 +2452,29 @@ GNUNET_CONTAINER_multihashmap32_iterator_destroy (
2458 tail, \ 2452 tail, \
2459 element) \ 2453 element) \
2460 do \ 2454 do \
2461 { \ 2455 { \
2462 if ((NULL == head) || (0 < comparator (comparator_cls, element, head))) \ 2456 if ((NULL == head) || (0 < comparator(comparator_cls, element, head))) \
2463 { \ 2457 { \
2464 /* insert at head, element < head */ \ 2458 /* insert at head, element < head */ \
2465 GNUNET_CONTAINER_DLL_insert (head, tail, element); \ 2459 GNUNET_CONTAINER_DLL_insert(head, tail, element); \
2466 } \ 2460 } \
2467 else \ 2461 else \
2468 { \ 2462 { \
2469 TYPE *pos; \ 2463 TYPE *pos; \
2470 \ 2464 \
2471 for (pos = head; NULL != pos; pos = pos->next) \ 2465 for (pos = head; NULL != pos; pos = pos->next) \
2472 if (0 < comparator (comparator_cls, element, pos)) \ 2466 if (0 < comparator(comparator_cls, element, pos)) \
2473 break; /* element < pos */ \ 2467 break; /* element < pos */ \
2474 if (NULL == pos) /* => element > tail */ \ 2468 if (NULL == pos) /* => element > tail */ \
2475 { \ 2469 { \
2476 GNUNET_CONTAINER_DLL_insert_tail (head, tail, element); \ 2470 GNUNET_CONTAINER_DLL_insert_tail(head, tail, element); \
2477 } \ 2471 } \
2478 else /* prev < element < pos */ \ 2472 else /* prev < element < pos */ \
2479 { \ 2473 { \
2480 GNUNET_CONTAINER_DLL_insert_after (head, tail, pos->prev, element); \ 2474 GNUNET_CONTAINER_DLL_insert_after(head, tail, pos->prev, element); \
2481 } \ 2475 } \
2482 } \ 2476 } \
2483 } while (0) 2477 } while (0)
2484 2478
2485 2479
2486/* ******************** Heap *************** */ 2480/* ******************** Heap *************** */
@@ -2497,8 +2491,7 @@ typedef uint64_t GNUNET_CONTAINER_HeapCostType;
2497 * @ingroup heap 2491 * @ingroup heap
2498 * Heap type, either max or min. 2492 * Heap type, either max or min.
2499 */ 2493 */
2500enum GNUNET_CONTAINER_HeapOrder 2494enum GNUNET_CONTAINER_HeapOrder {
2501{
2502 /** 2495 /**
2503 * @ingroup heap 2496 * @ingroup heap
2504 * Heap with the maximum cost at the root. 2497 * Heap with the maximum cost at the root.
@@ -2535,7 +2528,7 @@ struct GNUNET_CONTAINER_HeapNode;
2535 * @return handle to the heap 2528 * @return handle to the heap
2536 */ 2529 */
2537struct GNUNET_CONTAINER_Heap * 2530struct GNUNET_CONTAINER_Heap *
2538GNUNET_CONTAINER_heap_create (enum GNUNET_CONTAINER_HeapOrder order); 2531GNUNET_CONTAINER_heap_create(enum GNUNET_CONTAINER_HeapOrder order);
2539 2532
2540 2533
2541/** 2534/**
@@ -2546,7 +2539,7 @@ GNUNET_CONTAINER_heap_create (enum GNUNET_CONTAINER_HeapOrder order);
2546 * @param heap heap to destroy 2539 * @param heap heap to destroy
2547 */ 2540 */
2548void 2541void
2549GNUNET_CONTAINER_heap_destroy (struct GNUNET_CONTAINER_Heap *heap); 2542GNUNET_CONTAINER_heap_destroy(struct GNUNET_CONTAINER_Heap *heap);
2550 2543
2551 2544
2552/** 2545/**
@@ -2557,7 +2550,7 @@ GNUNET_CONTAINER_heap_destroy (struct GNUNET_CONTAINER_Heap *heap);
2557 * @return Element at the root, or NULL if heap is empty. 2550 * @return Element at the root, or NULL if heap is empty.
2558 */ 2551 */
2559void * 2552void *
2560GNUNET_CONTAINER_heap_peek (const struct GNUNET_CONTAINER_Heap *heap); 2553GNUNET_CONTAINER_heap_peek(const struct GNUNET_CONTAINER_Heap *heap);
2561 2554
2562 2555
2563/** 2556/**
@@ -2570,9 +2563,9 @@ GNUNET_CONTAINER_heap_peek (const struct GNUNET_CONTAINER_Heap *heap);
2570 * #GNUNET_NO if the heap is empty. 2563 * #GNUNET_NO if the heap is empty.
2571 */ 2564 */
2572int 2565int
2573GNUNET_CONTAINER_heap_peek2 (const struct GNUNET_CONTAINER_Heap *heap, 2566GNUNET_CONTAINER_heap_peek2(const struct GNUNET_CONTAINER_Heap *heap,
2574 void **element, 2567 void **element,
2575 GNUNET_CONTAINER_HeapCostType *cost); 2568 GNUNET_CONTAINER_HeapCostType *cost);
2576 2569
2577 2570
2578/** 2571/**
@@ -2583,7 +2576,7 @@ GNUNET_CONTAINER_heap_peek2 (const struct GNUNET_CONTAINER_Heap *heap,
2583 * @return number of elements stored 2576 * @return number of elements stored
2584 */ 2577 */
2585unsigned int 2578unsigned int
2586GNUNET_CONTAINER_heap_get_size (const struct GNUNET_CONTAINER_Heap *heap); 2579GNUNET_CONTAINER_heap_get_size(const struct GNUNET_CONTAINER_Heap *heap);
2587 2580
2588 2581
2589/** 2582/**
@@ -2594,7 +2587,7 @@ GNUNET_CONTAINER_heap_get_size (const struct GNUNET_CONTAINER_Heap *heap);
2594 * @return cost of the node 2587 * @return cost of the node
2595 */ 2588 */
2596GNUNET_CONTAINER_HeapCostType 2589GNUNET_CONTAINER_HeapCostType
2597GNUNET_CONTAINER_heap_node_get_cost ( 2590GNUNET_CONTAINER_heap_node_get_cost(
2598 const struct GNUNET_CONTAINER_HeapNode *node); 2591 const struct GNUNET_CONTAINER_HeapNode *node);
2599 2592
2600 2593
@@ -2625,9 +2618,9 @@ typedef int (*GNUNET_CONTAINER_HeapIterator) (
2625 * @param iterator_cls closure for @a iterator 2618 * @param iterator_cls closure for @a iterator
2626 */ 2619 */
2627void 2620void
2628GNUNET_CONTAINER_heap_iterate (const struct GNUNET_CONTAINER_Heap *heap, 2621GNUNET_CONTAINER_heap_iterate(const struct GNUNET_CONTAINER_Heap *heap,
2629 GNUNET_CONTAINER_HeapIterator iterator, 2622 GNUNET_CONTAINER_HeapIterator iterator,
2630 void *iterator_cls); 2623 void *iterator_cls);
2631 2624
2632/** 2625/**
2633 * @ingroup heap 2626 * @ingroup heap
@@ -2642,7 +2635,7 @@ GNUNET_CONTAINER_heap_iterate (const struct GNUNET_CONTAINER_Heap *heap,
2642 * NULL if the tree is empty. 2635 * NULL if the tree is empty.
2643 */ 2636 */
2644void * 2637void *
2645GNUNET_CONTAINER_heap_walk_get_next (struct GNUNET_CONTAINER_Heap *heap); 2638GNUNET_CONTAINER_heap_walk_get_next(struct GNUNET_CONTAINER_Heap *heap);
2646 2639
2647 2640
2648/** 2641/**
@@ -2655,9 +2648,9 @@ GNUNET_CONTAINER_heap_walk_get_next (struct GNUNET_CONTAINER_Heap *heap);
2655 * @return node for the new element 2648 * @return node for the new element
2656 */ 2649 */
2657struct GNUNET_CONTAINER_HeapNode * 2650struct GNUNET_CONTAINER_HeapNode *
2658GNUNET_CONTAINER_heap_insert (struct GNUNET_CONTAINER_Heap *heap, 2651GNUNET_CONTAINER_heap_insert(struct GNUNET_CONTAINER_Heap *heap,
2659 void *element, 2652 void *element,
2660 GNUNET_CONTAINER_HeapCostType cost); 2653 GNUNET_CONTAINER_HeapCostType cost);
2661 2654
2662 2655
2663/** 2656/**
@@ -2668,7 +2661,7 @@ GNUNET_CONTAINER_heap_insert (struct GNUNET_CONTAINER_Heap *heap,
2668 * @return element data stored at the root node 2661 * @return element data stored at the root node
2669 */ 2662 */
2670void * 2663void *
2671GNUNET_CONTAINER_heap_remove_root (struct GNUNET_CONTAINER_Heap *heap); 2664GNUNET_CONTAINER_heap_remove_root(struct GNUNET_CONTAINER_Heap *heap);
2672 2665
2673 2666
2674/** 2667/**
@@ -2679,7 +2672,7 @@ GNUNET_CONTAINER_heap_remove_root (struct GNUNET_CONTAINER_Heap *heap);
2679 * @return element data stored at the node, NULL if heap is empty 2672 * @return element data stored at the node, NULL if heap is empty
2680 */ 2673 */
2681void * 2674void *
2682GNUNET_CONTAINER_heap_remove_node (struct GNUNET_CONTAINER_HeapNode *node); 2675GNUNET_CONTAINER_heap_remove_node(struct GNUNET_CONTAINER_HeapNode *node);
2683 2676
2684 2677
2685/** 2678/**
@@ -2690,8 +2683,8 @@ GNUNET_CONTAINER_heap_remove_node (struct GNUNET_CONTAINER_HeapNode *node);
2690 * @param new_cost new cost for the node 2683 * @param new_cost new cost for the node
2691 */ 2684 */
2692void 2685void
2693GNUNET_CONTAINER_heap_update_cost (struct GNUNET_CONTAINER_HeapNode *node, 2686GNUNET_CONTAINER_heap_update_cost(struct GNUNET_CONTAINER_HeapNode *node,
2694 GNUNET_CONTAINER_HeapCostType new_cost); 2687 GNUNET_CONTAINER_HeapCostType new_cost);
2695 2688
2696 2689
2697#if 0 /* keep Emacsens' auto-indent happy */ 2690#if 0 /* keep Emacsens' auto-indent happy */