Skip to content

Commit caf0418

Browse files
Merge pull request #64 from AntonisZks/Evita's-2-workstation
Makefile changes
2 parents 7eb4770 + cd79a77 commit caf0418

File tree

3 files changed

+300
-45
lines changed

3 files changed

+300
-45
lines changed

Makefile

Lines changed: 57 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# Define the compiler and its flags during compilation
22
CC = g++
3-
4-
FLAGS = -g -Wall -std=c++11 -I $(INC_DIR) -O3
3+
FLAGS = -g -Wall -std=c++11 -I $(INC_DIR) -O3 -fsanitize=address
54

65
# Setup constants for code directories
76
INC_DIR = include
@@ -10,76 +9,90 @@ OBJ_DIR = build
109
EXE_DIR = bin
1110
TST_DIR = tests
1211

13-
# make all builds evrything
14-
all: build bin $(EXE_DIR)/graph_node_test $(EXE_DIR)/graph_test $(EXE_DIR)/test_distance $(EXE_DIR)/test_data_vectors $(EXE_DIR)/test_recall $(EXE_DIR)/main
12+
# make all builds everything
13+
all: code test
14+
15+
# Compile only the main code
16+
code: build bin $(EXE_DIR)/main
17+
18+
# Compile all test executables
19+
test: build bin $(EXE_DIR)/graph_node_test $(EXE_DIR)/graph_test $(EXE_DIR)/test_distance $(EXE_DIR)/test_data_vectors $(EXE_DIR)/test_recall
20+
@echo "Running all tests:"
21+
$(EXE_DIR)/graph_node_test
22+
$(EXE_DIR)/graph_test
23+
$(EXE_DIR)/test_distance
24+
$(EXE_DIR)/test_data_vectors
25+
$(EXE_DIR)/test_recall
26+
27+
# Run tests with valgrind
28+
valgrind: test
29+
valgrind --leak-check=full $(EXE_DIR)/graph_node_test
30+
valgrind --leak-check=full $(EXE_DIR)/graph_test
31+
valgrind --leak-check=full $(EXE_DIR)/test_distance
32+
valgrind --leak-check=full $(EXE_DIR)/test_data_vectors
33+
valgrind --leak-check=full $(EXE_DIR)/test_recall
34+
35+
# Define the rule for the main executable
36+
$(EXE_DIR)/main: $(OBJ_DIR)/main.o $(OBJ_DIR)/read_vectors.o $(OBJ_DIR)/distance_functions.o
37+
$(CC) $(FLAGS) -o $(EXE_DIR)/main $(OBJ_DIR)/main.o $(OBJ_DIR)/read_vectors.o $(OBJ_DIR)/distance_functions.o
38+
39+
$(OBJ_DIR)/main.o: main.cpp $(INC_DIR)/DataStructures/Graph/graph.h $(INC_DIR)/read_data.h $(INC_DIR)/DataStructures/DataVector/DataVector.h
40+
$(CC) $(FLAGS) -o $(OBJ_DIR)/main.o -c main.cpp
41+
42+
# Rule to create read_vectors.o
43+
$(OBJ_DIR)/read_vectors.o: $(SRC_DIR)/read_vectors.cpp $(INC_DIR)/read_data.h $(INC_DIR)/DataStructures/DataVector/DataVector.h
44+
$(CC) $(FLAGS) -o $(OBJ_DIR)/read_vectors.o -c $(SRC_DIR)/read_vectors.cpp
45+
46+
# Rule to create distance_functions.o
47+
$(OBJ_DIR)/distance_functions.o: $(SRC_DIR)/distance_functions.cpp $(INC_DIR)/distance.h
48+
$(CC) $(FLAGS) -o $(OBJ_DIR)/distance_functions.o -c $(SRC_DIR)/distance_functions.cpp
1549

50+
# Test executables and object file rules
1651

17-
# Graph node test executable is being compiled here
18-
$(EXE_DIR)/graph_node_test: $(OBJ_DIR)/graph_node_test.o $(INC_DIR)/DataStructures/Graph/graph_node.h $(INC_DIR)/DataStructures/Graph/graph.h
52+
# Build graph_node_test executable
53+
$(EXE_DIR)/graph_node_test: $(OBJ_DIR)/graph_node_test.o
1954
$(CC) $(FLAGS) -o $(EXE_DIR)/graph_node_test $(OBJ_DIR)/graph_node_test.o
2055

21-
$(OBJ_DIR)/graph_node_test.o: $(TST_DIR)/graph_node_test.cc $(INC_DIR)/acutest.h $(INC_DIR)/DataStructures/Graph/graph_node.h $(INC_DIR)/DataStructures/Graph/graph.h
56+
$(OBJ_DIR)/graph_node_test.o: $(TST_DIR)/graph_node_test.cc $(INC_DIR)/acutest.h $(INC_DIR)/DataStructures/Graph/graph_node.h
2257
$(CC) $(FLAGS) -o $(OBJ_DIR)/graph_node_test.o -c $(TST_DIR)/graph_node_test.cc
2358

24-
# Graph test executable is being compiled here
25-
$(EXE_DIR)/graph_test: $(OBJ_DIR)/graph_test.o $(INC_DIR)/DataStructures/Graph/graph.h
59+
# Build graph_test executable
60+
$(EXE_DIR)/graph_test: $(OBJ_DIR)/graph_test.o
2661
$(CC) $(FLAGS) -o $(EXE_DIR)/graph_test $(OBJ_DIR)/graph_test.o
2762

2863
$(OBJ_DIR)/graph_test.o: $(TST_DIR)/graph_test.cc $(INC_DIR)/acutest.h $(INC_DIR)/DataStructures/Graph/graph.h
2964
$(CC) $(FLAGS) -o $(OBJ_DIR)/graph_test.o -c $(TST_DIR)/graph_test.cc
3065

31-
32-
# Test distance executable is being compiled here
33-
$(EXE_DIR)/test_distance: $(OBJ_DIR)/test_distance.o $(OBJ_DIR)/distance_functions.o $(INC_DIR)/DataStructures/Graph/graph.h $(INC_DIR)/distance.h
66+
# Build test_distance executable
67+
$(EXE_DIR)/test_distance: $(OBJ_DIR)/test_distance.o $(OBJ_DIR)/distance_functions.o
3468
$(CC) $(FLAGS) -o $(EXE_DIR)/test_distance $(OBJ_DIR)/test_distance.o $(OBJ_DIR)/distance_functions.o
3569

36-
$(OBJ_DIR)/test_distance.o: $(TST_DIR)/test_distance.cc $(INC_DIR)/acutest.h $(INC_DIR)/DataStructures/Graph/graph.h
70+
$(OBJ_DIR)/test_distance.o: $(TST_DIR)/test_distance.cc $(INC_DIR)/acutest.h $(INC_DIR)/distance.h
3771
$(CC) $(FLAGS) -o $(OBJ_DIR)/test_distance.o -c $(TST_DIR)/test_distance.cc
3872

39-
$(OBJ_DIR)/distance_functions.o: $(SRC_DIR)/distance_functions.cpp $(INC_DIR)/distance.h
40-
$(CC) $(FLAGS) -o $(OBJ_DIR)/distance_functions.o -c $(SRC_DIR)/distance_functions.cpp
41-
42-
# read_vector executable is being compiled here
43-
$(EXE_DIR)/test_data_vectors: $(OBJ_DIR)/test_data_vectors.o $(OBJ_DIR)/read_vectors.o $(INC_DIR)/DataStructures/DataVector/DataVector.h $(INC_DIR)/read_data.h
73+
# Build test_data_vectors executable
74+
$(EXE_DIR)/test_data_vectors: $(OBJ_DIR)/test_data_vectors.o $(OBJ_DIR)/read_vectors.o
4475
$(CC) $(FLAGS) -o $(EXE_DIR)/test_data_vectors $(OBJ_DIR)/test_data_vectors.o $(OBJ_DIR)/read_vectors.o
4576

46-
$(OBJ_DIR)/test_data_vectors.o: $(TST_DIR)/test_data_vectors.cc $(INC_DIR)/acutest.h $(INC_DIR)/DataStructures/DataVector/DataVector.h
77+
$(OBJ_DIR)/test_data_vectors.o: $(TST_DIR)/test_data_vectors.cc $(INC_DIR)/acutest.h $(INC_DIR)/read_data.h
4778
$(CC) $(FLAGS) -o $(OBJ_DIR)/test_data_vectors.o -c $(TST_DIR)/test_data_vectors.cc
4879

49-
# Testing Recall
50-
$(EXE_DIR)/test_recall: $(OBJ_DIR)/test_recall.o $(INC_DIR)/Evaluation/recall.h
80+
# Build test_recall executable
81+
$(EXE_DIR)/test_recall: $(OBJ_DIR)/test_recall.o
5182
$(CC) $(FLAGS) -o $(EXE_DIR)/test_recall $(OBJ_DIR)/test_recall.o
5283

5384
$(OBJ_DIR)/test_recall.o: $(TST_DIR)/test_recall.cc $(INC_DIR)/acutest.h $(INC_DIR)/Evaluation/recall.h
5485
$(CC) $(FLAGS) -o $(OBJ_DIR)/test_recall.o -c $(TST_DIR)/test_recall.cc
5586

56-
# main files
57-
$(EXE_DIR)/main: $(OBJ_DIR)/main.o $(OBJ_DIR)/read_vectors.o $(OBJ_DIR)/distance_functions.o $(INC_DIR)/DataStructures/Graph/graph.h $(INC_DIR)/read_data.h $(INC_DIR)/DataStructures/DataVector/DataVector.h $(INC_DIR)/Algorithms/GreedySearch.h
58-
$(CC) $(FLAGS) -o $(EXE_DIR)/main $(OBJ_DIR)/main.o $(OBJ_DIR)/read_vectors.o $(OBJ_DIR)/distance_functions.o
59-
60-
$(OBJ_DIR)/main.o: main.cpp $(INC_DIR)/DataStructures/Graph/graph.h $(INC_DIR)/read_data.h $(INC_DIR)/DataStructures/DataVector/DataVector.h
61-
$(CC) $(FLAGS) -o $(OBJ_DIR)/main.o -c main.cpp
62-
63-
$(OBJ_DIR)/read_vectors.o: $(SRC_DIR)/read_vectors.cpp $(INC_DIR)/read_data.h $(INC_DIR)/DataStructures/DataVector/DataVector.h
64-
$(CC) $(FLAGS) -o $(OBJ_DIR)/read_vectors.o -c $(SRC_DIR)/read_vectors.cpp
65-
66-
67-
68-
# build directory creation
69-
# (every object file goes here)
87+
# Directories creation
7088
build:
71-
mkdir build
89+
mkdir -p $(OBJ_DIR)
7290

73-
74-
# bin directory creation
75-
# (every executable file goes here)
7691
bin:
77-
mkdir bin
78-
92+
mkdir -p $(EXE_DIR)
7993

8094
# Clean command to clean the workspace
8195
.PHONY: clean
82-
8396
clean:
84-
rm -r -f bin
85-
rm -r -f build
97+
rm -r -f $(EXE_DIR)
98+
rm -r -f $(OBJ_DIR)

include/Algorithms/GreedySearch.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@
1313
#include <queue>
1414
#include <cmath>
1515

16+
// Enum to define different filter types based on the query type
17+
enum FilterType {
18+
NO_FILTER, // For query_type = 0, no filter is applied (only the vector is used).
19+
C_EQUALS_v, // For query_type = 1, filter for C = v (categorical attribute).
20+
l_LEQ_T_LEQ_r, // For query_type = 2, filter for l ≤ T ≤ r (timestamp constraint).
21+
C_EQUALS_v_AND_l_LEQ_T_LEQ_r // For query_type = 3, filter for both C = v and l ≤ T ≤ r (combined constraints).
22+
};
23+
1624
/**
1725
* @brief Computes the difference between two sets, returning elements
1826
* that are in the first set but not in the second.
@@ -109,7 +117,7 @@ struct EuclideanDistanceOrder {
109117
*/
110118
template <typename graph_t>
111119
std::pair<std::set<graph_t>, std::set<graph_t>>
112-
GreedySearch(const Graph<graph_t>& G, const GraphNode<graph_t>& s, const graph_t& xq, unsigned int k, unsigned int L) {
120+
FilterGreedySearch(const Graph<graph_t>& G, const GraphNode<graph_t>& s, const graph_t& xq, unsigned int k, unsigned int L) {
113121

114122
std::set<graph_t> candidates = {s.getData()};
115123
std::set<graph_t> visited = {};

0 commit comments

Comments
 (0)