-indentation, code cleanup
[oweals/gnunet.git] / src / set / strata_estimator.h
1 /*
2       This file is part of GNUnet
3       (C) 2012 Christian Grothoff (and other contributing authors)
4
5       GNUnet is free software; you can redistribute it and/or modify
6       it under the terms of the GNU General Public License as published
7       by the Free Software Foundation; either version 3, or (at your
8       option) any later version.
9
10       GNUnet is distributed in the hope that it will be useful, but
11       WITHOUT ANY WARRANTY; without even the implied warranty of
12       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13       General Public License for more details.
14
15       You should have received a copy of the GNU General Public License
16       along with GNUnet; see the file COPYING.  If not, write to the
17       Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18       Boston, MA 02111-1307, USA.
19 */
20
21 /**
22  * @file set/strata_estimator.h
23  * @brief estimator of set difference
24  * @author Florian Dold
25  */
26
27 #ifndef GNUNET_CONSENSUS_STRATA_ESTIMATOR_H
28 #define GNUNET_CONSENSUS_STRATA_ESTIMATOR_H
29
30 #include "platform.h"
31 #include "gnunet_common.h"
32 #include "gnunet_util_lib.h"
33
34 #ifdef __cplusplus
35 extern "C"
36 {
37 #if 0                           /* keep Emacsens' auto-indent happy */
38 }
39 #endif
40 #endif
41
42
43 struct StrataEstimator
44 {
45   struct InvertibleBloomFilter **strata;
46   unsigned int strata_count;
47   unsigned int ibf_size;
48 };
49
50
51 void
52 strata_estimator_write (const struct StrataEstimator *se, void *buf);
53
54
55 void
56 strata_estimator_read (const void *buf, struct StrataEstimator *se);
57
58
59 struct StrataEstimator *
60 strata_estimator_create (unsigned int strata_count, uint32_t ibf_size, uint8_t ibf_hashnum);
61
62
63 unsigned int
64 strata_estimator_difference (const struct StrataEstimator *se1,
65                              const struct StrataEstimator *se2);
66
67
68 void
69 strata_estimator_insert (struct StrataEstimator *se, struct IBF_Key key);
70
71
72 void
73 strata_estimator_destroy (struct StrataEstimator *se);
74
75
76 /**
77  * Make a copy of a strata estimator.
78  *
79  * @param se the strata estimator to copy
80  * @return the copy
81  */
82 struct StrataEstimator *
83 strata_estimator_dup (struct StrataEstimator *se);
84
85
86 #if 0                           /* keep Emacsens' auto-indent happy */
87 {
88 #endif
89 #ifdef __cplusplus
90 }
91 #endif
92
93 #endif
94