<commit_before>// This file is part of the ustl library, an STL implementation.
//
// Copyright (C) 2005 by <NAME> <<EMAIL>>
// This file is free software, distributed under the MIT License.
//
// ustl.h
//
/// \mainpage
///
/// \section intro Introduction
///
/// uSTL is a partial implementation of the STL specification intended to
/// reduce code size of the derivative programs. Usually, the STL containers
/// manage their own storage with new[] and delete[] operators, which create
/// strongly typed storage. That is the standard way of allocating C++ object
/// vectors, allowing appropriate constructors and destructors to be called
/// on the allocated storage and ensuring that objects are copied via their
/// copy operators. Although type safety is a good thing, placing memory
/// management code into a template necessitates its reinstantiation for
/// every template instance used by the derivative program. This produces
/// substantial code bloat, that is frequently derided by C developers
/// and used by them as an argument that C is better than C++. The uSTL
/// implementation attempts to work around this problem by factoring
/// memory management code into a non-template base class, ustl::memblock,
/// which performs unstructured memory allocation. STL containers are then
/// implemented as template wrappers for memblock to provide a measure of
/// type safety. The result is that each template instantiation contains
/// less code, and although it does not completely "disappear", due to the
/// requirement for calling placement constructors on the allocated memory,
/// most of it does, being replaced by calls to memblock methods. A vector<T>
/// template instance, for instance, overrides resize and deallocate, the
/// former being a call to placement new[] and the latter iterates over all
/// elements to manually call the destructor, and two algorithms copy and
/// fill (which most STL programs use anyway); everything else melts away at
/// compile time as if you were using only unstructured storage in the first
/// place. ustl::string is implemented as a static class, not a template,
/// so it is shared among all users of the library. The base classes for
/// unstructured storage management (cmemlink - link to constant memory,
/// memlink - link to mutable memory, and memblock - owner of mutable memory)
/// are, of course, also available for use as data buffers wherever those are
/// needed, and streams that efficiently read and write binary data into them
/// are also available.
///
/// \section Differences
///
/// The main difference you will notice when using uSTL, is that objects in
/// containers may sometimes undergo bitwise copy. To ensure that this does
/// not harm your objects you need to design them not to contain any pointers
/// to data inside themselves or other objects. I have not encountered any
/// situation when such pointers were needed, but if you have one and do not
/// know how to work around the limitation, I would be happy to give it a try.
///
/// \section install Installation
///
/// You should have received a copy of the configure script with your distribution.
/// Then run \c configure with parameters appropriate for your system (usually none).
/// Finally, run \c make and \c make \c install to compile the shared library and
/// install it, along with necessary headers into system-standard directories (see
/// \c LIBDIR and \c INCDIR in Common.mk for values). To use the library, include
/// \c ustl.h and link to \c -lustl . Tutorials on using STL are numerous on the
/// web and the information in there mostly applies, except for iostream usage,
/// which is not supported in uSTL for philosophical reasons.
//
/// \defgroup Containers Containers
/// Here you'll find all the containers for your objects and data.
//
///	\defgroup MemoryManagement Memory Management
///	\ingroup Containers
///	Classes that implement low-level memory management and form the base for
///	all containers in the library. Almost all functionality in the containers
///	is reduced to calls to these base classes through a great deal of inline
///	crunching by the compiler, and thus you end up storing all your data in
///	ustl::memblock objects with the container templates as mere syntactic sugar.
//
///	\defgroup Sequences Sequence Containers
///	\ingroup Containers
///	Containers containing sequences of objects.
//
///	\defgroup AssociativeContainers Associative Containers<commit_msg>Removed obsolete documentation<commit_after>// This file is part of the ustl library, an STL implementation.
//
// Copyright (C) 2005 by <NAME> <<EMAIL>>
// This file is free software, distributed under the MIT License.
//
// ustl.h
//
/// \mainpage
///
/// \section intro Introduction
///
/// uSTL is a partial implementation of the STL specification intended to
/// reduce code size of the derivative programs. Usually, the STL containers
/// manage their own storage with new[] and delete[] operators, which create
/// strongly typed storage. That is the standard way of allocating C++ object
/// vectors, allowing appropriate constructors and destructors to be called
/// on the allocated storage and ensuring that objects are copied via their
/// copy operators. Although type safety is a good thing, placing memory
/// management code into a template necessitates its reinstantiation for
/// every template instance used by the derivative program. This produces
/// substantial code bloat, that is frequently derided by C developers
/// and used by them as an argument that C is better than C++. The uSTL
/// implementation attempts to work around this problem by factoring
/// memory management code into a non-template base class, ustl::memblock,
/// which performs unstructured memory allocation. STL containers are then
/// implemented as template wrappers for memblock to provide a measure of
/// type safety. The result is that each template instantiation contains
/// less code, and although it does not completely "disappear", due to the
/// requirement for calling placement constructors on the allocated memory,
/// most of it does, being replaced by calls to memblock methods. A vector<T>
/// template instance, for instance, overrides resize and deallocate, the
/// former being a call to placement new[] and the latter iterates over all
/// elements to manually call the destructor, and two algorithms copy and
/// fill (which most STL programs use anyway); everything else melts away at
/// compile time as if you were using only unstructured storage in the first
/// place. ustl::string is implemented as a static class, not a template,
/// so it is shared among all users of the library. The base classes for
/// unstructured storage management (cmemlink - link to constant memory,
/// memlink - link to mutable memory, and memblock - owner of mutable memory)
/// are, of course, also available for use as data buffers wherever those are
/// needed, and streams that efficiently read and write binary data into them
/// are also available.
//
/// \defgroup Containers Containers
/// Here you'll find all the containers for your objects and data.
//
///	\defgroup MemoryManagement Memory Management
///	\ingroup Containers
///	Classes that implement low-level memory management and form the base for
///	all containers in the library. Almost all functionality in the containers
///	is reduced to calls to these base classes through a great deal of inline
///	crunching by the compiler, and thus you end up storing all your data in
///	ustl::memblock objects with the container templates as mere syntactic sugar.
//
///	\defgroup Sequences Sequence Containers
///	\ingroup Containers
///	Containers containing sequences of objects.
//
///	\defgroup AssociativeContainers Associative Containers
{'fraction_non_alphanumeric': 0.07861271676300578, 'fraction_numerical': 0.0010276172125883109, 'mean_word_length': 3.50839606253619, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5223754', 'n_tokens_mistral': 1830, 'n_tokens_neox': 1790, 'n_words': 1108}