/*
 *  Copyright (C) 2021 mod.io Pty Ltd. <https://mod.io>
 *
 *  This file is part of the mod.io SDK.
 *
 *  Distributed under the MIT License. (See accompanying file LICENSE or
 *   view online at <https://github.com/modio/modio-sdk/blob/main/LICENSE>)
 *
 */

#pragma once


#define TL_OPTIONAL_NO_EXCEPTIONS

#ifdef MODIO_PLATFORM_UNREAL

	#include MODIO_UNREAL_PLATFORM_PREAMBLE

	#include "modio/detail/ModioCompilerMacros.h"

	MODIO_DISABLE_WARNING_PUSH
	MODIO_DISABLE_WARNING_ASSIGNMENT_IMPLICITLY_DELETED
	MODIO_DISABLE_WARNING_CONSTRUCTOR_IMPLICITLY_DELETED
	MODIO_DISABLE_WARNING_COPY_CONSTRUCTOR_IMPLICITLY_DELETED 
	MODIO_DISABLE_WARNING_DOCUMENTATION_UNKNOWN_COMMAND
	MODIO_DISABLE_WARNING_GLOBAL_CONSTRUCTORS
	MODIO_DISABLE_WARNING_EXIT_TIME_DESTRUCTORS
	MODIO_DISABLE_WARNING_MOVE_ASSIGNMENT_IMPLICITLY_DELETED
	MODIO_DISABLE_WARNING_MOVE_CONSTRUCTOR_IMPLICITLY_DELETED
	MODIO_DISABLE_WARNING_SIGNED_UNSIGNED_INTEGER_COMPARISON
	MODIO_DISABLE_WARNING_STRING_CONVERSION
	MODIO_DISABLE_WARNING_STRUCTURE_PADDING
	MODIO_DISABLE_WARNING_SUGGEST_OVERRIDE
	MODIO_DISABLE_WARNING_UNUSED_FUNCTION

	#include "tl/optional.hpp"

	MODIO_DISABLE_WARNING_POP

	#include MODIO_UNREAL_PLATFORM_EPILOGUE

#else

	#include "modio/detail/ModioCompilerMacros.h"

	MODIO_DISABLE_WARNING_PUSH
	MODIO_DISABLE_WARNING_ASSIGNMENT_IMPLICITLY_DELETED
	MODIO_DISABLE_WARNING_CONSTRUCTOR_IMPLICITLY_DELETED
	MODIO_DISABLE_WARNING_COPY_CONSTRUCTOR_IMPLICITLY_DELETED 
	MODIO_DISABLE_WARNING_DOCUMENTATION_UNKNOWN_COMMAND
	MODIO_DISABLE_WARNING_GLOBAL_CONSTRUCTORS
	MODIO_DISABLE_WARNING_EXIT_TIME_DESTRUCTORS
	MODIO_DISABLE_WARNING_MOVE_ASSIGNMENT_IMPLICITLY_DELETED
	MODIO_DISABLE_WARNING_MOVE_CONSTRUCTOR_IMPLICITLY_DELETED
	MODIO_DISABLE_WARNING_SIGNED_UNSIGNED_INTEGER_COMPARISON
	MODIO_DISABLE_WARNING_STRING_CONVERSION
	MODIO_DISABLE_WARNING_STRUCTURE_PADDING
	MODIO_DISABLE_WARNING_SUGGEST_OVERRIDE
	MODIO_DISABLE_WARNING_UNUSED_FUNCTION

	#include "tl/optional.hpp"

	MODIO_DISABLE_WARNING_POP

#endif

#undef TL_OPTIONAL_NO_EXCEPTIONS