watcher-ts/packages/solidity-mapper/test/contracts/TestValueStructs.sol
Ashwin Phatak a7ec3d8da8
Add APGL license and copyright notices (#212)
* Add license & copyright declarations for add-watcher.

* Add copyright declarations for cache.

* Add copyright declarations for erc20-watcher.

* Add copyright declarations for ipld-eth-client.

* Add copyright declarations for tracing-client.

* Add copyright declarations for uni-watcher.

* Add copyright declarations for solidity-mapper.

* Add copyright declarations for uni-info-watcher.

* Add copyright declarations for util.

* Add copyright declarations for lighthouse-watcher.

* Change license identifier in .sol files.

Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
2021-08-12 15:28:13 +05:30

99 lines
2.7 KiB
Solidity

// SPDX-License-Identifier: AGPL-3.0
pragma solidity ^0.7.6;
// https://docs.soliditylang.org/en/v0.8.5/layout-of-source-files.html#abi-coder-pragma
pragma abicoder v2;
import "./TestContractTypes.sol";
contract TestValueStructs {
struct SingleSlotStruct {
int16 int1;
uint8 uint1;
}
// Struct variable will use one single slot as size of the members is less than 32 bytes.
SingleSlotStruct singleSlotStruct;
struct MultipleSlotStruct {
uint128 uint1;
bool bool1;
int192 int1;
}
// Struct variable will use multiple slots as size of the members is more than 32 bytes.
MultipleSlotStruct multipleSlotStruct;
struct AddressStruct {
int8 int1;
address address1;
address address2;
uint16 uint1;
}
AddressStruct addressStruct;
struct ContractStruct {
uint16 uint1;
TestContractTypes testContract;
}
ContractStruct contractStruct;
struct FixedBytesStruct {
uint8 uint1;
bytes10 bytesTen;
bytes20 bytesTwenty;
}
FixedBytesStruct fixedBytesStruct;
enum Choices { Choice0, Choice1, Choice2, Choice3 }
struct EnumStruct {
uint32 uint1;
Choices choice1;
Choices choice2;
}
EnumStruct enumStruct;
// Set variable singleSlotStruct.
function setSingleSlotStruct(int16 int1Value, uint8 uint1Value) external {
singleSlotStruct.int1 = int1Value;
singleSlotStruct.uint1 = uint1Value;
}
// Set variable multipleSlotStruct.
function setMultipleSlotStruct(uint128 uint1Value, bool bool1Value, int192 int1Value) external {
multipleSlotStruct.uint1 = uint1Value;
multipleSlotStruct.bool1 = bool1Value;
multipleSlotStruct.int1 = int1Value;
}
// Set variable addressStruct.
function setAddressStruct(AddressStruct calldata value) external {
addressStruct = value;
}
// Set variable contractStruct.
function setContractStruct(uint16 uint1Value, TestContractTypes contractValue) external {
contractStruct.uint1 = uint1Value;
contractStruct.testContract = contractValue;
}
// Set variable fixedBytesStruct.
function setFixedBytesStruct(uint8 uint1Value, bytes10 bytesTenValue, bytes20 bytesTwentyValue) external {
fixedBytesStruct.uint1 = uint1Value;
fixedBytesStruct.bytesTen = bytesTenValue;
fixedBytesStruct.bytesTwenty = bytesTwentyValue;
}
// Set variable enumStruct.
function setEnumStruct(uint32 uint1Value, Choices choice1Value, Choices choice2Value) external {
enumStruct.uint1 = uint1Value;
enumStruct.choice1 = choice1Value;
enumStruct.choice2 = choice2Value;
}
}