Skip to content

Latest commit

 

History

History
96 lines (80 loc) · 4.2 KB

README.md

File metadata and controls

96 lines (80 loc) · 4.2 KB

Zupply - A light-weight portable C++ 11 library for Researches and Demos

Build Status License

Introduction

Zupply is a light-weight, cross-platform, easy to use C++11 library packed with fundamental functions/classes best for reaserches/small projects/demos.

Why Zupply

  • Tired of repetitive coding on reading/writing files? Logging messages? Loading configurations?

  • Feel desperate transferring code to another platform because you hard-coded in platform specific ways?

  • Reluctant to use Boost because it's too heavy-weight?

  • Hate setting up environments on a clean computer without any develop library which is required to be linked by many programs?

  • Just want to build a small demo, why bother libraries such as OpenCV just for reading/writing images?

  • If you agree at least two of them, zupply will be the right tool.

Features

  • Zero dependency, only C++ 11 standard
  • Designed to be easily included in projects, no need to link
  • Pure and clean, everything encapsulated in namespace zz, almost no pollution if you don't expose the namespace (explain)
  • Targeting Linux/Windows/Mac OS X/Partial Unix based OSes, meanwhile providing unified experience coding on each platform

What's included

  • CLI Argument-parser
  • INI/CFG Configuration-file-parser
  • Easy to use Timer and DateTime classes to measure time and datetime
  • Fast sync/async Logger with rich information and highly configurable
  • Cross-platform functions to handle filesystems. (create directory, check file existence, iterate through folder etc...)
  • Various formatting functions to (trim/split/replace/...) strings
  • Thread safe data structures for specific purposes
  • ProgBar class that is designed for displaying progress bar inside consoles
  • Image and ImageHdr class to do basic operations with image, for example, read(JPG, PNG, BMP, TGA, PSD, GIF, HDR, PIC)/write(JPG, PNG, TGA, BMP), crop, resize, pixel-wise access.
  • A lot more

What's under construction

  • Serializer/Deserializer: for dump/read objects to/from string directly, binary should also be supported

Usage

zupply is designed to be as easy to integrate as possible, thus you can:

  • Copy zupply.hpp and zupply.cpp into your project
  • Start writing code
#include "zupply.hpp"
using namespace zz; // optional using namespace zz for ease

// write your own code
int main(int argc, char** argv)
{
    auto logger = log::get_logger("default");
    logger->info("Welcome to zupply!");
    return 0;
}
  • Build and run
Note: you will need a compiler which support C++11 features, the following compilers/libraries are tested

You can start from scratch with quickstart.cpp in src folder

  • vc++12(Visual Studio 2013) or newer
# create visual studio project require cmake
cd build & create_visual_studio_2013_project.bat
  • g++ 4.8.1 or newer(link pthread because gcc requires it!!)
# with cmake
cd build
cmake .
make
# or manual build without cmake
cd build
g++ -std=c++11 -pthread ../unittest/unittest.cpp ../src/zupply.cpp -lpthread -o unittest
  • Clang++ 3.3 or newer
# using cmake is identical to gcc
# or manually build with clang++
cd build
clang++ -std=c++11 ../unittest/unittest.cpp ../src/zupply.cpp -o unittest

Documentation

Full documentation supplied.

Tutorials

For tutorials, please check Zupply Wiki!

License

Zupply uses very permissive MIT license.

Credits