Basic Template Library


Keywords
library, data_structures, memory, nogc, general, containers, pure, safe, smart-pointers, strings
License
BSL-1.0
Install
dub fetch btl --version 1.0.0-rc.18

Documentation

Basic Template Library

About

This is colection of packages:

  • btl:autoptr: smart pointers like c++ std::shared_ptr, std::weak_ptr, std::enable_shared_from_this and more.
    • SharedPtr reference counted pointer with support for aliasing and optional weak pointer support.
    • RcPtr reference counted pointer with limited support for aliasing (but small size and lock free manipulation of pointer) and optional weak pointer support.
    • IntrusivePtr reference counted pointer with reference counting inside of managed object with limited support for aliasing (but small size and lock free manipulation of pointer) and optional weak pointer support.
    • UniquePtr non copyable owning pointer that owns and manages object through a pointer and disposes of that object when goes out of scope.
    • GlobalPtr (beta) non-owning pointer GlobalPtr to global data (static, gc, ...).
  • btl:string mutable string with small string optimization like c++ std::basic_string and std::string
    • BasicString Generalization of struct string with optional small string optimization for min N characters of type char, wchar and dchar.
    • SmallString Generalization of struct string with small string optimization for min N characters of type char, wchar and dchar.
    • LargeString Generalization of struct string without small string optimization for characters of type char, wchar and dchar.
    • FixedString Generalization of struct string with max N characters of type char, wchar and dchar.
    • String alias to BasicString!char.
  • btl:vector dynamic array like c++ std::vector and folly::small_vector
    • Vector sequence container with growable capacity.
    • SmallVector sequence container with growable capacity that implements small buffer optimization for N elements.
    • FixedVector sequence container with max N elements.
  • btl:list (beta) linked list like c++ std::list and std::forward_list
    • List sequence container - bidirectional linked list.
    • ForwardList sequence container - single linked list.

Documentation

Code

Package

History

This repository was in past divided into 3 repositories: autoptr, small-vector and basic-string but they shared many internal parts so I unite them under one.