Skip to content

A gas-efficient Solidity library for managing bitflags.

License

Notifications You must be signed in to change notification settings

ScorpioTM/solidity-bitflags

Repository files navigation

Solidity Bitflags

A gas-efficient Solidity library for managing bitflags.

Overview

Installation

To install the library, go to your project folder and run the following command:

npm install solidity-bitflags

Usage

After installation, you can use the library in your contract by importing them:

pragma solidity ^0.8.0;

import { Bitflags } from "solidity-bitflags/contracts/Bitflags.sol";

contract Example {
    using Bitflags for bytes32;

    bytes32 public flags;

    function getFlag(uint8 index) external view returns (bool) {
        return flags.getFlag(index);
    }

    function enableFlag(uint8 index) external {
        flags = flags.enableFlag(index);
    }

    function disableFlag(uint8 index) external {
        flags = flags.disableFlag(index);
    }

    function listEnabledFlags(uint256 limit) external view returns (bytes memory) {
        return flags.listEnabledFlags(limit);
    }

    function listDisabledFlags(uint256 limit) external view returns (bytes memory) {
        return flags.listDisabledFlags(limit);
    }
}

Functions

The following functions are used to manipulate bitflags stored in a single bytes32 variable.

Function getFlag

function getFlag(bytes32 self, uint8 index) internal pure returns (bool result)

Description:

This function is used to get the status of a bitflag.

Parameters:

Name Type Description
self bytes32 The bytes32 variable that holds the status of the bitflags.
index uint8 The position of the bitflag within the self variable.

Returns:

Name Type Description
result bool A boolean value representing the status of the bitflag.

Function enableFlag

function enableFlag(bytes32 self, uint8 index) internal pure returns (bytes32 result)

Description:

This function is used to enable a bitflag.

Parameters:

Name Type Description
self bytes32 The bytes32 variable that holds the status of the bitflags.
index uint8 The position of the bitflag within the self variable.

Returns:

Name Type Description
result bytes32 The updated value of self after enabling the bitflag.

Function disableFlag

function disableFlag(bytes32 self, uint8 index) internal pure returns (bytes32 result)

Description:

This function is used to disable a bitflag.

Parameters:

Name Type Description
self bytes32 The bytes32 variable that holds the status of the bitflags.
index uint8 The position of the bitflag within the self variable.

Returns:

Name Type Description
result bytes32 The updated value of self after disabling the bitflag.

Function listEnabledFlags

function listEnabledFlags(bytes32 self, uint256 limit) internal pure returns (bytes memory result)

Description:

This function is used to list all enabled bitflags.

Parameters:

Name Type Description
self bytes32 The bytes32 variable that holds the status of the bitflags.
limit uint256 The maximum number of bitflags to list.

Returns:

Name Type Description
result bytes An array of bytes representing the indexes of all enabled bitflags within the self variable.

Function listDisabledFlags

function listDisabledFlags(bytes32 self, uint256 limit) internal pure returns (bytes memory result)

Description:

This function is used to list all disabled bitflags.

Parameters:

Name Type Description
self bytes32 The bytes32 variable that holds the status of the bitflags.
limit uint256 The maximum number of bitflags to list.

Returns:

Name Type Description
result bytes An array of bytes representing the indexes of all disabled bitflags within the self variable.

License

Released under the MIT License.

About

A gas-efficient Solidity library for managing bitflags.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published