Compare commits

...

3 commits

Author SHA1 Message Date
Imbus
263cb19258 Attempt att correct documentation
Some checks are pending
Demo / Explore-CI (push) Waiting to run
2024-05-05 14:56:43 +02:00
Imbus
4eeccffc46 Simple readme 2024-05-05 14:56:33 +02:00
Imbus
2bdd100b04 Make & doxyfile 2024-05-05 14:56:23 +02:00
5 changed files with 42 additions and 7 deletions

View file

@ -1,6 +1,10 @@
PROJECT_NAME = MyProject
PROJECT_NUMBER = 1.0
PROJECT_NAME = CTree
PROJECT_NUMBER = $(PROJECT_NUMBER)
INPUT = src
RECURSIVE = YES
EXTRACT_ALL = YES
INPUT += README.md
USE_MDFILE_AS_MAINPAGE = README.md
OUTPUT_DIRECTORY = docs
#EXCLUDE = /path/to/exclude/directory

View file

@ -1,6 +1,8 @@
# Compiler
CC := gcc
GITHASH := $(shell git rev-parse --short HEAD)
# Compiler flags
CFLAGS := -Wall -Wextra -Wpedantic -std=c2x
@ -44,7 +46,7 @@ clean:
rm -rf $(BUILD_DIR) $(TARGET)
docs:
doxygen Doxyfile
PROJECT_NUMBER=git-$(GITHASH) doxygen Doxyfile
cppcheck:
cppcheck --enable=all --inconclusive --std=c11 --language=c --platform=unix64 --suppress=missingIncludeSystem $(SRCS)

3
README.md Normal file
View file

@ -0,0 +1,3 @@
# CTree Example Project
Sample project for the CTree library. Testing out writing C with best practices in mind.

View file

@ -7,6 +7,15 @@
#define ANSI_COLOR_RED "\x1b[31m"
#define ANSI_COLOR_RESET "\x1b[0m"
/**
* @brief Assert a condition
* @details If the condition is false, print an error message
* and exit the program
*
* @param condition The condition to assert
* @param message The message to print if the condition is false
* @return 0 if the condition is true
*/
int assert(bool condition, const char *message) {
if (!condition) {
printf(ANSI_COLOR_RED "Assertion failed: %s\n" ANSI_COLOR_RESET, message);

View file

@ -5,20 +5,37 @@
#include <stdio.h>
#include <stdlib.h>
// A regular node with a left and right branch
/**
* @brief A node in a binary tree
* @details A node in a binary tree has some data
* and can have a left and right branch
*/
struct Node {
/** @brief The data of the node */
int data;
struct Node *left, *right;
/** @see Node */
struct Node *left;
/** @see Node */
struct Node *right;
};
typedef struct Node Node;
// Represents a tree with a root node
/** @brief Represents a tree with a root node */
struct Tree {
/** @brief The root node of the tree */
Node *root;
};
typedef struct Tree Tree;
// Insert some data into the tree
/**
* @brief Insert some data into the tree
*
* @param tree
* @param data
* @return * Insert
*/
int tree_insert(Tree *tree, int data);
// Remove some data from the tree