Giter Site home page Giter Site logo

nstd's Introduction

nstd

This is a C++20 utility library. nstd stands for non-standard. The library currently contains the following features:

  • signal_slot - a signal/slot implementation that is thread safe and supports auto-disconnection from slots.
  • relinx - LINQ-like data transformations
  • live_property - a templated wrapper class that emits signals when a value is changing/changed.
  • expiry_cache - a container where a data can expire.
  • json - Niels Lohmann's json library [https://github.com/nlohmann/json]
  • chaiscript - ChaiScript is an easy to use embedded scripting language for C++ [https://github.com/ChaiScript/ChaiScript]
  • asio - boost's networking library, but no dependancy on boost [http://think-async.com/]
  • urdl - the library to download web content (depends on asio) [https://github.com/chriskohlhoff/urdl]
  • date - the date and time manipulations library created by Howard Hinnant [https://github.com/HowardHinnant/date]
  • units - a compile-time, header-only, dimensional analysis and unit conversion library built on c++14 with no dependencies. [https://github.com/nholthaus/units]
  • base64, crc32 - base64 encoding/decoding, CRC32/constexpr CRC32.
  • string_id - A small C++ library to handle hashed strings serving as identifiers (see notes at the end of this page) [https://github.com/foonathan/string_id]
  • uuid - unique id generator
  • uri - class for URI manipulations.
  • http_request_parser - a simple class to parse incoming http requests.
  • http_resource_manager - header-only HTTP server/router.
  • sharp_tcp - header-only TCP server/client classes.
  • planar_movements_recognizer - a set of classes to track and recognize planar movements and to execute corresponding commands
  • topological_sorter - the class to sort objects with dependencies (dependency solver)
  • sqlite3/sqlite c++ wrapper - sql database support [https://github.com/aminroosta/sqlite_modern_cpp]
  • quantum random number provider (using QRNG internet service: http://qrng.anu.edu.au)
  • strings - a library to do string manipulations like: trim, unicode convertions, replace, join, split, composing (aka format) etc.
  • cmdline_options - a commandline parser [https://github.com/Fytch/ProgramOptions.hxx]
  • giant - r-lyeh's tiny library to handle little/big endianness [https://github.com/r-lyeh/giant]
  • fifo_map - a FIFO-ordered associative container for C++
  • ...and many more

Many of these libraries are sub-modules. So, don't forget to initialize and update sub-modules after cloning this repository. Also, make sure all submodules are switched to their master branch.

For Windows users, you can download MinGW from the following sites:

https://gcc-mcf.lhmouse.com/ (recommended! After extraction from the archive file, to install it, just put its /bin folder into the PATH environment variable) or https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/

MinGW/GCC >= 9.1 is now the reqired compiler that supports some features of C++20. Latest MSVC 2019 and Clang were tested successfully.

GENie can be downloaded from https://github.com/bkaradzic/GENie and genie executable should be placed to the example folder or be in path.

A simple usage on Windows using GENie and MinGW:

Go to the example folder and type:

> genie gmake
> mingw32-make config=release

On Linux do the same but use 'make' instead of 'mingw32-make'

๐Ÿ”ธ NOTE: To compile the 'string_id' source code, you need to install 'cmake' first and then run it using 'string_id' folder as a source. On Ubuntu Linux it might look like this:

> sudo apt-get install cmake
> cd include/external/string_id
> cmake . .

nstd's People

Contributors

ptomaine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.