|
|
@ -34,54 +34,29 @@ namespace solidity |
|
|
|
{ |
|
|
|
|
|
|
|
GlobalContext::GlobalContext(): |
|
|
|
// TODO: make this cleaner.
|
|
|
|
m_magicVariables(vector<shared_ptr<MagicVariableDeclaration const>>{make_shared<MagicVariableDeclaration>("block", make_shared<MagicType>(MagicType::Kind::BLOCK)), |
|
|
|
make_shared<MagicVariableDeclaration>("msg", make_shared<MagicType>(MagicType::Kind::MSG)), |
|
|
|
make_shared<MagicVariableDeclaration>("tx", make_shared<MagicType>(MagicType::Kind::TX)), |
|
|
|
make_shared<MagicVariableDeclaration>("suicide", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(0, |
|
|
|
IntegerType::Modifier::ADDRESS)}), |
|
|
|
TypePointers(), |
|
|
|
FunctionType::Location::SUICIDE)), |
|
|
|
make_shared<FunctionType>(strings{"address"}, strings{}, FunctionType::Location::SUICIDE)), |
|
|
|
make_shared<MagicVariableDeclaration>("sha3", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
FunctionType::Location::SHA3)), |
|
|
|
make_shared<FunctionType>(strings{"hash"}, strings{"hash"}, FunctionType::Location::SHA3)), |
|
|
|
make_shared<MagicVariableDeclaration>("log0", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
TypePointers(), |
|
|
|
FunctionType::Location::LOG0)), |
|
|
|
make_shared<FunctionType>(strings{"hash"},strings{}, FunctionType::Location::LOG0)), |
|
|
|
make_shared<MagicVariableDeclaration>("log1", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
TypePointers(), |
|
|
|
FunctionType::Location::LOG1)), |
|
|
|
make_shared<FunctionType>(strings{"hash", "hash"},strings{}, FunctionType::Location::LOG1)), |
|
|
|
make_shared<MagicVariableDeclaration>("log2", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
TypePointers(), |
|
|
|
FunctionType::Location::LOG2)), |
|
|
|
make_shared<FunctionType>(strings{"hash", "hash", "hash"},strings{}, FunctionType::Location::LOG2)), |
|
|
|
make_shared<MagicVariableDeclaration>("log3", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
TypePointers(), |
|
|
|
FunctionType::Location::LOG3)), |
|
|
|
make_shared<FunctionType>(strings{"hash", "hash", "hash", "hash"},strings{}, FunctionType::Location::LOG3)), |
|
|
|
make_shared<MagicVariableDeclaration>("log4", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
TypePointers(), |
|
|
|
FunctionType::Location::LOG4)), |
|
|
|
make_shared<FunctionType>(strings{"hash", "hash", "hash", "hash", "hash"},strings{}, FunctionType::Location::LOG4)), |
|
|
|
make_shared<MagicVariableDeclaration>("sha256", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
FunctionType::Location::SHA256)), |
|
|
|
make_shared<FunctionType>(strings{"hash"}, strings{"hash"}, FunctionType::Location::SHA256)), |
|
|
|
make_shared<MagicVariableDeclaration>("ecrecover", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), |
|
|
|
std::make_shared<IntegerType>(8, IntegerType::Modifier::HASH), |
|
|
|
std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH), |
|
|
|
std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
TypePointers({std::make_shared<IntegerType>(0, IntegerType::Modifier::ADDRESS)}), |
|
|
|
FunctionType::Location::ECRECOVER)), |
|
|
|
make_shared<FunctionType>(strings{"hash", "hash8", "hash", "hash"}, strings{"address"}, FunctionType::Location::ECRECOVER)), |
|
|
|
make_shared<MagicVariableDeclaration>("ripemd160", |
|
|
|
make_shared<FunctionType>(TypePointers({std::make_shared<IntegerType>(256, IntegerType::Modifier::HASH)}), |
|
|
|
TypePointers({std::make_shared<IntegerType>(160, IntegerType::Modifier::HASH)}), |
|
|
|
FunctionType::Location::RIPEMD160))}) |
|
|
|
make_shared<FunctionType>(strings{"hash"}, strings{"hash160"}, FunctionType::Location::RIPEMD160))}) |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|