Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 15 additions & 17 deletions libsolidity/ast/ASTEnums.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,28 +36,26 @@ enum class VirtualLookup { Static, Virtual, Super };
// How a function can mutate the EVM state.
enum class StateMutability { Pure, View, NonPayable, Payable };

/// Visibility ordered from restricted to unrestricted.
enum class Visibility { Default, Private, Internal, Public, External };
/// State mutability names used for conversion from and to std::string.
static constexpr std::array<std::string, 4> STATE_MUTABILITY_NAMES = { "pure", "view", "nonpayable", "payable" };

enum class Arithmetic { Checked, Wrapping };
inline constexpr StateMutability stateMutabilityFromString(std::string const& _stateMutability)
{
auto it = std::ranges::find(STATE_MUTABILITY_NAMES, _stateMutability);
solAssert(it != STATE_MUTABILITY_NAMES.end(), "Unknown state mutability \"" + _stateMutability + "\"");
return static_cast<StateMutability>(std::ranges::distance(STATE_MUTABILITY_NAMES.begin(), it));
}

inline std::string stateMutabilityToString(StateMutability const& _stateMutability)
inline constexpr std::string stateMutabilityToString(StateMutability const& _stateMutability)
{
switch (_stateMutability)
{
case StateMutability::Pure:
return "pure";
case StateMutability::View:
return "view";
case StateMutability::NonPayable:
return "nonpayable";
case StateMutability::Payable:
return "payable";
default:
solAssert(false, "Unknown state mutability.");
}
return STATE_MUTABILITY_NAMES[static_cast<std::size_t>(_stateMutability)];
}

/// Visibility ordered from restricted to unrestricted.
enum class Visibility { Default, Private, Internal, Public, External };

enum class Arithmetic { Checked, Wrapping };

class Type;

/// Container for function call parameter types & names
Expand Down