// -*- C++ -*-
//===-----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_SUPPORT_FUCHSIA_XLOCALE_H
#define _LIBCPP_SUPPORT_FUCHSIA_XLOCALE_H

#if defined(__Fuchsia__)

#include <cstdlib>
#include <cwchar>
#include <__support/xlocale/__posix_l_fallback.h>
#include <__support/xlocale/__strtonum_fallback.h>

#endif // defined(__Fuchsia__)

#endif // _LIBCPP_SUPPORT_FUCHSIA_XLOCALE_H
