/* Copyright 2020 DODO ZOO. SPDX-License-Identifier: Apache-2.0 */ pragma solidity 0.6.9; pragma experimental ABIEncoderV2; import {Types} from "./Types.sol"; /** * @title ReentrancyGuard * @author DODO Breeder * * @notice Protect functions from Reentrancy Attack */ contract ReentrancyGuard { Types.EnterStatus private _ENTER_STATUS_; constructor() internal { _ENTER_STATUS_ = Types.EnterStatus.NOT_ENTERED; } modifier preventReentrant() { require(_ENTER_STATUS_ != Types.EnterStatus.ENTERED, "ReentrancyGuard: reentrant call"); _ENTER_STATUS_ = Types.EnterStatus.ENTERED; _; _ENTER_STATUS_ = Types.EnterStatus.NOT_ENTERED; } }