Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ DynamicArrayLib #1069

Closed
Vectorized opened this issue Sep 10, 2024 · 1 comment
Closed

✨ DynamicArrayLib #1069

Vectorized opened this issue Sep 10, 2024 · 1 comment

Comments

@Vectorized
Copy link
Owner

Vectorized commented Sep 10, 2024

Same concept like DynamicBufferLib, and LibRLP but only for 32-byte chunks.

struct DynamicArray {
    uint256[] data;
}

// Returns a new empty array. No slots reserved.
function p() internal pure returns (DynamicArray memory)

// Returns a new array with just one element. Please clean inputs.
function p(uint256 v) internal pure returns (DynamicArray memory)
function p(int256 v) internal pure returns (DynamicArray memory)
function p(address v) internal pure returns (DynamicArray memory)
function p(bool v) internal pure returns (DynamicArray memory)
function p(bytes32 v) internal pure returns (DynamicArray memory)

// Returns a new array initialized to the data.
function p(uint256[] v) internal pure returns (DynamicArray memory)
function p(int256[] v) internal pure returns (DynamicArray memory)
function p(address[] v) internal pure returns (DynamicArray memory)
function p(bool[] v) internal pure returns (DynamicArray memory)
function p(bytes32[] v) internal pure returns (DynamicArray memory) 

function reserve(DynamicArray memory a, uint256 n) internal pure returns (DynamicArray memory)
function truncate(DynamicArray memory a, uint256 n) internal pure returns (DynamicArray memory)
function clear(DynamicArray memory a) internal pure returns (DynamicArray memory)

// Returns a copy. See LibString for logic.
function slice(DynamicArray memory a, uint256 start, uint256 end) internal pure returns (DynamicArray memory)
function slice(DynamicArray memory a, uint256 start) internal pure returns (DynamicArray memory)

// We shall have a few `p`s. Don't need multiarg `p`s. Please clean inputs.
function p(DynamicArray memory a, uint256 v) internal pure returns (DynamicArray memory)
function p(DynamicArray memory a, int256 v) internal pure returns (DynamicArray memory)
function p(DynamicArray memory a, address v) internal pure returns (DynamicArray memory)
function p(DynamicArray memory a, bool v) internal pure returns (DynamicArray memory)
function p(DynamicArray memory a, bytes32 v) internal pure returns (DynamicArray memory)

function p(DynamicArray memory a, uint256[] memory v) internal pure returns (DynamicArray memory)
function p(DynamicArray memory a, int256[] memory v) internal pure returns (DynamicArray memory)
function p(DynamicArray memory a, address[] memory v) internal pure returns (DynamicArray memory)
function p(DynamicArray memory a, bool[] memory v) internal pure returns (DynamicArray memory)
function p(DynamicArray memory a, bytes32[] memory v) internal pure returns (DynamicArray memory)



// Some setters. Please clean inputs.
function set(DynamicArray memory a, uint256 i, uint256 v) internal pure returns (DynamicArray memory)
function set(DynamicArray memory a, uint256 i, int256 v) internal pure returns (DynamicArray memory)
function set(DynamicArray memory a, uint256 i, address v) internal pure returns (DynamicArray memory)
function set(DynamicArray memory a, uint256 i, bool v) internal pure returns (DynamicArray memory)
function set(DynamicArray memory a, uint256 i, bytes32 v) internal pure returns (DynamicArray memory)

// Some getters.
function get(DynamicArray memory a, uint256 i) internal pure returns (uint256)
function getUint256(DynamicArray memory a, uint256 i) internal pure returns (uint256)
function getInt256(DynamicArray memory a, uint256 i) internal pure returns (int256)
function getAddress(DynamicArray memory a, uint256 i) internal pure returns (address)
function getBool(DynamicArray memory a, uint256 i) internal pure returns (bool)
function getBytes32(DynamicArray memory a, uint256 i) internal pure returns (bytes32)

// With some convenience functions to directly cast.
function asUint256Array(DynamicArray memory a) internal pure returns (uint256[] memory)
function asInt256Array(DynamicArray memory a) internal pure returns (int256[] memory)
function asAddressArray(DynamicArray memory a) internal pure returns (address[] memory)
function asBoolArray(DynamicArray memory a) internal pure returns (bool[] memory)
function asBytes32Array(DynamicArray memory a) internal pure returns (bytes32[] memory)

// Best-effort free. See EfficientHashLib.
function free(DynamicArray memory a) internal pure

// For convenience. See EfficientHashLib. 
function hash(DynamicArray memory a) internal pure returns (bytes32)
@Vectorized
Copy link
Owner Author

Not urgent, but can consider.

@atarpara

@Vectorized Vectorized changed the title ⚡️ DynamicArrayLib ✨ DynamicArrayLib Sep 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant