No description, website, or topics provided.
C C++ CMake Python Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
algorithm
buffer
cmake
coap
compat
config
doc
gdb
http
include_public/avsystem/commons
list
log
net
persistence
rbtree
stream
tests
tools
unit
utils
vector
.gitignore
CMakeLists.txt
LICENSE
NOTICE
README.md
avs_commons-config.cmake.in
avs_commons-version.cmake.in
avs_commons_test.supp
devconfig
test_headers.py
test_symbols.sh
test_visibility.py

README.md

AVSystem Commons Library

A set of common code used in AVSystem for projects written in C.

Currently the included components are:

  • Data structures
    • avs_buffer - simple data buffer with circular-like semantics
    • avs_list - lightweight, generic and type-safe implementation of a singly linked list, with API optimized for ad-hoc usage
    • avs_rbtree - basic implementation of a red-black binary search tree
    • avs_vector - generic implementation of a C++-style vector (dynamic array)
  • Networking framework
  • Other modules
    • avs_algorithm - currently contains a base64 encoder and decoder
    • avs_log - simple logging framework
    • avs_stream - generic framework for I/O streams; includes pre-implemented streams that can be used through its unified API:
      • md5.h - calculating MD5 hashes
      • netbuf.h - buffered network I/O
      • stream_file.h - file I/O
      • stream_inbuf.h - read-only wrapper for raw memory buffers
      • stream_membuf.h - in-memory stream optimized for a single-message write-then-read cycle
      • stream_outbuf.h - write-only wrapper for raw memory buffers
    • avs_unit - simple and easy to use unit testing framework
    • avs_utils - currently contains utility function for handling time values, psudorandom number generation and string tokenization

Most of the library is written in standard and portable C99. There are some dependencies on POSIX APIs, but there are provisions for replacing them when necessary (see the compat directory for details).

avs_unit relies on some GCC-isms and is unlikely to work with any compiler that is not based on either GCC or Clang.

The code is available under Apache 2.0 License.

Contact, contributing

  • Your feedback is important! Feel free to create an Issue here on GitHub.
  • If you would like to contribute to avs_commons just send us a pull request.