Orbiter 2022
Combinatorial Objects
data_structures_global.cpp
Go to the documentation of this file.
1/*
2 * data_structures_global.cpp
3 *
4 * Created on: Sep 29, 2020
5 * Author: betten
6 */
7
8
9
10#include "foundations.h"
11
12using namespace std;
13
14
15namespace orbiter {
16namespace layer1_foundations {
17namespace data_structures {
18
20{
21 //null();
22}
23
25{
26 //null();
27}
28
29void data_structures_global::bitvector_m_ii(uchar *bitvec, long int i, int a)
30{
31 long int ii, bit;
32 uchar mask;
33
34 ii = i >> 3;
35 bit = i & 7;
36 mask = ((uchar) 1) << bit;
37 uchar &x = bitvec[ii];
38 if (a == 0) {
39 uchar not_mask = ~mask;
40 x &= not_mask;
41 }
42 else {
43 x |= mask;
44 }
45}
46
48{
49 long int ii, bit;
50 uchar mask;
51
52 ii = i >> 3;
53 bit = i & 7;
54 mask = ((uchar) 1) << bit;
55 uchar &x = bitvec[ii];
56 x |= mask;
57}
58
60// returns 0 or 1
61{
62 long int ii, bit;
63 uchar mask;
64
65 ii = i >> 3;
66 bit = i & 7;
67 mask = ((uchar) 1) << bit;
68 uchar &x = bitvec[ii];
69 if (x & mask) {
70 return 1;
71 }
72 else {
73 return 0;
74 }
75}
76
77
78
79uint32_t data_structures_global::int_vec_hash(int *data, int len)
80{
81 uint32_t h;
82 algorithms Algo;
83
84 h = Algo.SuperFastHash ((const char *) data, (uint32_t) len * sizeof(int));
85 return h;
86}
87
88uint32_t data_structures_global::lint_vec_hash(long int *data, int len)
89{
90 uint32_t h;
91 algorithms Algo;
92
93 h = Algo.SuperFastHash ((const char *) data, (uint32_t) len * sizeof(long int));
94 return h;
95}
96
97uint32_t data_structures_global::char_vec_hash(char *data, int len)
98{
99 uint32_t h;
100 algorithms Algo;
101
102 h = Algo.SuperFastHash ((const char *) data, (uint32_t) len);
103 return h;
104}
105
107{
108 int *data2;
109 int i, h;
110 sorting Sorting;
111
112 data2 = NEW_int(len);
113 for (i = 0; i < len; i++) {
114 data2[i] = data[i];
115 }
116 Sorting.int_vec_heapsort(data2, len);
117 h = int_vec_hash(data2, len);
118 FREE_int(data2);
119 return h;
120}
121
123{
124 long int *data2;
125 int i, h;
126 sorting Sorting;
127
128 data2 = NEW_lint(len);
129 for (i = 0; i < len; i++) {
130 data2[i] = data[i];
131 }
132 Sorting.lint_vec_heapsort(data2, len);
133 h = lint_vec_hash(data2, len);
134 FREE_lint(data2);
135 return h;
136}
137
138
139
140}}}
141
142
uint32_t SuperFastHash(const char *data, int len)
Definition: algorithms.cpp:242
a collection of functions related to sorted vectors
#define FREE_int(p)
Definition: foundations.h:640
unsigned char uchar
Definition: foundations.h:204
#define NEW_int(n)
Definition: foundations.h:625
#define FREE_lint(p)
Definition: foundations.h:642
#define NEW_lint(n)
Definition: foundations.h:628
the orbiter library for the classification of combinatorial objects