// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.8.2 < 0.9.0; /// @title A simulator for trees /// @author Larry A. Gardner /// @notice You can use this contract for only the most basic simulation /// @dev All function calls are currently implemented without side effects /// @custom:experimental This is an experimental contract. contract Tree { /// @notice Calculate tree age in years, rounded up, for live trees /// @dev The Alexandr N. Tetearing algorithm could increase precision /// @param rings The number of rings from dendrochronological sample /// @return Age in years, rounded up for partial years function age(uint256 rings) external virtual pure returns (uint256) { return rings + 1; } ///@notice Returns the amount of leaves the tree has. /// @dev Returns only a fixed number. function leaves() external virtual pure returns(uint256) { return 2; } } contract Plant { function leaves() external virtual pure returns(uint256) { return 3; } } /** aabb */ contract KumquatTree is Tree, Plant /*test*/{ /** * @param _target Address of contract or account to call * @param _value Amount of ETH to send * @param _func Function signature, for example "foo(address,uint256)" * @param _data ABI encoded data send. * @param _timestamp Timestamp after which the transaction can be executed. */ function age(uint256 rings /* test */) external override pure returns (uint256) { //asdffff return rings + 2; } ///Return the amount of leaves that this specific kind of tree has /// @inheritdoc Tree function leaves() external override(Tree, Plant) pure returns(uint256) { return 3; } }