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