1 #ifndef INDEX_HEAP_H
2 #define INDEX_HEAP_H
3 
4 #include "sc25519.h"
5 
6 #define heap_init                crypto_sign_ed25519_amd64_64_heap_init
7 #define heap_extend              crypto_sign_ed25519_amd64_64_heap_extend
8 #define heap_pop                 crypto_sign_ed25519_amd64_64_heap_pop
9 #define heap_push                crypto_sign_ed25519_amd64_64_heap_push
10 #define heap_get2max             crypto_sign_ed25519_amd64_64_heap_get2max
11 #define heap_rootreplaced        crypto_sign_ed25519_amd64_64_heap_rootreplaced
12 #define heap_rootreplaced_3limbs crypto_sign_ed25519_amd64_64_heap_rootreplaced_3limbs
13 #define heap_rootreplaced_2limbs crypto_sign_ed25519_amd64_64_heap_rootreplaced_2limbs
14 #define heap_rootreplaced_1limb  crypto_sign_ed25519_amd64_64_heap_rootreplaced_1limb
15 
16 void heap_init(unsigned long long *h, unsigned long long hlen, sc25519 *scalars);
17 
18 void heap_extend(unsigned long long *h, unsigned long long oldlen, unsigned long long newlen, sc25519 *scalars);
19 
20 unsigned long long heap_pop(unsigned long long *h, unsigned long long *hlen, sc25519 *scalars);
21 
22 void heap_push(unsigned long long *h, unsigned long long *hlen, unsigned long long elem, sc25519 *scalars);
23 
24 void heap_get2max(unsigned long long *h, unsigned long long *max1, unsigned long long *max2, sc25519 *scalars);
25 
26 void heap_rootreplaced(unsigned long long *h, unsigned long long hlen, sc25519 *scalars);
27 void heap_rootreplaced_3limbs(unsigned long long *h, unsigned long long hlen, sc25519 *scalars);
28 void heap_rootreplaced_2limbs(unsigned long long *h, unsigned long long hlen, sc25519 *scalars);
29 void heap_rootreplaced_1limb(unsigned long long *h, unsigned long long hlen, sc25519 *scalars);
30 
31 #endif
32