An open source library with over 200 functions. This library has been used throughout my academic career in École 42 Silicon Valley. It incorporates very useful functions, including binary trees, linked lists, stacks, arrays, bit manipulation, and more. By developing this library, I gained a thorough understanding of data structures, algorithms, unit testing, continuous integration, troubleshooting, and proper documentation.
All of these functions follows the applicable styleguide standard (the norm).
Read the pdf provided to learn more: resources/norminette.pdf
.
To install norminette, run the following commands:
gem install norminette --pre
gem install --user-install json -v 1.8.3
Run it in the following way:
norminette <path-to-c-files>
For the sake of keeping everything neat and in order, I separated the functions' declarations into different header files, corresponding to the behavior of such functions. For instance, ft_strlen can be found in ft_string.h. Also, some of the functions included don't exist in the Standard C Library, but I still kept them defined by there behavior. For example, ft_strnew can also be in ft_string.h.
Header File | List of Functions |
---|---|
btree.h | btree_create_node, btree_level_count, btree_add_node, btree_apply_infix, btree_apply_suffix, btree_apply_prefix, btree_search_item |
ft_math.h | ft_abs, ft_min, ft_min, ft_isprime, ft_sqrt, ft_trunc, ft_ceil, ft_round, ft_floor, ft_pow, ft_hypot, ft_sqrtl, ft_truncl, ft_ceill, ft_roundl, ft_floorl, ft_powl, ft_hypotl, ft_collatz_conjecture, ft_nextprime, ft_nbrlen, ft_factorial, ft_fibonacci, ft_find_next_prime |
ft_list.h | ft_lstfree, ft_lstadd, ft_lstaddback, ft_lstappend, ft_lstiter, ft_lstdel, ft_lstdelone, ft_lstreverse, ft_lstnew, ft_lstmap |
ft_wchar.h | ft_wclen, ft_putwchar, ft_putwchar_fd, ft_putwstr, ft_putwstr_fd, ft_wcslen, ft_wcsdup, ft_wcscpy, ft_wcsnew, ft_wcsncpy |
ft_array.h | ft_array_max_value, ft_array_new, ft_array_copy, ft_array_rotate_left, ft_array_rotate_right, ft_array_pop, ft_array_do_op, ft_array_delete, ft_array_print, ft_array_bubble_sort, ft_array_insertion_sort, ft_array_repeated_count |
ft_stack.h | ft_stck_show, ft_stck_push, ft_stck_pop |
ft_errno.h | ft_errno, ft_strerror |
ft_ctype.h | ft_isascii, ft_isalnum, ft_isalpha, ft_isblank, ft_iscntrl, ft_isdigit, ft_isgraph, ft_islower, ft_isspace, ft_tolower, ft_toupper, ft_isprint, ft_ispunct, ft_isupper, ft_islower, ft_isxdigit, ft_iswspace, ft_ismathop |
ft_stdio.h | ft_putchar, ft_putchar_fd, ft_putnchar, ft_putnchar_fd, t_putstr, t_putstr_fd, ft_putendl, ft_putendl_fd, ft_putnbr, ft_putnbr_fd, ft_putnbr_base, ft_putnbr_base_fd, ft_putunbr, ft_putnstr, ft_putnstr_fd |
ft_matrix.h | ft_matrix_new, ft_matrix_delete |
ft_printf.h | ft_printf, parse_specifier, print_spaces, get_attributes, get_nbr_zeroes, get_nbr_spaces, get_nbr_unsigned, format_signed, format_unsigned, print_string, print_wide_string, print_hexadecimal, print_decimal, print_octal, print_character, print_wide_character, print_binary |
ft_stdlib.h | ft_atoi, ft_atoi_base, ft_itoa, ft_itoa_base, ft_realloc, ft_calloc |
ft_string.h | ft_strequ, ft_strnequ, ft_memcmp, ft_strcmp, ft_strncmp, ft_strcat, t_strncat, ft_strchr, ft_strrchr, ft_strnchr, ft_strcpy, ft_strncpy, ft_strstr, ft_strnstr, ft_strdup, ft_strndup, ft_strnew, ft_strjoin, ft_strmap, ft_strmapi, ft_strrev, ft_strsub, ft_strtrim, ft_strtok, ft_strsplit, ft_strclr, ft_strdel, ft_striter, ft_striteri, ft_memdel, ft_memcpy, ft_memccpy, ft_memchr, ft_memmove, ft_memset, ft_memalloc, ft_strlen, ft_strnlen, ft_strlcat, ft_strlcpy |
ft_strings.h | ft_bzero |
ft_classics.h | ft_active_bits, ft_angle_to_degrees, ft_compact, ft_is_big_endian, ft_is_little_endian, ft_str_is_lowercase, ft_str_is_numeric, ft_str_is_printable, ft_str_is_uppercase, ft_str_is_palindrome, ft_str_starts_with, ft_str_ends_with, ft_do_op, ft_file_extension, ft_str_capitalize, ft_str_to_upcase, ft_str_to_lowcase, ft_program_name, ft_remove_extension, ft_str_remove_whitespace, ft_separated_values, ft_swap, ft_textstyle, ft_textstyle_reset, ft_puterror, ft_puterror_fd, ft_nbrcount, ft_wordcount, ft_wordlen, ft_char_count, ft_values_count |
get_next_line.h | get_next_line |
Download the repository, and compile the library using the Makefile. You can use the following commands:
Command | Description |
---|---|
make |
Compile the library. |
make clean |
Remove objects files. |
make fclean |
Remove objects files and the library. |
make re |
Re-compile the library. |
make test |
Compile the library, runs a series of tests. |
make install |
Install the library. |
The binary libft.a
will be created at the root of the project's directory.
Copy the includes/
directory into the root of your project, and
make sure to compile your source code with the following flags:
gcc libft.a -I./includes <your_file.c> -o <output_name>
Run the following command :
make install
Now you can add the <libft.h>
header in your .c files!
You can also run some manual tests, like the following way:
Run it with assets/array_test.c
, a test file used for my array type functions.
make
gcc libft.a -I./includes ./assets/array_test.c -o array_test.o
./array_test.o
Run it with assets/printf_test.c
, a test file used to test ft_printf.
make
gcc libft.a -I./includes ./assets/printf_test.c -o printf_test.o
./printf_test.o
Run it with assets/errno_test.c
, a test file used for to test ft_errno.h.
make
gcc libft.a -I./includes ./assets/errno_test.c -o errno_test.o
./errno_test.o
- Incorporate unit testing.
- Fix continuous integration with TravisCI.
- Finish Makefile test and install rules. Here are some resources:
- https://stackoverflow.com/questions/41645207/how-to-write-install-target-in-makefile
- https://stackoverflow.com/questions/28403379/how-to-write-install-tag-in-makefile
- https://www.linuxquestions.org/questions/programming-9/how-do-i-write-a-make-install-makefile-that-determines-if-user-is-root-217198/
All my projects are free to read/clone on GitHub. I don't expect anyone to support me, but if you want, I really appreciate it from the bottom of my heart. ❤️
⌄ You can also scan the code below if you would like to support me with a small amount.
I thank you in advance. 🐢 🐢 🐢
This project is licensed under the MIT License - see the LICENSE file for details.