Skip to content

TreeMath ​

Git Source

Author:
Trader Joe

This library contains functions to interact with a tree of TreeUint24.

Functions ​

contains ​

Returns true if the tree contains the id

solidity
function contains(TreeUint24 storage tree, uint24 id) internal view returns (bool);

Parameters

NameTypeDescription
treeTreeUint24The tree
iduint24The id

Returns

NameTypeDescription
<none>boolTrue if the tree contains the id

add ​

Adds the id to the tree and returns true if the id was not already in the tree
It will also propagate the change to the parent levels.

solidity
function add(TreeUint24 storage tree, uint24 id) internal returns (bool);

Parameters

NameTypeDescription
treeTreeUint24The tree
iduint24The id

Returns

NameTypeDescription
<none>boolTrue if the id was not already in the tree

remove ​

Removes the id from the tree and returns true if the id was in the tree.
It will also propagate the change to the parent levels.

solidity
function remove(TreeUint24 storage tree, uint24 id) internal returns (bool);

Parameters

NameTypeDescription
treeTreeUint24The tree
iduint24The id

Returns

NameTypeDescription
<none>boolTrue if the id was in the tree

findFirstRight ​

Returns the first id in the tree that is lower than or equal to the given id.
It will return type(uint24).max if there is no such id.

solidity
function findFirstRight(TreeUint24 storage tree, uint24 id) internal view returns (uint24);

Parameters

NameTypeDescription
treeTreeUint24The tree
iduint24The id

Returns

NameTypeDescription
<none>uint24The first id in the tree that is lower than or equal to the given id

findFirstLeft ​

Returns the first id in the tree that is higher than or equal to the given id.
It will return 0 if there is no such id.

solidity
function findFirstLeft(TreeUint24 storage tree, uint24 id) internal view returns (uint24);

Parameters

NameTypeDescription
treeTreeUint24The tree
iduint24The id

Returns

NameTypeDescription
<none>uint24The first id in the tree that is higher than or equal to the given id

_closestBitRight ​

Returns the first bit in the given leaves that is strictly lower than the given bit.
It will return type(uint256).max if there is no such bit.

solidity
function _closestBitRight(bytes32 leaves, uint8 bit) private pure returns (uint256);

Parameters

NameTypeDescription
leavesbytes32The leaves
bituint8The bit

Returns

NameTypeDescription
<none>uint256The first bit in the given leaves that is strictly lower than the given bit

_closestBitLeft ​

Returns the first bit in the given leaves that is strictly higher than the given bit.
It will return type(uint256).max if there is no such bit.

solidity
function _closestBitLeft(bytes32 leaves, uint8 bit) private pure returns (uint256);

Parameters

NameTypeDescription
leavesbytes32The leaves
bituint8The bit

Returns

NameTypeDescription
<none>uint256The first bit in the given leaves that is strictly higher than the given bit

Structs ​

TreeUint24 ​

solidity
struct TreeUint24 {
    bytes32 level0;
    mapping(bytes32 => bytes32) level1;
    mapping(bytes32 => bytes32) level2;
}