All Projects → theodelrieu → mgs

theodelrieu / mgs

Licence: BSL-1.0 License
C++14 codec library

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to mgs

SACK
System Abstraction Component Kit
Stars: ✭ 18 (-25%)
Mutual labels:  generic
simple json
Simple way to dynamically convert from and to JSON using build-time generators given a type.
Stars: ✭ 15 (-37.5%)
Mutual labels:  generic
codecinfo
Detailed listing of multimedia codecs on an Android device
Stars: ✭ 33 (+37.5%)
Mutual labels:  codecs
generic
flexible data type for Go
Stars: ✭ 43 (+79.17%)
Mutual labels:  generic
generic
Generic programming library for Python
Stars: ✭ 50 (+108.33%)
Mutual labels:  generic
io-api
📐 API design example by I/O, the demo implementation of https://dzone.com/articles/generic-inputoutput-api-java
Stars: ✭ 46 (+91.67%)
Mutual labels:  generic
generic
generic streamlink plugin
Stars: ✭ 18 (-25%)
Mutual labels:  generic
servicestack-client
ServiceStack Service Client, Server Events and validation library
Stars: ✭ 17 (-29.17%)
Mutual labels:  generic
UseCases
This a library that offers a generic implementation of the data layers from the clean architecture by Uncle bob.
Stars: ✭ 23 (-4.17%)
Mutual labels:  generic
atomig
Generic and convenient `std` atomics via `Atomic<T>`
Stars: ✭ 32 (+33.33%)
Mutual labels:  generic
Astview
Astview is a graphical viewer for abstract syntax trees
Stars: ✭ 20 (-16.67%)
Mutual labels:  generic
Johnny
Melodic Caching for Swift
Stars: ✭ 36 (+50%)
Mutual labels:  generic
Swiftish
A fully generic Swift vector & matrix library
Stars: ✭ 17 (-29.17%)
Mutual labels:  generic
QuickDB
A Generic CoreData Manager to accept any type of objects. Fastest way for adding a Database to your project.
Stars: ✭ 16 (-33.33%)
Mutual labels:  generic
anchor
Create Dynamic CLI's as your GitOps Marketplace
Stars: ✭ 38 (+58.33%)
Mutual labels:  generic
Genumerics
Genumerics is a high-performance .NET library for generic numeric operations
Stars: ✭ 16 (-33.33%)
Mutual labels:  generic
ertis-auth
Generic token generator and validator service like auth
Stars: ✭ 28 (+16.67%)
Mutual labels:  generic
GenericRecyclerAdapter
Easiest way to use RecyclerView. Reduce boilerplate code! You don't need to write adapters for listing pages anymore!
Stars: ✭ 53 (+120.83%)
Mutual labels:  generic
go2linq
Generic Go implementation of .NET's LINQ to Objects.
Stars: ✭ 41 (+70.83%)
Mutual labels:  generic
GenericAdapter
⛳️ Easy to use android databinding ready recyclerview adapter
Stars: ✭ 26 (+8.33%)
Mutual labels:  generic

MGS

mgs is a C++14 codec library.

Its main design goals are:

  • Ease of use: Regular usage must be a no-brainer.
  • Extensibility: New codecs should be easy to add in future versions.
  • API genericity: Emulating concepts to define generic APIs.
  • Package manager friendliness: Modular architecture, each codec is a single entity.

mgs defines a common interface for all supported codecs, that is both generic and customizable:

   #include <mgs/base64.hpp>

   #include <array>
   #include <forward_list>
   #include <string>
   #include <vector>

   using namespace mgs;

   int main() {
     std::string const a = base64::encode("Hello, World!");
     std::vector<unsigned char> const b = base64::decode(a);

     // Default return types can be overriden
     auto const c = base64::encode<std::forward_list<char>>(b);
     auto const d = base64::decode<std::array<char, 13>>(c);

     // Iterator ranges are supported
     auto const e = base64::encode(d.begin(), d.end());
     auto const f = base64::decode(e.begin(), e.end());
   }

You can find the full documentation here.

How to build

Requirements:

  • Python3
  • Conan (latest version)
  • CMake (>= 3.3)

Then run:

$ mkdir build && cd build
$ conan workspace install ..
$ cmake -G Ninja .. && ninja
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].