New in Version 0.17.6
Released 11 Nov 2024
Overview
Most changes this release are to clean up the compute table interface and the operation interfaces, to make it easier to implement operations.
Interface Changes
-
Added new object,
rangeval
, for generic items returned by functions. -
The
unary_operation
andbinary_operation
interfaces are changing; the old interface is still supported for now. The main differences are new virtual compute() methods that are “low level” for speed but also generic to minimize the number of overloaded compute() methods. See filesoper_binary.h
andoper_unary.h
for details. -
The
compute_table
class now maintains a list of all compute tables, mainly for garbage collection purposes. -
operation::showAllComputeTables
is nowcompute_table::showAll
-
An
operation
object may now be deleted directly, instead of usingoperation::destroy()
. -
Added new object,
ct_itemtype
, for type-checking compute table entries. -
Existing object,
ct_entry_type
, is now based on vectors ofct_itemtype
objects. -
The registry of compute table entry types has been moved to class
ct_entry_type
. -
The monolithic compute table has been moved from class
operation
to classcompute_table
. -
New method
forest::isSingletonNode
replaces oldforest::getSingletonIndex
andforest::getSingletonDown
methods. -
New methods
forest::makeRedundantsTo
andforest::makeIdentitiesTo
should be used when converting between reduction types (typically in operations). -
New method
forest::redirectSingleton
should be used to eliminate illegal edges to singleton nodes in identity reduced forests (works for all reduction types).
Implementation
-
New unified compute table implementation in file
ct_styles.cc
, based on templates. -
Added possibility for huge (more than 4 billion entries) compute tables. This is a compute table setting, with a default of non-huge tables to save memory.
-
Node reduction (in class
forest
) is now a local operation; helper virtual methods (normalize
,isIdentityEdge
, etc) have been removed. -
Boolean (MDD or MXD) Intersection, Union, Difference, and Complement operations have been rewritten using the new compute table and operation interfaces.
-
Copy operations have been rewritten using the new compute table and operation interfaces.
-
Comparison operations have been collected into a single source file (operations/compare.cc) and rewritten using the new interfaces