// SPDX-License-Identifier: BSD-3-Clause
#ifndef SUBSTRATE_INTERNAL_TYPES
#define SUBSTRATE_INTERNAL_TYPES

#ifdef _MSC_VER
#include <cstddef>
#include <type_traits>
#endif

#include <sys/types.h>

namespace substrate
{
#ifndef _MSC_VER
	using ssize_t = ::ssize_t;
#else
	using ssize_t = typename std::make_signed<std::size_t>::type;
#endif

#ifndef _WIN32
	using mode_t = ::mode_t;
	using off_t = ::off_t;
#else
	using mode_t = int32_t;
	using off_t = int64_t;
#endif
} // namespace substrate

#endif /*SUBSTRATE_INTERNAL_TYPES*/
/* vim: set ft=cpp ts=4 sw=4 noexpandtab: */
