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

Patrick-Christopher f9e94615f5 Remove dynamic linking for test suites пре 2 година
config ce721a93b4 Add SerializableFactory class пре 3 година
doc 2bbf2247e8 Add key value file definition пре 3 година
include 840a5fef9c Fix includes for MSVC compiler пре 2 година
source 840a5fef9c Fix includes for MSVC compiler пре 2 година
test 840a5fef9c Fix includes for MSVC compiler пре 2 година
.gitignore 2ee11bc5fb Extended .gitignore file пре 4 година
CMakeLists.txt f9e94615f5 Remove dynamic linking for test suites пре 2 година
LICENSE.MIT bbf7536450 Rename LICENSE.txt file пре 4 година
README.md 9e446c3ec4 Fix typo in README.md file пре 2 година

README.md

Lynar Studios - Standard Library 2022.1.0

This is a cross-platform standard library written in C++ offering functionalities you'd usually miss in C++'s standard template library (STL), especially if you'd search for cross-platform implementations. This library has been tested on Windows, Linux and MacOS systems. Following a modularized approach the following submodules are defined in scope of this library, which are independent:

Boxing

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

Core

The core module is a base module providing a base Class, exceptions, data types and interfaces. Usually the other submodules are dependent on this module.

Encoding

To encode a byte field (e.g. binaries) for transfer the Base64 encoding / decoding functionality is being provided by this submodule as a first feature.

Event

This submodule comes with an Event class, as well as with handlers and managers to provide an intuitive event managing for your application.

IO

To handle file operations - or to receive information of a file - this library submodule provides an own File class implementation, which can also be passed to library implemented input or output stream classes.
Additionally XML and KV parsing functionalities are provided by this submodule.

Logic

Functionalities provided by this submodule support your project with some nice logical features. The first one being provided by it is a state machine.

Time

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

Changelog

Features

  • "encoding" submodule has been added providing Base64 encoding and decoding functionality

Improvements

  • modularization has been improved by restructuring library files, which would result into having submodules - there is no central header or binary file anymore - instead submodules can be linked independently now (e.g. using ls_std_event.hpp and linking libls_std_event.so)
  • there is a cmake guard now to ensure that only one goal at the time is being build
  • test suites for shared libraries have been introduced to ensure that building and linking created shared library is working
  • namespaces have been improved library wide and are more specific - there is no ls_std namespace anymore - instead you can choose submodule specific namespaces (e.g. ls::std::boxing::)
  • GoogleTest framework has been upgraded to 1.11.0

Fixes

  • there is a cmake guard now to ensure that only one goal at the time is being build

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 provide test coverage.
To run those tests you have to build this project with option LS_STD_BUILD_WITH_TESTS set to ON.