annotate src/utils.h @ 30:f945bcc3571f

refactor
author Dennis C. M. <dennis@denniscm.com>
date Thu, 29 Jun 2023 17:48:36 +0100
parents dae463bbf5ca
children 61104b22a25d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 #ifndef UTILS_H
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 #define UTILS_H
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 #include <stdio.h>
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 #include <stdlib.h>
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 #include <time.h>
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7 #include <stdbool.h>
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 #include <unistd.h>
30
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
9 #include <GL/glut.h>
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
10 #include <pthread.h>
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
11 #include <ft2build.h>
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
12 #include <signal.h>
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
13 #include FT_FREETYPE_H
29
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 struct Element {
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
17 float value;
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18 bool current;
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 };
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
20
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
21 struct Algo {
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
22 char name[50];
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 void *(*function)(void *);
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24 };
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25
30
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
26 struct AlgoArgs {
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
27 struct Element *arr;
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
28 int arr_size;
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
29 int comparisons;
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
30 bool pause;
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
31 bool sequentially;
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
32 useconds_t delay;
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
33 };
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
34
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
35
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
36 struct ThreadState {
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
37 bool running;
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
38 pthread_t thread;
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
39 };
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
40
29
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41 void create_array(struct Element *arr, int arr_size, int window_height, int vpadding);
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42 void swap_elements(int x, int y, struct Element *arr);
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
43 void randomize_array(struct Element *arr, int arr_size);
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44 bool array_sorted(struct Element *arr, int arr_size);
30
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
45 void algorithm_selector(struct Algo *algos, int algos_size, int direction, int *selected_algo);
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
46 void change_speed(struct AlgoArgs *algo_args, int change);
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
47 void control_flow(useconds_t delay, bool sequentially, bool *pause);
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
48 void reset_state(struct AlgoArgs *algo_args, struct ThreadState *thread_state);
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
49 void run(struct AlgoArgs *algo_args, struct Algo *algos, int selected_algo,
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
50 struct ThreadState *thread_state);
29
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
51
dae463bbf5ca implementing multi-thread and refactoring
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
52
30
f945bcc3571f refactor
Dennis C. M. <dennis@denniscm.com>
parents: 29
diff changeset
53 #endif // UTILS_H