This repository represents the Lynar Studios - Standard Library (ls-std).

Patrick-Christopher Mattulat 3645b6b8be Implement working directory functionality for File class (Win) 3 years ago
config ce721a93b4 Add SerializableFactory class 3 years ago
doc 2bbf2247e8 Add key value file definition 3 years ago
include 3645b6b8be Implement working directory functionality for File class (Win) 3 years ago
source 3645b6b8be Implement working directory functionality for File class (Win) 3 years ago
test 3645b6b8be Implement working directory functionality for File class (Win) 3 years ago
.gitignore 2ee11bc5fb Extended .gitignore file 4 years ago
CMakeLists.txt 35a3d19aea Remove unused Windows dependencies 3 years ago
LICENSE.MIT bbf7536450 Rename LICENSE.txt file 4 years ago
README.md 428dbf3a09 Fix README.md headlines 3 years ago

README.md

Lynar Studios - Standard Library 2021.2.0

This is a cross-platform standard library written in C++ offering functionalities you'd usually miss in C++ standard library, especially if you'd search for cross-platform implementations. This library has been tested on Windows, Linux and MacOS systems.

Boxing

This library provides boxing classes for primitive data types (e.g. string, int, long, float...) to add additional functionalities for each one of them.

File

To handle file operations - or to receive information of a file - this library provides an own File class implementation, which can also be passed to library implemented input or output stream classes.

Base

This is a collection of very basic functionalities like a base Class which provides minimal reflection like class name. Also, you have the possibility with this collection to fetch this libraries version or even handle own versions for your project.

Time

A Date class comes with this collection, which you can use to represent a date and doing operations on it.

Logic

This collection of classes provides some nice functionalities to support your project with some nice logical features, like state machines and observer pattern supporting classes.

Serialization

Serialization is very important nowadays to persist data. This library offers a serializable interface, which can then be implemented in your project.
In addition to that there is already JSON serialization-based implementation for some public library classes.

JSON

This library uses a transitive JSON dependency, which is in line with our license model. Many thanks to Niels Lohmann for writing this nice little library.

XML

To handle XML files this library has an own XML parser implementation, which uses modern C++ features, such as shared pointers.

Logger

For logging functionality you might need for your project there is a Logger class coming with this library, which is also able to handle different log level.

Event Handling

With this first implemented milestone of event handling this library provides functionalities for creating and firing events.

Exception

This library provides some basic exceptions which can be used in your project to create awareness of certain error behaviour.

KV

A key value file offers the possibility to store simple information pairs in a file. This library provides parsing functionalities for .kv files.

Changelog

Features

  • extended EventManager class by adding EventHandler availability check method
  • added exceptions for event management
  • extended Date class by introducing += and -= operators
  • it's now possible to retrieve library version
  • added more operators to LogLevel class
  • added factory interface

Improvements

  • increased test coverage by adding more unit tests
  • improved overall error handling by adding more error checks
  • reduced overall unnecessary complexity of public classes
  • improved naming of certain classes

Fixes

  • add missing header files to main header file

Documentation

You can find a detailed documentation on Lynar Studios Website: lynarstudios.com

License

This software is licensed and uses MIT-license. You can find a LICENSE.MIT file inside the project's root directory.

Building

To build this library you'd need a recent version of cmake and your OS specific compiler collection, like gcc, MSVC or AppleClang installed.
Inside project's root directory create the following folder:

cmake_build_release

Open your OS specific command line window and navigate to this new folder and run the following command to configure the project and generate a native build system:

cmake ../

Inside cmake_build_release folder you will now find cmake generated files. To compile the library now, just run:

cmake --build . --config Release

Add Library To Your Project

If you would like to add this library to your cmake project - to the CMakeLists.txt file - make sure that you add the libraries' include directory:

include_directories(${CMAKE_CURRENT_LIST_DIR}/path/to/this/library/include)

Then link the library binary file inside your CMakeLists.txt file:

target_link_libraries(... "path/to/this/library/../libls_std_YYYY.MAJOR.MINOR.dll")

Testing

This project contains unit tests to accomplish test coverage.
To run those unit tests you have to adjust TestHelper class by adding your personal test folder path to getTestFolderLocation method.
There you have to adjust location variable based on the operating system you're using.