#pragma once
#include <liblangutil/Exceptions.h>
#include <libsolidity/ast/ASTForward.h>
#include <string>
namespace solidity::frontend
{
enum class VirtualLookup { Static, Virtual, Super };
enum class StateMutability { Pure, View, NonPayable, Payable };
enum class Visibility { Default, Private, Internal, Public, External };
enum class Arithmetic { Checked, Wrapping };
inline 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.");
}
}
class Type;
struct FuncCallArguments
{
std::vector<Type const*> types;
std::vector<ASTPointer<ASTString>> names;
size_t numArguments() const { return types.size(); }
size_t numNames() const { return names.size(); }
bool hasNamedArguments() const { return !names.empty(); }
};
enum class ContractKind { Interface, Contract, Library };
}