Alcelin is a collection of utils for Anstro Pleuton's programs. This library contains several commonly used program artifacts in a simplified functions for ease of use.
This library is subdivided into sections:
- Container Utilities contains several utilities for container types (i.e., std::vector, std::array, etc. or custom compatible container types) which includes appending elements (combining), filtering elements out, etc. And several operators for these operations.
- Custom Containers contains boundless version of standard library containers, in which you can access elements without having to worry about bounds check.
- String Manipulators contains several utilities for std::string (or std::string_view as parameters) which includes converting containers to string, word-wrap, trimming string, converting to lower case, etc. And several operators from Container Utilities applied to string types.
- ANSI Escape Codes contains easy handlers for manipulation output using decorator ANSI Escape Codes.
- Argument Parser is removed.
- File Utilities contains file utilities such as function to read all the file contents, and other utilities ability to convert any trivially copyable type from and to vector of bytes (
sd_chunk
) and read/write to file/generic streams. - Properties. Yes, properties. The similar one from C#. Properties allow you to define function that return a value when a variable is being observed (used its value), or a function that sets a value when a variable is assigned to or operated on.
- Argument Parser contains functionality to parse Command Line Arguments and structures to define options (or switches if you are old and use Microsoft Windows) to easily validate arguments.
- This is removed from Alcelin, and is now available in Optrone.
- Confer - Only for testing.
- Know to program in C++
- Know to program in C++23 (optional, recommended)
- Know to use third party C++ libraries
- Know to use CMake
If you are not Anstro Pleuton, which you probably are, here is a quick and rough guide to use my library:
- Setup:
- Clone this repository.
git clone https://github.com/anstropleuton/alcelin.git cd alcelin
- Initialize dependencies:
- Clone/update dependencies
git submodule update --init --recursive
- Build the library:
- Make build folder:
mkdir build cd build
- Build the project:
cmake .. cmake --build .
- Install (optional, Unix/-like only)
Note: To uninstall, use
sudo cmake --install .
sudo cmake --build . --target uninstall
. - If you are using CMake, you can use
find_package
/add_subdirectory
orFetchContent_Declare
/FetchContent_MakeAvailable
, or manually setinclude
andbuild
as include directories and linkbuild/libalcelin.a
.
Assuming you are in root directory of this project and built the project in build directory, generate documentation using:
cd build
doxygen
The documentation is generated as a web-pages. Open the file build/docs/html/index.html
to read the documentations.
firefox docs/html/index.html
- Review all CMake files
- Refactor tests to be less repetitive
- Refactor examples to be more structured
Refer to the Changelog for info about changes in each version.
Check out Guidelines before you submit your code! Make sure to create a branch with one task with the name of the category of your task (i.e., "features/", "bugfix/", etc.) your task before you change the code.
Thanks to jothepro for the stylesheet Doxygen Awesome for Doxygen.
Thanks to Nuno Pinheiro (can't find link) for the background Elarun. But I did find a KDE store link to the background image. I think you could consider that. If KDE developers are here, I would appreciate your help to find a proper link to the author.
Thanks to GLFW for some code in CMake.
This project is licensed under the terms of MIT License, see License.
That folder is where I put my useless features. Don't use them please.