mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Add Float16 (IEEE 754 binary16) to the standard library, plus assorted runtime support operations. Swift Evolution thread: https://forums.swift.org/t/se-0277-float16/33546
93 lines
3.5 KiB
C++
93 lines
3.5 KiB
C++
//===--- RuntimeShims.h - Access to runtime facilities for the core -------===//
|
|
//
|
|
// This source file is part of the Swift.org open source project
|
|
//
|
|
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Runtime functions and structures needed by the core stdlib are
|
|
// declared here.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef SWIFT_STDLIB_SHIMS_RUNTIMESHIMS_H
|
|
#define SWIFT_STDLIB_SHIMS_RUNTIMESHIMS_H
|
|
|
|
#include "SwiftStddef.h"
|
|
#include "SwiftStdint.h"
|
|
#include "Visibility.h"
|
|
|
|
#ifdef __cplusplus
|
|
namespace swift { extern "C" {
|
|
#endif
|
|
|
|
/// Return an NSString to be used as the Mirror summary of the object
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
void *_swift_objCMirrorSummary(const void * nsObject);
|
|
|
|
/// Call strtold_l with the C locale, swapping argument and return
|
|
/// types so we can operate on Float80. Return NULL on overflow.
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
const char *_swift_stdlib_strtold_clocale(const char *nptr, void *outResult);
|
|
/// Call strtod_l with the C locale, swapping argument and return
|
|
/// types so we can operate consistently on Float80. Return NULL on
|
|
/// overflow.
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
const char *_swift_stdlib_strtod_clocale(const char *nptr, double *outResult);
|
|
/// Call strtof_l with the C locale, swapping argument and return
|
|
/// types so we can operate consistently on Float80. Return NULL on
|
|
/// overflow.
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
const char *_swift_stdlib_strtof_clocale(const char *nptr, float *outResult);
|
|
/// Call strtof_l with the C locale, swapping argument and return
|
|
/// types so we can operate consistently on Float80. Return NULL on
|
|
/// overflow.
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
const char *_swift_stdlib_strtof16_clocale(const char *nptr, __fp16 *outResult);
|
|
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
void _swift_stdlib_immortalize(void *obj);
|
|
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
void _swift_stdlib_flockfile_stdout(void);
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
void _swift_stdlib_funlockfile_stdout(void);
|
|
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
int _swift_stdlib_putc_stderr(int C);
|
|
|
|
SWIFT_RUNTIME_STDLIB_API
|
|
__swift_size_t _swift_stdlib_getHardwareConcurrency(void);
|
|
|
|
/// Manually allocated memory is at least 16-byte aligned in Swift.
|
|
///
|
|
/// When swift_slowAlloc is called with "default" alignment (alignMask ==
|
|
/// ~(size_t(0))), it will execute the "aligned allocation path" (AlignedAlloc)
|
|
/// using this value for the alignment.
|
|
///
|
|
/// This is done so users do not need to specify the allocation alignment when
|
|
/// manually deallocating memory via Unsafe[Raw][Buffer]Pointer. Any
|
|
/// user-specified alignment less than or equal to _swift_MinAllocationAlignment
|
|
/// results in a runtime request for "default" alignment. This guarantees that
|
|
/// manual allocation always uses an "aligned" runtime allocation. If an
|
|
/// allocation is "aligned" then it must be freed using an "aligned"
|
|
/// deallocation. The converse must also hold. Since manual Unsafe*Pointer
|
|
/// deallocation is always "aligned", the user never needs to specify alignment
|
|
/// during deallocation.
|
|
///
|
|
/// This value is inlined (and constant propagated) in user code. On Windows,
|
|
/// the Swift runtime and user binaries need to agree on this value.
|
|
#define _swift_MinAllocationAlignment (__swift_size_t) 16
|
|
|
|
#ifdef __cplusplus
|
|
}} // extern "C", namespace swift
|
|
#endif
|
|
|
|
#endif // SWIFT_STDLIB_SHIMS_RUNTIMESHIMS_H
|
|
|