@0x:contracts-utils
Removed several functions from LibBytes
This commit is contained in:
parent
51282953bd
commit
1cf8ae5909
@ -271,33 +271,6 @@ library LibBytes {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @dev Pops the last 20 bytes off of a byte array by modifying its length.
|
|
||||||
/// @param b Byte array that will be modified.
|
|
||||||
/// @return The 20 byte address that was popped off.
|
|
||||||
function popLast20Bytes(bytes memory b)
|
|
||||||
internal
|
|
||||||
pure
|
|
||||||
returns (address result)
|
|
||||||
{
|
|
||||||
if (b.length < 20) {
|
|
||||||
LibRichErrors.rrevert(LibBytesRichErrors.InvalidByteOperationError(
|
|
||||||
LibBytesRichErrors.InvalidByteOperationErrorCodes.LengthGreaterThanOrEqualsTwentyRequired,
|
|
||||||
b.length,
|
|
||||||
20 // 20 is length of address
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Store last 20 bytes.
|
|
||||||
result = readAddress(b, b.length - 20);
|
|
||||||
|
|
||||||
assembly {
|
|
||||||
// Subtract 20 from byte array length.
|
|
||||||
let newLen := sub(mload(b), 20)
|
|
||||||
mstore(b, newLen)
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev Tests equality of two byte arrays.
|
/// @dev Tests equality of two byte arrays.
|
||||||
/// @param lhs First byte array to compare.
|
/// @param lhs First byte array to compare.
|
||||||
/// @param rhs Second byte array to compare.
|
/// @param rhs Second byte array to compare.
|
||||||
@ -523,100 +496,6 @@ library LibBytes {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @dev Reads nested bytes from a specific position.
|
|
||||||
/// @dev NOTE: the returned value overlaps with the input value.
|
|
||||||
/// Both should be treated as immutable.
|
|
||||||
/// @param b Byte array containing nested bytes.
|
|
||||||
/// @param index Index of nested bytes.
|
|
||||||
/// @return result Nested bytes.
|
|
||||||
function readBytesWithLength(
|
|
||||||
bytes memory b,
|
|
||||||
uint256 index
|
|
||||||
)
|
|
||||||
internal
|
|
||||||
pure
|
|
||||||
returns (bytes memory result)
|
|
||||||
{
|
|
||||||
// Read length of nested bytes
|
|
||||||
uint256 nestedBytesLength = readUint256(b, index);
|
|
||||||
index += 32;
|
|
||||||
|
|
||||||
// Assert length of <b> is valid, given
|
|
||||||
// length of nested bytes
|
|
||||||
if (b.length < index + nestedBytesLength) {
|
|
||||||
LibRichErrors.rrevert(LibBytesRichErrors.InvalidByteOperationError(
|
|
||||||
LibBytesRichErrors
|
|
||||||
.InvalidByteOperationErrorCodes.LengthGreaterThanOrEqualsNestedBytesLengthRequired,
|
|
||||||
b.length,
|
|
||||||
index + nestedBytesLength
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return a pointer to the byte array as it exists inside `b`
|
|
||||||
assembly {
|
|
||||||
result := add(b, index)
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev Inserts bytes at a specific position in a byte array.
|
|
||||||
/// @param b Byte array to insert <input> into.
|
|
||||||
/// @param index Index in byte array of <input>.
|
|
||||||
/// @param input bytes to insert.
|
|
||||||
function writeBytesWithLength(
|
|
||||||
bytes memory b,
|
|
||||||
uint256 index,
|
|
||||||
bytes memory input
|
|
||||||
)
|
|
||||||
internal
|
|
||||||
pure
|
|
||||||
{
|
|
||||||
// Assert length of <b> is valid, given
|
|
||||||
// length of input
|
|
||||||
if (b.length < index + 32 + input.length) {
|
|
||||||
LibRichErrors.rrevert(LibBytesRichErrors.InvalidByteOperationError(
|
|
||||||
LibBytesRichErrors
|
|
||||||
.InvalidByteOperationErrorCodes.LengthGreaterThanOrEqualsNestedBytesLengthRequired,
|
|
||||||
b.length,
|
|
||||||
index + 32 + input.length // 32 bytes to store length
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy <input> into <b>
|
|
||||||
memCopy(
|
|
||||||
b.contentAddress() + index,
|
|
||||||
input.rawAddress(), // includes length of <input>
|
|
||||||
input.length + 32 // +32 bytes to store <input> length
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev Performs a deep copy of a byte array onto another byte array of greater than or equal length.
|
|
||||||
/// @param dest Byte array that will be overwritten with source bytes.
|
|
||||||
/// @param source Byte array to copy onto dest bytes.
|
|
||||||
function deepCopyBytes(
|
|
||||||
bytes memory dest,
|
|
||||||
bytes memory source
|
|
||||||
)
|
|
||||||
internal
|
|
||||||
pure
|
|
||||||
{
|
|
||||||
uint256 sourceLen = source.length;
|
|
||||||
// Dest length must be >= source length, or some bytes would not be copied.
|
|
||||||
if (dest.length < sourceLen) {
|
|
||||||
LibRichErrors.rrevert(LibBytesRichErrors.InvalidByteOperationError(
|
|
||||||
LibBytesRichErrors
|
|
||||||
.InvalidByteOperationErrorCodes.DestinationLengthGreaterThanOrEqualSourceLengthRequired,
|
|
||||||
dest.length,
|
|
||||||
sourceLen
|
|
||||||
));
|
|
||||||
}
|
|
||||||
memCopy(
|
|
||||||
dest.contentAddress(),
|
|
||||||
source.contentAddress(),
|
|
||||||
sourceLen
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev Writes a new length to a byte array.
|
/// @dev Writes a new length to a byte array.
|
||||||
/// Decreasing length will lead to removing the corresponding lower order bytes from the byte array.
|
/// Decreasing length will lead to removing the corresponding lower order bytes from the byte array.
|
||||||
/// Increasing length may lead to appending adjacent in-memory bytes to the end of the byte array.
|
/// Increasing length may lead to appending adjacent in-memory bytes to the end of the byte array.
|
||||||
|
@ -37,18 +37,6 @@ contract TestLibBytes {
|
|||||||
return (b, result);
|
return (b, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @dev Pops the last 20 bytes off of a byte array by modifying its length.
|
|
||||||
/// @param b Byte array that will be modified.
|
|
||||||
/// @return The 20 byte address that was popped off.
|
|
||||||
function publicPopLast20Bytes(bytes memory b)
|
|
||||||
public
|
|
||||||
pure
|
|
||||||
returns (bytes memory, address result)
|
|
||||||
{
|
|
||||||
result = b.popLast20Bytes();
|
|
||||||
return (b, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev Tests equality of two byte arrays.
|
/// @dev Tests equality of two byte arrays.
|
||||||
/// @param lhs First byte array to compare.
|
/// @param lhs First byte array to compare.
|
||||||
/// @param rhs Second byte array to compare.
|
/// @param rhs Second byte array to compare.
|
||||||
@ -73,21 +61,6 @@ contract TestLibBytes {
|
|||||||
return equal;
|
return equal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @dev Performs a deep copy of a byte array onto another byte array of greater than or equal length.
|
|
||||||
/// @param dest Byte array that will be overwritten with source bytes.
|
|
||||||
/// @param source Byte array to copy onto dest bytes.
|
|
||||||
function publicDeepCopyBytes(
|
|
||||||
bytes memory dest,
|
|
||||||
bytes memory source
|
|
||||||
)
|
|
||||||
public
|
|
||||||
pure
|
|
||||||
returns (bytes memory)
|
|
||||||
{
|
|
||||||
LibBytes.deepCopyBytes(dest, source);
|
|
||||||
return dest;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev Reads an address from a position in a byte array.
|
/// @dev Reads an address from a position in a byte array.
|
||||||
/// @param b Byte array containing an address.
|
/// @param b Byte array containing an address.
|
||||||
/// @param index Index in byte array of address.
|
/// @param index Index in byte array of address.
|
||||||
@ -203,40 +176,6 @@ contract TestLibBytes {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @dev Reads nested bytes from a specific position.
|
|
||||||
/// @param b Byte array containing nested bytes.
|
|
||||||
/// @param index Index of nested bytes.
|
|
||||||
/// @return result Nested bytes.
|
|
||||||
function publicReadBytesWithLength(
|
|
||||||
bytes memory b,
|
|
||||||
uint256 index
|
|
||||||
)
|
|
||||||
public
|
|
||||||
pure
|
|
||||||
returns (bytes memory result)
|
|
||||||
{
|
|
||||||
result = b.readBytesWithLength(index);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev Inserts bytes at a specific position in a byte array.
|
|
||||||
/// @param b Byte array to insert <input> into.
|
|
||||||
/// @param index Index in byte array of <input>.
|
|
||||||
/// @param input bytes to insert.
|
|
||||||
/// @return b Updated input byte array
|
|
||||||
function publicWriteBytesWithLength(
|
|
||||||
bytes memory b,
|
|
||||||
uint256 index,
|
|
||||||
bytes memory input
|
|
||||||
)
|
|
||||||
public
|
|
||||||
pure
|
|
||||||
returns (bytes memory)
|
|
||||||
{
|
|
||||||
b.writeBytesWithLength(index, input);
|
|
||||||
return b;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @dev Copies a block of memory from one location to another.
|
/// @dev Copies a block of memory from one location to another.
|
||||||
/// @param mem Memory contents we want to apply memCopy to
|
/// @param mem Memory contents we want to apply memCopy to
|
||||||
/// @param dest Destination offset into <mem>.
|
/// @param dest Destination offset into <mem>.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user