Commit graph

10 commits

Author SHA1 Message Date
ryoon
5216e02d0d Update to 1.1.0
Changelog:
* packed_trie_map (new)

  * new data structure that implements a trie also known as a prefix
    tree.  This implementation requires all key values be known at
    construction time, after which its content is considered
    immutable.  Internally it packs all its nodes in a single
    contiguous array for space and lookup efficiencies.

* trie_map (new)

  * new data structure that implements a trie.  It works similar to
    packed_trie_map except that this version is mutable.

* multi_type_matrix

  * added a variant of walk() that takes the upper-left and
    lower-right corners to allow walking through a subset of the
    original matrix.

* multi_type_vector

  * fixed incorrect return values of the increment and decrement
    operators of in-block iterators.  They would previously return a
    value_type pointer which did not conform to the behaviors of STL
    iterators.

  * added support for custom event handlers for element block
    acquisitions and releases.

* flat_segment_tree

  * fixed incorrect return values of the increment and decrement
    operators of its leaf-node iterators as in multi_type_vector's
    fix.

* sorted_string_map

  * significantly improved the performance of its find() method by
    switching from using linear search to using binary search.  The
    improvement is especially visible with a large number of elements.
2016-03-08 18:50:21 +00:00
wiz
adeadf9db8 Update mdds to 1.0, based on the wip version by coypu and leot.
mdds 1.0.0

* all

  * introduced API versioning to ease parallel installation of API
    incompatible versions.  Version 1.0.0 will have an API versoin of
    1.0.

  * C++11 is now a hard requirement.

  * added API documentation via Doxygen, Sphinx and Breathe.

* mixed_type_matrix

  * officially removed for good in favor of multi_type_matrix.

* multi_type_vector

  * added memory usage reduction by conditionally shrinking the
    capacity of the underlying vector containers.

  * added slight performance gain by revising block adjustment policy
    during splitting of blocks.

* sorted_string_map

  * fixed a bug where a non-matching key was incorrectly returned as a
    matching key.
2016-02-13 08:40:22 +00:00
ryoon
8f36458e57 Update to 0.12.1
* Apply patches from LibreOffice 5.0.0.5.

Changelog:
mdds 0.12.1

* flat_segment_tree

  * removed construction-from-int requirement from value_type to allow
    non-numeric types to be stored.
  * removed construction-from-int requirement from key_type as well.
2015-08-12 00:45:18 +00:00
ryoon
e6ed4dae3d Update to 0.11.2
* Fix newer boost build.

Changelog:
mdds 0.11.2

* multi_type_vector

  * fixed various memory leaks associated with the set() method when a
    value overwrites an existing element in a managed block.

mdds 0.11.1

* all

  * fixed a large number of outstanding defects reported by Coverity
    Scan.

* multi_type_vector

  * fixed 2 cases of double-free bug in the variant of swap() that
    allows segmented swapping.

mdds 0.11.0

* sorted_string_map (new)

  * new data structure to support efficient mapping of textural keys
    to numeric values when the key values are known at compile time.

* multi_type_vector

  * fixed a bug in transfer() where two adjacent blocks of identical
    type would fail to be merged in some circumstances.

  * added shrink_to_fit() to allow trimming of any excess capacity
    from all non-empty blocks.

  * fixed a double-free bug in the variant of swap() that allows
    segmented swapping.

  * improved the exception message when the block position lookup
    fails to find valid block position, to make it easier to debug.
2015-02-04 18:01:25 +00:00
ryoon
a23dc84be9 Update to 0.10.1
* Install more header files.
* Tweak Makefile

Changelog:
* multi_type_matrix

  * added a variant of set_empty() that takes an additional length
    parameter.

    * void set_empty(size_type row, size_type col, size_type length)

mdds 0.10.0

* flat_segment_tree

  * significant performance improvement on build_tree() and
    search_tree(), by optimizing the non-leaf node object generation
    and storage to achieve better locality of reference.

* segment_tree

  * slight performance improvement on build_tree(), as a result of the
    optimization done for flat_segment_tree since these two structures
    share the same tree generation code.

* multi_type_vector

  * improved debug message on mis-matched block types (only when
    MDDS_MULTI_TYPE_VECTOR_DEBUG is defined).

mdds 0.9.1

* multi_type_vector

  * added several convenience methods for position objects.

  * performance improvement on setting array values.

  * added new constructor that takes an array of values as initial
    element values.

* multi_type_matrix

  * setter methods that take a position object to also return a
    position object.

  * added several convenience methods for position objects.

  * added new constructor that takes an array of values as initial
    element values.
2014-02-02 10:59:44 +00:00
ryoon
00c1cece6c Bump PKGREVISION.
* Install more header files.
2013-10-09 14:29:47 +00:00
jaapb
b6379b5294 Updated package to its latest version, 0.9.0. Changes (apart from bugfixes)
include:
* all
  * added .pc file for pkg-config.
* multi_type_vector
  * added another block function template to make it easier to declare
    container with 3 custom element types.
  * added two variants of release():
    * template<typename _T> iterator
      release(size_type pos, _T& value)
    * template<typename _T> iterator
      release(const iterator& pos_hint, size_type pos, _T& value)
  * added a variant of release() that takes no arguments.  This one
    releases all elements and makes the container empty afterward.
  * added a new variant of position() that takes const_iterator as
    position hint.
    * std::pair<const_iterator, size_type>
      position(const const_iterator& pos_hint, size_type pos) const
  * added compile-time macro MDDS_MULTI_TYPE_VECTOR_USE_DEQUE to allow
    users to specify std::deque as the underlying data array.  By
    default, multi_type_vector uses std::vector as the underlying data
    array container.
  * added a new variant of swap() that allows partial swapping of
    content with another container.
  * added static block type identifier so that the numeric block type
    ID can be deduced from the block type directly.
  * value_type (which is a type of object returned when dereferencing
    an iterator) now stores 'position' which is the logical position
    of the first element of a block.
  * added position_type and const_position_type which are typedefs to
    the return types of position() methods.
  * added char and unsigned char types to the standard types supported
    by default.
  * added position() member method that takes a logical element
    position and returns a pair of block iterator where the element
    resides and its offset within that block.
  * added at() static member method to the data block, which calls the
    at() method of the underlying std::vector container.
  * added release() member method to allow caller to release an object
    stored inside a managed block.
  * added two templates to ease creation of custom element block
    functions when using one or two custom element types.
  * added transfer() member method to allow elements in a specified
    range to be transferred from one container to another.  When
    transferring elements stored in a managed element block, the
    ownership of those elements is also transferred.
  * add variants of set() methods (both single- and multi-value)
    insert(), set_empty() and insert_empty() methods that take an
    iterator as an additional position hint parameter for block lookup
    speed optimization.
  * add support for non-const iterators which allow the client code to
    modify values directly from the iterators.
  * set() methods (both single- and multi-parameter variants),
    set_empty(), insert() and insert_empty() methods now return
    iterator that references the block to which the values are set or
    inserted.
* multi_type_matrix:
  * get_numeric(), get_boolean(), and get_string() are made more
    efficient.
  * added position() method that returns a reference object to an
    element (position object).
  * added variants of get_numeric(), get_boolean() and get_string()
    that retrieves elements from position objects.
  * added variants of set() that sets new element values via position
    objects.
  * add a variant of the position() method that takes an iterator as
    positional hint.  Note that there is no variant of position() that
    takes const_iterator.
* flat_segment_tree
  * changed the return type of search_tree from bool to
    std::pair<const_iterator,bool>, to make it consistent with the
    search() method.  Note that this is an API-incompatible change.
2013-08-22 14:42:57 +00:00
wiz
3079ce6415 Update to 0.6.0:
mdds 0.6.0

* all

  * added MSVS Solution file, to make it easier to build unit test
    programs on Windows.

* mixed_type_matrix

  * improved performance of size() method by caching it.

* multi_type_vector (new)

  * new data structure to support efficient storage of data of different
    types.

* multi_type_matrix (new)

  * new data structure to eventually replace mixed_type_matrix.  It uses
    multi_type_vector as its backend storage.
2012-07-29 20:02:15 +00:00
wiz
aa9e9e6459 Update to 0.5.3:
mdds 0.5.3

* mixed_type_matrix

  * re-implemented the filled storage for better performance, with two
    separate implementations for zero and emtpy matrix types.  The
    newer implementation should improve object creation time
    considerably.
2011-08-06 10:53:30 +00:00
wiz
5a3c14b041 Initial import of mdds-0.5.1:
Multi-Dimensional Data Structure (mdds)

A collection of multi-dimensional data structure and indexing algorithm.

It implements the following data structure:

    * flat segment tree
    * segment tree
    * rectangle set
2011-02-28 18:10:51 +00:00