Skip to content

Commit 2d30223

Browse files
committed
Added tests and better transformations and much more.
1 parent 4fbe497 commit 2d30223

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1969
-610
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -496,3 +496,5 @@ venv.bak/
496496
cmake-build-*/
497497

498498
*.fbs
499+
**/fletcherfiltering_test_workspace/**
500+
**/mysql-data/**

codegen-cpp/CMakeLists.txt

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,8 @@ project(codegen_cpp)
33

44
set(CMAKE_CXX_STANDARD 14)
55

6-
add_executable(codegen_cpp fletcherfiltering.cpp query.cpp main.cpp)
6+
add_library(codegen_lib SHARED fletcherfiltering.cpp query_test.cpp query.cpp)
7+
8+
add_executable(codegen_cpp main.cpp)
9+
10+
TARGET_LINK_LIBRARIES(codegen_cpp codegen_lib)

codegen-cpp/main.cpp

+22-34
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,40 @@
11
#include <iostream>
22
#include "fletcherfiltering.h"
3-
#include "query.h"
3+
#include "query_test.h"
44

55
int main() {
66

7-
in_schema in;
8-
out_schema out;
7+
in_schema_test in;
8+
out_schema_test out;
99

10-
int id = 1;
11-
int int1 = 2347645;
12-
int int2 = 123325;
13-
int string1_len = 11;
14-
char string1[STRING_SIZE] = "abcdefghijk";
15-
unsigned long long timestamp1 = 1544620718000ul;
10+
in.id = 1;
11+
in.string1 = "abcdefghijk, sdoifghdsfgsbfgshdfbsifgb8sdfjsdif sbf sdbfis df bsdjns kdfs fisbd fjsodnfisnf sbdif sd bsbg";
12+
in.string2 = "abcdefghijk, sdoifghdsfgsbfgshdfbsifgb8sdfjsdif haohgw8y245bhwe9y713rbi2 25 ghu924y24tbj24t stfgswr tgwerw4t wrt2 45rt2 45625";
1613

1714

18-
in.id.write(id);
19-
in.int1.write(int1);
20-
in.int2.write(int2);
21-
in.string1_len.write(string1_len);
22-
for(int i = 0; i<string1_len; i++) {
23-
in.string1.write(string1[i]);
24-
}
25-
in.timestamp1.write(timestamp1);
26-
27-
query(in,out);
15+
std::cout << "Input:" << std::endl;
16+
std::cout << "id: " << in.id << std::endl;
17+
std::cout << "string1 (" << strlen(in.string1) << "): " << in.string1 << std::endl;
18+
std::cout << "string2 (" << strlen(in.string2) << "): " << in.string2 << std::endl;
2819

29-
if(!out.int1.empty()) {
30-
int int1_o = out.int1.read();
31-
int concat_o_len = out.concat_len.read();
32-
char concat_o[STRING_SIZE];
33-
for (int i = 0; i < concat_o_len; i++)
34-
concat_o[i] = out.concat.read();
3520

36-
concat_o[concat_o_len] = '\0';
21+
out.string1 = (char*)malloc(sizeof(char)*256);
22+
out.string2 = (char*)malloc(sizeof(char)*256);
3723

38-
int concat2_o_len = out.concat2_len.read();
39-
char concat2_o[STRING_SIZE];
40-
for (int i = 0; i < concat2_o_len; i++)
41-
concat2_o[i] = out.concat2.read();
24+
bool matched = query_test(in, out);
4225

43-
concat2_o[concat2_o_len] = '\0';
4426

45-
std::cout << "int1: " << int1_o << std::endl;
46-
std::cout << "concat (" << concat_o_len << "): " << concat_o << std::endl;
47-
std::cout << "concat2 (" << concat2_o_len << "): " << concat2_o << std::endl;
27+
if(matched) {
28+
std::cout << "Output:" << std::endl;
29+
std::cout << "id: " << out.id << std::endl;
30+
std::cout << "string1 (" << strlen(out.string1) << "): " << out.string1 << std::endl;
31+
std::cout << "string2 (" << strlen(out.string2) << "): " << out.string2 << std::endl;
4832
} else {
4933
std::cout << "Record didn't match." << std::endl;
5034
}
35+
36+
free(out.string1);
37+
free(out.string2);
38+
5139
return 0;
5240
}

codegen-cpp/query.cpp

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include "query.h"
2+
3+
bool query(in_schema& in_data, out_schema& out_data) {
4+
int32_t id;
5+
(in_data.id >> id);
6+
int32_t string1_len;
7+
(in_data.string1_len >> string1_len);
8+
char string1[255];
9+
for (int i = 0; i < string1_len; i += 1) {
10+
(in_data.string1 >> string1[i]);
11+
}
12+
int32_t string2_len;
13+
(in_data.string2_len >> string2_len);
14+
char string2[255];
15+
for (int i = 0; i < string2_len; i += 1) {
16+
(in_data.string2 >> string2[i]);
17+
}
18+
//Start of data processing
19+
int32_t id_o = id;
20+
char* string1_o = string1;
21+
int string1_o_len = string1_len;
22+
char* string2_o = string2;
23+
int string2_o_len = string2_len;
24+
bool __pass_record = true;
25+
//End of data processing
26+
if (__pass_record) {
27+
(out_data.id << id_o);
28+
(out_data.string1_len << string1_o_len);
29+
for (int i = 0; i < string1_o_len; i += 1) {
30+
(out_data.string1 << string1_o[i]);
31+
}
32+
(out_data.string2_len << string2_o_len);
33+
for (int i = 0; i < string2_o_len; i += 1) {
34+
(out_data.string2 << string2_o[i]);
35+
}
36+
}
37+
38+
return __pass_record;
39+
}

codegen-cpp/query.h

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#pragma once
2+
#include "hls_stream.h"
3+
#include "fletcherfiltering.h"
4+
5+
6+
struct in_schema {
7+
hls::stream<int32_t> id;
8+
hls::stream<char> string1;
9+
hls::stream<int32_t> string1_len;
10+
hls::stream<char> string2;
11+
hls::stream<int32_t> string2_len;
12+
};
13+
14+
15+
struct out_schema {
16+
hls::stream<int32_t> id;
17+
hls::stream<char> string1;
18+
hls::stream<int32_t> string1_len;
19+
hls::stream<char> string2;
20+
hls::stream<int32_t> string2_len;
21+
};
22+
bool query(in_schema& in_data, out_schema& out_data);

codegen-cpp/query_test.cpp

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include "query_test.h"
2+
extern "C" {
3+
4+
bool query_test(in_schema_test& in_data_test, out_schema_test& out_data_test) {
5+
in_schema in_data;
6+
out_schema out_data;
7+
(in_data.id << in_data_test.id);
8+
int32_t string1_len = strlen(in_data_test.string1);
9+
(in_data.string1_len << string1_len);
10+
for (int i = 0; i < string1_len; i += 1) {
11+
(in_data.string1 << in_data_test.string1[i]);
12+
}
13+
int32_t string2_len = strlen(in_data_test.string2);
14+
(in_data.string2_len << string2_len);
15+
for (int i = 0; i < string2_len; i += 1) {
16+
(in_data.string2 << in_data_test.string2[i]);
17+
}
18+
//Start of query code
19+
bool __pass_record = query(in_data, out_data);
20+
//End of query code
21+
if (__pass_record) {
22+
(out_data.id >> out_data_test.id);
23+
int32_t string1_o_len;
24+
(out_data.string1_len >> string1_o_len);
25+
for (int i = 0; i < string1_o_len; i += 1) {
26+
(out_data.string1 >> out_data_test.string1[i]);
27+
}
28+
out_data_test.string1[string1_o_len] = '\0';
29+
int32_t string2_o_len;
30+
(out_data.string2_len >> string2_o_len);
31+
for (int i = 0; i < string2_o_len; i += 1) {
32+
(out_data.string2 >> out_data_test.string2[i]);
33+
}
34+
out_data_test.string2[string2_o_len] = '\0';
35+
}
36+
37+
return __pass_record;
38+
}
39+
}

codegen-cpp/query_test.h

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#pragma once
2+
#include "hls_stream.h"
3+
#include "query.h"
4+
5+
extern "C" {
6+
7+
8+
struct in_schema_test {
9+
int32_t id;
10+
char* string1;
11+
char* string2;
12+
};
13+
14+
15+
struct out_schema_test {
16+
int32_t id;
17+
char* string1;
18+
char* string2;
19+
};
20+
bool query_test(in_schema_test& in_data_test, out_schema_test& out_data_test);
21+
}

codegen/.idea/codegen.iml

+9-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

codegen/.idea/dataSources.xml

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)