Thanks for using Compiler Explorer
Sponsors
Jakt
C++
Ada
Analysis
Android Java
Android Kotlin
Assembly
C
C3
Carbon
C++ (Circle)
CIRCT
Clean
CMake
CMakeScript
COBOL
C++ for OpenCL
MLIR
Cppx
Cppx-Blue
Cppx-Gold
Cpp2-cppfront
Crystal
C#
CUDA C++
D
Dart
Elixir
Erlang
Fortran
F#
Go
Haskell
HLSL
Hook
Hylo
ispc
Java
Julia
Kotlin
LLVM IR
LLVM MIR
Modula-2
Nim
Objective-C
Objective-C++
OCaml
OpenCL C
Pascal
Pony
Python
Racket
Ruby
Rust
Snowball
Scala
Solidity
Spice
Swift
LLVM TableGen
Toit
TypeScript Native
V
Vala
Visual Basic
WASM
Zig
Javascript
GIMPLE
c source #1
Output
Compile to binary object
Link to binary
Execute the code
Intel asm syntax
Demangle identifiers
Verbose demangling
Filters
Unused labels
Library functions
Directives
Comments
Horizontal whitespace
Debug intrinsics
Compiler
6502 cc65 2.17
6502 cc65 2.18
6502 cc65 2.19
6502 cc65 trunk
ARM GCC 10.2.0 (linux)
ARM GCC 10.2.1 (none)
ARM GCC 10.3.0 (linux)
ARM GCC 10.3.1 (2021.07 none)
ARM GCC 10.3.1 (2021.10 none)
ARM GCC 10.5.0
ARM GCC 11.1.0 (linux)
ARM GCC 11.2.0 (linux)
ARM GCC 11.2.1 (none)
ARM GCC 11.3.0 (linux)
ARM GCC 11.4.0
ARM GCC 12.1.0 (linux)
ARM GCC 12.2.0 (linux)
ARM GCC 12.3.0
ARM GCC 12.4.0
ARM GCC 13.1.0 (linux)
ARM GCC 13.2.0
ARM GCC 13.2.0 (unknown-eabi)
ARM GCC 13.3.0
ARM GCC 13.3.0 (unknown-eabi)
ARM GCC 14.1.0
ARM GCC 14.1.0 (unknown-eabi)
ARM GCC 14.2.0
ARM GCC 14.2.0 (unknown-eabi)
ARM GCC 4.5.4 (linux)
ARM GCC 4.6.4 (linux)
ARM GCC 5.4 (linux)
ARM GCC 5.4.1 (none)
ARM GCC 6.3.0 (linux)
ARM GCC 6.4.0 (linux)
ARM GCC 7.2.1 (none)
ARM GCC 7.3.0 (linux)
ARM GCC 7.5.0 (linux)
ARM GCC 8.2.0 (WinCE)
ARM GCC 8.2.0 (linux)
ARM GCC 8.3.1 (none)
ARM GCC 8.5.0 (linux)
ARM GCC 9.2.1 (none)
ARM GCC 9.3.0 (linux)
ARM GCC trunk (linux)
ARM msvc v19.0 (WINE)
ARM msvc v19.10 (WINE)
ARM msvc v19.14 (WINE)
ARM64 GCC 10.2.0
ARM64 GCC 10.3.0
ARM64 GCC 10.4.0
ARM64 GCC 10.5.0
ARM64 GCC 11.1.0
ARM64 GCC 11.2.0
ARM64 GCC 11.3.0
ARM64 GCC 11.4.0
ARM64 GCC 12.1.0
ARM64 GCC 12.2.0
ARM64 GCC 12.3.0
ARM64 GCC 12.4.0
ARM64 GCC 13.1.0
ARM64 GCC 13.2.0
ARM64 GCC 13.3.0
ARM64 GCC 14.1.0
ARM64 GCC 14.2.0
ARM64 GCC 4.9.4
ARM64 GCC 5.4
ARM64 GCC 5.5.0
ARM64 GCC 6.3
ARM64 GCC 6.4.0
ARM64 GCC 7.3.0
ARM64 GCC 7.5.0
ARM64 GCC 8.2.0
ARM64 GCC 8.5.0
ARM64 GCC 9.3.0
ARM64 GCC 9.4.0
ARM64 GCC 9.5.0
ARM64 GCC trunk
ARM64 Morello GCC 10.1.0 Alpha 1
ARM64 Morello GCC 10.1.2 Alpha 2
ARM64 msvc v19.14 (WINE)
AVR gcc 10.3.0
AVR gcc 11.1.0
AVR gcc 12.1.0
AVR gcc 12.2.0
AVR gcc 12.3.0
AVR gcc 12.4.0
AVR gcc 13.1.0
AVR gcc 13.2.0
AVR gcc 13.3.0
AVR gcc 14.1.0
AVR gcc 14.2.0
AVR gcc 4.5.4
AVR gcc 4.6.4
AVR gcc 5.4.0
AVR gcc 9.2.0
AVR gcc 9.3.0
Arduino Mega (1.8.9)
Arduino Uno (1.8.9)
BPF clang (trunk)
BPF clang 13.0.0
BPF clang 14.0.0
BPF clang 15.0.0
BPF clang 16.0.0
BPF clang 17.0.1
BPF clang 18.1.0
BPF gcc 13.1.0
BPF gcc 13.2.0
BPF gcc 13.3.0
BPF gcc 14.1.0
BPF gcc 14.2.0
BPF gcc trunk
Chibicc 2020-12-07
FRC 2019
FRC 2020
FRC 2023
HPPA gcc 14.2.0
K1C gcc 7.4
K1C gcc 7.5
KVX ACB 4.1.0 (GCC 7.5.0)
KVX ACB 4.1.0-cd1 (GCC 7.5.0)
KVX ACB 4.10.0 (GCC 10.3.1)
KVX ACB 4.11.1 (GCC 10.3.1)
KVX ACB 4.12.0 (GCC 11.3.0)
KVX ACB 4.2.0 (GCC 7.5.0)
KVX ACB 4.3.0 (GCC 7.5.0)
KVX ACB 4.4.0 (GCC 7.5.0)
KVX ACB 4.6.0 (GCC 9.4.1)
KVX ACB 4.8.0 (GCC 9.4.1)
KVX ACB 4.9.0 (GCC 9.4.1)
KVX ACB 5.0.0 (GCC 12.2.1)
LC3 (trunk)
M68K clang (trunk)
M68K gcc 13.1.0
M68K gcc 13.2.0
M68K gcc 13.3.0
M68K gcc 14.1.0
M68K gcc 14.2.0
MRISC32 gcc (trunk)
MSP430 gcc 12.1.0
MSP430 gcc 12.2.0
MSP430 gcc 12.3.0
MSP430 gcc 12.4.0
MSP430 gcc 13.1.0
MSP430 gcc 13.2.0
MSP430 gcc 13.3.0
MSP430 gcc 14.1.0
MSP430 gcc 14.2.0
MSP430 gcc 4.5.3
MSP430 gcc 5.3.0
MSP430 gcc 6.2.1
MinGW clang 14.0.3
MinGW clang 14.0.6
MinGW clang 15.0.7
MinGW clang 16.0.0
MinGW clang 16.0.2
MinGW gcc 11.3.0
MinGW gcc 12.1.0
MinGW gcc 12.2.0
MinGW gcc 13.1.0
POWER64 gcc 11.2.0
POWER64 gcc 12.1.0
POWER64 gcc 12.2.0
POWER64 gcc 12.3.0
POWER64 gcc 12.4.0
POWER64 gcc 13.1.0
POWER64 gcc 13.2.0
POWER64 gcc 13.3.0
POWER64 gcc 14.1.0
POWER64 gcc 14.2.0
POWER64 gcc trunk
RISC-V (32-bits) gcc (trunk)
RISC-V (32-bits) gcc 10.2.0
RISC-V (32-bits) gcc 10.3.0
RISC-V (32-bits) gcc 11.2.0
RISC-V (32-bits) gcc 11.3.0
RISC-V (32-bits) gcc 11.4.0
RISC-V (32-bits) gcc 12.1.0
RISC-V (32-bits) gcc 12.2.0
RISC-V (32-bits) gcc 12.3.0
RISC-V (32-bits) gcc 12.4.0
RISC-V (32-bits) gcc 13.1.0
RISC-V (32-bits) gcc 13.2.0
RISC-V (32-bits) gcc 13.3.0
RISC-V (32-bits) gcc 14.1.0
RISC-V (32-bits) gcc 14.2.0
RISC-V (32-bits) gcc 8.2.0
RISC-V (32-bits) gcc 8.5.0
RISC-V (32-bits) gcc 9.4.0
RISC-V (64-bits) gcc (trunk)
RISC-V (64-bits) gcc 10.2.0
RISC-V (64-bits) gcc 10.3.0
RISC-V (64-bits) gcc 11.2.0
RISC-V (64-bits) gcc 11.3.0
RISC-V (64-bits) gcc 11.4.0
RISC-V (64-bits) gcc 12.1.0
RISC-V (64-bits) gcc 12.2.0
RISC-V (64-bits) gcc 12.3.0
RISC-V (64-bits) gcc 12.4.0
RISC-V (64-bits) gcc 13.1.0
RISC-V (64-bits) gcc 13.2.0
RISC-V (64-bits) gcc 13.3.0
RISC-V (64-bits) gcc 14.1.0
RISC-V (64-bits) gcc 14.2.0
RISC-V (64-bits) gcc 8.2.0
RISC-V (64-bits) gcc 8.5.0
RISC-V (64-bits) gcc 9.4.0
RISC-V rv32gc clang (trunk)
RISC-V rv32gc clang 10.0.0
RISC-V rv32gc clang 10.0.1
RISC-V rv32gc clang 11.0.0
RISC-V rv32gc clang 11.0.1
RISC-V rv32gc clang 12.0.0
RISC-V rv32gc clang 12.0.1
RISC-V rv32gc clang 13.0.0
RISC-V rv32gc clang 13.0.1
RISC-V rv32gc clang 14.0.0
RISC-V rv32gc clang 15.0.0
RISC-V rv32gc clang 16.0.0
RISC-V rv32gc clang 17.0.1
RISC-V rv32gc clang 18.1.0
RISC-V rv32gc clang 9.0.0
RISC-V rv32gc clang 9.0.1
RISC-V rv64gc clang (trunk)
RISC-V rv64gc clang 10.0.0
RISC-V rv64gc clang 10.0.1
RISC-V rv64gc clang 11.0.0
RISC-V rv64gc clang 11.0.1
RISC-V rv64gc clang 12.0.0
RISC-V rv64gc clang 12.0.1
RISC-V rv64gc clang 13.0.0
RISC-V rv64gc clang 13.0.1
RISC-V rv64gc clang 14.0.0
RISC-V rv64gc clang 15.0.0
RISC-V rv64gc clang 16.0.0
RISC-V rv64gc clang 17.0.1
RISC-V rv64gc clang 18.1.0
RISC-V rv64gc clang 9.0.0
RISC-V rv64gc clang 9.0.1
Raspbian Buster
Raspbian Stretch
SDCC 4.0.0
SDCC 4.1.0
SDCC 4.2.0
SDCC 4.3.0
SDCC 4.4.0
SPARC LEON gcc 12.2.0
SPARC LEON gcc 12.3.0
SPARC LEON gcc 12.4.0
SPARC LEON gcc 13.1.0
SPARC LEON gcc 13.2.0
SPARC LEON gcc 13.3.0
SPARC LEON gcc 14.1.0
SPARC LEON gcc 14.2.0
SPARC gcc 12.2.0
SPARC gcc 12.3.0
SPARC gcc 12.4.0
SPARC gcc 13.1.0
SPARC gcc 13.2.0
SPARC gcc 13.3.0
SPARC gcc 14.1.0
SPARC gcc 14.2.0
SPARC64 gcc 12.2.0
SPARC64 gcc 12.3.0
SPARC64 gcc 12.4.0
SPARC64 gcc 13.1.0
SPARC64 gcc 13.2.0
SPARC64 gcc 13.3.0
SPARC64 gcc 14.1.0
SPARC64 gcc 14.2.0
TCC (trunk)
TCC 0.9.27
TI C6x gcc 12.2.0
TI C6x gcc 12.3.0
TI C6x gcc 12.4.0
TI C6x gcc 13.1.0
TI C6x gcc 13.2.0
TI C6x gcc 13.3.0
TI C6x gcc 14.1.0
TI C6x gcc 14.2.0
TI CL430 21.6.1
VAX gcc NetBSDELF 10.4.0
VAX gcc NetBSDELF 10.5.0 (Nov 15 03:50:22 2023)
WebAssembly clang (trunk)
Xtensa ESP32 gcc 11.2.0 (2022r1)
Xtensa ESP32 gcc 12.2.0 (20230208)
Xtensa ESP32 gcc 8.2.0 (2019r2)
Xtensa ESP32 gcc 8.2.0 (2020r1)
Xtensa ESP32 gcc 8.2.0 (2020r2)
Xtensa ESP32 gcc 8.4.0 (2020r3)
Xtensa ESP32 gcc 8.4.0 (2021r1)
Xtensa ESP32 gcc 8.4.0 (2021r2)
Xtensa ESP32-S2 gcc 11.2.0 (2022r1)
Xtensa ESP32-S2 gcc 12.2.0 (20230208)
Xtensa ESP32-S2 gcc 8.2.0 (2019r2)
Xtensa ESP32-S2 gcc 8.2.0 (2020r1)
Xtensa ESP32-S2 gcc 8.2.0 (2020r2)
Xtensa ESP32-S2 gcc 8.4.0 (2020r3)
Xtensa ESP32-S2 gcc 8.4.0 (2021r1)
Xtensa ESP32-S2 gcc 8.4.0 (2021r2)
Xtensa ESP32-S3 gcc 11.2.0 (2022r1)
Xtensa ESP32-S3 gcc 12.2.0 (20230208)
Xtensa ESP32-S3 gcc 8.4.0 (2020r3)
Xtensa ESP32-S3 gcc 8.4.0 (2021r1)
Xtensa ESP32-S3 gcc 8.4.0 (2021r2)
arm64 msvc v19.20 VS16.0
arm64 msvc v19.21 VS16.1
arm64 msvc v19.22 VS16.2
arm64 msvc v19.23 VS16.3
arm64 msvc v19.24 VS16.4
arm64 msvc v19.25 VS16.5
arm64 msvc v19.27 VS16.7
arm64 msvc v19.28 VS16.8
arm64 msvc v19.28 VS16.9
arm64 msvc v19.29 VS16.10
arm64 msvc v19.29 VS16.11
arm64 msvc v19.30 VS17.0
arm64 msvc v19.31 VS17.1
arm64 msvc v19.32 VS17.2
arm64 msvc v19.33 VS17.3
arm64 msvc v19.34 VS17.4
arm64 msvc v19.35 VS17.5
arm64 msvc v19.36 VS17.6
arm64 msvc v19.37 VS17.7
arm64 msvc v19.38 VS17.8
arm64 msvc v19.39 VS17.9
arm64 msvc v19.40 VS17.10
arm64 msvc v19.latest
armv7-a clang (trunk)
armv7-a clang 10.0.0
armv7-a clang 10.0.1
armv7-a clang 11.0.0
armv7-a clang 11.0.1
armv7-a clang 12.0.0
armv7-a clang 12.0.1
armv7-a clang 13.0.0
armv7-a clang 13.0.1
armv7-a clang 14.0.0
armv7-a clang 15.0.0
armv7-a clang 16.0.0
armv7-a clang 17.0.1
armv7-a clang 18.1.0
armv7-a clang 9.0.0
armv7-a clang 9.0.1
armv8-a clang (all architectural features, trunk)
armv8-a clang (trunk)
armv8-a clang 10.0.0
armv8-a clang 10.0.1
armv8-a clang 11.0.0
armv8-a clang 11.0.1
armv8-a clang 12.0.0
armv8-a clang 12.0.1
armv8-a clang 13.0.0
armv8-a clang 13.0.1
armv8-a clang 14.0.0
armv8-a clang 15.0.0
armv8-a clang 16.0.0
armv8-a clang 17.0.1
armv8-a clang 18.1.0
armv8-a clang 9.0.0
armv8-a clang 9.0.1
clang 12 for DPU (rel 2023.2.0)
cproc-master
llvm-mos commander X16
llvm-mos commodore 64
llvm-mos mega65
llvm-mos nes-cnrom
llvm-mos nes-mmc1
llvm-mos nes-mmc3
llvm-mos nes-nrom
llvm-mos osi-c1p
loongarch64 gcc 12.2.0
loongarch64 gcc 12.3.0
loongarch64 gcc 12.4.0
loongarch64 gcc 13.1.0
loongarch64 gcc 13.2.0
loongarch64 gcc 13.3.0
loongarch64 gcc 14.1.0
loongarch64 gcc 14.2.0
mips (el) gcc 12.1.0
mips (el) gcc 12.2.0
mips (el) gcc 12.3.0
mips (el) gcc 12.4.0
mips (el) gcc 13.1.0
mips (el) gcc 13.2.0
mips (el) gcc 13.3.0
mips (el) gcc 14.1.0
mips (el) gcc 14.2.0
mips (el) gcc 4.9.4
mips (el) gcc 5.4
mips (el) gcc 5.5.0
mips (el) gcc 9.5.0
mips clang 13.0.0
mips clang 14.0.0
mips clang 15.0.0
mips clang 16.0.0
mips clang 17.0.1
mips clang 18.1.0
mips gcc 11.2.0
mips gcc 12.1.0
mips gcc 12.2.0
mips gcc 12.3.0
mips gcc 12.4.0
mips gcc 13.1.0
mips gcc 13.2.0
mips gcc 13.3.0
mips gcc 14.1.0
mips gcc 14.2.0
mips gcc 4.9.4
mips gcc 5.4
mips gcc 5.5.0
mips gcc 9.3.0 (codescape)
mips gcc 9.5.0
mips64 (el) gcc 12.1.0
mips64 (el) gcc 12.2.0
mips64 (el) gcc 12.3.0
mips64 (el) gcc 12.4.0
mips64 (el) gcc 13.1.0
mips64 (el) gcc 13.2.0
mips64 (el) gcc 13.3.0
mips64 (el) gcc 14.1.0
mips64 (el) gcc 14.2.0
mips64 (el) gcc 4.9.4
mips64 (el) gcc 5.4.0
mips64 (el) gcc 5.5.0
mips64 (el) gcc 9.5.0
mips64 clang 13.0.0
mips64 clang 14.0.0
mips64 clang 15.0.0
mips64 clang 16.0.0
mips64 clang 17.0.1
mips64 clang 18.1.0
mips64 gcc 11.2.0
mips64 gcc 12.1.0
mips64 gcc 12.2.0
mips64 gcc 12.3.0
mips64 gcc 12.4.0
mips64 gcc 13.1.0
mips64 gcc 13.2.0
mips64 gcc 13.3.0
mips64 gcc 14.1.0
mips64 gcc 14.2.0
mips64 gcc 4.9.4
mips64 gcc 5.4
mips64 gcc 5.5.0
mips64 gcc 9.5.0
mips64el clang 13.0.0
mips64el clang 14.0.0
mips64el clang 15.0.0
mips64el clang 16.0.0
mips64el clang 17.0.1
mips64el clang 18.1.0
mipsel clang 13.0.0
mipsel clang 14.0.0
mipsel clang 15.0.0
mipsel clang 16.0.0
mipsel clang 17.0.1
mipsel clang 18.1.0
movfuscator (trunk)
nanoMIPS gcc 6.3.0
power gcc 11.2.0
power gcc 12.1.0
power gcc 12.2.0
power gcc 12.3.0
power gcc 12.4.0
power gcc 13.1.0
power gcc 13.2.0
power gcc 13.3.0
power gcc 14.1.0
power gcc 14.2.0
power gcc 4.8.5
power64 AT12.0 (gcc8)
power64 AT13.0 (gcc9)
power64le AT12.0 (gcc8)
power64le AT13.0 (gcc9)
power64le clang (trunk)
power64le gcc 11.2.0
power64le gcc 12.1.0
power64le gcc 12.2.0
power64le gcc 12.3.0
power64le gcc 12.4.0
power64le gcc 13.1.0
power64le gcc 13.2.0
power64le gcc 13.3.0
power64le gcc 14.1.0
power64le gcc 14.2.0
power64le gcc 6.3.0
power64le gcc trunk
powerpc64 clang (trunk)
ppci 0.5.5
s390x gcc 11.2.0
s390x gcc 12.1.0
s390x gcc 12.2.0
s390x gcc 12.3.0
s390x gcc 12.4.0
s390x gcc 13.1.0
s390x gcc 13.2.0
s390x gcc 13.3.0
s390x gcc 14.1.0
s390x gcc 14.2.0
sh gcc 12.2.0
sh gcc 12.3.0
sh gcc 12.4.0
sh gcc 13.1.0
sh gcc 13.2.0
sh gcc 13.3.0
sh gcc 14.1.0
sh gcc 14.2.0
sh gcc 4.9.4
sh gcc 9.5.0
vast (trunk)
x64 msvc v19.0 (WINE)
x64 msvc v19.10 (WINE)
x64 msvc v19.14 (WINE)
x64 msvc v19.20 VS16.0
x64 msvc v19.21 VS16.1
x64 msvc v19.22 VS16.2
x64 msvc v19.23 VS16.3
x64 msvc v19.24 VS16.4
x64 msvc v19.25 VS16.5
x64 msvc v19.27 VS16.7
x64 msvc v19.28 VS16.8
x64 msvc v19.28 VS16.9
x64 msvc v19.29 VS16.10
x64 msvc v19.29 VS16.11
x64 msvc v19.30 VS17.0
x64 msvc v19.31 VS17.1
x64 msvc v19.32 VS17.2
x64 msvc v19.33 VS17.3
x64 msvc v19.34 VS17.4
x64 msvc v19.35 VS17.5
x64 msvc v19.36 VS17.6
x64 msvc v19.37 VS17.7
x64 msvc v19.38 VS17.8
x64 msvc v19.39 VS17.9
x64 msvc v19.40 VS17.10
x64 msvc v19.latest
x86 CompCert 3.10
x86 CompCert 3.11
x86 CompCert 3.12
x86 CompCert 3.9
x86 gcc 1.27
x86 msvc v19.0 (WINE)
x86 msvc v19.10 (WINE)
x86 msvc v19.14 (WINE)
x86 msvc v19.20 VS16.0
x86 msvc v19.21 VS16.1
x86 msvc v19.22 VS16.2
x86 msvc v19.23 VS16.3
x86 msvc v19.24 VS16.4
x86 msvc v19.25 VS16.5
x86 msvc v19.27 VS16.7
x86 msvc v19.28 VS16.8
x86 msvc v19.28 VS16.9
x86 msvc v19.29 VS16.10
x86 msvc v19.29 VS16.11
x86 msvc v19.30 VS17.0
x86 msvc v19.31 VS17.1
x86 msvc v19.32 VS17.2
x86 msvc v19.33 VS17.3
x86 msvc v19.34 VS17.4
x86 msvc v19.35 VS17.5
x86 msvc v19.36 VS17.6
x86 msvc v19.37 VS17.7
x86 msvc v19.38 VS17.8
x86 msvc v19.39 VS17.9
x86 msvc v19.40 VS17.10
x86 msvc v19.latest
x86 tendra (trunk)
x86-64 clang (assertions trunk)
x86-64 clang (thephd.dev)
x86-64 clang (trunk)
x86-64 clang (widberg)
x86-64 clang 10.0.0
x86-64 clang 10.0.1
x86-64 clang 11.0.0
x86-64 clang 11.0.1
x86-64 clang 12.0.0
x86-64 clang 12.0.1
x86-64 clang 13.0.0
x86-64 clang 13.0.1
x86-64 clang 14.0.0
x86-64 clang 15.0.0
x86-64 clang 16.0.0
x86-64 clang 17.0.1
x86-64 clang 18.1.0
x86-64 clang 19.1.0
x86-64 clang 3.0.0
x86-64 clang 3.1
x86-64 clang 3.2
x86-64 clang 3.3
x86-64 clang 3.4.1
x86-64 clang 3.5
x86-64 clang 3.5.1
x86-64 clang 3.5.2
x86-64 clang 3.6
x86-64 clang 3.7
x86-64 clang 3.7.1
x86-64 clang 3.8
x86-64 clang 3.8.1
x86-64 clang 3.9.0
x86-64 clang 3.9.1
x86-64 clang 4.0.0
x86-64 clang 4.0.1
x86-64 clang 5.0.0
x86-64 clang 5.0.1
x86-64 clang 5.0.2
x86-64 clang 6.0.0
x86-64 clang 6.0.1
x86-64 clang 7.0.0
x86-64 clang 7.0.1
x86-64 clang 7.1.0
x86-64 clang 8.0.0
x86-64 clang 8.0.1
x86-64 clang 9.0.0
x86-64 clang 9.0.1
x86-64 gcc (trunk)
x86-64 gcc 10.1
x86-64 gcc 10.2
x86-64 gcc 10.3
x86-64 gcc 10.4
x86-64 gcc 10.5
x86-64 gcc 11.1
x86-64 gcc 11.2
x86-64 gcc 11.3
x86-64 gcc 11.4
x86-64 gcc 12.1
x86-64 gcc 12.2
x86-64 gcc 12.3
x86-64 gcc 12.4
x86-64 gcc 13.1
x86-64 gcc 13.2
x86-64 gcc 13.3
x86-64 gcc 14.1
x86-64 gcc 14.2
x86-64 gcc 3.4.6
x86-64 gcc 4.0.4
x86-64 gcc 4.1.2
x86-64 gcc 4.4.7
x86-64 gcc 4.5.3
x86-64 gcc 4.6.4
x86-64 gcc 4.7.1
x86-64 gcc 4.7.2
x86-64 gcc 4.7.3
x86-64 gcc 4.7.4
x86-64 gcc 4.8.1
x86-64 gcc 4.8.2
x86-64 gcc 4.8.3
x86-64 gcc 4.8.4
x86-64 gcc 4.8.5
x86-64 gcc 4.9.0
x86-64 gcc 4.9.1
x86-64 gcc 4.9.2
x86-64 gcc 4.9.3
x86-64 gcc 4.9.4
x86-64 gcc 5.1
x86-64 gcc 5.2
x86-64 gcc 5.3
x86-64 gcc 5.4
x86-64 gcc 6.1
x86-64 gcc 6.2
x86-64 gcc 6.3
x86-64 gcc 6.5
x86-64 gcc 7.1
x86-64 gcc 7.2
x86-64 gcc 7.3
x86-64 gcc 7.4
x86-64 gcc 7.5
x86-64 gcc 8.1
x86-64 gcc 8.2
x86-64 gcc 8.3
x86-64 gcc 8.4
x86-64 gcc 8.5
x86-64 gcc 9.1
x86-64 gcc 9.2
x86-64 gcc 9.3
x86-64 gcc 9.4
x86-64 gcc 9.5
x86-64 icc 13.0.1
x86-64 icc 16.0.3
x86-64 icc 17.0.0
x86-64 icc 18.0.0
x86-64 icc 19.0.0
x86-64 icc 19.0.1
x86-64 icc 2021.1.2
x86-64 icc 2021.10.0
x86-64 icc 2021.2.0
x86-64 icc 2021.3.0
x86-64 icc 2021.4.0
x86-64 icc 2021.5.0
x86-64 icc 2021.6.0
x86-64 icc 2021.7.0
x86-64 icc 2021.7.1
x86-64 icc 2021.8.0
x86-64 icc 2021.9.0
x86-64 icx (latest)
x86-64 icx 2021.1.2
x86-64 icx 2021.2.0
x86-64 icx 2021.3.0
x86-64 icx 2021.4.0
x86-64 icx 2022.0.0
x86-64 icx 2022.1.0
x86-64 icx 2022.2.0
x86-64 icx 2022.2.1
x86-64 icx 2023.0.0
x86-64 icx 2023.1.0
x86-64 icx 2024.0.0
x86_64 CompCert 3.10
x86_64 CompCert 3.11
x86_64 CompCert 3.12
x86_64 CompCert 3.9
z88dk 2.2
zig cc 0.10.0
zig cc 0.11.0
zig cc 0.12.0
zig cc 0.12.1
zig cc 0.13.0
zig cc 0.6.0
zig cc 0.7.0
zig cc 0.7.1
zig cc 0.8.0
zig cc 0.9.0
zig cc trunk
Options
Source code
typedef _Bool bool_bf; extern char *emacs_getenv_TZ (void); extern int emacs_setenv_TZ (char const *); extern int *__errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern char *program_invocation_name; extern char *program_invocation_short_name; typedef int error_t; typedef unsigned char __u_char; typedef unsigned short int __u_short; typedef unsigned int __u_int; typedef unsigned long int __u_long; typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; typedef signed long int __int64_t; typedef unsigned long int __uint64_t; typedef __int8_t __int_least8_t; typedef __uint8_t __uint_least8_t; typedef __int16_t __int_least16_t; typedef __uint16_t __uint_least16_t; typedef __int32_t __int_least32_t; typedef __uint32_t __uint_least32_t; typedef __int64_t __int_least64_t; typedef __uint64_t __uint_least64_t; typedef long int __quad_t; typedef unsigned long int __u_quad_t; typedef long int __intmax_t; typedef unsigned long int __uintmax_t; typedef unsigned long int __dev_t; typedef unsigned int __uid_t; typedef unsigned int __gid_t; typedef unsigned long int __ino_t; typedef unsigned long int __ino64_t; typedef unsigned int __mode_t; typedef unsigned long int __nlink_t; typedef long int __off_t; typedef long int __off64_t; typedef int __pid_t; typedef struct { int __val[2]; } __fsid_t; typedef long int __clock_t; typedef unsigned long int __rlim_t; typedef unsigned long int __rlim64_t; typedef unsigned int __id_t; typedef long int __time_t; typedef unsigned int __useconds_t; typedef long int __suseconds_t; typedef long int __suseconds64_t; typedef int __daddr_t; typedef int __key_t; typedef int __clockid_t; typedef void * __timer_t; typedef long int __blksize_t; typedef long int __blkcnt_t; typedef long int __blkcnt64_t; typedef unsigned long int __fsblkcnt_t; typedef unsigned long int __fsblkcnt64_t; typedef unsigned long int __fsfilcnt_t; typedef unsigned long int __fsfilcnt64_t; typedef long int __fsword_t; typedef long int __ssize_t; typedef long int __syscall_slong_t; typedef unsigned long int __syscall_ulong_t; typedef __off64_t __loff_t; typedef char *__caddr_t; typedef long int __intptr_t; typedef unsigned int __socklen_t; typedef int __sig_atomic_t; typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t; typedef __loff_t loff_t; typedef __ino_t ino_t; typedef __ino64_t ino64_t; typedef __dev_t dev_t; typedef __gid_t gid_t; typedef __mode_t mode_t; typedef __nlink_t nlink_t; typedef __uid_t uid_t; typedef __off_t off_t; typedef __off64_t off64_t; typedef __pid_t pid_t; typedef __id_t id_t; typedef __ssize_t ssize_t; typedef __daddr_t daddr_t; typedef __caddr_t caddr_t; typedef __key_t key_t; typedef __clock_t clock_t; typedef __clockid_t clockid_t; typedef __time_t time_t; typedef __timer_t timer_t; typedef __useconds_t useconds_t; typedef __suseconds_t suseconds_t; typedef long unsigned int size_t; typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; typedef __int8_t int8_t; typedef __int16_t int16_t; typedef __int32_t int32_t; typedef __int64_t int64_t; typedef __uint8_t u_int8_t; typedef __uint16_t u_int16_t; typedef __uint32_t u_int32_t; typedef __uint64_t u_int64_t; typedef int register_t __attribute__ ((__mode__ (__word__))); static __inline __uint16_t __bswap_16 (__uint16_t __bsx) { return __builtin_bswap16 (__bsx); } static __inline __uint32_t __bswap_32 (__uint32_t __bsx) { return __builtin_bswap32 (__bsx); } __extension__ static __inline __uint64_t __bswap_64 (__uint64_t __bsx) { return __builtin_bswap64 (__bsx); } static __inline __uint16_t __uint16_identity (__uint16_t __x) { return __x; } static __inline __uint32_t __uint32_identity (__uint32_t __x) { return __x; } static __inline __uint64_t __uint64_identity (__uint64_t __x) { return __x; } typedef struct { unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; } __sigset_t; typedef __sigset_t sigset_t; struct timeval { __time_t tv_sec; __suseconds_t tv_usec; }; struct timespec { __time_t tv_sec; __syscall_slong_t tv_nsec; }; typedef long int __fd_mask; typedef struct { __fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))]; } fd_set; typedef __fd_mask fd_mask; extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout); extern int pselect (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, const __sigset_t *__restrict __sigmask); extern long int __fdelt_chk (long int __d); extern long int __fdelt_warn (long int __d) __attribute__((__warning__ ("bit outside of fd_set selected"))); extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; typedef __blksize_t blksize_t; typedef __blkcnt_t blkcnt_t; typedef __fsblkcnt_t fsblkcnt_t; typedef __fsfilcnt_t fsfilcnt_t; typedef __blkcnt64_t blkcnt64_t; typedef __fsblkcnt64_t fsblkcnt64_t; typedef __fsfilcnt64_t fsfilcnt64_t; typedef union { __extension__ unsigned long long int __value64; struct { unsigned int __low; unsigned int __high; } __value32; } __atomic_wide_counter; typedef struct __pthread_internal_list { struct __pthread_internal_list *__prev; struct __pthread_internal_list *__next; } __pthread_list_t; typedef struct __pthread_internal_slist { struct __pthread_internal_slist *__next; } __pthread_slist_t; struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; unsigned int __nusers; int __kind; short __spins; short __elision; __pthread_list_t __list; }; struct __pthread_rwlock_arch_t { unsigned int __readers; unsigned int __writers; unsigned int __wrphase_futex; unsigned int __writers_futex; unsigned int __pad3; unsigned int __pad4; int __cur_writer; int __shared; signed char __rwelision; unsigned char __pad1[7]; unsigned long int __pad2; unsigned int __flags; }; struct __pthread_cond_s { __atomic_wide_counter __wseq; __atomic_wide_counter __g1_start; unsigned int __g_refs[2] ; unsigned int __g_size[2]; unsigned int __g1_orig_size; unsigned int __wrefs; unsigned int __g_signals[2]; }; typedef unsigned int __tss_t; typedef unsigned long int __thrd_t; typedef struct { int __data ; } __once_flag; typedef unsigned long int pthread_t; typedef union { char __size[4]; int __align; } pthread_mutexattr_t; typedef union { char __size[4]; int __align; } pthread_condattr_t; typedef unsigned int pthread_key_t; typedef int pthread_once_t; union pthread_attr_t { char __size[56]; long int __align; }; typedef union pthread_attr_t pthread_attr_t; typedef union { struct __pthread_mutex_s __data; char __size[40]; long int __align; } pthread_mutex_t; typedef union { struct __pthread_cond_s __data; char __size[48]; __extension__ long long int __align; } pthread_cond_t; typedef union { struct __pthread_rwlock_arch_t __data; char __size[56]; long int __align; } pthread_rwlock_t; typedef union { char __size[8]; long int __align; } pthread_rwlockattr_t; typedef volatile int pthread_spinlock_t; typedef union { char __size[32]; long int __align; } pthread_barrier_t; typedef union { char __size[4]; int __align; } pthread_barrierattr_t; struct flock { short int l_type; short int l_whence; __off_t l_start; __off_t l_len; __pid_t l_pid; }; struct flock64 { short int l_type; short int l_whence; __off64_t l_start; __off64_t l_len; __pid_t l_pid; }; struct iovec { void *iov_base; size_t iov_len; }; enum __pid_type { F_OWNER_TID = 0, F_OWNER_PID, F_OWNER_PGRP, F_OWNER_GID = F_OWNER_PGRP }; struct f_owner_ex { enum __pid_type type; __pid_t pid; }; struct file_handle { unsigned int handle_bytes; int handle_type; unsigned char f_handle[0]; }; extern __ssize_t readahead (int __fd, __off64_t __offset, size_t __count) __attribute__ ((__nothrow__ , __leaf__)); extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count, unsigned int __flags); extern __ssize_t vmsplice (int __fdout, const struct iovec *__iov, size_t __count, unsigned int __flags); extern __ssize_t splice (int __fdin, __off64_t *__offin, int __fdout, __off64_t *__offout, size_t __len, unsigned int __flags); extern __ssize_t tee (int __fdin, int __fdout, size_t __len, unsigned int __flags); extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len); extern int fallocate64 (int __fd, int __mode, __off64_t __offset, __off64_t __len); extern int name_to_handle_at (int __dfd, const char *__name, struct file_handle *__handle, int *__mnt_id, int __flags) __attribute__ ((__nothrow__ , __leaf__)); extern int open_by_handle_at (int __mountdirfd, struct file_handle *__handle, int __flags); struct stat { __dev_t st_dev; __ino_t st_ino; __nlink_t st_nlink; __mode_t st_mode; __uid_t st_uid; __gid_t st_gid; int __pad0; __dev_t st_rdev; __off_t st_size; __blksize_t st_blksize; __blkcnt_t st_blocks; struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; __syscall_slong_t __glibc_reserved[3]; }; struct stat64 { __dev_t st_dev; __ino64_t st_ino; __nlink_t st_nlink; __mode_t st_mode; __uid_t st_uid; __gid_t st_gid; int __pad0; __dev_t st_rdev; __off_t st_size; __blksize_t st_blksize; __blkcnt64_t st_blocks; struct timespec st_atim; struct timespec st_mtim; struct timespec st_ctim; __syscall_slong_t __glibc_reserved[3]; }; extern int fcntl (int __fd, int __cmd, ...); extern int fcntl64 (int __fd, int __cmd, ...); extern int open (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); extern int open64 (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); extern int openat (int __fd, const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (2))); extern int openat64 (int __fd, const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (2))); extern int creat (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1))); extern int creat64 (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1))); extern int lockf (int __fd, int __cmd, off_t __len); extern int lockf64 (int __fd, int __cmd, off64_t __len); extern int posix_fadvise (int __fd, off_t __offset, off_t __len, int __advise) __attribute__ ((__nothrow__ , __leaf__)); extern int posix_fadvise64 (int __fd, off64_t __offset, off64_t __len, int __advise) __attribute__ ((__nothrow__ , __leaf__)); extern int posix_fallocate (int __fd, off_t __offset, off_t __len); extern int posix_fallocate64 (int __fd, off64_t __offset, off64_t __len); extern int __open_2 (const char *__path, int __oflag) __attribute__ ((__nonnull__ (1))); extern int __open_alias (const char *__path, int __oflag, ...) __asm__ ("" "open") __attribute__ ((__nonnull__ (1))); extern void __open_too_many_args (void) __attribute__((__error__ ("open can be called either with 2 or 3 arguments, not more"))) ; extern void __open_missing_mode (void) __attribute__((__error__ ("open with O_CREAT or O_TMPFILE in second argument needs 3 arguments"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int open (const char *__path, int __oflag, ...) { if (__builtin_va_arg_pack_len () > 1) __open_too_many_args (); if (__builtin_constant_p (__oflag)) { if ((((__oflag) & 0100) != 0 || ((__oflag) & (020000000 | 0200000)) == (020000000 | 0200000)) && __builtin_va_arg_pack_len () < 1) { __open_missing_mode (); return __open_2 (__path, __oflag); } return __open_alias (__path, __oflag, __builtin_va_arg_pack ()); } if (__builtin_va_arg_pack_len () < 1) return __open_2 (__path, __oflag); return __open_alias (__path, __oflag, __builtin_va_arg_pack ()); } extern int __open64_2 (const char *__path, int __oflag) __attribute__ ((__nonnull__ (1))); extern int __open64_alias (const char *__path, int __oflag, ...) __asm__ ("" "open64") __attribute__ ((__nonnull__ (1))); extern void __open64_too_many_args (void) __attribute__((__error__ ("open64 can be called either with 2 or 3 arguments, not more"))) ; extern void __open64_missing_mode (void) __attribute__((__error__ ("open64 with O_CREAT or O_TMPFILE in second argument needs 3 arguments"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int open64 (const char *__path, int __oflag, ...) { if (__builtin_va_arg_pack_len () > 1) __open64_too_many_args (); if (__builtin_constant_p (__oflag)) { if ((((__oflag) & 0100) != 0 || ((__oflag) & (020000000 | 0200000)) == (020000000 | 0200000)) && __builtin_va_arg_pack_len () < 1) { __open64_missing_mode (); return __open64_2 (__path, __oflag); } return __open64_alias (__path, __oflag, __builtin_va_arg_pack ()); } if (__builtin_va_arg_pack_len () < 1) return __open64_2 (__path, __oflag); return __open64_alias (__path, __oflag, __builtin_va_arg_pack ()); } extern int __openat_2 (int __fd, const char *__path, int __oflag) __attribute__ ((__nonnull__ (2))); extern int __openat_alias (int __fd, const char *__path, int __oflag, ...) __asm__ ("" "openat") __attribute__ ((__nonnull__ (2))); extern void __openat_too_many_args (void) __attribute__((__error__ ("openat can be called either with 3 or 4 arguments, not more"))) ; extern void __openat_missing_mode (void) __attribute__((__error__ ("openat with O_CREAT or O_TMPFILE in third argument needs 4 arguments"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int openat (int __fd, const char *__path, int __oflag, ...) { if (__builtin_va_arg_pack_len () > 1) __openat_too_many_args (); if (__builtin_constant_p (__oflag)) { if ((((__oflag) & 0100) != 0 || ((__oflag) & (020000000 | 0200000)) == (020000000 | 0200000)) && __builtin_va_arg_pack_len () < 1) { __openat_missing_mode (); return __openat_2 (__fd, __path, __oflag); } return __openat_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); } if (__builtin_va_arg_pack_len () < 1) return __openat_2 (__fd, __path, __oflag); return __openat_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); } extern int __openat64_2 (int __fd, const char *__path, int __oflag) __attribute__ ((__nonnull__ (2))); extern int __openat64_alias (int __fd, const char *__path, int __oflag, ...) __asm__ ("" "openat64") __attribute__ ((__nonnull__ (2))); extern void __openat64_too_many_args (void) __attribute__((__error__ ("openat64 can be called either with 3 or 4 arguments, not more"))) ; extern void __openat64_missing_mode (void) __attribute__((__error__ ("openat64 with O_CREAT or O_TMPFILE in third argument needs 4 arguments"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int openat64 (int __fd, const char *__path, int __oflag, ...) { if (__builtin_va_arg_pack_len () > 1) __openat64_too_many_args (); if (__builtin_constant_p (__oflag)) { if ((((__oflag) & 0100) != 0 || ((__oflag) & (020000000 | 0200000)) == (020000000 | 0200000)) && __builtin_va_arg_pack_len () < 1) { __openat64_missing_mode (); return __openat64_2 (__fd, __path, __oflag); } return __openat64_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); } if (__builtin_va_arg_pack_len () < 1) return __openat64_2 (__fd, __path, __oflag); return __openat64_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); } extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int rpl_fcntl (int fd, int action, ...); extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern long int __sysconf (int __name) __attribute__ ((__nothrow__ , __leaf__)); typedef float float_t; typedef double double_t; enum { FP_INT_UPWARD = 0, FP_INT_DOWNWARD = 1, FP_INT_TOWARDZERO = 2, FP_INT_TONEARESTFROMZERO = 3, FP_INT_TONEAREST = 4, }; extern int __fpclassify (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __signbit (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isinf (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __finite (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isnan (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __iseqsig (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern int __issignaling (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double acos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __acos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double asin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __asin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double atan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __atan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double cos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __cos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double sin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __sin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double tan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __tan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double cosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __cosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double sinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __sinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double tanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __tanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern void sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__ , __leaf__)) ; extern double acosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __acosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double asinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __asinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double atanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __atanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double exp (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __exp (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double log (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double log10 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log10 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern double exp10 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __exp10 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double expm1 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double log1p (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log1p (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double logb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __logb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double exp2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double log2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double pow (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double sqrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double hypot (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double cbrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double ceil (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fabs (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double floor (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fmod (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern int isinf (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int finite (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double drem (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double significand (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __significand (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double copysign (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double nan (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern double __nan (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern int isnan (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double j0 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __j0 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double j1 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __j1 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double jn (int, double) __attribute__ ((__nothrow__ , __leaf__)); extern double __jn (int, double) __attribute__ ((__nothrow__ , __leaf__)); extern double y0 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __y0 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double y1 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __y1 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double yn (int, double) __attribute__ ((__nothrow__ , __leaf__)); extern double __yn (int, double) __attribute__ ((__nothrow__ , __leaf__)); extern double erf (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __erf (double) __attribute__ ((__nothrow__ , __leaf__)); extern double erfc (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __erfc (double) __attribute__ ((__nothrow__ , __leaf__)); extern double lgamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __lgamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double tgamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __tgamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double gamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __gamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern double rint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __rint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double nextdown (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __nextdown (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double nextup (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __nextup (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double remainder (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int llogb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern double nearbyint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double round (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double trunc (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lround (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lround (double __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llround (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double fdim (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double fmax (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fmin (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ , __leaf__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ , __leaf__)); extern double roundeven (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __roundeven (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern __intmax_t fromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern int canonicalize (double *__cx, const double *__x) __attribute__ ((__nothrow__ , __leaf__)); extern double fmaxmag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fminmag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fmaximum (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmaximum (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fminimum (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fminimum (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fmaximum_num (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmaximum_num (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fminimum_num (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fminimum_num (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fmaximum_mag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmaximum_mag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fminimum_mag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fminimum_mag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fmaximum_mag_num (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmaximum_mag_num (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double fminimum_mag_num (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fminimum_mag_num (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int totalorder (const double *__x, const double *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern int totalordermag (const double *__x, const double *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern double getpayload (const double *__x) __attribute__ ((__nothrow__ , __leaf__)); extern double __getpayload (const double *__x) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayload (double *__x, double __payload) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadsig (double *__x, double __payload) __attribute__ ((__nothrow__ , __leaf__)); extern double scalb (double __x, double __n) __attribute__ ((__nothrow__ , __leaf__)); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__ , __leaf__)); extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __signbitf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isinff (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __finitef (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isnanf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __iseqsigf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern int __issignalingf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float acosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __acosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float asinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __asinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float atanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __atanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float cosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __cosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float sinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __sinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float tanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __tanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float coshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __coshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float sinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float tanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern void sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__ , __leaf__)) ; extern float acoshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float asinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float atanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float expf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __expf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float logf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __logf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float log10f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __log10f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern float exp10f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __exp10f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float expm1f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float log1pf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float logbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __logbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float exp2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float log2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __log2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float powf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float sqrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float cbrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float ceilf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fabsf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float floorf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern int isinff (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int finitef (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float dremf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float significandf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __significandf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float nanf (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern float __nanf (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern int isnanf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float j0f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __j0f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float j1f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __j1f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float jnf (int, float) __attribute__ ((__nothrow__ , __leaf__)); extern float __jnf (int, float) __attribute__ ((__nothrow__ , __leaf__)); extern float y0f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __y0f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float y1f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __y1f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float ynf (int, float) __attribute__ ((__nothrow__ , __leaf__)); extern float __ynf (int, float) __attribute__ ((__nothrow__ , __leaf__)); extern float erff (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __erff (float) __attribute__ ((__nothrow__ , __leaf__)); extern float erfcf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __erfcf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float lgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __lgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float tgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __tgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float gammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __gammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern float rintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __rintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float nextdownf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __nextdownf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float nextupf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __nextupf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int llogbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern float nearbyintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float roundf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float truncf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fminf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ , __leaf__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ , __leaf__)); extern float roundevenf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __roundevenf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern int canonicalizef (float *__cx, const float *__x) __attribute__ ((__nothrow__ , __leaf__)); extern float fmaxmagf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fminmagf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fmaximumf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fmaximumf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fminimumf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fminimumf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fmaximum_numf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fmaximum_numf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fminimum_numf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fminimum_numf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fmaximum_magf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fmaximum_magf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fminimum_magf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fminimum_magf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fmaximum_mag_numf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fmaximum_mag_numf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float fminimum_mag_numf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fminimum_mag_numf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int totalorderf (const float *__x, const float *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern int totalordermagf (const float *__x, const float *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern float getpayloadf (const float *__x) __attribute__ ((__nothrow__ , __leaf__)); extern float __getpayloadf (const float *__x) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadf (float *__x, float __payload) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadsigf (float *__x, float __payload) __attribute__ ((__nothrow__ , __leaf__)); extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__ , __leaf__)); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__ , __leaf__)); extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __signbitl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isinfl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __finitel (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isnanl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __iseqsigl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern int __issignalingl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double acosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double asinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double atanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double cosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double sinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double tanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double coshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double sinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double tanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern void sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__ , __leaf__)) ; extern long double acoshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double asinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double atanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double expl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double logl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double log10l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern long double exp10l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __exp10l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double expm1l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double log1pl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double logbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double exp2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double log2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double sqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double cbrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double ceill (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fabsl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double floorl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern int isinfl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int finitel (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double significandl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double nanl (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nanl (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern int isnanl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double j0l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __j0l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double j1l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __j1l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double jnl (int, long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double y0l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __y0l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double y1l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __y1l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double ynl (int, long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double erfl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __erfl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double erfcl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double lgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double tgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double gammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __gammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern long double rintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double nextdownl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nextdownl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double nextupl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nextupl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int llogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double roundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double truncl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__)); extern long double roundevenl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __roundevenl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern int canonicalizel (long double *__cx, const long double *__x) __attribute__ ((__nothrow__ , __leaf__)); extern long double fmaxmagl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fminmagl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fmaximuml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fmaximuml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fminimuml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fminimuml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fmaximum_numl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fmaximum_numl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fminimum_numl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fminimum_numl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fmaximum_magl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fmaximum_magl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fminimum_magl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fminimum_magl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fmaximum_mag_numl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fmaximum_mag_numl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double fminimum_mag_numl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fminimum_mag_numl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int totalorderl (const long double *__x, const long double *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern int totalordermagl (const long double *__x, const long double *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern long double getpayloadl (const long double *__x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __getpayloadl (const long double *__x) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadl (long double *__x, long double __payload) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadsigl (long double *__x, long double __payload) __attribute__ ((__nothrow__ , __leaf__)); extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 acosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __acosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 asinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __asinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 atanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __atanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 cosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __cosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 sinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __sinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 tanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __tanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 coshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __coshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 sinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __sinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 tanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __tanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) __attribute__ ((__nothrow__ , __leaf__)) ; extern _Float32 acoshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __acoshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 asinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __asinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 atanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __atanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 expf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __expf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 frexpf32 (_Float32 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 ldexpf32 (_Float32 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 logf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __logf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 log10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __log10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern _Float32 exp10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __exp10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 expm1f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __expm1f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 log1pf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __log1pf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 logbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __logbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 exp2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __exp2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 log2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __log2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 powf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 sqrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __sqrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 cbrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __cbrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 ceilf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fabsf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 floorf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 nanf32 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nanf32 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 j0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __j0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 j1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __j1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 jnf32 (int, _Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __jnf32 (int, _Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 y0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __y0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 y1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __y1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 ynf32 (int, _Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __ynf32 (int, _Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 erff32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __erff32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 erfcf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __erfcf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 lgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __lgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 tgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __tgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 lgammaf32_r (_Float32, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 rintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __rintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 nextdownf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nextdownf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 nextupf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nextupf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 scalbnf32 (_Float32 __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __scalbnf32 (_Float32 __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int llogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 scalblnf32 (_Float32 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 nearbyintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nearbyintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 roundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 truncf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fminf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 roundevenf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fmaximumf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fmaximumf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fminimumf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fminimumf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fmaximum_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fmaximum_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fminimum_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fminimum_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fmaximum_magf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fmaximum_magf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fminimum_magf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fminimum_magf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 fminimum_mag_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fminimum_mag_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int totalorderf32 (const _Float32 *__x, const _Float32 *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern int totalordermagf32 (const _Float32 *__x, const _Float32 *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern _Float32 getpayloadf32 (const _Float32 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __getpayloadf32 (const _Float32 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 acosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __acosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 asinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __asinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 atanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __atanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 cosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __cosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 sinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __sinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 tanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __tanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 coshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __coshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 sinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __sinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 tanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __tanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) __attribute__ ((__nothrow__ , __leaf__)) ; extern _Float64 acoshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __acoshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 asinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __asinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 atanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __atanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 expf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __expf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 frexpf64 (_Float64 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 ldexpf64 (_Float64 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 logf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __logf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 log10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __log10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern _Float64 exp10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __exp10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 expm1f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __expm1f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 log1pf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __log1pf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 logbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __logbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 exp2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __exp2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 log2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __log2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 powf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 sqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __sqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 cbrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __cbrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 ceilf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fabsf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 floorf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 nanf64 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nanf64 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 j0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __j0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 j1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __j1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 jnf64 (int, _Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __jnf64 (int, _Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 y0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __y0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 y1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __y1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 ynf64 (int, _Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __ynf64 (int, _Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 erff64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __erff64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 erfcf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __erfcf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 lgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __lgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 tgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __tgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 lgammaf64_r (_Float64, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 rintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __rintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 nextdownf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nextdownf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 nextupf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nextupf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 scalbnf64 (_Float64 __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __scalbnf64 (_Float64 __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int llogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 scalblnf64 (_Float64 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 nearbyintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nearbyintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 roundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 truncf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fminf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 roundevenf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fmaximumf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fmaximumf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fminimumf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fminimumf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fmaximum_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fmaximum_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fminimum_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fminimum_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fmaximum_magf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fmaximum_magf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fminimum_magf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fminimum_magf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 fminimum_mag_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fminimum_mag_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int totalorderf64 (const _Float64 *__x, const _Float64 *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern int totalordermagf64 (const _Float64 *__x, const _Float64 *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern _Float64 getpayloadf64 (const _Float64 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __getpayloadf64 (const _Float64 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) __attribute__ ((__nothrow__ , __leaf__)); extern int __fpclassifyf128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __signbitf128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isinff128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __finitef128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __isnanf128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int __iseqsigf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern int __issignalingf128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 acosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __acosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 asinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __asinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 atanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __atanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 cosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __cosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 sinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __sinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 tanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __tanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 coshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __coshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 sinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __sinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 tanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __tanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) __attribute__ ((__nothrow__ , __leaf__)) ; extern _Float128 acoshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __acoshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 asinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __asinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 atanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __atanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 expf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __expf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 frexpf128 (_Float128 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __frexpf128 (_Float128 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 ldexpf128 (_Float128 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __ldexpf128 (_Float128 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 logf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __logf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 log10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __log10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern _Float128 exp10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __exp10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 expm1f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __expm1f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 log1pf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __log1pf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 logbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __logbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 exp2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __exp2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 log2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __log2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 powf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __powf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 cbrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __cbrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 ceilf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __ceilf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fabsf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fabsf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 floorf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __floorf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 nanf128 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nanf128 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 j0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __j0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 j1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __j1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 jnf128 (int, _Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __jnf128 (int, _Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 y0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __y0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 y1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __y1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 ynf128 (int, _Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __ynf128 (int, _Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 erff128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __erff128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 erfcf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __erfcf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 lgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __lgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 tgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __tgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 lgammaf128_r (_Float128, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __lgammaf128_r (_Float128, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 rintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __rintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 nextdownf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nextdownf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 nextupf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nextupf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 scalbnf128 (_Float128 __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __scalbnf128 (_Float128 __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int llogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 scalblnf128 (_Float128 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __scalblnf128 (_Float128 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 nearbyintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nearbyintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 roundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __roundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 truncf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __truncf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 remquof128 (_Float128 __x, _Float128 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __remquof128 (_Float128 __x, _Float128 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fminf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 roundevenf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __roundevenf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern __intmax_t fromfpf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __intmax_t fromfpxf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern int canonicalizef128 (_Float128 *__cx, const _Float128 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fmaximumf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fmaximumf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fminimumf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fminimumf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fmaximum_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fmaximum_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fminimum_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fminimum_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fmaximum_magf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fmaximum_magf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fminimum_magf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fminimum_magf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fmaximum_mag_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fmaximum_mag_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 fminimum_mag_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fminimum_mag_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int totalorderf128 (const _Float128 *__x, const _Float128 *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern int totalordermagf128 (const _Float128 *__x, const _Float128 *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern _Float128 getpayloadf128 (const _Float128 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __getpayloadf128 (const _Float128 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x acosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __acosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x asinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __asinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x atanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __atanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x cosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __cosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x sinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __sinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x tanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __tanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x coshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __coshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x sinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __sinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x tanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __tanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) __attribute__ ((__nothrow__ , __leaf__)) ; extern _Float32x acoshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __acoshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x asinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __asinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x atanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __atanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x expf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __expf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x frexpf32x (_Float32x __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x ldexpf32x (_Float32x __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x logf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __logf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x log10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __log10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern _Float32x exp10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __exp10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x expm1f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __expm1f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x log1pf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __log1pf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x logbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __logbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x exp2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __exp2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x log2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __log2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x powf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x sqrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __sqrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x cbrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __cbrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x ceilf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fabsf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x floorf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x nanf32x (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nanf32x (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x j0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __j0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x j1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __j1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x jnf32x (int, _Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __jnf32x (int, _Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x y0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __y0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x y1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __y1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x ynf32x (int, _Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __ynf32x (int, _Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x erff32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __erff32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x erfcf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __erfcf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x lgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __lgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x tgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __tgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x rintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __rintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x nextdownf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nextdownf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x nextupf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nextupf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x scalbnf32x (_Float32x __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __scalbnf32x (_Float32x __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int llogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x scalblnf32x (_Float32x __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x nearbyintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nearbyintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x roundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x truncf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fminf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x roundevenf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fmaximumf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fmaximumf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fminimumf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fminimumf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fmaximum_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fmaximum_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fminimum_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fminimum_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fmaximum_magf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fmaximum_magf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fminimum_magf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fminimum_magf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x fminimum_mag_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fminimum_mag_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int totalorderf32x (const _Float32x *__x, const _Float32x *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern int totalordermagf32x (const _Float32x *__x, const _Float32x *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern _Float32x getpayloadf32x (const _Float32x *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __getpayloadf32x (const _Float32x *__x) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x acosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __acosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x asinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __asinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x atanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __atanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x cosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __cosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x sinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __sinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x tanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __tanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x coshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __coshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x sinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __sinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x tanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __tanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) __attribute__ ((__nothrow__ , __leaf__)) ; extern _Float64x acoshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __acoshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x asinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __asinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x atanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __atanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x expf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __expf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x frexpf64x (_Float64x __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __frexpf64x (_Float64x __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x ldexpf64x (_Float64x __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __ldexpf64x (_Float64x __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x logf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __logf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x log10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __log10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern _Float64x exp10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __exp10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x expm1f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __expm1f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x log1pf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __log1pf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x logbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __logbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x exp2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __exp2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x log2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __log2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x powf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __powf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x cbrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __cbrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x ceilf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __ceilf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fabsf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fabsf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x floorf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __floorf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x nanf64x (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nanf64x (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x j0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __j0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x j1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __j1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x jnf64x (int, _Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __jnf64x (int, _Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x y0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __y0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x y1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __y1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x ynf64x (int, _Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __ynf64x (int, _Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x erff64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __erff64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x erfcf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __erfcf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x lgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __lgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x tgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __tgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x lgammaf64x_r (_Float64x, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __lgammaf64x_r (_Float64x, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x rintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __rintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x nextdownf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nextdownf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x nextupf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nextupf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x scalbnf64x (_Float64x __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __scalbnf64x (_Float64x __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern int ilogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int llogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x scalblnf64x (_Float64x __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __scalblnf64x (_Float64x __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x nearbyintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nearbyintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x roundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __roundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x truncf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __truncf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x remquof64x (_Float64x __x, _Float64x __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __remquof64x (_Float64x __x, _Float64x __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long int lrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int lroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); __extension__ extern long long int llroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fminf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x roundevenf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __roundevenf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern __intmax_t fromfpf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __intmax_t fromfpxf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern __uintmax_t ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)) ; extern int canonicalizef64x (_Float64x *__cx, const _Float64x *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fmaximumf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fmaximumf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fminimumf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fminimumf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fmaximum_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fmaximum_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fminimum_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fminimum_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fmaximum_magf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fmaximum_magf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fminimum_magf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fminimum_magf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fmaximum_mag_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fmaximum_mag_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x fminimum_mag_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fminimum_mag_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int totalorderf64x (const _Float64x *__x, const _Float64x *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern int totalordermagf64x (const _Float64x *__x, const _Float64x *__y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)); extern _Float64x getpayloadf64x (const _Float64x *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __getpayloadf64x (const _Float64x *__x) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) __attribute__ ((__nothrow__ , __leaf__)); extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) __attribute__ ((__nothrow__ , __leaf__)); extern float fadd (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float fdiv (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float ffma (double __x, double __y, double __z) __attribute__ ((__nothrow__ , __leaf__)); extern float fmul (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float fsqrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern float fsub (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float faddl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float fdivl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float ffmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__)); extern float fmull (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float fsqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern float fsubl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double daddl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double ddivl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double dfmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__)); extern double dmull (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double dsqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double dsubl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32sqrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32sqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xfmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xsqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xfmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xsqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xfmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xsqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x f64xfmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x f64xsqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern int signgam; enum { FP_NAN = 0, FP_INFINITE = 1, FP_ZERO = 2, FP_SUBNORMAL = 3, FP_NORMAL = 4 }; extern int __iscanonicall (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); typedef __builtin_va_list __gnuc_va_list; typedef __gnuc_va_list va_list; typedef __uint8_t uint8_t; typedef __uint16_t uint16_t; typedef __uint32_t uint32_t; typedef __uint64_t uint64_t; typedef __int_least8_t int_least8_t; typedef __int_least16_t int_least16_t; typedef __int_least32_t int_least32_t; typedef __int_least64_t int_least64_t; typedef __uint_least8_t uint_least8_t; typedef __uint_least16_t uint_least16_t; typedef __uint_least32_t uint_least32_t; typedef __uint_least64_t uint_least64_t; typedef signed char int_fast8_t; typedef long int int_fast16_t; typedef long int int_fast32_t; typedef long int int_fast64_t; typedef unsigned char uint_fast8_t; typedef unsigned long int uint_fast16_t; typedef unsigned long int uint_fast32_t; typedef unsigned long int uint_fast64_t; typedef long int intptr_t; typedef unsigned long int uintptr_t; typedef __intmax_t intmax_t; typedef __uintmax_t uintmax_t; typedef int wchar_t; typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; __extension__ typedef struct { long long int quot; long long int rem; } lldiv_t; extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern double atof (const char *__nptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int atoi (const char *__nptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern long int atol (const char *__nptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); __extension__ extern long long int atoll (const char *__nptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern double strtod (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern float strtof (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern long double strtold (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern _Float32 strtof32 (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern _Float64 strtof64 (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern _Float128 strtof128 (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern _Float32x strtof32x (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern _Float64x strtof64x (const char *__restrict __nptr, char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern long int strtol (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern unsigned long int strtoul (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); __extension__ extern long long int strtoq (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); __extension__ extern unsigned long long int strtouq (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); __extension__ extern long long int strtoll (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); __extension__ extern unsigned long long int strtoull (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int strfromd (char *__dest, size_t __size, const char *__format, double __f) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int strfromf (char *__dest, size_t __size, const char *__format, float __f) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int strfroml (char *__dest, size_t __size, const char *__format, long double __f) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int strfromf32 (char *__dest, size_t __size, const char * __format, _Float32 __f) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int strfromf64 (char *__dest, size_t __size, const char * __format, _Float64 __f) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int strfromf128 (char *__dest, size_t __size, const char * __format, _Float128 __f) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int strfromf32x (char *__dest, size_t __size, const char * __format, _Float32x __f) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int strfromf64x (char *__dest, size_t __size, const char * __format, _Float64x __f) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); struct __locale_struct { struct __locale_data *__locales[13]; const unsigned short int *__ctype_b; const int *__ctype_tolower; const int *__ctype_toupper; const char *__names[13]; }; typedef struct __locale_struct *__locale_t; typedef __locale_t locale_t; extern long int strtol_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4))); extern unsigned long int strtoul_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4))); __extension__ extern long long int strtoll_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4))); __extension__ extern unsigned long long int strtoull_l (const char *__restrict __nptr, char **__restrict __endptr, int __base, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4))); extern double strtod_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern float strtof_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern long double strtold_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern _Float32 strtof32_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern _Float64 strtof64_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern _Float128 strtof128_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern _Float32x strtof32x_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern _Float64x strtof64x_l (const char *__restrict __nptr, char **__restrict __endptr, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern __inline __attribute__ ((__gnu_inline__)) int __attribute__ ((__nothrow__ , __leaf__)) atoi (const char *__nptr) { return (int) strtol (__nptr, (char **) ((void *)0), 10); } extern __inline __attribute__ ((__gnu_inline__)) long int __attribute__ ((__nothrow__ , __leaf__)) atol (const char *__nptr) { return strtol (__nptr, (char **) ((void *)0), 10); } __extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int __attribute__ ((__nothrow__ , __leaf__)) atoll (const char *__nptr) { return strtoll (__nptr, (char **) ((void *)0), 10); } extern char *l64a (long int __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern long int a64l (const char *__s) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern long int random (void) __attribute__ ((__nothrow__ , __leaf__)); extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__)); extern char *initstate (unsigned int __seed, char *__statebuf, size_t __statelen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); struct random_data { int32_t *fptr; int32_t *rptr; int32_t *state; int rand_type; int rand_deg; int rand_sep; int32_t *end_ptr; }; extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int srandom_r (unsigned int __seed, struct random_data *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))); extern int setstate_r (char *__restrict __statebuf, struct random_data *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int rand (void) __attribute__ ((__nothrow__ , __leaf__)); extern void srand (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__)); extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__ , __leaf__)); extern double drand48 (void) __attribute__ ((__nothrow__ , __leaf__)); extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern long int lrand48 (void) __attribute__ ((__nothrow__ , __leaf__)); extern long int nrand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern long int mrand48 (void) __attribute__ ((__nothrow__ , __leaf__)); extern long int jrand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern void srand48 (long int __seedval) __attribute__ ((__nothrow__ , __leaf__)); extern unsigned short int *seed48 (unsigned short int __seed16v[3]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); struct drand48_data { unsigned short int __x[3]; unsigned short int __old_x[3]; unsigned short int __c; unsigned short int __init; __extension__ unsigned long long int __a; }; extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int srand48_r (long int __seedval, struct drand48_data *__buffer) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern void *malloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); extern void *calloc (size_t __nmemb, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__)); extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2))); extern void free (void *__ptr) __attribute__ ((__nothrow__ , __leaf__)); extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2, 3))) __attribute__ ((__malloc__ (__builtin_free, 1))); extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__ (reallocarray, 1))); extern void *valloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__)); extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern void *aligned_alloc (size_t __alignment, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1))) __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__)); extern void abort (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__)); extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern void exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__)); extern void quick_exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__)); extern void _Exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__)); extern char *getenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern char *secure_getenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int putenv (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int setenv (const char *__name, const char *__value, int __replace) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int unsetenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int clearenv (void) __attribute__ ((__nothrow__ , __leaf__)); extern char *mktemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int mkstemps64 (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int mkostemps (char *__template, int __suffixlen, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int mkostemps64 (char *__template, int __suffixlen, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int system (const char *__command) __attribute__ ((__warn_unused_result__)); extern char *canonicalize_file_name (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (__builtin_free, 1))) __attribute__ ((__warn_unused_result__)); extern char *realpath (const char *__restrict __name, char *__restrict __resolved) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); typedef int (*__compar_fn_t) (const void *, const void *); typedef __compar_fn_t comparison_fn_t; typedef int (*__compar_d_fn_t) (const void *, const void *, void *); extern void *bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); extern __inline __attribute__ ((__gnu_inline__)) void * bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) { size_t __l, __u, __idx; const void *__p; int __comparison; __l = 0; __u = __nmemb; while (__l < __u) { __idx = (__l + __u) / 2; __p = (const void *) (((const char *) __base) + (__idx * __size)); __comparison = (*__compar) (__key, __p); if (__comparison < 0) __u = __idx; else if (__comparison > 0) __l = __idx + 1; else { return (void *) __p; } } return ((void *)0); } extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); extern void qsort_r (void *__base, size_t __nmemb, size_t __size, __compar_d_fn_t __compar, void *__arg) __attribute__ ((__nonnull__ (1, 4))); extern int abs (int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); extern long int labs (long int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); __extension__ extern long long int llabs (long long int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); extern div_t div (int __numer, int __denom) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); extern ldiv_t ldiv (long int __numer, long int __denom) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); __extension__ extern lldiv_t lldiv (long long int __numer, long long int __denom) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); extern char *gcvt (double __value, int __ndigit, char *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); extern char *qgcvt (long double __value, int __ndigit, char *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5))); extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5))); extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5))); extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5))); extern int mblen (const char *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)); extern int mbtowc (wchar_t *__restrict __pwc, const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)); extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__ , __leaf__)); extern size_t mbstowcs (wchar_t *__restrict __pwcs, const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__read_only__, 2))); extern size_t wcstombs (char *__restrict __s, const wchar_t *__restrict __pwcs, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); extern int rpmatch (const char *__response) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int getsubopt (char **__restrict __optionp, char *const *__restrict __tokens, char **__restrict __valuep) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); extern int grantpt (int __fd) __attribute__ ((__nothrow__ , __leaf__)); extern int unlockpt (int __fd) __attribute__ ((__nothrow__ , __leaf__)); extern char *ptsname (int __fd) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int ptsname_r (int __fd, char *__buf, size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); extern int getpt (void); extern int getloadavg (double __loadavg[], int __nelem) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern __inline __attribute__ ((__gnu_inline__)) double __attribute__ ((__nothrow__ , __leaf__)) atof (const char *__nptr) { return strtod (__nptr, (char **) ((void *)0)); } extern char *__realpath_chk (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern char *__realpath_alias (const char *__restrict __name, char *__restrict __resolved) __asm__ ("" "realpath") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern char *__realpath_chk_warn (const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __asm__ ("" "__realpath_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * __attribute__ ((__nothrow__ , __leaf__)) realpath (const char *__restrict __name, char *__restrict __resolved) { size_t sz = __builtin_object_size (__resolved, 2 > 1); if (sz == (size_t) -1) return __realpath_alias (__name, __resolved); if ((((__typeof (4096)) 0 < (__typeof (4096)) -1 || (__builtin_constant_p (4096) && (4096) > 0)) && __builtin_constant_p ((((long unsigned int) (4096)) <= (sz) / (sizeof (char)))) && !(((long unsigned int) (4096)) <= (sz) / (sizeof (char))))) return __realpath_chk_warn (__name, __resolved, sz); return __realpath_chk (__name, __resolved, sz); } extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, size_t __nreal) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ptsname_r") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ptsname_r_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) ptsname_r (int __fd, char *__buf, size_t __buflen) { return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __ptsname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) ; } extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int __wctomb_alias (char *__s, wchar_t __wchar) __asm__ ("" "wctomb") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int __attribute__ ((__nothrow__ , __leaf__)) wctomb (char *__s, wchar_t __wchar) { if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); return __wctomb_alias (__s, __wchar); } extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) __asm__ ("" "mbstowcs") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__mbstowcs_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t __attribute__ ((__nothrow__ , __leaf__)) mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src, size_t __len) { return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (wchar_t)))))) ? __mbstowcs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t)))) ? __mbstowcs_chk_warn (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))) : __mbstowcs_chk (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (sizeof (wchar_t))))) ; } extern size_t __wcstombs_chk (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); extern size_t __wcstombs_alias (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) __asm__ ("" "wcstombs") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2))); extern size_t __wcstombs_chk_warn (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__wcstombs_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t __attribute__ ((__nothrow__ , __leaf__)) wcstombs (char *__restrict __dst, const wchar_t *__restrict __src, size_t __len) { return (((__builtin_constant_p (__builtin_object_size (__dst, 2 > 1)) && (__builtin_object_size (__dst, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__dst, 2 > 1))) / ((sizeof (char)))))) ? __wcstombs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (sizeof (char)))) ? __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)) : __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)))) ; } typedef long int ptrdiff_t; typedef struct { long long __max_align_ll __attribute__((__aligned__(__alignof__(long long)))); long double __max_align_ld __attribute__((__aligned__(__alignof__(long double)))); } max_align_t; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern void * aligned_alloc (size_t alignment, size_t size) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (free, 1))) ; extern void * calloc (size_t nmemb, size_t size) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (free, 1))) ; extern char * canonicalize_file_name (const char *name) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (free, 1))) ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern void * malloc (size_t size) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (free, 1))) ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern void * realloc (void *ptr, size_t size) __attribute__ ((__malloc__ (free, 1))) ; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; int memfd_create (const char *__name, unsigned int __flags) __attribute__ ((__nothrow__ , __leaf__)); int mlock2 (const void *__addr, size_t __length, unsigned int __flags) __attribute__ ((__nothrow__ , __leaf__)); int pkey_alloc (unsigned int __flags, unsigned int __access_rights) __attribute__ ((__nothrow__ , __leaf__)); int pkey_set (int __key, unsigned int __access_rights) __attribute__ ((__nothrow__ , __leaf__)); int pkey_get (int __key) __attribute__ ((__nothrow__ , __leaf__)); int pkey_free (int __key) __attribute__ ((__nothrow__ , __leaf__)); int pkey_mprotect (void *__addr, size_t __len, int __prot, int __pkey) __attribute__ ((__nothrow__ , __leaf__)); extern void *mmap (void *__addr, size_t __len, int __prot, int __flags, int __fd, __off_t __offset) __attribute__ ((__nothrow__ , __leaf__)); extern void *mmap64 (void *__addr, size_t __len, int __prot, int __flags, int __fd, __off64_t __offset) __attribute__ ((__nothrow__ , __leaf__)); extern int munmap (void *__addr, size_t __len) __attribute__ ((__nothrow__ , __leaf__)); extern int mprotect (void *__addr, size_t __len, int __prot) __attribute__ ((__nothrow__ , __leaf__)); extern int msync (void *__addr, size_t __len, int __flags); extern int madvise (void *__addr, size_t __len, int __advice) __attribute__ ((__nothrow__ , __leaf__)); extern int posix_madvise (void *__addr, size_t __len, int __advice) __attribute__ ((__nothrow__ , __leaf__)); extern int mlock (const void *__addr, size_t __len) __attribute__ ((__nothrow__ , __leaf__)); extern int munlock (const void *__addr, size_t __len) __attribute__ ((__nothrow__ , __leaf__)); extern int mlockall (int __flags) __attribute__ ((__nothrow__ , __leaf__)); extern int munlockall (void) __attribute__ ((__nothrow__ , __leaf__)); extern int mincore (void *__start, size_t __len, unsigned char *__vec) __attribute__ ((__nothrow__ , __leaf__)); extern void *mremap (void *__addr, size_t __old_len, size_t __new_len, int __flags, ...) __attribute__ ((__nothrow__ , __leaf__)); extern int remap_file_pages (void *__start, size_t __size, int __prot, size_t __pgoff, int __flags) __attribute__ ((__nothrow__ , __leaf__)); extern int shm_open (const char *__name, int __oflag, mode_t __mode); extern int shm_unlink (const char *__name); typedef __sig_atomic_t sig_atomic_t; union sigval { int sival_int; void *sival_ptr; }; typedef union sigval __sigval_t; typedef struct { int si_signo; int si_errno; int si_code; int __pad0; union { int _pad[((128 / sizeof (int)) - 4)]; struct { __pid_t si_pid; __uid_t si_uid; } _kill; struct { int si_tid; int si_overrun; __sigval_t si_sigval; } _timer; struct { __pid_t si_pid; __uid_t si_uid; __sigval_t si_sigval; } _rt; struct { __pid_t si_pid; __uid_t si_uid; int si_status; __clock_t si_utime; __clock_t si_stime; } _sigchld; struct { void *si_addr; short int si_addr_lsb; union { struct { void *_lower; void *_upper; } _addr_bnd; __uint32_t _pkey; } _bounds; } _sigfault; struct { long int si_band; int si_fd; } _sigpoll; struct { void *_call_addr; int _syscall; unsigned int _arch; } _sigsys; } _sifields; } siginfo_t ; enum { SI_ASYNCNL = -60, SI_DETHREAD = -7, SI_TKILL, SI_SIGIO, SI_ASYNCIO, SI_MESGQ, SI_TIMER, SI_QUEUE, SI_USER, SI_KERNEL = 0x80 }; enum { ILL_ILLOPC = 1, ILL_ILLOPN, ILL_ILLADR, ILL_ILLTRP, ILL_PRVOPC, ILL_PRVREG, ILL_COPROC, ILL_BADSTK, ILL_BADIADDR }; enum { FPE_INTDIV = 1, FPE_INTOVF, FPE_FLTDIV, FPE_FLTOVF, FPE_FLTUND, FPE_FLTRES, FPE_FLTINV, FPE_FLTSUB, FPE_FLTUNK = 14, FPE_CONDTRAP }; enum { SEGV_MAPERR = 1, SEGV_ACCERR, SEGV_BNDERR, SEGV_PKUERR, SEGV_ACCADI, SEGV_ADIDERR, SEGV_ADIPERR, SEGV_MTEAERR, SEGV_MTESERR }; enum { BUS_ADRALN = 1, BUS_ADRERR, BUS_OBJERR, BUS_MCEERR_AR, BUS_MCEERR_AO }; enum { TRAP_BRKPT = 1, TRAP_TRACE, TRAP_BRANCH, TRAP_HWBKPT, TRAP_UNK }; enum { CLD_EXITED = 1, CLD_KILLED, CLD_DUMPED, CLD_TRAPPED, CLD_STOPPED, CLD_CONTINUED }; enum { POLL_IN = 1, POLL_OUT, POLL_MSG, POLL_ERR, POLL_PRI, POLL_HUP }; typedef __sigval_t sigval_t; typedef struct sigevent { __sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[((64 / sizeof (int)) - 4)]; __pid_t _tid; struct { void (*_function) (__sigval_t); pthread_attr_t *_attribute; } _sigev_thread; } _sigev_un; } sigevent_t; enum { SIGEV_SIGNAL = 0, SIGEV_NONE, SIGEV_THREAD, SIGEV_THREAD_ID = 4 }; typedef void (*__sighandler_t) (int); extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) __attribute__ ((__nothrow__ , __leaf__)); extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) __attribute__ ((__nothrow__ , __leaf__)); extern __sighandler_t signal (int __sig, __sighandler_t __handler) __attribute__ ((__nothrow__ , __leaf__)); extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__ , __leaf__)); extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__ , __leaf__)); extern int raise (int __sig) __attribute__ ((__nothrow__ , __leaf__)); extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) __attribute__ ((__nothrow__ , __leaf__)); extern int gsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__)); extern void psignal (int __sig, const char *__s); extern void psiginfo (const siginfo_t *__pinfo, const char *__s); extern int sigpause (int __sig) __asm__ ("__xpg_sigpause") __attribute__ ((__deprecated__ ("Use the sigsuspend function instead"))); extern int sigblock (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); extern int sigsetmask (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); extern int siggetmask (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); typedef __sighandler_t sighandler_t; typedef __sighandler_t sig_t; extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int sigismember (const sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int sigisemptyset (const sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int sigandset (sigset_t *__set, const sigset_t *__left, const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))); extern int sigorset (sigset_t *__set, const sigset_t *__left, const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))); struct sigaction { union { __sighandler_t sa_handler; void (*sa_sigaction) (int, siginfo_t *, void *); } __sigaction_handler; __sigset_t sa_mask; int sa_flags; void (*sa_restorer) (void); }; extern int sigprocmask (int __how, const sigset_t *__restrict __set, sigset_t *__restrict __oset) __attribute__ ((__nothrow__ , __leaf__)); extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1))); extern int sigaction (int __sig, const struct sigaction *__restrict __act, struct sigaction *__restrict __oact) __attribute__ ((__nothrow__ , __leaf__)); extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig) __attribute__ ((__nonnull__ (1, 2))); extern int sigwaitinfo (const sigset_t *__restrict __set, siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); extern int sigtimedwait (const sigset_t *__restrict __set, siginfo_t *__restrict __info, const struct timespec *__restrict __timeout) __attribute__ ((__nonnull__ (1))); extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val) __attribute__ ((__nothrow__ , __leaf__)); struct _fpx_sw_bytes { __uint32_t magic1; __uint32_t extended_size; __uint64_t xstate_bv; __uint32_t xstate_size; __uint32_t __glibc_reserved1[7]; }; struct _fpreg { unsigned short significand[4]; unsigned short exponent; }; struct _fpxreg { unsigned short significand[4]; unsigned short exponent; unsigned short __glibc_reserved1[3]; }; struct _xmmreg { __uint32_t element[4]; }; struct _fpstate { __uint16_t cwd; __uint16_t swd; __uint16_t ftw; __uint16_t fop; __uint64_t rip; __uint64_t rdp; __uint32_t mxcsr; __uint32_t mxcr_mask; struct _fpxreg _st[8]; struct _xmmreg _xmm[16]; __uint32_t __glibc_reserved1[24]; }; struct sigcontext { __uint64_t r8; __uint64_t r9; __uint64_t r10; __uint64_t r11; __uint64_t r12; __uint64_t r13; __uint64_t r14; __uint64_t r15; __uint64_t rdi; __uint64_t rsi; __uint64_t rbp; __uint64_t rbx; __uint64_t rdx; __uint64_t rax; __uint64_t rcx; __uint64_t rsp; __uint64_t rip; __uint64_t eflags; unsigned short cs; unsigned short gs; unsigned short fs; unsigned short __pad0; __uint64_t err; __uint64_t trapno; __uint64_t oldmask; __uint64_t cr2; __extension__ union { struct _fpstate * fpstate; __uint64_t __fpstate_word; }; __uint64_t __reserved1 [8]; }; struct _xsave_hdr { __uint64_t xstate_bv; __uint64_t __glibc_reserved1[2]; __uint64_t __glibc_reserved2[5]; }; struct _ymmh_state { __uint32_t ymmh_space[64]; }; struct _xstate { struct _fpstate fpstate; struct _xsave_hdr xstate_hdr; struct _ymmh_state ymmh; }; extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__ , __leaf__)); typedef struct { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; __extension__ typedef long long int greg_t; typedef greg_t gregset_t[23]; enum { REG_R8 = 0, REG_R9, REG_R10, REG_R11, REG_R12, REG_R13, REG_R14, REG_R15, REG_RDI, REG_RSI, REG_RBP, REG_RBX, REG_RDX, REG_RAX, REG_RCX, REG_RSP, REG_RIP, REG_EFL, REG_CSGSFS, REG_ERR, REG_TRAPNO, REG_OLDMASK, REG_CR2 }; struct _libc_fpxreg { unsigned short int significand[4]; unsigned short int exponent; unsigned short int __glibc_reserved1[3]; }; struct _libc_xmmreg { __uint32_t element[4]; }; struct _libc_fpstate { __uint16_t cwd; __uint16_t swd; __uint16_t ftw; __uint16_t fop; __uint64_t rip; __uint64_t rdp; __uint32_t mxcsr; __uint32_t mxcr_mask; struct _libc_fpxreg _st[8]; struct _libc_xmmreg _xmm[16]; __uint32_t __glibc_reserved1[24]; }; typedef struct _libc_fpstate *fpregset_t; typedef struct { gregset_t gregs; fpregset_t fpregs; __extension__ unsigned long long __reserved1 [8]; } mcontext_t; typedef struct ucontext_t { unsigned long int uc_flags; struct ucontext_t *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; sigset_t uc_sigmask; struct _libc_fpstate __fpregs_mem; __extension__ unsigned long long int __ssp[4]; } ucontext_t; extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__ ("Use sigaction with SA_RESTART instead"))); typedef __socklen_t socklen_t; extern int access (const char *__name, int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int euidaccess (const char *__name, int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int eaccess (const char *__name, int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int execveat (int __fd, const char *__path, char *const __argv[], char *const __envp[], int __flags) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); extern int faccessat (int __fd, const char *__file, int __type, int __flag) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__ , __leaf__)); extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) __attribute__ ((__nothrow__ , __leaf__)); extern int close (int __fd); extern void closefrom (int __lowfd) __attribute__ ((__nothrow__ , __leaf__)); extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t write (int __fd, const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t pwrite (int __fd, const void *__buf, size_t __n, __off_t __offset) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, __off64_t __offset) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 2, 3))); extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int pipe2 (int __pipedes[2], int __flags) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__ , __leaf__)); extern unsigned int sleep (unsigned int __seconds); extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) __attribute__ ((__nothrow__ , __leaf__)); extern int usleep (__useconds_t __useconds); extern int pause (void); extern int chown (const char *__file, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int lchown (const char *__file, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int fchownat (int __fd, const char *__file, __uid_t __owner, __gid_t __group, int __flag) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); extern int chdir (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int fchdir (int __fd) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern char *get_current_dir_name (void) __attribute__ ((__nothrow__ , __leaf__)); extern char *getwd (char *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1))); extern int dup (int __fd) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__ , __leaf__)); extern int dup3 (int __fd, int __fd2, int __flags) __attribute__ ((__nothrow__ , __leaf__)); extern char **__environ; extern char **environ; extern int execve (const char *__path, char *const __argv[], char *const __envp[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int fexecve (int __fd, char *const __argv[], char *const __envp[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int execv (const char *__path, char *const __argv[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int execle (const char *__path, const char *__arg, ...) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int execl (const char *__path, const char *__arg, ...) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int execvp (const char *__file, char *const __argv[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int execlp (const char *__file, const char *__arg, ...) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int execvpe (const char *__file, char *const __argv[], char *const __envp[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int nice (int __inc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern void _exit (int __status) __attribute__ ((__noreturn__)); enum { _PC_LINK_MAX, _PC_MAX_CANON, _PC_MAX_INPUT, _PC_NAME_MAX, _PC_PATH_MAX, _PC_PIPE_BUF, _PC_CHOWN_RESTRICTED, _PC_NO_TRUNC, _PC_VDISABLE, _PC_SYNC_IO, _PC_ASYNC_IO, _PC_PRIO_IO, _PC_SOCK_MAXBUF, _PC_FILESIZEBITS, _PC_REC_INCR_XFER_SIZE, _PC_REC_MAX_XFER_SIZE, _PC_REC_MIN_XFER_SIZE, _PC_REC_XFER_ALIGN, _PC_ALLOC_SIZE_MIN, _PC_SYMLINK_MAX, _PC_2_SYMLINKS }; enum { _SC_ARG_MAX, _SC_CHILD_MAX, _SC_CLK_TCK, _SC_NGROUPS_MAX, _SC_OPEN_MAX, _SC_STREAM_MAX, _SC_TZNAME_MAX, _SC_JOB_CONTROL, _SC_SAVED_IDS, _SC_REALTIME_SIGNALS, _SC_PRIORITY_SCHEDULING, _SC_TIMERS, _SC_ASYNCHRONOUS_IO, _SC_PRIORITIZED_IO, _SC_SYNCHRONIZED_IO, _SC_FSYNC, _SC_MAPPED_FILES, _SC_MEMLOCK, _SC_MEMLOCK_RANGE, _SC_MEMORY_PROTECTION, _SC_MESSAGE_PASSING, _SC_SEMAPHORES, _SC_SHARED_MEMORY_OBJECTS, _SC_AIO_LISTIO_MAX, _SC_AIO_MAX, _SC_AIO_PRIO_DELTA_MAX, _SC_DELAYTIMER_MAX, _SC_MQ_OPEN_MAX, _SC_MQ_PRIO_MAX, _SC_VERSION, _SC_PAGESIZE, _SC_RTSIG_MAX, _SC_SEM_NSEMS_MAX, _SC_SEM_VALUE_MAX, _SC_SIGQUEUE_MAX, _SC_TIMER_MAX, _SC_BC_BASE_MAX, _SC_BC_DIM_MAX, _SC_BC_SCALE_MAX, _SC_BC_STRING_MAX, _SC_COLL_WEIGHTS_MAX, _SC_EQUIV_CLASS_MAX, _SC_EXPR_NEST_MAX, _SC_LINE_MAX, _SC_RE_DUP_MAX, _SC_CHARCLASS_NAME_MAX, _SC_2_VERSION, _SC_2_C_BIND, _SC_2_C_DEV, _SC_2_FORT_DEV, _SC_2_FORT_RUN, _SC_2_SW_DEV, _SC_2_LOCALEDEF, _SC_PII, _SC_PII_XTI, _SC_PII_SOCKET, _SC_PII_INTERNET, _SC_PII_OSI, _SC_POLL, _SC_SELECT, _SC_UIO_MAXIOV, _SC_IOV_MAX = _SC_UIO_MAXIOV, _SC_PII_INTERNET_STREAM, _SC_PII_INTERNET_DGRAM, _SC_PII_OSI_COTS, _SC_PII_OSI_CLTS, _SC_PII_OSI_M, _SC_T_IOV_MAX, _SC_THREADS, _SC_THREAD_SAFE_FUNCTIONS, _SC_GETGR_R_SIZE_MAX, _SC_GETPW_R_SIZE_MAX, _SC_LOGIN_NAME_MAX, _SC_TTY_NAME_MAX, _SC_THREAD_DESTRUCTOR_ITERATIONS, _SC_THREAD_KEYS_MAX, _SC_THREAD_STACK_MIN, _SC_THREAD_THREADS_MAX, _SC_THREAD_ATTR_STACKADDR, _SC_THREAD_ATTR_STACKSIZE, _SC_THREAD_PRIORITY_SCHEDULING, _SC_THREAD_PRIO_INHERIT, _SC_THREAD_PRIO_PROTECT, _SC_THREAD_PROCESS_SHARED, _SC_NPROCESSORS_CONF, _SC_NPROCESSORS_ONLN, _SC_PHYS_PAGES, _SC_AVPHYS_PAGES, _SC_ATEXIT_MAX, _SC_PASS_MAX, _SC_XOPEN_VERSION, _SC_XOPEN_XCU_VERSION, _SC_XOPEN_UNIX, _SC_XOPEN_CRYPT, _SC_XOPEN_ENH_I18N, _SC_XOPEN_SHM, _SC_2_CHAR_TERM, _SC_2_C_VERSION, _SC_2_UPE, _SC_XOPEN_XPG2, _SC_XOPEN_XPG3, _SC_XOPEN_XPG4, _SC_CHAR_BIT, _SC_CHAR_MAX, _SC_CHAR_MIN, _SC_INT_MAX, _SC_INT_MIN, _SC_LONG_BIT, _SC_WORD_BIT, _SC_MB_LEN_MAX, _SC_NZERO, _SC_SSIZE_MAX, _SC_SCHAR_MAX, _SC_SCHAR_MIN, _SC_SHRT_MAX, _SC_SHRT_MIN, _SC_UCHAR_MAX, _SC_UINT_MAX, _SC_ULONG_MAX, _SC_USHRT_MAX, _SC_NL_ARGMAX, _SC_NL_LANGMAX, _SC_NL_MSGMAX, _SC_NL_NMAX, _SC_NL_SETMAX, _SC_NL_TEXTMAX, _SC_XBS5_ILP32_OFF32, _SC_XBS5_ILP32_OFFBIG, _SC_XBS5_LP64_OFF64, _SC_XBS5_LPBIG_OFFBIG, _SC_XOPEN_LEGACY, _SC_XOPEN_REALTIME, _SC_XOPEN_REALTIME_THREADS, _SC_ADVISORY_INFO, _SC_BARRIERS, _SC_BASE, _SC_C_LANG_SUPPORT, _SC_C_LANG_SUPPORT_R, _SC_CLOCK_SELECTION, _SC_CPUTIME, _SC_THREAD_CPUTIME, _SC_DEVICE_IO, _SC_DEVICE_SPECIFIC, _SC_DEVICE_SPECIFIC_R, _SC_FD_MGMT, _SC_FIFO, _SC_PIPE, _SC_FILE_ATTRIBUTES, _SC_FILE_LOCKING, _SC_FILE_SYSTEM, _SC_MONOTONIC_CLOCK, _SC_MULTI_PROCESS, _SC_SINGLE_PROCESS, _SC_NETWORKING, _SC_READER_WRITER_LOCKS, _SC_SPIN_LOCKS, _SC_REGEXP, _SC_REGEX_VERSION, _SC_SHELL, _SC_SIGNALS, _SC_SPAWN, _SC_SPORADIC_SERVER, _SC_THREAD_SPORADIC_SERVER, _SC_SYSTEM_DATABASE, _SC_SYSTEM_DATABASE_R, _SC_TIMEOUTS, _SC_TYPED_MEMORY_OBJECTS, _SC_USER_GROUPS, _SC_USER_GROUPS_R, _SC_2_PBS, _SC_2_PBS_ACCOUNTING, _SC_2_PBS_LOCATE, _SC_2_PBS_MESSAGE, _SC_2_PBS_TRACK, _SC_SYMLOOP_MAX, _SC_STREAMS, _SC_2_PBS_CHECKPOINT, _SC_V6_ILP32_OFF32, _SC_V6_ILP32_OFFBIG, _SC_V6_LP64_OFF64, _SC_V6_LPBIG_OFFBIG, _SC_HOST_NAME_MAX, _SC_TRACE, _SC_TRACE_EVENT_FILTER, _SC_TRACE_INHERIT, _SC_TRACE_LOG, _SC_LEVEL1_ICACHE_SIZE, _SC_LEVEL1_ICACHE_ASSOC, _SC_LEVEL1_ICACHE_LINESIZE, _SC_LEVEL1_DCACHE_SIZE, _SC_LEVEL1_DCACHE_ASSOC, _SC_LEVEL1_DCACHE_LINESIZE, _SC_LEVEL2_CACHE_SIZE, _SC_LEVEL2_CACHE_ASSOC, _SC_LEVEL2_CACHE_LINESIZE, _SC_LEVEL3_CACHE_SIZE, _SC_LEVEL3_CACHE_ASSOC, _SC_LEVEL3_CACHE_LINESIZE, _SC_LEVEL4_CACHE_SIZE, _SC_LEVEL4_CACHE_ASSOC, _SC_LEVEL4_CACHE_LINESIZE, _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, _SC_RAW_SOCKETS, _SC_V7_ILP32_OFF32, _SC_V7_ILP32_OFFBIG, _SC_V7_LP64_OFF64, _SC_V7_LPBIG_OFFBIG, _SC_SS_REPL_MAX, _SC_TRACE_EVENT_NAME_MAX, _SC_TRACE_NAME_MAX, _SC_TRACE_SYS_MAX, _SC_TRACE_USER_EVENT_MAX, _SC_XOPEN_STREAMS, _SC_THREAD_ROBUST_PRIO_INHERIT, _SC_THREAD_ROBUST_PRIO_PROTECT, _SC_MINSIGSTKSZ, _SC_SIGSTKSZ }; enum { _CS_PATH, _CS_V6_WIDTH_RESTRICTED_ENVS, _CS_GNU_LIBC_VERSION, _CS_GNU_LIBPTHREAD_VERSION, _CS_V5_WIDTH_RESTRICTED_ENVS, _CS_V7_WIDTH_RESTRICTED_ENVS, _CS_LFS_CFLAGS = 1000, _CS_LFS_LDFLAGS, _CS_LFS_LIBS, _CS_LFS_LINTFLAGS, _CS_LFS64_CFLAGS, _CS_LFS64_LDFLAGS, _CS_LFS64_LIBS, _CS_LFS64_LINTFLAGS, _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, _CS_XBS5_ILP32_OFF32_LDFLAGS, _CS_XBS5_ILP32_OFF32_LIBS, _CS_XBS5_ILP32_OFF32_LINTFLAGS, _CS_XBS5_ILP32_OFFBIG_CFLAGS, _CS_XBS5_ILP32_OFFBIG_LDFLAGS, _CS_XBS5_ILP32_OFFBIG_LIBS, _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, _CS_XBS5_LP64_OFF64_CFLAGS, _CS_XBS5_LP64_OFF64_LDFLAGS, _CS_XBS5_LP64_OFF64_LIBS, _CS_XBS5_LP64_OFF64_LINTFLAGS, _CS_XBS5_LPBIG_OFFBIG_CFLAGS, _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, _CS_XBS5_LPBIG_OFFBIG_LIBS, _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, _CS_POSIX_V6_ILP32_OFF32_CFLAGS, _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, _CS_POSIX_V6_ILP32_OFF32_LIBS, _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, _CS_POSIX_V6_ILP32_OFFBIG_LIBS, _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, _CS_POSIX_V6_LP64_OFF64_CFLAGS, _CS_POSIX_V6_LP64_OFF64_LDFLAGS, _CS_POSIX_V6_LP64_OFF64_LIBS, _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, _CS_POSIX_V7_ILP32_OFF32_CFLAGS, _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, _CS_POSIX_V7_ILP32_OFF32_LIBS, _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, _CS_POSIX_V7_ILP32_OFFBIG_LIBS, _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, _CS_POSIX_V7_LP64_OFF64_CFLAGS, _CS_POSIX_V7_LP64_OFF64_LDFLAGS, _CS_POSIX_V7_LP64_OFF64_LIBS, _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, _CS_V6_ENV, _CS_V7_ENV }; extern long int pathconf (const char *__path, int __name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__ , __leaf__)); extern long int sysconf (int __name) __attribute__ ((__nothrow__ , __leaf__)); extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern __pid_t getpid (void) __attribute__ ((__nothrow__ , __leaf__)); extern __pid_t getppid (void) __attribute__ ((__nothrow__ , __leaf__)); extern __pid_t getpgrp (void) __attribute__ ((__nothrow__ , __leaf__)); extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__)); extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__)); extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__ , __leaf__)); extern int setpgrp (void) __attribute__ ((__nothrow__ , __leaf__)); extern __pid_t setsid (void) __attribute__ ((__nothrow__ , __leaf__)); extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__)); extern __uid_t getuid (void) __attribute__ ((__nothrow__ , __leaf__)); extern __uid_t geteuid (void) __attribute__ ((__nothrow__ , __leaf__)); extern __gid_t getgid (void) __attribute__ ((__nothrow__ , __leaf__)); extern __gid_t getegid (void) __attribute__ ((__nothrow__ , __leaf__)); extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)); extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) __attribute__ ((__nothrow__ , __leaf__)); extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) __attribute__ ((__nothrow__ , __leaf__)); extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern __pid_t fork (void) __attribute__ ((__nothrow__)); extern __pid_t vfork (void) __attribute__ ((__nothrow__ , __leaf__)); extern __pid_t _Fork (void) __attribute__ ((__nothrow__ , __leaf__)); extern char *ttyname (int __fd) __attribute__ ((__nothrow__ , __leaf__)); extern int ttyname_r (int __fd, char *__buf, size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern int isatty (int __fd) __attribute__ ((__nothrow__ , __leaf__)); extern int ttyslot (void) __attribute__ ((__nothrow__ , __leaf__)); extern int link (const char *__from, const char *__to) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); extern int linkat (int __fromfd, const char *__from, int __tofd, const char *__to, int __flags) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); extern int symlink (const char *__from, const char *__to) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); extern ssize_t readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern int symlinkat (const char *__from, int __tofd, const char *__to) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); extern ssize_t readlinkat (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); extern int unlink (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int unlinkat (int __fd, const char *__name, int __flag) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int rmdir (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__ , __leaf__)); extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__ , __leaf__)); extern char *getlogin (void); extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int setlogin (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern char *optarg; extern int optind; extern int opterr; extern int optopt; extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int sethostname (const char *__name, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); extern int sethostid (long int __id) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int getdomainname (char *__name, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int setdomainname (const char *__name, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2))); extern int vhangup (void) __attribute__ ((__nothrow__ , __leaf__)); extern int revoke (const char *__file) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int profil (unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int acct (const char *__name) __attribute__ ((__nothrow__ , __leaf__)); extern char *getusershell (void) __attribute__ ((__nothrow__ , __leaf__)); extern void endusershell (void) __attribute__ ((__nothrow__ , __leaf__)); extern void setusershell (void) __attribute__ ((__nothrow__ , __leaf__)); extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int chroot (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1))); extern int fsync (int __fd); extern int syncfs (int __fd) __attribute__ ((__nothrow__ , __leaf__)); extern long int gethostid (void); extern void sync (void) __attribute__ ((__nothrow__ , __leaf__)); extern int getpagesize (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int getdtablesize (void) __attribute__ ((__nothrow__ , __leaf__)); extern int truncate (const char *__file, __off_t __length) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int truncate64 (const char *__file, __off64_t __length) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int brk (void *__addr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__ , __leaf__)); extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__ , __leaf__)); ssize_t copy_file_range (int __infd, __off64_t *__pinoff, int __outfd, __off64_t *__poutoff, size_t __length, unsigned int __flags); extern int fdatasync (int __fildes); extern char *crypt (const char *__key, const char *__salt) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern void swab (const void *__restrict __from, void *__restrict __to, ssize_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__read_only__, 1, 3))) __attribute__ ((__access__ (__write_only__, 2, 3))); int getentropy (void *__buffer, size_t __length) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int close_range (unsigned int __fd, unsigned int __max_fd, int __flags) __attribute__ ((__nothrow__ , __leaf__)); extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t read (int __fd, void *__buf, size_t __nbytes) { return (((__builtin_constant_p (__builtin_object_size (__buf, 0)) && (__builtin_object_size (__buf, 0)) == (long unsigned int) -1) || (((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((long unsigned int) (__nbytes)) <= ((__builtin_object_size (__buf, 0))) / ((sizeof (char))))) && (((long unsigned int) (__nbytes)) <= ((__builtin_object_size (__buf, 0))) / ((sizeof (char)))))) ? __read_alias (__fd, __buf, __nbytes) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) && !(((long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) ? __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)) : __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)))) ; } extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))) ; extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) { return (((__builtin_constant_p (__builtin_object_size (__buf, 0)) && (__builtin_object_size (__buf, 0)) == (long unsigned int) -1) || (((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((long unsigned int) (__nbytes)) <= ((__builtin_object_size (__buf, 0))) / ((sizeof (char))))) && (((long unsigned int) (__nbytes)) <= ((__builtin_object_size (__buf, 0))) / ((sizeof (char)))))) ? __pread_alias (__fd, __buf, __nbytes, __offset) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) && !(((long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) ? __pread_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)) : __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)))) ; } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) { return (((__builtin_constant_p (__builtin_object_size (__buf, 0)) && (__builtin_object_size (__buf, 0)) == (long unsigned int) -1) || (((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((long unsigned int) (__nbytes)) <= ((__builtin_object_size (__buf, 0))) / ((sizeof (char))))) && (((long unsigned int) (__nbytes)) <= ((__builtin_object_size (__buf, 0))) / ((sizeof (char)))))) ? __pread64_alias (__fd, __buf, __nbytes, __offset) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) && !(((long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (sizeof (char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)))) ; } extern ssize_t __readlink_chk (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t __readlink_alias (const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlink") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern ssize_t __readlink_chk_warn (const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlink_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t __attribute__ ((__nothrow__ , __leaf__)) readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) { return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __readlink_alias (__path, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)))) ; } extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); extern ssize_t __readlinkat_alias (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlinkat") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4))); extern ssize_t __readlinkat_chk_warn (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlinkat_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t __attribute__ ((__nothrow__ , __leaf__)) readlinkat (int __fd, const char *__restrict __path, char *__restrict __buf, size_t __len) { return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __readlinkat_alias (__fd, __path, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __readlinkat_chk_warn (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)))) ; } extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern char *__getcwd_alias (char *__buf, size_t __size) __asm__ ("" "getcwd") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) __asm__ ("" "__getcwd_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * __attribute__ ((__nothrow__ , __leaf__)) getcwd (char *__buf, size_t __size) { return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((long unsigned int) (__size)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__size)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __getcwd_alias (__buf, __size) : ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((long unsigned int) (__size)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__size)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1)) : __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1)))) ; } extern char *__getwd_chk (char *__buf, size_t buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern char *__getwd_warn (char *__buf) __asm__ ("" "getwd") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * __attribute__ ((__nothrow__ , __leaf__)) getwd (char *__buf) { if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1)); return __getwd_warn (__buf); } extern size_t __confstr_chk (int __name, char *__buf, size_t __len, size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern size_t __confstr_alias (int __name, char *__buf, size_t __len) __asm__ ("" "confstr") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) __asm__ ("" "__confstr_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) size_t __attribute__ ((__nothrow__ , __leaf__)) confstr (int __name, char *__buf, size_t __len) { return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__len)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __confstr_alias (__name, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)))) ; } extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); extern int __getgroups_alias (int __size, __gid_t __list[]) __asm__ ("" "getgroups") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1))); extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) __asm__ ("" "__getgroups_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) getgroups (int __size, __gid_t __list[]) { return (((__builtin_constant_p (__builtin_object_size (__list, 2 > 1)) && (__builtin_object_size (__list, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((long unsigned int) (__size)) <= ((__builtin_object_size (__list, 2 > 1))) / ((sizeof (__gid_t))))) && (((long unsigned int) (__size)) <= ((__builtin_object_size (__list, 2 > 1))) / ((sizeof (__gid_t)))))) ? __getgroups_alias (__size, __list) : ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((long unsigned int) (__size)) <= (__builtin_object_size (__list, 2 > 1)) / (sizeof (__gid_t)))) && !(((long unsigned int) (__size)) <= (__builtin_object_size (__list, 2 > 1)) / (sizeof (__gid_t)))) ? __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1)) : __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1)))) ; } extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, size_t __nreal) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3))); extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ttyname_r") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ttyname_r_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) ttyname_r (int __fd, char *__buf, size_t __buflen) { return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __ttyname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) ; } extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") __attribute__ ((__nonnull__ (1))); extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int getlogin_r (char *__buf, size_t __buflen) { return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __getlogin_r_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) ; } extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int __gethostname_alias (char *__buf, size_t __buflen) __asm__ ("" "gethostname") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__gethostname_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) gethostname (char *__buf, size_t __buflen) { return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __gethostname_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) ; } extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int __getdomainname_alias (char *__buf, size_t __buflen) __asm__ ("" "getdomainname") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getdomainname_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) getdomainname (char *__buf, size_t __buflen) { return (((__builtin_constant_p (__builtin_object_size (__buf, 2 > 1)) && (__builtin_object_size (__buf, 2 > 1)) == (long unsigned int) -1) || (((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char))))) && (((long unsigned int) (__buflen)) <= ((__builtin_object_size (__buf, 2 > 1))) / ((sizeof (char)))))) ? __getdomainname_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) && !(((long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (sizeof (char)))) ? __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)))) ; } extern __pid_t gettid (void) __attribute__ ((__nothrow__ , __leaf__)); extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int rpl_pipe2 (int fd[2], int flags) __attribute__ ((__nonnull__ (1))); extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; enum { SS_ONSTACK = 1, SS_DISABLE }; extern int sigaltstack (const stack_t *__restrict __ss, stack_t *__restrict __oss) __attribute__ ((__nothrow__ , __leaf__)); struct sigstack { void *ss_sp; int ss_onstack; }; extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__)); extern int sighold (int __sig) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__ ("Use the sigprocmask function instead"))); extern int sigrelse (int __sig) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__ ("Use the sigprocmask function instead"))); extern int sigignore (int __sig) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__ ("Use the signal function instead"))); extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__ ("Use the signal and sigprocmask functions instead"))) ; extern int pthread_sigmask (int __how, const __sigset_t *__restrict __newmask, __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__ , __leaf__)); extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__ , __leaf__)); extern int pthread_sigqueue (pthread_t __threadid, int __signo, const union sigval __value) __attribute__ ((__nothrow__ , __leaf__)); extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__ , __leaf__)); extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__ , __leaf__)); extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal); extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; struct timex { unsigned int modes; __syscall_slong_t offset; __syscall_slong_t freq; __syscall_slong_t maxerror; __syscall_slong_t esterror; int status; __syscall_slong_t constant; __syscall_slong_t precision; __syscall_slong_t tolerance; struct timeval time; __syscall_slong_t tick; __syscall_slong_t ppsfreq; __syscall_slong_t jitter; int shift; __syscall_slong_t stabil; __syscall_slong_t jitcnt; __syscall_slong_t calcnt; __syscall_slong_t errcnt; __syscall_slong_t stbcnt; int tai; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; }; extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __attribute__ ((__nothrow__ , __leaf__)); struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; long int tm_gmtoff; const char *tm_zone; }; struct itimerspec { struct timespec it_interval; struct timespec it_value; }; struct sigevent; extern clock_t clock (void) __attribute__ ((__nothrow__ , __leaf__)); extern time_t time (time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); extern double difftime (time_t __time1, time_t __time0) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); extern size_t strftime (char *__restrict __s, size_t __maxsize, const char *__restrict __format, const struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__)); extern char *strptime (const char *__restrict __s, const char *__restrict __fmt, struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); extern size_t strftime_l (char *__restrict __s, size_t __maxsize, const char *__restrict __format, const struct tm *__restrict __tp, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)); extern char *strptime_l (const char *__restrict __s, const char *__restrict __fmt, struct tm *__tp, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)); extern struct tm *gmtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); extern struct tm *localtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); extern struct tm *gmtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__)); extern struct tm *localtime_r (const time_t *__restrict __timer, struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__)); extern char *asctime (const struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); extern char *ctime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__)); extern char *asctime_r (const struct tm *__restrict __tp, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)); extern char *ctime_r (const time_t *__restrict __timer, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)); extern char *__tzname[2]; extern int __daylight; extern long int __timezone; extern char *tzname[2]; extern void tzset (void) __attribute__ ((__nothrow__ , __leaf__)); extern int daylight; extern long int timezone; extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__)); extern int dysize (int __year) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int nanosleep (const struct timespec *__requested_time, struct timespec *__remaining); extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__ , __leaf__)); extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__ , __leaf__)); extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) __attribute__ ((__nothrow__ , __leaf__)); extern int clock_nanosleep (clockid_t __clock_id, int __flags, const struct timespec *__req, struct timespec *__rem); extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__ , __leaf__)); extern int timer_create (clockid_t __clock_id, struct sigevent *__restrict __evp, timer_t *__restrict __timerid) __attribute__ ((__nothrow__ , __leaf__)); extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__)); extern int timer_settime (timer_t __timerid, int __flags, const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__ , __leaf__)); extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) __attribute__ ((__nothrow__ , __leaf__)); extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__)); extern int timespec_get (struct timespec *__ts, int __base) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int timespec_getres (struct timespec *__ts, int __base) __attribute__ ((__nothrow__ , __leaf__)); extern int getdate_err; extern struct tm *getdate (const char *__string); extern int getdate_r (const char *__restrict __string, struct tm *__restrict __resbufp); struct __time_t_must_be_integral { unsigned int __floating_time_t_unsupported : (time_t) 1; }; extern int rpl_nanosleep (struct timespec const *__rqtp, struct timespec *__rmtp) __attribute__ ((__nonnull__ (1))) ; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern time_t rpl_mktime (struct tm *__tp) __attribute__ ((__nonnull__ (1))); extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; typedef struct tm_zone *timezone_t; extern timezone_t tzalloc (char const *__name); extern int _gl_cxxalias_dummy; extern void tzfree (timezone_t __tz); extern int _gl_cxxalias_dummy; extern struct tm * localtime_rz (timezone_t __tz, time_t const * __restrict__ __timer, struct tm * __restrict__ __result) __attribute__ ((__nonnull__ (2, 3))) ; extern int _gl_cxxalias_dummy ; extern time_t mktime_z (timezone_t __tz, struct tm * __restrict__ __tm) __attribute__ ((__nonnull__ (2))) ; extern int _gl_cxxalias_dummy ; extern time_t rpl_timegm (struct tm *__tm) __attribute__ ((__nonnull__ (1))); extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int stat (const char *__restrict __file, struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int stat64 (const char *__restrict __file, struct stat64 *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int fstatat (int __fd, const char *__restrict __file, struct stat *__restrict __buf, int __flag) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); extern int fstatat64 (int __fd, const char *__restrict __file, struct stat64 *__restrict __buf, int __flag) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); extern int lstat (const char *__restrict __file, struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int lstat64 (const char *__restrict __file, struct stat64 *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int chmod (const char *__file, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int lchmod (const char *__file, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__)); extern int fchmodat (int __fd, const char *__file, __mode_t __mode, int __flag) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__ , __leaf__)); extern __mode_t getumask (void) __attribute__ ((__nothrow__ , __leaf__)); extern int mkdir (const char *__path, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int mkdirat (int __fd, const char *__path, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int mknodat (int __fd, const char *__path, __mode_t __mode, __dev_t __dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int mkfifo (const char *__path, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int mkfifoat (int __fd, const char *__path, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int utimensat (int __fd, const char *__path, const struct timespec __times[2], int __flags) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int futimens (int __fd, const struct timespec __times[2]) __attribute__ ((__nothrow__ , __leaf__)); typedef __signed__ char __s8; typedef unsigned char __u8; typedef __signed__ short __s16; typedef unsigned short __u16; typedef __signed__ int __s32; typedef unsigned int __u32; __extension__ typedef __signed__ long long __s64; __extension__ typedef unsigned long long __u64; typedef struct { unsigned long fds_bits[1024 / (8 * sizeof(long))]; } __kernel_fd_set; typedef void (*__kernel_sighandler_t)(int); typedef int __kernel_key_t; typedef int __kernel_mqd_t; typedef unsigned short __kernel_old_uid_t; typedef unsigned short __kernel_old_gid_t; typedef unsigned long __kernel_old_dev_t; typedef long __kernel_long_t; typedef unsigned long __kernel_ulong_t; typedef __kernel_ulong_t __kernel_ino_t; typedef unsigned int __kernel_mode_t; typedef int __kernel_pid_t; typedef int __kernel_ipc_pid_t; typedef unsigned int __kernel_uid_t; typedef unsigned int __kernel_gid_t; typedef __kernel_long_t __kernel_suseconds_t; typedef int __kernel_daddr_t; typedef unsigned int __kernel_uid32_t; typedef unsigned int __kernel_gid32_t; typedef __kernel_ulong_t __kernel_size_t; typedef __kernel_long_t __kernel_ssize_t; typedef __kernel_long_t __kernel_ptrdiff_t; typedef struct { int val[2]; } __kernel_fsid_t; typedef __kernel_long_t __kernel_off_t; typedef long long __kernel_loff_t; typedef __kernel_long_t __kernel_old_time_t; typedef __kernel_long_t __kernel_time_t; typedef long long __kernel_time64_t; typedef __kernel_long_t __kernel_clock_t; typedef int __kernel_timer_t; typedef int __kernel_clockid_t; typedef char * __kernel_caddr_t; typedef unsigned short __kernel_uid16_t; typedef unsigned short __kernel_gid16_t; typedef __u16 __le16; typedef __u16 __be16; typedef __u32 __le32; typedef __u32 __be32; typedef __u64 __le64; typedef __u64 __be64; typedef __u16 __sum16; typedef __u32 __wsum; typedef unsigned __poll_t; struct statx_timestamp { __s64 tv_sec; __u32 tv_nsec; __s32 __reserved; }; struct statx { __u32 stx_mask; __u32 stx_blksize; __u64 stx_attributes; __u32 stx_nlink; __u32 stx_uid; __u32 stx_gid; __u16 stx_mode; __u16 __spare0[1]; __u64 stx_ino; __u64 stx_size; __u64 stx_blocks; __u64 stx_attributes_mask; struct statx_timestamp stx_atime; struct statx_timestamp stx_btime; struct statx_timestamp stx_ctime; struct statx_timestamp stx_mtime; __u32 stx_rdev_major; __u32 stx_rdev_minor; __u32 stx_dev_major; __u32 stx_dev_minor; __u64 stx_mnt_id; __u64 __spare2; __u64 __spare3[12]; }; int statx (int __dirfd, const char *__restrict __path, int __flags, unsigned int __mask, struct statx *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 5))); extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern volatile int interrupt_input_blocked; static inline void block_input (void) { interrupt_input_blocked++; } extern void unblock_input (void); extern void totally_unblock_input (void); extern void unblock_input_to (int); static inline _Bool input_blocked_p (void) { return interrupt_input_blocked > 0; } typedef long int __jmp_buf[8]; struct __jmp_buf_tag { __jmp_buf __jmpbuf; int __mask_was_saved; __sigset_t __saved_mask; }; typedef struct __jmp_buf_tag jmp_buf[1]; extern int setjmp (jmp_buf __env) __attribute__ ((__nothrow__)); extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __attribute__ ((__nothrow__)); extern int _setjmp (struct __jmp_buf_tag __env[1]) __attribute__ ((__nothrow__)); extern void longjmp (struct __jmp_buf_tag __env[1], int __val) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); typedef struct __jmp_buf_tag sigjmp_buf[1]; extern void siglongjmp (sigjmp_buf __env, int __val) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); extern void longjmp (struct __jmp_buf_tag __env[1], int __val) __asm__ ("" "__longjmp_chk") __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) __asm__ ("" "__longjmp_chk") __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); extern void siglongjmp (struct __jmp_buf_tag __env[1], int __val) __asm__ ("" "__longjmp_chk") __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); extern void *memcpy (void *__restrict __dest, const void *__restrict __src, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern void *memmove (void *__dest, const void *__src, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern void *memccpy (void *__restrict __dest, const void *__restrict __src, int __c, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4))); extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int memcmp (const void *__s1, const void *__s2, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern int __memcmpeq (const void *__s1, const void *__s2, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern void *memchr (const void *__s, int __c, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern void *rawmemchr (const void *__s, int __c) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern void *memrchr (const void *__s, int __c, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__read_only__, 1, 3))); extern char *strcpy (char *__restrict __dest, const char *__restrict __src) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strncpy (char *__restrict __dest, const char *__restrict __src, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strcat (char *__restrict __dest, const char *__restrict __src) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strncat (char *__restrict __dest, const char *__restrict __src, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int strcmp (const char *__s1, const char *__s2) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern int strncmp (const char *__s1, const char *__s2, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern int strcoll (const char *__s1, const char *__s2) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern size_t strxfrm (char *__restrict __dest, const char *__restrict __src, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3))); extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, locale_t __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__access__ (__write_only__, 1, 3))); extern char *strdup (const char *__s) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); extern char *strndup (const char *__string, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); extern char *strchr (const char *__s, int __c) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern char *strrchr (const char *__s, int __c) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern char *strchrnul (const char *__s, int __c) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern size_t strcspn (const char *__s, const char *__reject) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern size_t strspn (const char *__s, const char *__accept) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strpbrk (const char *__s, const char *__accept) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strstr (const char *__haystack, const char *__needle) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strtok (char *__restrict __s, const char *__restrict __delim) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern char *__strtok_r (char *__restrict __s, const char *__restrict __delim, char **__restrict __save_ptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, char **__restrict __save_ptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); extern char *strcasestr (const char *__haystack, const char *__needle) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern void *memmem (const void *__haystack, size_t __haystacklen, const void *__needle, size_t __needlelen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__access__ (__read_only__, 1, 2))) __attribute__ ((__access__ (__read_only__, 3, 4))); extern void *__mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern void *mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern size_t strlen (const char *__s) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern size_t strnlen (const char *__string, size_t __maxlen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern char *strerror (int __errnum) __attribute__ ((__nothrow__ , __leaf__)); extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3))); extern const char *strerrordesc_np (int __err) __attribute__ ((__nothrow__ , __leaf__)); extern const char *strerrorname_np (int __err) __attribute__ ((__nothrow__ , __leaf__)); extern char *strerror_l (int __errnum, locale_t __l) __attribute__ ((__nothrow__ , __leaf__)); extern int bcmp (const void *__s1, const void *__s2, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern void bcopy (const void *__src, void *__dest, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern char *index (const char *__s, int __c) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern char *rindex (const char *__s, int __c) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); extern int ffs (int __i) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int ffsl (long int __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); __extension__ extern int ffsll (long long int __ll) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int strcasecmp (const char *__s1, const char *__s2) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); extern int strncasecmp_l (const char *__s1, const char *__s2, size_t __n, locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void __attribute__ ((__nothrow__ , __leaf__)) bcopy (const void *__src, void *__dest, size_t __len) { (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void __attribute__ ((__nothrow__ , __leaf__)) bzero (void *__dest, size_t __len) { (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0)); } extern void explicit_bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); extern char *strsep (char **__restrict __stringp, const char *__restrict __delim) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__)); extern const char *sigabbrev_np (int __sig) __attribute__ ((__nothrow__ , __leaf__)); extern const char *sigdescr_np (int __sig) __attribute__ ((__nothrow__ , __leaf__)); extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern char *__stpncpy (char *__restrict __dest, const char *__restrict __src, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern char *stpncpy (char *__restrict __dest, const char *__restrict __src, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int strverscmp (const char *__s1, const char *__s2) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); extern char *strfry (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__read_write__, 1, 2))); extern char *basename (const char *__filename) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * __attribute__ ((__nothrow__ , __leaf__)) memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) { return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * __attribute__ ((__nothrow__ , __leaf__)) memmove (void *__dest, const void *__src, size_t __len) { return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * __attribute__ ((__nothrow__ , __leaf__)) mempcpy (void *__restrict __dest, const void *__restrict __src, size_t __len) { return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void * __attribute__ ((__nothrow__ , __leaf__)) memset (void *__dest, int __ch, size_t __len) { return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0)); } void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2))); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) void __attribute__ ((__nothrow__ , __leaf__)) explicit_bzero (void *__dest, size_t __len) { __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * __attribute__ ((__nothrow__ , __leaf__)) strcpy (char *__restrict __dest, const char *__restrict __src) { return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * __attribute__ ((__nothrow__ , __leaf__)) stpcpy (char *__restrict __dest, const char *__restrict __src) { return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * __attribute__ ((__nothrow__ , __leaf__)) strncpy (char *__restrict __dest, const char *__restrict __src, size_t __len) { return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * __attribute__ ((__nothrow__ , __leaf__)) stpncpy (char *__dest, const char *__src, size_t __n) { return __builtin___stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * __attribute__ ((__nothrow__ , __leaf__)) strcat (char *__restrict __dest, const char *__restrict __src) { return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) char * __attribute__ ((__nothrow__ , __leaf__)) strncat (char *__restrict __dest, const char *__restrict __src, size_t __len) { return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); } extern void free (void *); extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern char * strdup (char const *__s) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (free, 1))) ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern char * strndup (char const *__s, size_t __n) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (free, 1))) ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; typedef int __gwchar_t; typedef struct { long int quot; long int rem; } imaxdiv_t; extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern intmax_t strtoimax (const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); extern uintmax_t strtoumax (const char *__restrict __nptr, char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); extern intmax_t wcstoimax (const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); extern uintmax_t wcstoumax (const __gwchar_t *__restrict __nptr, __gwchar_t ** __restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__)); extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int const GCTYPEBITS __attribute__ ((externally_visible)) ; typedef long int EMACS_INT; typedef unsigned long EMACS_UINT; enum { EMACS_INT_WIDTH = 64, EMACS_UINT_WIDTH = 64 }; enum { BOOL_VECTOR_BITS_PER_CHAR = 8 }; typedef size_t bits_word; enum { BITS_PER_BITS_WORD = 64 }; _Static_assert ( (18446744073709551615UL) >> (BITS_PER_BITS_WORD - 1) == 1, "verify (" "BITS_WORD_MAX >> (BITS_PER_BITS_WORD - 1) == 1" ")"); enum Lisp_Bits { VALBITS = EMACS_INT_WIDTH - 3, FIXNUM_BITS = VALBITS + 1 }; extern int const INTTYPEBITS __attribute__ ((externally_visible)) ; extern _Bool const USE_LSB_TAG __attribute__ ((externally_visible)) ; extern EMACS_INT const VALMASK __attribute__ ((externally_visible)) ; typedef struct Lisp_X *Lisp_Word; enum Lisp_Type { Lisp_Symbol = 0, Lisp_Type_Unused0 = 1, Lisp_Int0 = 2, Lisp_Int1 = ((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 6 : 3, Lisp_String = 4, Lisp_Vectorlike = 5, Lisp_Cons = ((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 3 : 6, Lisp_Float = 7 }; enum Lisp_Fwd_Type { Lisp_Fwd_Int, Lisp_Fwd_Bool, Lisp_Fwd_Obj, Lisp_Fwd_Buffer_Obj, Lisp_Fwd_Kboard_Obj }; typedef Lisp_Word Lisp_Object; enum CHECK_LISP_OBJECT_TYPE { CHECK_LISP_OBJECT_TYPE = 0 }; static inline void set_sub_char_table_contents (Lisp_Object, ptrdiff_t, Lisp_Object); extern int check_int_nonnegative (Lisp_Object); extern intmax_t check_integer_range (Lisp_Object, intmax_t, intmax_t); extern double bignum_to_double (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object make_bigint (intmax_t); extern Lisp_Object make_biguint (uintmax_t); extern uintmax_t check_uinteger_max (Lisp_Object, uintmax_t); extern Lisp_Object char_table_ref (Lisp_Object, int) __attribute__ ((__pure__)); extern void char_table_set (Lisp_Object, int, Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void args_out_of_range_3 (Lisp_Object, Lisp_Object, Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void wrong_type_argument (Lisp_Object, Lisp_Object); extern Lisp_Object default_value (Lisp_Object symbol); extern void defalias (Lisp_Object symbol, Lisp_Object definition); extern char *fixnum_to_string (EMACS_INT number, char *buffer, char *end); extern _Bool initialized; extern struct gflags { _Bool will_dump_ : 1; _Bool will_bootstrap_ : 1; _Bool will_dump_with_pdumper_ : 1; _Bool dumped_with_pdumper_ : 1; } gflags; static inline _Bool will_dump_p (void) { return gflags.will_dump_; } static inline _Bool will_bootstrap_p (void) { return gflags.will_bootstrap_; } static inline _Bool will_dump_with_pdumper_p (void) { return gflags.will_dump_with_pdumper_; } static inline _Bool dumped_with_pdumper_p (void) { return gflags.dumped_with_pdumper_; } static inline _Bool will_dump_with_unexec_p (void) { return 0 ; } static inline _Bool dumped_with_unexec_p (void) { return 0 ; } static inline _Bool definitely_will_not_unexec_p (void) { return 1 ; } extern double extract_float (Lisp_Object); static inline EMACS_INT (XLI) (Lisp_Object o) { return ((EMACS_INT) (o)); } static inline Lisp_Object (XIL) (EMACS_INT i) { return ((Lisp_Object) (i)); } static inline void * (XLP) (Lisp_Object o) { return ((void *) (o)); } static inline enum Lisp_Type (XTYPE) (Lisp_Object a) { return ((enum Lisp_Type) (XLI (a) & ~(((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? - (1 << 3) : (0x7fffffffffffffffL >> (3 - 1))))); } static inline _Bool (TAGGEDP) (Lisp_Object a, enum Lisp_Type tag) { return (! (((unsigned) (XLI (a) >> (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)) - (unsigned) (tag)) & ((1 << 3) - 1))); } static inline void (CHECK_TYPE) (int ok, Lisp_Object predicate, Lisp_Object x) { ((ok) ? (void) 0 : wrong_type_argument (predicate, x)); } typedef struct { void const *fwdptr; } lispfwd; enum symbol_interned { SYMBOL_UNINTERNED = 0, SYMBOL_INTERNED = 1, SYMBOL_INTERNED_IN_INITIAL_OBARRAY = 2 }; enum symbol_redirect { SYMBOL_PLAINVAL = 4, SYMBOL_VARALIAS = 1, SYMBOL_LOCALIZED = 2, SYMBOL_FORWARDED = 3 }; enum symbol_trapped_write { SYMBOL_UNTRAPPED_WRITE = 0, SYMBOL_NOWRITE = 1, SYMBOL_TRAPPED_WRITE = 2 }; struct Lisp_Symbol { union { struct { bool_bf gcmarkbit : 1; enum symbol_redirect redirect : 3; enum symbol_trapped_write trapped_write : 2; unsigned interned : 2; bool_bf declared_special : 1; bool_bf pinned : 1; Lisp_Object name; union { Lisp_Object value; struct Lisp_Symbol *alias; struct Lisp_Buffer_Local_Value *blv; lispfwd fwd; } val; Lisp_Object function; Lisp_Object plist; struct Lisp_Symbol *next; } s; char _Alignas (8) gcaligned; } u; }; _Static_assert (( _Alignof (struct Lisp_Symbol) % 8 == 0), "verify (" "GCALIGNED (struct Lisp_Symbol)" ")"); typedef char *untagged_ptr; typedef uintptr_t Lisp_Word_tag; struct emacs_globals { Lisp_Object f_V_comp_no_native_file_h; Lisp_Object f_Vafter_change_functions; Lisp_Object f_Vafter_delete_frame_functions; Lisp_Object f_Vafter_init_time; Lisp_Object f_Vafter_insert_file_functions; Lisp_Object f_Vafter_load_alist; Lisp_Object f_Valternate_fontname_alist; Lisp_Object f_Vauto_composition_emoji_eligible_codepoints; Lisp_Object f_Vauto_composition_function; Lisp_Object f_Vauto_composition_mode; Lisp_Object f_Vauto_fill_chars; Lisp_Object f_Vauto_resize_tab_bars; Lisp_Object f_Vauto_resize_tool_bars; Lisp_Object f_Vauto_save_include_big_deletions; Lisp_Object f_Vauto_save_list_file_name; Lisp_Object f_Vauto_save_timeout; Lisp_Object f_Vauto_save_visited_file_name; Lisp_Object f_Vbefore_change_functions; Lisp_Object f_Vbefore_init_time; Lisp_Object f_Vblink_cursor_alist; Lisp_Object f_Vbuffer_access_fontified_property; Lisp_Object f_Vbuffer_access_fontify_functions; Lisp_Object f_Vbuffer_list_update_hook; Lisp_Object f_Vbuild_files; Lisp_Object f_Vbyte_boolean_vars; Lisp_Object f_Vbyte_code_meter; Lisp_Object f_Vbytecomp_version_regexp; Lisp_Object f_Vcairo_version_string; Lisp_Object f_Vchange_major_mode_hook; Lisp_Object f_Vchar_code_property_alist; Lisp_Object f_Vchar_property_alias_alist; Lisp_Object f_Vchar_script_table; Lisp_Object f_Vchar_width_table; Lisp_Object f_Vcharset_list; Lisp_Object f_Vcharset_map_path; Lisp_Object f_Vcharset_revision_table; Lisp_Object f_Vclear_message_function; Lisp_Object f_Vclone_indirect_buffer_hook; Lisp_Object f_Vcode_conversion_map_vector; Lisp_Object f_Vcoding_category_list; Lisp_Object f_Vcoding_system_alist; Lisp_Object f_Vcoding_system_for_read; Lisp_Object f_Vcoding_system_for_write; Lisp_Object f_Vcoding_system_list; Lisp_Object f_Vcombine_after_change_calls; Lisp_Object f_Vcommand_debug_status; Lisp_Object f_Vcommand_error_function; Lisp_Object f_Vcommand_history; Lisp_Object f_Vcommand_line_args; Lisp_Object f_Vcomment_use_syntax_ppss; Lisp_Object f_Vcomp__delayed_sources; Lisp_Object f_Vcomp_abi_hash; Lisp_Object f_Vcomp_ctxt; Lisp_Object f_Vcomp_deferred_pending_h; Lisp_Object f_Vcomp_eln_to_el_h; Lisp_Object f_Vcomp_installed_trampolines_h; Lisp_Object f_Vcomp_native_version_dir; Lisp_Object f_Vcomp_subr_list; Lisp_Object f_Vcompletion_ignored_extensions; Lisp_Object f_Vcompletion_regexp_list; Lisp_Object f_Vcompose_chars_after_function; Lisp_Object f_Vcomposition_function_table; Lisp_Object f_Vconfigure_info_directory; Lisp_Object f_Vcurrent_iso639_language; Lisp_Object f_Vcurrent_load_list; Lisp_Object f_Vcurrent_minibuffer_command; Lisp_Object f_Vcurrent_prefix_arg; Lisp_Object f_Vdata_directory; Lisp_Object f_Vdbus_compiled_version; Lisp_Object f_Vdbus_debug; Lisp_Object f_Vdbus_message_type_error; Lisp_Object f_Vdbus_message_type_invalid; Lisp_Object f_Vdbus_message_type_method_call; Lisp_Object f_Vdbus_message_type_method_return; Lisp_Object f_Vdbus_message_type_signal; Lisp_Object f_Vdbus_registered_objects_table; Lisp_Object f_Vdbus_runtime_version; Lisp_Object f_Vdeactivate_mark; Lisp_Object f_Vdebug_ignored_errors; Lisp_Object f_Vdebug_on_error; Lisp_Object f_Vdebug_on_event; Lisp_Object f_Vdebug_on_message; Lisp_Object f_Vdebug_on_signal; Lisp_Object f_Vdebugger; Lisp_Object f_Vdefault_file_name_coding_system; Lisp_Object f_Vdefault_frame_alist; Lisp_Object f_Vdefault_frame_scroll_bars; Lisp_Object f_Vdefault_process_coding_system; Lisp_Object f_Vdefault_text_properties; Lisp_Object f_Vdeferred_action_function; Lisp_Object f_Vdeferred_action_list; Lisp_Object f_Vdelayed_warnings_list; Lisp_Object f_Vdelete_frame_functions; Lisp_Object f_Vdelete_terminal_functions; Lisp_Object f_Vdescribe_bindings_check_shadowing_in_ranges; Lisp_Object f_Vdisable_point_adjustment; Lisp_Object f_Vdisplay_fill_column_indicator_character; Lisp_Object f_Vdisplay_fill_column_indicator_column; Lisp_Object f_Vdisplay_line_numbers; Lisp_Object f_Vdisplay_line_numbers_current_absolute; Lisp_Object f_Vdisplay_line_numbers_width; Lisp_Object f_Vdisplay_monitors_changed_functions; Lisp_Object f_Vdisplay_pixels_per_inch; Lisp_Object f_Vdoc_directory; Lisp_Object f_Vdoc_file_name; Lisp_Object f_Vdouble_click_time; Lisp_Object f_Vdump_mode; Lisp_Object f_Vdynamic_library_alist; Lisp_Object f_Vecho_keystrokes; Lisp_Object f_Vemacs_copyright; Lisp_Object f_Vemacs_version; Lisp_Object f_Vemulation_mode_map_alists; Lisp_Object f_Venable_character_translation; Lisp_Object f_Venable_disabled_menus_and_buttons; Lisp_Object f_Veval_buffer_list; Lisp_Object f_Vexec_directory; Lisp_Object f_Vexec_path; Lisp_Object f_Vexec_suffixes; Lisp_Object f_Vexecuting_kbd_macro; Lisp_Object f_Vface_default_stipple; Lisp_Object f_Vface_font_rescale_alist; Lisp_Object f_Vface_ignored_fonts; Lisp_Object f_Vface_new_frame_defaults; Lisp_Object f_Vface_remapping_alist; Lisp_Object f_Vfeatures; Lisp_Object f_Vfile_coding_system_alist; Lisp_Object f_Vfile_name_coding_system; Lisp_Object f_Vfile_name_handler_alist; Lisp_Object f_Vfind_word_boundary_function_table; Lisp_Object f_Vfirst_change_hook; Lisp_Object f_Vfloat_output_format; Lisp_Object f_Vfont_ccl_encoder_alist; Lisp_Object f_Vfont_encoding_alist; Lisp_Object f_Vfont_encoding_charset_alist; Lisp_Object f_Vfont_log; Lisp_Object f_Vfont_slant_table; Lisp_Object f_Vfont_weight_table; Lisp_Object f_Vfont_width_table; Lisp_Object f_Vfontification_functions; Lisp_Object f_Vfontset_alias_alist; Lisp_Object f_Vframe_alpha_lower_limit; Lisp_Object f_Vframe_title_format; Lisp_Object f_Vfringe_bitmaps; Lisp_Object f_Vfunction_key_map; Lisp_Object f_Vgc_cons_percentage; Lisp_Object f_Vgc_elapsed; Lisp_Object f_Vglobal_disable_point_adjustment; Lisp_Object f_Vglobal_mode_string; Lisp_Object f_Vglyph_table; Lisp_Object f_Vglyphless_char_display; Lisp_Object f_Vgtk_version_string; Lisp_Object f_Vhelp_char; Lisp_Object f_Vhelp_event_list; Lisp_Object f_Vhelp_form; Lisp_Object f_Vhistory_add_new_input; Lisp_Object f_Vhistory_length; Lisp_Object f_Vhourglass_delay; Lisp_Object f_Vhscroll_step; Lisp_Object f_Vicon_title_format; Lisp_Object f_Vignore_relative_composition; Lisp_Object f_Vimage_cache_eviction_delay; Lisp_Object f_Vimage_types; Lisp_Object f_Vinhibit_changing_match_data; Lisp_Object f_Vinhibit_debugger; Lisp_Object f_Vinhibit_field_text_motion; Lisp_Object f_Vinhibit_file_name_handlers; Lisp_Object f_Vinhibit_file_name_operation; Lisp_Object f_Vinhibit_point_motion_hooks; Lisp_Object f_Vinhibit_quit; Lisp_Object f_Vinhibit_read_only; Lisp_Object f_Vinhibit_redisplay; Lisp_Object f_Vinitial_environment; Lisp_Object f_Vinitial_window_system; Lisp_Object f_Vinput_method_function; Lisp_Object f_Vinput_method_previous_message; Lisp_Object f_Vinstallation_directory; Lisp_Object f_Vinternal__daemon_sockname; Lisp_Object f_Vinternal__top_level_message; Lisp_Object f_Vinternal_interpreter_environment; Lisp_Object f_Vinterrupt_process_functions; Lisp_Object f_Vinvocation_directory; Lisp_Object f_Vinvocation_name; Lisp_Object f_Vkbd_macro_termination_hook; Lisp_Object f_Vkey_translation_map; Lisp_Object f_Vkill_buffer_query_functions; Lisp_Object f_Vkill_emacs_hook; Lisp_Object f_Vlast_code_conversion_error; Lisp_Object f_Vlast_coding_system_used; Lisp_Object f_Vlast_event_device; Lisp_Object f_Vlast_event_frame; Lisp_Object f_Vlatin_extra_code_table; Lisp_Object f_Vlexical_binding; Lisp_Object f_Vlibgnutls_version; Lisp_Object f_Vline_number_display_limit; Lisp_Object f_Vline_prefix; Lisp_Object f_Vload_file_name; Lisp_Object f_Vload_file_rep_suffixes; Lisp_Object f_Vload_history; Lisp_Object f_Vload_path; Lisp_Object f_Vload_read_function; Lisp_Object f_Vload_source_file_function; Lisp_Object f_Vload_suffixes; Lisp_Object f_Vload_true_file_name; Lisp_Object f_Vlocale_coding_system; Lisp_Object f_Vlread_unescaped_character_literals; Lisp_Object f_Vlucid_menu_bar_dirty_flag; Lisp_Object f_Vmacroexp__dynvars; Lisp_Object f_Vmain_thread; Lisp_Object f_Vmake_cursor_line_fully_visible; Lisp_Object f_Vmake_pointer_invisible; Lisp_Object f_Vmark_even_if_inactive; Lisp_Object f_Vmax_image_size; Lisp_Object f_Vmax_mini_window_height; Lisp_Object f_Vmaximum_scroll_margin; Lisp_Object f_Vmemory_full; Lisp_Object f_Vmemory_signal_data; Lisp_Object f_Vmenu_bar_final_items; Lisp_Object f_Vmenu_bar_mode; Lisp_Object f_Vmenu_bar_update_hook; Lisp_Object f_Vmenu_updating_frame; Lisp_Object f_Vmessage_log_max; Lisp_Object f_Vmessages_buffer_name; Lisp_Object f_Vminibuf_scroll_window; Lisp_Object f_Vminibuffer_completing_file_name; Lisp_Object f_Vminibuffer_completion_confirm; Lisp_Object f_Vminibuffer_completion_predicate; Lisp_Object f_Vminibuffer_completion_table; Lisp_Object f_Vminibuffer_exit_hook; Lisp_Object f_Vminibuffer_help_form; Lisp_Object f_Vminibuffer_history_position; Lisp_Object f_Vminibuffer_history_variable; Lisp_Object f_Vminibuffer_local_map; Lisp_Object f_Vminibuffer_message_timeout; Lisp_Object f_Vminibuffer_prompt_properties; Lisp_Object f_Vminibuffer_setup_hook; Lisp_Object f_Vminor_mode_map_alist; Lisp_Object f_Vminor_mode_overriding_map_alist; Lisp_Object f_Vmode_line_compact; Lisp_Object f_Vmodule_file_suffix; Lisp_Object f_Vmost_negative_fixnum; Lisp_Object f_Vmost_positive_fixnum; Lisp_Object f_Vmotif_version_string; Lisp_Object f_Vmouse_autoselect_window; Lisp_Object f_Vmouse_highlight; Lisp_Object f_Vmouse_leave_buffer_hook; Lisp_Object f_Vmouse_position_function; Lisp_Object f_Vmove_frame_functions; Lisp_Object f_Vnative_comp_eln_load_path; Lisp_Object f_Vnetwork_coding_system_alist; Lisp_Object f_Vnobreak_char_display; Lisp_Object f_Vobarray; Lisp_Object f_Voperating_system_release; Lisp_Object f_Votf_script_alist; Lisp_Object f_Vother_window_scroll_buffer; Lisp_Object f_Vother_window_scroll_default; Lisp_Object f_Voverflow_newline_into_fringe; Lisp_Object f_Voverlay_arrow_position; Lisp_Object f_Voverlay_arrow_string; Lisp_Object f_Voverlay_arrow_variable_list; Lisp_Object f_Voverriding_local_map; Lisp_Object f_Voverriding_local_map_menu_flag; Lisp_Object f_Voverriding_plist_environment; Lisp_Object f_Vpath_separator; Lisp_Object f_Vpolling_period; Lisp_Object f_Vpost_command_hook; Lisp_Object f_Vpost_gc_hook; Lisp_Object f_Vpost_self_insert_hook; Lisp_Object f_Vpre_command_hook; Lisp_Object f_Vpre_redisplay_function; Lisp_Object f_Vprefix_help_command; Lisp_Object f_Vpreloaded_file_list; Lisp_Object f_Vprint_charset_text_property; Lisp_Object f_Vprint_circle; Lisp_Object f_Vprint_continuous_numbering; Lisp_Object f_Vprint_gensym; Lisp_Object f_Vprint_length; Lisp_Object f_Vprint_level; Lisp_Object f_Vprint_number_table; Lisp_Object f_Vprint_unreadable_function; Lisp_Object f_Vprintable_chars; Lisp_Object f_Vprocess_adaptive_read_buffering; Lisp_Object f_Vprocess_coding_system_alist; Lisp_Object f_Vprocess_connection_type; Lisp_Object f_Vprocess_environment; Lisp_Object f_Vpurify_flag; Lisp_Object f_Vquit_flag; Lisp_Object f_Vread_buffer_function; Lisp_Object f_Vread_circle; Lisp_Object f_Vread_expression_history; Lisp_Object f_Vread_hide_char; Lisp_Object f_Vread_symbol_shorthands; Lisp_Object f_Vreal_this_command; Lisp_Object f_Vrecenter_redisplay; Lisp_Object f_Vredisplay__all_windows_cause; Lisp_Object f_Vredisplay__mode_lines_cause; Lisp_Object f_Vredisplay_end_trigger_functions; Lisp_Object f_Vregion_extract_function; Lisp_Object f_Vreport_emacs_bug_address; Lisp_Object f_Vresize_mini_windows; Lisp_Object f_Vresume_tty_functions; Lisp_Object f_Vring_bell_function; Lisp_Object f_Vsaved_region_selection; Lisp_Object f_Vscalable_fonts_allowed; Lisp_Object f_Vscript_representative_chars; Lisp_Object f_Vscroll_preserve_screen_position; Lisp_Object f_Vsearch_spaces_regexp; Lisp_Object f_Vselect_active_regions; Lisp_Object f_Vselect_safe_coding_system_function; Lisp_Object f_Vselection_converter_alist; Lisp_Object f_Vselection_inhibit_update_commands; Lisp_Object f_Vset_auto_coding_function; Lisp_Object f_Vset_message_function; Lisp_Object f_Vshared_game_score_directory; Lisp_Object f_Vshell_file_name; Lisp_Object f_Vshow_help_function; Lisp_Object f_Vshow_trailing_whitespace; Lisp_Object f_Vsignal_hook_function; Lisp_Object f_Vsignal_process_functions; Lisp_Object f_Vsource_directory; Lisp_Object f_Vspecial_event_map; Lisp_Object f_Vstandard_display_table; Lisp_Object f_Vstandard_input; Lisp_Object f_Vstandard_output; Lisp_Object f_Vstandard_translation_table_for_decode; Lisp_Object f_Vstandard_translation_table_for_encode; Lisp_Object f_Vsuspend_tty_functions; Lisp_Object f_Vsystem_configuration; Lisp_Object f_Vsystem_configuration_features; Lisp_Object f_Vsystem_configuration_options; Lisp_Object f_Vsystem_messages_locale; Lisp_Object f_Vsystem_name; Lisp_Object f_Vsystem_time_locale; Lisp_Object f_Vsystem_type; Lisp_Object f_Vtab_bar_border; Lisp_Object f_Vtab_bar_button_margin; Lisp_Object f_Vtab_bar_mode; Lisp_Object f_Vtab_bar_position; Lisp_Object f_Vtab_bar_separator_image_expression; Lisp_Object f_Vtemp_buffer_show_function; Lisp_Object f_Vtemporary_file_directory; Lisp_Object f_Vterminal_frame; Lisp_Object f_Vtext_property_default_nonsticky; Lisp_Object f_Vtext_quoting_style; Lisp_Object f_Vthis_command; Lisp_Object f_Vthis_command_keys_shift_translated; Lisp_Object f_Vthis_original_command; Lisp_Object f_Vthrow_on_input; Lisp_Object f_Vtimer_idle_list; Lisp_Object f_Vtimer_list; Lisp_Object f_Vtool_bar_border; Lisp_Object f_Vtool_bar_button_margin; Lisp_Object f_Vtool_bar_mode; Lisp_Object f_Vtool_bar_separator_image_expression; Lisp_Object f_Vtool_bar_style; Lisp_Object f_Vtop_level; Lisp_Object f_Vtransient_mark_mode; Lisp_Object f_Vtranslation_hash_table_vector; Lisp_Object f_Vtranslation_table_for_input; Lisp_Object f_Vtranslation_table_vector; Lisp_Object f_Vtruncate_partial_width_windows; Lisp_Object f_Vtty_defined_color_alist; Lisp_Object f_Vtty_erase_char; Lisp_Object f_Vundo_outer_limit; Lisp_Object f_Vundo_outer_limit_function; Lisp_Object f_Vunicode_category_table; Lisp_Object f_Vunread_command_events; Lisp_Object f_Vunread_input_method_events; Lisp_Object f_Vunread_post_input_method_events; Lisp_Object f_Vuse_default_ascent; Lisp_Object f_Vuser_full_name; Lisp_Object f_Vuser_init_file; Lisp_Object f_Vuser_login_name; Lisp_Object f_Vuser_real_login_name; Lisp_Object f_Vvalues; Lisp_Object f_Vvertical_centering_font_regexp; Lisp_Object f_Vvoid_text_area_pointer; Lisp_Object f_Vwhere_is_preferred_modifier; Lisp_Object f_Vwhile_no_input_ignore_events; Lisp_Object f_Vwindow_buffer_change_functions; Lisp_Object f_Vwindow_combination_limit; Lisp_Object f_Vwindow_combination_resize; Lisp_Object f_Vwindow_configuration_change_hook; Lisp_Object f_Vwindow_persistent_parameters; Lisp_Object f_Vwindow_point_insertion_type; Lisp_Object f_Vwindow_scroll_functions; Lisp_Object f_Vwindow_selection_change_functions; Lisp_Object f_Vwindow_size_change_functions; Lisp_Object f_Vwindow_state_change_functions; Lisp_Object f_Vwindow_state_change_hook; Lisp_Object f_Vwindow_system_version; Lisp_Object f_Vword_combining_categories; Lisp_Object f_Vword_separating_categories; Lisp_Object f_Vwrap_prefix; Lisp_Object f_Vwrite_region_annotate_functions; Lisp_Object f_Vwrite_region_annotations_so_far; Lisp_Object f_Vwrite_region_post_annotation_function; Lisp_Object f_Vx_alt_keysym; Lisp_Object f_Vx_bitmap_file_path; Lisp_Object f_Vx_ctrl_keysym; Lisp_Object f_Vx_cursor_fore_pixel; Lisp_Object f_Vx_dnd_movement_function; Lisp_Object f_Vx_dnd_native_test_function; Lisp_Object f_Vx_dnd_targets_list; Lisp_Object f_Vx_dnd_unsupported_drop_function; Lisp_Object f_Vx_hourglass_pointer_shape; Lisp_Object f_Vx_hyper_keysym; Lisp_Object f_Vx_keysym_table; Lisp_Object f_Vx_lost_selection_functions; Lisp_Object f_Vx_max_tooltip_size; Lisp_Object f_Vx_meta_keysym; Lisp_Object f_Vx_mode_pointer_shape; Lisp_Object f_Vx_no_window_manager; Lisp_Object f_Vx_nontext_pointer_shape; Lisp_Object f_Vx_pixel_size_width_font_regexp; Lisp_Object f_Vx_pointer_shape; Lisp_Object f_Vx_pre_popup_menu_hook; Lisp_Object f_Vx_resource_class; Lisp_Object f_Vx_resource_name; Lisp_Object f_Vx_scroll_event_delta_factor; Lisp_Object f_Vx_select_enable_clipboard_manager; Lisp_Object f_Vx_sensitive_text_pointer_shape; Lisp_Object f_Vx_sent_selection_functions; Lisp_Object f_Vx_session_id; Lisp_Object f_Vx_session_previous_id; Lisp_Object f_Vx_show_tooltip_timeout; Lisp_Object f_Vx_super_keysym; Lisp_Object f_Vx_toolkit_scroll_bars; Lisp_Object f_Vx_treat_local_requests_remotely; Lisp_Object f_Vx_wait_for_event_timeout; Lisp_Object f_Vx_window_bottom_edge_shape; Lisp_Object f_Vx_window_bottom_left_corner_shape; Lisp_Object f_Vx_window_bottom_right_corner_shape; Lisp_Object f_Vx_window_horizontal_drag_shape; Lisp_Object f_Vx_window_left_edge_shape; Lisp_Object f_Vx_window_right_edge_shape; Lisp_Object f_Vx_window_top_edge_shape; Lisp_Object f_Vx_window_top_left_corner_shape; Lisp_Object f_Vx_window_top_right_corner_shape; Lisp_Object f_Vx_window_vertical_drag_shape; Lisp_Object f_Vxft_settings; Lisp_Object f_automatic_hscrolling; Lisp_Object f_eol_mnemonic_dos; Lisp_Object f_eol_mnemonic_mac; Lisp_Object f_eol_mnemonic_undecided; Lisp_Object f_eol_mnemonic_unix; Lisp_Object f_focus_follows_mouse; Lisp_Object f_frame_inhibit_implied_resize; Lisp_Object f_frame_internal_parameters; Lisp_Object f_frame_size_history; Lisp_Object f_iconify_child_frame; Lisp_Object f_last_command_event; Lisp_Object f_last_input_event; Lisp_Object f_last_nonmenu_event; Lisp_Object f_menu_prompt_more_char; Lisp_Object f_meta_prefix_char; Lisp_Object f_minibuffer_follows_selected_frame; Lisp_Object f_resize_mini_frames; Lisp_Object f_track_mouse; Lisp_Object f_x_gtk_resize_child_frames; Lisp_Object f_x_set_frame_visibility_more_laxly; intmax_t f_auto_save_interval; intmax_t f_baud_rate; intmax_t f_cons_cells_consed; intmax_t f_debug_end_pos; intmax_t f_display_line_numbers_major_tick; intmax_t f_display_line_numbers_minor_tick; intmax_t f_display_line_numbers_offset; intmax_t f_double_click_fuzz; intmax_t f_emacs_scroll_step; intmax_t f_executing_kbd_macro_index; intmax_t f_extra_keyboard_modifiers; intmax_t f_face_near_same_color_threshold; intmax_t f_floats_consed; intmax_t f_gc_cons_threshold; intmax_t f_gcs_done; intmax_t f_global_gnutls_log_level; intmax_t f_hscroll_margin; intmax_t f_imagemagick_render_type; intmax_t f_integer_width; intmax_t f_intervals_consed; intmax_t f_line_number_display_limit_width; intmax_t f_max_lisp_eval_depth; intmax_t f_max_specpdl_size; intmax_t f_next_screen_context_lines; intmax_t f_num_input_keys; intmax_t f_num_nonmacro_input_events; intmax_t f_overline_margin; intmax_t f_process_error_pause_time; intmax_t f_profiler_log_size; intmax_t f_profiler_max_stack_depth; intmax_t f_pure_bytes_used; intmax_t f_read_process_output_max; intmax_t f_scroll_conservatively; intmax_t f_scroll_margin; intmax_t f_string_chars_consed; intmax_t f_strings_consed; intmax_t f_symbols_consed; intmax_t f_syntax_propertize__done; intmax_t f_tab_bar_button_relief; intmax_t f_tool_bar_button_relief; intmax_t f_tool_bar_max_label_size; intmax_t f_underline_minimum_offset; intmax_t f_undo_limit; intmax_t f_undo_strong_limit; intmax_t f_vector_cells_consed; intmax_t f_when_entered_debugger; intmax_t f_x_color_cache_bucket_size; intmax_t f_x_mouse_click_focus_ignore_time; intmax_t f_x_selection_timeout; _Bool f_attempt_orderly_shutdown_on_fatal_signal; _Bool f_attempt_stack_overflow_recovery; _Bool f_auto_raise_tab_bar_buttons_p; _Bool f_auto_raise_tool_bar_buttons_p; _Bool f_auto_save_no_message; _Bool f_auto_window_vscroll_p; _Bool f_backtrace_on_error_noninteractive; _Bool f_bidi_inhibit_bpa; _Bool f_binary_as_unsigned; _Bool f_byte_metering_on; _Bool f_cannot_suspend; _Bool f_coding_system_require_warning; _Bool f_comment_end_can_be_escaped; _Bool f_comp__compilable; _Bool f_comp_enable_subr_trampolines; _Bool f_comp_file_preloaded_p; _Bool f_completion_ignore_case; _Bool f_composition_break_at_point; _Bool f_create_lockfiles; _Bool f_cross_disabled_images; _Bool f_current_time_list; _Bool f_cursor_in_echo_area; _Bool f_debug_on_next_call; _Bool f_debug_on_quit; _Bool f_debugger_may_continue; _Bool f_debugger_stack_frame_as_list; _Bool f_delete_auto_save_files; _Bool f_delete_by_moving_to_trash; _Bool f_delete_exited_processes; _Bool f_disable_ascii_optimization; _Bool f_display_fill_column_indicator; _Bool f_display_hourglass_p; _Bool f_display_line_numbers_widen; _Bool f_display_raw_bytes_as_hex; _Bool f_enable_recursive_minibuffers; _Bool f_face_filters_always_match; _Bool f_fast_but_imprecise_scrolling; _Bool f_force_load_messages; _Bool f_frame_resize_pixelwise; _Bool f_garbage_collection_messages; _Bool f_highlight_nonselected_windows; _Bool f_history_delete_duplicates; _Bool f_indent_tabs_mode; _Bool f_inherit_process_coding_system; _Bool f_inhibit_bidi_mirroring; _Bool f_inhibit_compacting_font_caches; _Bool f_inhibit_eol_conversion; _Bool f_inhibit_eval_during_redisplay; _Bool f_inhibit_free_realized_faces; _Bool f_inhibit_interaction; _Bool f_inhibit_iso_escape_detection; _Bool f_inhibit_load_charset_map; _Bool f_inhibit_menubar_update; _Bool f_inhibit_message; _Bool f_inhibit_modification_hooks; _Bool f_inhibit_mouse_event_check; _Bool f_inhibit_null_byte_detection; _Bool f_inhibit_try_cursor_movement; _Bool f_inhibit_try_window_id; _Bool f_inhibit_try_window_reusing; _Bool f_inhibit_x_resources; _Bool f_input_pending_p_filter_events; _Bool f_inverse_video; _Bool f_kill_buffer_delete_auto_save_files; _Bool f_load_convert_to_unibyte; _Bool f_load_dangerous_libraries; _Bool f_load_force_doc_strings; _Bool f_load_in_progress; _Bool f_load_no_native; _Bool f_load_prefer_newer; _Bool f_make_window_start_visible; _Bool f_menu_prompting; _Bool f_message_truncate_lines; _Bool f_minibuffer_allow_text_properties; _Bool f_minibuffer_auto_raise; _Bool f_mode_line_in_non_selected_windows; _Bool f_mouse_fine_grained_tracking; _Bool f_multibyte_syntax_as_symbol; _Bool f_multiple_frames; _Bool f_mwheel_coalesce_scroll_events; _Bool f_native_comp_deferred_compilation; _Bool f_no_redraw_on_reenter; _Bool f_nobreak_char_ascii_display; _Bool f_noninteractive1; _Bool f_open_paren_in_column_0_is_defun_start; _Bool f_parse_sexp_ignore_comments; _Bool f_parse_sexp_lookup_properties; _Bool f_print_escape_control_characters; _Bool f_print_escape_multibyte; _Bool f_print_escape_newlines; _Bool f_print_escape_nonascii; _Bool f_print_integers_as_characters; _Bool f_print_quoted; _Bool f_print_symbols_bare; _Bool f_process_prioritize_lower_fds; _Bool f_query_all_font_backends; _Bool f_read_buffer_completion_ignore_case; _Bool f_read_minibuffer_restore_windows; _Bool f_redisplay__inhibit_bidi; _Bool f_redisplay_adhoc_scroll_in_resize_mini_windows; _Bool f_redisplay_dont_pause; _Bool f_redisplay_skip_fontification_on_input; _Bool f_redisplay_skip_initial_frame; _Bool f_scroll_bar_adjust_thumb_portion_p; _Bool f_scroll_minibuffer_conservatively; _Bool f_symbols_with_pos_enabled; _Bool f_system_uses_terminfo; _Bool f_tab_bar__dragging_in_progress; _Bool f_text_quoting_flag; _Bool f_tooltip_reuse_hidden_frame; _Bool f_translate_upper_case_key_bindings; _Bool f_tty_menu_calls_mouse_position_function; _Bool f_undo_inhibit_record_point; _Bool f_unibyte_display_via_language_environment; _Bool f_use_default_font_for_symbols; _Bool f_use_dialog_box; _Bool f_use_file_dialog; _Bool f_use_short_answers; _Bool f_use_system_font; _Bool f_use_system_tooltips; _Bool f_visible_bell; _Bool f_visible_cursor; _Bool f_window_resize_pixelwise; _Bool f_word_wrap_by_category; _Bool f_words_include_escapes; _Bool f_write_region_inhibit_fsync; _Bool f_x_dnd_disable_motif_drag; _Bool f_x_dnd_fix_motif_leave; _Bool f_x_frame_normalize_before_maximize; _Bool f_x_gtk_file_dialog_help_text; _Bool f_x_gtk_show_hidden_files; _Bool f_x_gtk_use_native_input; _Bool f_x_gtk_use_old_file_dialog; _Bool f_x_gtk_use_window_move; _Bool f_x_input_grab_touch_events; _Bool f_x_mouse_click_focus_ignore_position; _Bool f_x_stretch_cursor_p; _Bool f_x_underline_at_descent_line; _Bool f_x_use_underline_position_properties; _Bool f_xft_ignore_color_fonts; }; extern struct emacs_globals globals; extern struct Lisp_Symbol lispsym[1478]; extern Lisp_Object const Qnil __attribute__ ((externally_visible)) ; extern Lisp_Object const Qt __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunbound __attribute__ ((externally_visible)) ; extern Lisp_Object const Qerror __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlambda __attribute__ ((externally_visible)) ; extern Lisp_Object const QATOM __attribute__ ((externally_visible)) ; extern Lisp_Object const QAutomatic_GC __attribute__ ((externally_visible)) ; extern Lisp_Object const QCLIPBOARD __attribute__ ((externally_visible)) ; extern Lisp_Object const QCLIPBOARD_MANAGER __attribute__ ((externally_visible)) ; extern Lisp_Object const QCOMPOUND_TEXT __attribute__ ((externally_visible)) ; extern Lisp_Object const QCadstyle __attribute__ ((externally_visible)) ; extern Lisp_Object const QCadvertised_binding __attribute__ ((externally_visible)) ; extern Lisp_Object const QCalign_to __attribute__ ((externally_visible)) ; extern Lisp_Object const QCanimate_buffer __attribute__ ((externally_visible)) ; extern Lisp_Object const QCanimate_multi_frame_data __attribute__ ((externally_visible)) ; extern Lisp_Object const QCanimate_position __attribute__ ((externally_visible)) ; extern Lisp_Object const QCanimate_tardiness __attribute__ ((externally_visible)) ; extern Lisp_Object const QCantialias __attribute__ ((externally_visible)) ; extern Lisp_Object const QCarray __attribute__ ((externally_visible)) ; extern Lisp_Object const QCarray_type __attribute__ ((externally_visible)) ; extern Lisp_Object const QCascent __attribute__ ((externally_visible)) ; extern Lisp_Object const QCascii_compatible_p __attribute__ ((externally_visible)) ; extern Lisp_Object const QCautohint __attribute__ ((externally_visible)) ; extern Lisp_Object const QCavgwidth __attribute__ ((externally_visible)) ; extern Lisp_Object const QCbackground __attribute__ ((externally_visible)) ; extern Lisp_Object const QCbase_uri __attribute__ ((externally_visible)) ; extern Lisp_Object const QCbold __attribute__ ((externally_visible)) ; extern Lisp_Object const QCboolean __attribute__ ((externally_visible)) ; extern Lisp_Object const QCbox __attribute__ ((externally_visible)) ; extern Lisp_Object const QCbuffer __attribute__ ((externally_visible)) ; extern Lisp_Object const QCbutton __attribute__ ((externally_visible)) ; extern Lisp_Object const QCbyte __attribute__ ((externally_visible)) ; extern Lisp_Object const QCbytesize __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcategory __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcipher_aead_capable __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcipher_blocksize __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcipher_id __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcipher_ivsize __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcipher_keysize __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcipher_tagsize __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcoding __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcolor __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcolor_adjustment __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcolor_symbols __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcombining_capability __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcommand __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcomplete_negotiation __attribute__ ((externally_visible)) ; extern Lisp_Object const QCconnection_type __attribute__ ((externally_visible)) ; extern Lisp_Object const QCconversion __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcrlfiles __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcrop __attribute__ ((externally_visible)) ; extern Lisp_Object const QCcss __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdata __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdebug_on_exit __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdecode_translation_table __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdefault_char __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdevice __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdict_entry __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdigest_algorithm_id __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdigest_algorithm_length __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdistant_foreground __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdocumentation __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdouble __attribute__ ((externally_visible)) ; extern Lisp_Object const QCdpi __attribute__ ((externally_visible)) ; extern Lisp_Object const QCembolden __attribute__ ((externally_visible)) ; extern Lisp_Object const QCenable __attribute__ ((externally_visible)) ; extern Lisp_Object const QCencode_translation_table __attribute__ ((externally_visible)) ; extern Lisp_Object const QCeval __attribute__ ((externally_visible)) ; extern Lisp_Object const QCextend __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfalse __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfalse_object __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfamily __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfile __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfile_handler __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfilter __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfiltered __attribute__ ((externally_visible)) ; extern Lisp_Object const QCflowcontrol __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfont __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfont_entity __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfontset __attribute__ ((externally_visible)) ; extern Lisp_Object const QCforeground __attribute__ ((externally_visible)) ; extern Lisp_Object const QCfoundry __attribute__ ((externally_visible)) ; extern Lisp_Object const QCheight __attribute__ ((externally_visible)) ; extern Lisp_Object const QChelp __attribute__ ((externally_visible)) ; extern Lisp_Object const QCheuristic_mask __attribute__ ((externally_visible)) ; extern Lisp_Object const QChinting __attribute__ ((externally_visible)) ; extern Lisp_Object const QChintstyle __attribute__ ((externally_visible)) ; extern Lisp_Object const QChost __attribute__ ((externally_visible)) ; extern Lisp_Object const QChostname __attribute__ ((externally_visible)) ; extern Lisp_Object const QCignore_defface __attribute__ ((externally_visible)) ; extern Lisp_Object const QCimage __attribute__ ((externally_visible)) ; extern Lisp_Object const QCindex __attribute__ ((externally_visible)) ; extern Lisp_Object const QCinherit __attribute__ ((externally_visible)) ; extern Lisp_Object const QCint16 __attribute__ ((externally_visible)) ; extern Lisp_Object const QCint32 __attribute__ ((externally_visible)) ; extern Lisp_Object const QCint64 __attribute__ ((externally_visible)) ; extern Lisp_Object const QCinverse_video __attribute__ ((externally_visible)) ; extern Lisp_Object const QCitalic __attribute__ ((externally_visible)) ; extern Lisp_Object const QCkey_sequence __attribute__ ((externally_visible)) ; extern Lisp_Object const QCkeylist __attribute__ ((externally_visible)) ; extern Lisp_Object const QCkeys __attribute__ ((externally_visible)) ; extern Lisp_Object const QClabel __attribute__ ((externally_visible)) ; extern Lisp_Object const QClang __attribute__ ((externally_visible)) ; extern Lisp_Object const QClcdfilter __attribute__ ((externally_visible)) ; extern Lisp_Object const QCline_width __attribute__ ((externally_visible)) ; extern Lisp_Object const QCloader __attribute__ ((externally_visible)) ; extern Lisp_Object const QClocal __attribute__ ((externally_visible)) ; extern Lisp_Object const QClog __attribute__ ((externally_visible)) ; extern Lisp_Object const QCloglevel __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmac_algorithm_id __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmac_algorithm_keysize __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmac_algorithm_length __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmac_algorithm_noncesize __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmap __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmargin __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmask __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmatrix __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmax_height __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmax_width __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmethod __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmin_prime_bits __attribute__ ((externally_visible)) ; extern Lisp_Object const QCminspace __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmnemonic __attribute__ ((externally_visible)) ; extern Lisp_Object const QCmonitor __attribute__ ((externally_visible)) ; extern Lisp_Object const QCname __attribute__ ((externally_visible)) ; extern Lisp_Object const QCnoquery __attribute__ ((externally_visible)) ; extern Lisp_Object const QCnowait __attribute__ ((externally_visible)) ; extern Lisp_Object const QCnull __attribute__ ((externally_visible)) ; extern Lisp_Object const QCnull_object __attribute__ ((externally_visible)) ; extern Lisp_Object const QCobject_path __attribute__ ((externally_visible)) ; extern Lisp_Object const QCobject_type __attribute__ ((externally_visible)) ; extern Lisp_Object const QCotf __attribute__ ((externally_visible)) ; extern Lisp_Object const QCoverline __attribute__ ((externally_visible)) ; extern Lisp_Object const QCparity __attribute__ ((externally_visible)) ; extern Lisp_Object const QCplist __attribute__ ((externally_visible)) ; extern Lisp_Object const QCpointer __attribute__ ((externally_visible)) ; extern Lisp_Object const QCport __attribute__ ((externally_visible)) ; extern Lisp_Object const QCposition __attribute__ ((externally_visible)) ; extern Lisp_Object const QCpost_read_conversion __attribute__ ((externally_visible)) ; extern Lisp_Object const QCpre_write_conversion __attribute__ ((externally_visible)) ; extern Lisp_Object const QCpriority __attribute__ ((externally_visible)) ; extern Lisp_Object const QCprocess __attribute__ ((externally_visible)) ; extern Lisp_Object const QCpropertize __attribute__ ((externally_visible)) ; extern Lisp_Object const QCpt_height __attribute__ ((externally_visible)) ; extern Lisp_Object const QCpt_width __attribute__ ((externally_visible)) ; extern Lisp_Object const QCpurecopy __attribute__ ((externally_visible)) ; extern Lisp_Object const QCradio __attribute__ ((externally_visible)) ; extern Lisp_Object const QCregistry __attribute__ ((externally_visible)) ; extern Lisp_Object const QCrehash_size __attribute__ ((externally_visible)) ; extern Lisp_Object const QCrehash_threshold __attribute__ ((externally_visible)) ; extern Lisp_Object const QCrelative_height __attribute__ ((externally_visible)) ; extern Lisp_Object const QCrelative_width __attribute__ ((externally_visible)) ; extern Lisp_Object const QCrelief __attribute__ ((externally_visible)) ; extern Lisp_Object const QCremote __attribute__ ((externally_visible)) ; extern Lisp_Object const QCreverse_video __attribute__ ((externally_visible)) ; extern Lisp_Object const QCrgba __attribute__ ((externally_visible)) ; extern Lisp_Object const QCrotation __attribute__ ((externally_visible)) ; extern Lisp_Object const QCrtl __attribute__ ((externally_visible)) ; extern Lisp_Object const QCscalable __attribute__ ((externally_visible)) ; extern Lisp_Object const QCscale __attribute__ ((externally_visible)) ; extern Lisp_Object const QCscript __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsentinel __attribute__ ((externally_visible)) ; extern Lisp_Object const QCserial __attribute__ ((externally_visible)) ; extern Lisp_Object const QCserver __attribute__ ((externally_visible)) ; extern Lisp_Object const QCservice __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsession __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsession_private __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsignal __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsignature __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsize __attribute__ ((externally_visible)) ; extern Lisp_Object const QCslant __attribute__ ((externally_visible)) ; extern Lisp_Object const QCspacing __attribute__ ((externally_visible)) ; extern Lisp_Object const QCspeed __attribute__ ((externally_visible)) ; extern Lisp_Object const QCstderr __attribute__ ((externally_visible)) ; extern Lisp_Object const QCstipple __attribute__ ((externally_visible)) ; extern Lisp_Object const QCstop __attribute__ ((externally_visible)) ; extern Lisp_Object const QCstopbits __attribute__ ((externally_visible)) ; extern Lisp_Object const QCstrike_through __attribute__ ((externally_visible)) ; extern Lisp_Object const QCstring __attribute__ ((externally_visible)) ; extern Lisp_Object const QCstruct __attribute__ ((externally_visible)) ; extern Lisp_Object const QCstyle __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsuccess __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsummary __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsystem __attribute__ ((externally_visible)) ; extern Lisp_Object const QCsystem_private __attribute__ ((externally_visible)) ; extern Lisp_Object const QCtest __attribute__ ((externally_visible)) ; extern Lisp_Object const QCtimeout __attribute__ ((externally_visible)) ; extern Lisp_Object const QCtls_parameters __attribute__ ((externally_visible)) ; extern Lisp_Object const QCtoggle __attribute__ ((externally_visible)) ; extern Lisp_Object const QCtransform_smoothing __attribute__ ((externally_visible)) ; extern Lisp_Object const QCtrustfiles __attribute__ ((externally_visible)) ; extern Lisp_Object const QCtype __attribute__ ((externally_visible)) ; extern Lisp_Object const QCuint16 __attribute__ ((externally_visible)) ; extern Lisp_Object const QCuint32 __attribute__ ((externally_visible)) ; extern Lisp_Object const QCuint64 __attribute__ ((externally_visible)) ; extern Lisp_Object const QCunderline __attribute__ ((externally_visible)) ; extern Lisp_Object const QCunix_fd __attribute__ ((externally_visible)) ; extern Lisp_Object const QCuse_external_socket __attribute__ ((externally_visible)) ; extern Lisp_Object const QCuser_spec __attribute__ ((externally_visible)) ; extern Lisp_Object const QCvariant __attribute__ ((externally_visible)) ; extern Lisp_Object const QCverify_error __attribute__ ((externally_visible)) ; extern Lisp_Object const QCverify_flags __attribute__ ((externally_visible)) ; extern Lisp_Object const QCvert_only __attribute__ ((externally_visible)) ; extern Lisp_Object const QCvisible __attribute__ ((externally_visible)) ; extern Lisp_Object const QCvolume __attribute__ ((externally_visible)) ; extern Lisp_Object const QCweakness __attribute__ ((externally_visible)) ; extern Lisp_Object const QCweight __attribute__ ((externally_visible)) ; extern Lisp_Object const QCwidth __attribute__ ((externally_visible)) ; extern Lisp_Object const QCwindow __attribute__ ((externally_visible)) ; extern Lisp_Object const QDELETE __attribute__ ((externally_visible)) ; extern Lisp_Object const QINCR __attribute__ ((externally_visible)) ; extern Lisp_Object const QINTEGER __attribute__ ((externally_visible)) ; extern Lisp_Object const QL2R __attribute__ ((externally_visible)) ; extern Lisp_Object const QMULTIPLE __attribute__ ((externally_visible)) ; extern Lisp_Object const QNULL __attribute__ ((externally_visible)) ; extern Lisp_Object const QPRIMARY __attribute__ ((externally_visible)) ; extern Lisp_Object const QR2L __attribute__ ((externally_visible)) ; extern Lisp_Object const QSAVE_TARGETS __attribute__ ((externally_visible)) ; extern Lisp_Object const QSECONDARY __attribute__ ((externally_visible)) ; extern Lisp_Object const QSTRING __attribute__ ((externally_visible)) ; extern Lisp_Object const QTARGETS __attribute__ ((externally_visible)) ; extern Lisp_Object const QTEXT __attribute__ ((externally_visible)) ; extern Lisp_Object const QTIMESTAMP __attribute__ ((externally_visible)) ; extern Lisp_Object const QUTF8_STRING __attribute__ ((externally_visible)) ; extern Lisp_Object const QXdndActionAsk __attribute__ ((externally_visible)) ; extern Lisp_Object const QXdndActionCopy __attribute__ ((externally_visible)) ; extern Lisp_Object const QXdndActionLink __attribute__ ((externally_visible)) ; extern Lisp_Object const QXdndActionMove __attribute__ ((externally_visible)) ; extern Lisp_Object const QXdndActionPrivate __attribute__ ((externally_visible)) ; extern Lisp_Object const QXdndSelection __attribute__ ((externally_visible)) ; extern Lisp_Object const QXmTRANSFER_FAILURE __attribute__ ((externally_visible)) ; extern Lisp_Object const QXmTRANSFER_SUCCESS __attribute__ ((externally_visible)) ; extern Lisp_Object const Q_EMACS_TMP_ __attribute__ ((externally_visible)) ; extern Lisp_Object const Qabove __attribute__ ((externally_visible)) ; extern Lisp_Object const Qabove_handle __attribute__ ((externally_visible)) ; extern Lisp_Object const Qabove_suspended __attribute__ ((externally_visible)) ; extern Lisp_Object const Qaccess __attribute__ ((externally_visible)) ; extern Lisp_Object const Qaccess_file __attribute__ ((externally_visible)) ; extern Lisp_Object const Qactivate_input_method __attribute__ ((externally_visible)) ; extern Lisp_Object const Qactivate_menubar_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qadd1 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qadd_name_to_file __attribute__ ((externally_visible)) ; extern Lisp_Object const Qadd_to_history __attribute__ ((externally_visible)) ; extern Lisp_Object const Qafter_change_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qafter_delete_frame_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qafter_handle __attribute__ ((externally_visible)) ; extern Lisp_Object const Qafter_insert_file_set_coding __attribute__ ((externally_visible)) ; extern Lisp_Object const Qafter_pdump_load_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qafter_string __attribute__ ((externally_visible)) ; extern Lisp_Object const Qalist __attribute__ ((externally_visible)) ; extern Lisp_Object const Qall __attribute__ ((externally_visible)) ; extern Lisp_Object const Qall_events __attribute__ ((externally_visible)) ; extern Lisp_Object const Qalpha __attribute__ ((externally_visible)) ; extern Lisp_Object const Qalpha_background __attribute__ ((externally_visible)) ; extern Lisp_Object const Qalt __attribute__ ((externally_visible)) ; extern Lisp_Object const Qand_optional __attribute__ ((externally_visible)) ; extern Lisp_Object const Qand_rest __attribute__ ((externally_visible)) ; extern Lisp_Object const Qappend __attribute__ ((externally_visible)) ; extern Lisp_Object const Qapply __attribute__ ((externally_visible)) ; extern Lisp_Object const Qargs __attribute__ ((externally_visible)) ; extern Lisp_Object const Qargs_out_of_range __attribute__ ((externally_visible)) ; extern Lisp_Object const Qarith_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qarray __attribute__ ((externally_visible)) ; extern Lisp_Object const Qarrayp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qarrow __attribute__ ((externally_visible)) ; extern Lisp_Object const Qascii __attribute__ ((externally_visible)) ; extern Lisp_Object const Qascii_0 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qascii_character __attribute__ ((externally_visible)) ; extern Lisp_Object const Qassq_delete_all __attribute__ ((externally_visible)) ; extern Lisp_Object const Qassume __attribute__ ((externally_visible)) ; extern Lisp_Object const Qattrib __attribute__ ((externally_visible)) ; extern Lisp_Object const Qauto_composed __attribute__ ((externally_visible)) ; extern Lisp_Object const Qauto_fill_chars __attribute__ ((externally_visible)) ; extern Lisp_Object const Qauto_hscroll_mode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qauto_lower __attribute__ ((externally_visible)) ; extern Lisp_Object const Qauto_raise __attribute__ ((externally_visible)) ; extern Lisp_Object const Qauto_save_coding __attribute__ ((externally_visible)) ; extern Lisp_Object const Qautoload __attribute__ ((externally_visible)) ; extern Lisp_Object const Qautosaved __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbackground_color __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbackground_mode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbackquote __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbare_symbol_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbefore_change_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbefore_handle __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbefore_string __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbeginning_of_buffer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbelow __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbelow_handle __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbig __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbig5 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbinary __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbitmap_spec_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qblack __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbmp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbold __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbool_vector __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbool_vector_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qborder __attribute__ ((externally_visible)) ; extern Lisp_Object const Qborder_color __attribute__ ((externally_visible)) ; extern Lisp_Object const Qborder_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qboth __attribute__ ((externally_visible)) ; extern Lisp_Object const Qboth_horiz __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbottom __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbottom_divider __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbottom_divider_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbottom_edge __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbottom_left_corner __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbottom_margin __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbottom_right_corner __attribute__ ((externally_visible)) ; extern Lisp_Object const Qboundary __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbounds __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbox __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer_access_fontify_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer_file_coding_system __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer_list __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer_list_update_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer_name_history __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer_or_string_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer_position __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer_predicate __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffer_read_only __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbufferp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbuffers __attribute__ ((externally_visible)) ; extern Lisp_Object const Qburied_buffer_list __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbyte_code_function_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbyte_code_meter __attribute__ ((externally_visible)) ; extern Lisp_Object const Qbyte_run_unescaped_character_literals_warning __attribute__ ((externally_visible)) ; extern Lisp_Object const Qc __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcall __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcall_process __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcall_process_region __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcallref __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcancel_timer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcar_less_than_car __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcase_fold_search __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcase_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcase_table_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcatcher __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcategory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcategory_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcategory_table_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcategoryp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcategorysetp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qccl __attribute__ ((externally_visible)) ; extern Lisp_Object const Qccl_program_idx __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcclp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcdr __attribute__ ((externally_visible)) ; extern Lisp_Object const Qceiling __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcenter __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchange_frame_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchange_major_mode_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchar_code_property_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchar_from_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchar_or_string_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchar_script_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchar_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchar_table_extra_slots __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchar_table_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcharacterp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcharset __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcharsetp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchild_frame_border __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchild_frame_border_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qchoice __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcircle __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcircular_list __attribute__ ((externally_visible)) ; extern Lisp_Object const Qclone_indirect_buffer_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qclone_of __attribute__ ((externally_visible)) ; extern Lisp_Object const Qclose __attribute__ ((externally_visible)) ; extern Lisp_Object const Qclose_nowrite __attribute__ ((externally_visible)) ; extern Lisp_Object const Qclose_tab __attribute__ ((externally_visible)) ; extern Lisp_Object const Qclose_write __attribute__ ((externally_visible)) ; extern Lisp_Object const Qclosed __attribute__ ((externally_visible)) ; extern Lisp_Object const Qclosure __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcmajflt __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcminflt __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcode_conversion_map __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcode_conversion_map_id __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcodeset __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcoding __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcoding_system __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcoding_system_define_form __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcoding_system_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcoding_system_history __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcoding_system_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcolumns __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomm __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomma __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomma_at __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcommand_debug_status __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcommand_execute __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcommand_modes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcommandp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomment __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomment_end_can_be_escaped __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomp_libgccjit_reproducer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomp_maybe_gc_or_quit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomp_mvar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomp_subr_trampoline_install __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcompiled_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcompletion_ignore_case __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcomposition __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcompound_text __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcond_jump __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcond_jump_narg_leq __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcondition_case __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcondition_variable __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcondition_variable_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qconfig_changed_event __attribute__ ((externally_visible)) ; extern Lisp_Object const Qconnect __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcons __attribute__ ((externally_visible)) ; extern Lisp_Object const Qconses __attribute__ ((externally_visible)) ; extern Lisp_Object const Qconsp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcontinuation __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcopy_directory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcopy_file __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcount __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcreate __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcrop __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcstime __attribute__ ((externally_visible)) ; extern Lisp_Object const Qctime __attribute__ ((externally_visible)) ; extern Lisp_Object const Qctrl __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcurrent __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcurrent_input_method __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcurrent_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcurrent_load_list __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcurrent_minibuffer_command __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcursor __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcursor_color __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcursor_in_echo_area __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcursor_type __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcurve __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcustom_variable_history __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcustom_variable_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcutime __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcycle_sort_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcyclic_function_indirection __attribute__ ((externally_visible)) ; extern Lisp_Object const Qcyclic_variable_indirection __attribute__ ((externally_visible)) ; extern Lisp_Object const Qd __attribute__ ((externally_visible)) ; extern Lisp_Object const Qd_default __attribute__ ((externally_visible)) ; extern Lisp_Object const Qd_ephemeral __attribute__ ((externally_visible)) ; extern Lisp_Object const Qd_impure __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdata __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdatagram __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdays __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdbus_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdbus_event __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdbus_message_internal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdeactivate_mark __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdebug __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdebug_early __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdebug_on_next_call __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdebugger __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdecomposed_characters __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdefalias_fset_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdefault __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdefault_directory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdeferred_action_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdefun __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdefvaralias __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelay __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelayed_warnings_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete_before __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete_by_moving_to_trash __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete_directory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete_file __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete_frame_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete_self __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete_terminal_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdelete_window __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdescribe_map_tree __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdir_ok __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdirect_call __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdirect_callref __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdirectory_file_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdirectory_files __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdirectory_files_and_attributes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisable_eval __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisabled __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_buffer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_fill_column_indicator __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_fill_column_indicator_character __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_fill_column_indicator_column __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_line_numbers __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_line_numbers_disable __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_line_numbers_offset __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_line_numbers_widen __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_line_numbers_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_monitors_changed_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdisplay_type __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdo_after_load_evaluation __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdomain_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdont_clear_message __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdont_follow __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdos __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdown __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdrag_internal_border __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdrag_n_drop __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdrag_source __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdrag_with_header_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdrag_with_mode_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdrag_with_tab_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdragging __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdropping __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdump_emacs_portable__sort_predicate __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdump_emacs_portable__sort_predicate_copied __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdump_file_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qdumped_with_pdumper __attribute__ ((externally_visible)) ; extern Lisp_Object const Qecho_area_clear_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qecho_keystrokes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qedge_detection __attribute__ ((externally_visible)) ; extern Lisp_Object const Qegid __attribute__ ((externally_visible)) ; extern Lisp_Object const Qeight_bit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qem __attribute__ ((externally_visible)) ; extern Lisp_Object const Qemacs __attribute__ ((externally_visible)) ; extern Lisp_Object const Qemacs_mule __attribute__ ((externally_visible)) ; extern Lisp_Object const Qemboss __attribute__ ((externally_visible)) ; extern Lisp_Object const Qemoji __attribute__ ((externally_visible)) ; extern Lisp_Object const Qempty_box __attribute__ ((externally_visible)) ; extern Lisp_Object const Qempty_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qenable_recursive_minibuffers __attribute__ ((externally_visible)) ; extern Lisp_Object const Qencode_time __attribute__ ((externally_visible)) ; extern Lisp_Object const Qencoded __attribute__ ((externally_visible)) ; extern Lisp_Object const Qend_of_buffer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qend_of_file __attribute__ ((externally_visible)) ; extern Lisp_Object const Qend_scroll __attribute__ ((externally_visible)) ; extern Lisp_Object const Qend_session __attribute__ ((externally_visible)) ; extern Lisp_Object const Qentry __attribute__ ((externally_visible)) ; extern Lisp_Object const Qeq __attribute__ ((externally_visible)) ; extern Lisp_Object const Qeql __attribute__ ((externally_visible)) ; extern Lisp_Object const Qequal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qerror_conditions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qerror_message __attribute__ ((externally_visible)) ; extern Lisp_Object const Qescape_glyph __attribute__ ((externally_visible)) ; extern Lisp_Object const Qetime __attribute__ ((externally_visible)) ; extern Lisp_Object const Qeuid __attribute__ ((externally_visible)) ; extern Lisp_Object const Qeval __attribute__ ((externally_visible)) ; extern Lisp_Object const Qeval_buffer_list __attribute__ ((externally_visible)) ; extern Lisp_Object const Qevaporate __attribute__ ((externally_visible)) ; extern Lisp_Object const Qeven __attribute__ ((externally_visible)) ; extern Lisp_Object const Qevent_kind __attribute__ ((externally_visible)) ; extern Lisp_Object const Qevent_symbol_element_mask __attribute__ ((externally_visible)) ; extern Lisp_Object const Qevent_symbol_elements __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexcessive_lisp_nesting __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexcessive_variable_binding __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexcl __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexpand_abbrev __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexpand_file_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexplicit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexplicit_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexpose __attribute__ ((externally_visible)) ; extern Lisp_Object const Qextension_data __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexternal_border_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qexternal_debugging_output __attribute__ ((externally_visible)) ; extern Lisp_Object const Qextra_bold __attribute__ ((externally_visible)) ; extern Lisp_Object const Qextra_light __attribute__ ((externally_visible)) ; extern Lisp_Object const Qface __attribute__ ((externally_visible)) ; extern Lisp_Object const Qface_alias __attribute__ ((externally_visible)) ; extern Lisp_Object const Qface_no_inherit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qface_remapping_alist __attribute__ ((externally_visible)) ; extern Lisp_Object const Qface_set_after_frame_default __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfailed __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfalse __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfboundp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfeatures __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfetch_handler __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfield __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_accessible_directory_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_acl __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_already_exists __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_attributes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_attributes_lessp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_date_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_directory_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_executable_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_exists_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_locked_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_missing __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_modes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_name_all_completions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_name_as_directory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_name_case_insensitive_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_name_completion __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_name_directory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_name_handler_alist __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_name_history __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_name_nondirectory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_newer_than_file_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_notify __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_notify_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_readable_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_regular_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_selinux_context __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_symlink_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_system_info __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfile_writable_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfilenamep __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfill_column_indicator __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfinalizer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfirst_change_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfixnum __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfixnum_or_symbol_with_pos_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfixnump __attribute__ ((externally_visible)) ; extern Lisp_Object const Qflat_button __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfloat __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfloatp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfloats __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfloor __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfocus_in __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfocus_out __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont_backend __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont_driver_superseded_by __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont_entity __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont_lock_face __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont_object __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont_parameter __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont_render __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfont_spec __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfontification_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfontified __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfontset __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfontset_info __attribute__ ((externally_visible)) ; extern Lisp_Object const Qforeground_color __attribute__ ((externally_visible)) ; extern Lisp_Object const Qforeign_selection __attribute__ ((externally_visible)) ; extern Lisp_Object const Qformat_annotate_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qformat_decode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfraction __attribute__ ((externally_visible)) ; extern Lisp_Object const Qframe __attribute__ ((externally_visible)) ; extern Lisp_Object const Qframe_edges __attribute__ ((externally_visible)) ; extern Lisp_Object const Qframe_live_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qframe_monitor_attributes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qframe_monitor_workarea __attribute__ ((externally_visible)) ; extern Lisp_Object const Qframe_set_background_mode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qframe_windows_min_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qframep __attribute__ ((externally_visible)) ; extern Lisp_Object const Qframes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfreetype __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfreetypehb __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfringe __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfront_sticky __attribute__ ((externally_visible)) ; extern Lisp_Object const Qftcr __attribute__ ((externally_visible)) ; extern Lisp_Object const Qftcrhb __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfull __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfullboth __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfullheight __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfullscreen __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfullwidth __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfuncall __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfuncall_interactively __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfunction __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfunction_documentation __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfunction_history __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfunction_key __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfunctionp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qfundamental_mode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgc_cons_percentage __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgc_cons_threshold __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgccjit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgdiplus __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgdk_pixbuf __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgeometry __attribute__ ((externally_visible)) ; extern Lisp_Object const Qget_buffer_window_list __attribute__ ((externally_visible)) ; extern Lisp_Object const Qget_emacs_mule_file_char __attribute__ ((externally_visible)) ; extern Lisp_Object const Qget_file_buffer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qget_file_char __attribute__ ((externally_visible)) ; extern Lisp_Object const Qget_mru_window __attribute__ ((externally_visible)) ; extern Lisp_Object const Qget_scratch_buffer_create __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgif __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgio __attribute__ ((externally_visible)) ; extern Lisp_Object const Qglib __attribute__ ((externally_visible)) ; extern Lisp_Object const Qglyphless_char __attribute__ ((externally_visible)) ; extern Lisp_Object const Qglyphless_char_display __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_anon __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_code __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_e_again __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_e_interrupted __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_e_invalid_session __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_e_not_ready_for_handshake __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_type_cipher __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_type_digest_algorithm __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_type_mac_algorithm __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgnutls_x509pki __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgobject __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgrave __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgroup __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgrow_only __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgui_figure_window_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qgui_set_selection __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhaiku __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhand __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhandle __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhandle_select_window __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhandle_shift_selection __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhandle_switch_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhash_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhash_table_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhash_table_test __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhbar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qheader_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qheader_line_format __attribute__ ((externally_visible)) ; extern Lisp_Object const Qheap __attribute__ ((externally_visible)) ; extern Lisp_Object const Qheavy __attribute__ ((externally_visible)) ; extern Lisp_Object const Qheic __attribute__ ((externally_visible)) ; extern Lisp_Object const Qheight __attribute__ ((externally_visible)) ; extern Lisp_Object const Qheight_only __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhelp_echo __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhelp_echo_inhibit_substitution __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhelp_form_show __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhelp_key_binding __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhelper_save_restriction __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhelper_unbind_n __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhelper_unwind_protect __attribute__ ((externally_visible)) ; extern Lisp_Object const Qheuristic __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhex_code __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhide __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhollow __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhollow_small __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhorizontal_handle __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhorizontal_scroll_bar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhorizontal_scroll_bars __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhw __attribute__ ((externally_visible)) ; extern Lisp_Object const Qhyper __attribute__ ((externally_visible)) ; extern Lisp_Object const Qicon __attribute__ ((externally_visible)) ; extern Lisp_Object const Qicon_left __attribute__ ((externally_visible)) ; extern Lisp_Object const Qicon_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qicon_top __attribute__ ((externally_visible)) ; extern Lisp_Object const Qicon_type __attribute__ ((externally_visible)) ; extern Lisp_Object const Qiconify_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qiconify_top_level __attribute__ ((externally_visible)) ; extern Lisp_Object const Qidentity __attribute__ ((externally_visible)) ; extern Lisp_Object const Qif __attribute__ ((externally_visible)) ; extern Lisp_Object const Qignore_self_insert __attribute__ ((externally_visible)) ; extern Lisp_Object const Qignored __attribute__ ((externally_visible)) ; extern Lisp_Object const Qimage __attribute__ ((externally_visible)) ; extern Lisp_Object const Qimagemagick __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinc_args __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_changing_match_data __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_debugger __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_double_buffering __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_eval_during_redisplay __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_file_name_operation __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_free_realized_faces __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_menubar_update __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_modification_hooks __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_point_motion_hooks __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_quit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_read_only __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibit_redisplay __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinhibited_interaction __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinner_edges __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinput_method_exit_on_first_char __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinput_method_use_echo_area __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinsert_behind_hooks __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinsert_file_contents __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinsert_in_front_hooks __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinsufficient_source __attribute__ ((externally_visible)) ; extern Lisp_Object const Qintangible __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinteger __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinteger_or_marker_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qintegerp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinteractive __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinteractive_form __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal__syntax_propertize __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_auto_fill __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_border __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_border_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_default_interrupt_process __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_default_process_filter __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_default_process_sentinel __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_default_signal_process __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_echo_keystrokes_prefix __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_interpreter_environment __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinternal_when_entered_debugger __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinterrupt_process_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinterrupted __attribute__ ((externally_visible)) ; extern Lisp_Object const Qintervals __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinvalid_arity __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinvalid_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinvalid_read_syntax __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinvalid_regexp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinvalid_source __attribute__ ((externally_visible)) ; extern Lisp_Object const Qinvisible __attribute__ ((externally_visible)) ; extern Lisp_Object const Qipv4 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qipv6 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qisdir __attribute__ ((externally_visible)) ; extern Lisp_Object const Qiso10646_1 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qiso8859_1 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qiso_2022 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qiso_8859_1 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qitalic __attribute__ ((externally_visible)) ; extern Lisp_Object const Qiv_auto __attribute__ ((externally_visible)) ; extern Lisp_Object const Qja __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjpeg __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_end_of_file __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_object_too_deep __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_out_of_memory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_parse_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_parse_string __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_serialize __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_trailing_content __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_unavailable __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjson_value_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qjump __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkbd_macro_termination_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkeep_ratio __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkey __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkey_and_value __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkey_or_value __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkey_parse __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkey_valid_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkeymap __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkeymap_canonicalize __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkeymapp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkill_buffer_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkill_buffer_query_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkill_emacs __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkill_emacs_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qkill_forward_chars __attribute__ ((externally_visible)) ; extern Lisp_Object const Qko __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlambda_fixup __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlandscape __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlanguage_change __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlaplace __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlast_arrow_position __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlast_arrow_string __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlast_nonmenu_event __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlate __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlatin __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlatin_1 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qleft __attribute__ ((externally_visible)) ; extern Lisp_Object const Qleft_edge __attribute__ ((externally_visible)) ; extern Lisp_Object const Qleft_fringe __attribute__ ((externally_visible)) ; extern Lisp_Object const Qleft_margin __attribute__ ((externally_visible)) ; extern Lisp_Object const Qleft_only __attribute__ ((externally_visible)) ; extern Lisp_Object const Qleft_to_right __attribute__ ((externally_visible)) ; extern Lisp_Object const Qleftmost __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlet __attribute__ ((externally_visible)) ; extern Lisp_Object const Qletx __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlexical_binding __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlibgif_version __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlibjpeg_version __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlibpng_version __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlight __attribute__ ((externally_visible)) ; extern Lisp_Object const Qline __attribute__ ((externally_visible)) ; extern Lisp_Object const Qline_height __attribute__ ((externally_visible)) ; extern Lisp_Object const Qline_number __attribute__ ((externally_visible)) ; extern Lisp_Object const Qline_number_current_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qline_number_major_tick __attribute__ ((externally_visible)) ; extern Lisp_Object const Qline_number_minor_tick __attribute__ ((externally_visible)) ; extern Lisp_Object const Qline_prefix __attribute__ ((externally_visible)) ; extern Lisp_Object const Qline_spacing __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlisp_directory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlist __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlist_or_vector_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlist_system_processes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlisten __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlistp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlittle __attribute__ ((externally_visible)) ; extern Lisp_Object const Qload __attribute__ ((externally_visible)) ; extern Lisp_Object const Qload_file_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qload_force_doc_strings __attribute__ ((externally_visible)) ; extern Lisp_Object const Qload_in_progress __attribute__ ((externally_visible)) ; extern Lisp_Object const Qload_time __attribute__ ((externally_visible)) ; extern Lisp_Object const Qload_true_file_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlocal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlocal_map __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlock_file __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlong __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlowercase __attribute__ ((externally_visible)) ; extern Lisp_Object const Qlread_unescaped_character_literals __attribute__ ((externally_visible)) ; extern Lisp_Object const Qm __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmac __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmacro __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmacroexp__dynvars __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmajflt __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmake_cursor_line_fully_visible __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmake_directory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmake_directory_internal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmake_frame_visible __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmake_invisible __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmake_lock_file_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmake_process __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmake_symbolic_link __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmake_window_start_visible __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmakunbound __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmany __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmargin __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmark_for_redisplay __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmark_inactive __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmarker __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmarkerp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmaximized __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmd5 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmedium __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmenu __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmenu_bar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmenu_bar_external __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmenu_bar_lines __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmenu_bar_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmenu_bar_update_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmenu_enable __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmenu_item __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmessage __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmeta __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmetadata __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmin_height __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmin_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminflt __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_completing_file_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_completion_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_default __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_exit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_exit_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_follows_selected_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_history __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_inactive_mode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_mode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_prompt __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_quit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminibuffer_setup_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qminus __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmissing_module_init_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmm_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmode_class __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmode_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmode_line_active __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmode_line_default_help_echo __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmode_line_format __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmode_line_inactive __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodeline __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodification_hooks __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodifier_cache __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodifier_value __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodify __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodule_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodule_function_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodule_init_failed __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodule_load_failed __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodule_not_gpl_compatible __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmodule_open_failed __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmono __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmonospace __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmonospace_font_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmonths __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmouse __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmouse_click __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmouse_color __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmouse_face __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmouse_fixup_help_message __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmouse_leave_buffer_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmouse_movement __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmouse_wheel_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmove __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmove_file_to_trash __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmove_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmove_self __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmoved_from __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmoved_to __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmutex __attribute__ ((externally_visible)) ; extern Lisp_Object const Qmutexp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qname __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_comp_compiler_options __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_comp_debug __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_comp_driver_options __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_comp_speed __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_comp_unit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_comp_warning_on_missing_source __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_compiler_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_edges __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_ice __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_image __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_lisp_file_inconsistent __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_lisp_load_failed __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnative_lisp_wrong_reloc __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnatnump __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnegate __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnetwork __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnice __attribute__ ((externally_visible)) ; extern Lisp_Object const Qno_accept_focus __attribute__ ((externally_visible)) ; extern Lisp_Object const Qno_catch __attribute__ ((externally_visible)) ; extern Lisp_Object const Qno_conversion __attribute__ ((externally_visible)) ; extern Lisp_Object const Qno_focus_on_map __attribute__ ((externally_visible)) ; extern Lisp_Object const Qno_other_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qno_other_window __attribute__ ((externally_visible)) ; extern Lisp_Object const Qno_record __attribute__ ((externally_visible)) ; extern Lisp_Object const Qno_special_glyphs __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnobreak_hyphen __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnobreak_space __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnoelisp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnon_ascii __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnone __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnormal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnow __attribute__ ((externally_visible)) ; extern Lisp_Object const Qns __attribute__ ((externally_visible)) ; extern Lisp_Object const Qns_appearance __attribute__ ((externally_visible)) ; extern Lisp_Object const Qns_parse_geometry __attribute__ ((externally_visible)) ; extern Lisp_Object const Qns_transparent_titlebar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnsm_verify_connection __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnull __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnumber_or_marker_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qnumberp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qobarray_cache __attribute__ ((externally_visible)) ; extern Lisp_Object const Qobarrayp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qobject __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoblique __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoclosure_interactive_form __attribute__ ((externally_visible)) ; extern Lisp_Object const Qodd __attribute__ ((externally_visible)) ; extern Lisp_Object const Qonly __attribute__ ((externally_visible)) ; extern Lisp_Object const Qonlydir __attribute__ ((externally_visible)) ; extern Lisp_Object const Qopen __attribute__ ((externally_visible)) ; extern Lisp_Object const Qopen_network_stream __attribute__ ((externally_visible)) ; extern Lisp_Object const Qopentype __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoperations __attribute__ ((externally_visible)) ; extern Lisp_Object const Qorientation __attribute__ ((externally_visible)) ; extern Lisp_Object const Qouter_border_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qouter_edges __attribute__ ((externally_visible)) ; extern Lisp_Object const Qouter_position __attribute__ ((externally_visible)) ; extern Lisp_Object const Qouter_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qouter_window_id __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverflow_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverlay __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverlay_arrow __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverlay_arrow_bitmap __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverlay_arrow_string __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverlayp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverride_redirect __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverriding_local_map __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverriding_plist_environment __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverriding_terminal_local_map __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverwrite_mode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qoverwrite_mode_binary __attribute__ ((externally_visible)) ; extern Lisp_Object const Qp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpaper __attribute__ ((externally_visible)) ; extern Lisp_Object const Qparent_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qparent_id __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpbm __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpc __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpcpu __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpdf __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpermanent_local __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpermanent_local_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpermission_denied __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpgrp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpgtk __attribute__ ((externally_visible)) ; extern Lisp_Object const Qphi __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpinch __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpipe __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpipe_process_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qplay_sound_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qplist __attribute__ ((externally_visible)) ; extern Lisp_Object const Qplistp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qplus __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpmem __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpng __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpoint_entered __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpoint_left __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpointer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpolling_period __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpoly __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpop_handler __attribute__ ((externally_visible)) ; extern Lisp_Object const Qportrait __attribute__ ((externally_visible)) ; extern Lisp_Object const Qposition __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpost_command_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpost_gc_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpost_self_insert_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpostscript __attribute__ ((externally_visible)) ; extern Lisp_Object const Qppid __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpre_command_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpreedit_text __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpressed_button __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpri __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprint_escape_multibyte __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprint_escape_nonascii __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprint_symbols_bare __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprint_unreadable_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpriority __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprocess __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprocess_attributes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprocessp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprofiler_backtrace_equal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprogn __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpropertize __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprotected_field __attribute__ ((externally_visible)) ; extern Lisp_Object const Qprovide __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpty __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpure __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpurecopy __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpush_handler __attribute__ ((externally_visible)) ; extern Lisp_Object const Qpush_window_buffer_onto_prev __attribute__ ((externally_visible)) ; extern Lisp_Object const Qq_overflow __attribute__ ((externally_visible)) ; extern Lisp_Object const Qquit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qquote __attribute__ ((externally_visible)) ; extern Lisp_Object const Qraise __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrange __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrange_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qratio __attribute__ ((externally_visible)) ; extern Lisp_Object const Qraw_text __attribute__ ((externally_visible)) ; extern Lisp_Object const Qread __attribute__ ((externally_visible)) ; extern Lisp_Object const Qread_char __attribute__ ((externally_visible)) ; extern Lisp_Object const Qread_number __attribute__ ((externally_visible)) ; extern Lisp_Object const Qread_only __attribute__ ((externally_visible)) ; extern Lisp_Object const Qreal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrear_nonsticky __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrecompute_lucid_menubar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrecord __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrecord_unwind_current_buffer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrecord_unwind_protect_excursion __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrecord_window_buffer __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrecordp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrect __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrecursion_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qredisplay_dont_pause __attribute__ ((externally_visible)) ; extern Lisp_Object const Qredisplay_end_trigger_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qredisplay_internal_xC_functionx __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrehash_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrehash_threshold __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrelative __attribute__ ((externally_visible)) ; extern Lisp_Object const Qreleased_button __attribute__ ((externally_visible)) ; extern Lisp_Object const Qremap __attribute__ ((externally_visible)) ; extern Lisp_Object const Qremote_file_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrename_file __attribute__ ((externally_visible)) ; extern Lisp_Object const Qreplace_buffer_in_windows __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrequire __attribute__ ((externally_visible)) ; extern Lisp_Object const Qresize_mode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qreturn __attribute__ ((externally_visible)) ; extern Lisp_Object const Qreverse_landscape __attribute__ ((externally_visible)) ; extern Lisp_Object const Qreverse_portrait __attribute__ ((externally_visible)) ; extern Lisp_Object const Qright __attribute__ ((externally_visible)) ; extern Lisp_Object const Qright_divider __attribute__ ((externally_visible)) ; extern Lisp_Object const Qright_divider_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qright_edge __attribute__ ((externally_visible)) ; extern Lisp_Object const Qright_fringe __attribute__ ((externally_visible)) ; extern Lisp_Object const Qright_margin __attribute__ ((externally_visible)) ; extern Lisp_Object const Qright_to_left __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrightmost __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrisky_local_variable __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrotate __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrotate90 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrss __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrun __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrun_hook_query_error_with_timeout __attribute__ ((externally_visible)) ; extern Lisp_Object const Qrun_hook_with_args __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsafe __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsans __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsans__serif __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsans_serif __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsave_excursion __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsave_session __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscale __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscale_factor __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscan_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscratch __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscreen_gamma __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscroll_bar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscroll_bar_background __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscroll_bar_foreground __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscroll_bar_height __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscroll_bar_movement __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscroll_bar_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscroll_command __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscroll_down __attribute__ ((externally_visible)) ; extern Lisp_Object const Qscroll_up __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsearch_failed __attribute__ ((externally_visible)) ; extern Lisp_Object const Qselect_frame_set_input_focus __attribute__ ((externally_visible)) ; extern Lisp_Object const Qselect_window __attribute__ ((externally_visible)) ; extern Lisp_Object const Qselection_request __attribute__ ((externally_visible)) ; extern Lisp_Object const Qself_insert_command __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsemi_bold __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsemi_light __attribute__ ((externally_visible)) ; extern Lisp_Object const Qseqpacket __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsequencep __attribute__ ((externally_visible)) ; extern Lisp_Object const Qserial __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsess __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_args_to_local __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_default __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_file_acl __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_file_modes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_file_selinux_context __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_file_times __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_internal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_par_to_local __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_rest_args_to_local __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_visited_file_modtime __attribute__ ((externally_visible)) ; extern Lisp_Object const Qset_window_configuration __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsetcar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsetcdr __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsetimm __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsetq __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsetting_constant __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsha1 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsha224 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsha256 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsha384 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsha512 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qshaded __attribute__ ((externally_visible)) ; extern Lisp_Object const Qshift_jis __attribute__ ((externally_visible)) ; extern Lisp_Object const Qshlwapi __attribute__ ((externally_visible)) ; extern Lisp_Object const Qside_effect_free __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsignal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsignal_process_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsingularity_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsize __attribute__ ((externally_visible)) ; extern Lisp_Object const Qskip_taskbar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qslice __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsound __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsource __attribute__ ((externally_visible)) ; extern Lisp_Object const Qspace __attribute__ ((externally_visible)) ; extern Lisp_Object const Qspace_width __attribute__ ((externally_visible)) ; extern Lisp_Object const Qspecial_lowercase __attribute__ ((externally_visible)) ; extern Lisp_Object const Qspecial_titlecase __attribute__ ((externally_visible)) ; extern Lisp_Object const Qspecial_uppercase __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsqlite __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsqlite3 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsqlite_locked_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsqlitep __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstandard_input __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstandard_output __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstart __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstart_process __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstate __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstderr __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstdin __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstdout __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsticky __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstime __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstop __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstraight __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstring __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstring_bytes __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstring_lessp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstring_without_embedded_nulls_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstringp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qstrings __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsub1 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsubfeatures __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsubr __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsubrp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsubstitute_command_keys __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsubstitute_env_in_file_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsubstitute_in_file_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsuper __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsvg __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsw __attribute__ ((externally_visible)) ; extern Lisp_Object const Qswitch_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsymbol __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsymbol_with_pos __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsymbol_with_pos_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsymbolp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsymbols __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsymbols_with_pos_enabled __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsyntax_ppss __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsyntax_ppss_flush_cache __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsyntax_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qsyntax_table_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtab_bar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtab_bar_lines __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtab_bar_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtab_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtab_line_format __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtarget_idx __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtemp_buffer_setup_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtemp_buffer_show_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qterminal __attribute__ ((externally_visible)) ; extern Lisp_Object const Qterminal_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qterminal_live_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtest __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtext __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtext_image_horiz __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtext_pixels __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtext_read_only __attribute__ ((externally_visible)) ; extern Lisp_Object const Qthcount __attribute__ ((externally_visible)) ; extern Lisp_Object const Qthin __attribute__ ((externally_visible)) ; extern Lisp_Object const Qthin_space __attribute__ ((externally_visible)) ; extern Lisp_Object const Qthread __attribute__ ((externally_visible)) ; extern Lisp_Object const Qthread_event __attribute__ ((externally_visible)) ; extern Lisp_Object const Qthreadp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtiff __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtime __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtimer_event_handler __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtip_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtitle __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtitle_bar_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtitlecase __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtool_bar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtool_bar_external __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtool_bar_lines __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtool_bar_position __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtool_bar_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtool_bar_style __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtooltip __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtop __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtop_bottom __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtop_edge __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtop_left_corner __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtop_level __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtop_margin __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtop_only __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtop_right_corner __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtouch_end __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtouchscreen_begin __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtouchscreen_end __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtouchscreen_update __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtpgid __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtrailing_whitespace __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtranslation_table __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtranslation_table_id __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtrapping_constant __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtruncation __attribute__ ((externally_visible)) ; extern Lisp_Object const Qttname __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_color_alist __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_color_by_index __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_color_desc __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_color_mode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_color_standard_values __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_menu_exit __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_menu_ignore __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_menu_mouse_movement __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_menu_navigation_map __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_menu_next_item __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_menu_next_menu __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_menu_prev_item __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_menu_prev_menu __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_menu_select __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_mode_reset_strings __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_mode_set_strings __attribute__ ((externally_visible)) ; extern Lisp_Object const Qtty_type __attribute__ ((externally_visible)) ; extern Lisp_Object const Qultra_bold __attribute__ ((externally_visible)) ; extern Lisp_Object const Qultra_heavy __attribute__ ((externally_visible)) ; extern Lisp_Object const Qultra_light __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundecided __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundecorated __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundefined __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundefined_color __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunderflow_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunderline_minimum_offset __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundo_auto__add_boundary __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundo_auto__last_boundary_cause __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundo_auto__this_command_amalgamating __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundo_auto__undoable_change __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundo_auto__undoably_changed_buffers __attribute__ ((externally_visible)) ; extern Lisp_Object const Qundo_auto_amalgamate __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunevalled __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunhandled_file_name_directory __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunicode __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunicode_bmp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunicode_string_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunix __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunlet __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunlock_file __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunmount __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunreachable __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunspecified __attribute__ ((externally_visible)) ; extern Lisp_Object const Qunsplittable __attribute__ ((externally_visible)) ; extern Lisp_Object const Qup __attribute__ ((externally_visible)) ; extern Lisp_Object const Quppercase __attribute__ ((externally_visible)) ; extern Lisp_Object const Qus_ascii __attribute__ ((externally_visible)) ; extern Lisp_Object const Quser __attribute__ ((externally_visible)) ; extern Lisp_Object const Quser_error __attribute__ ((externally_visible)) ; extern Lisp_Object const Quser_position __attribute__ ((externally_visible)) ; extern Lisp_Object const Quser_ptr __attribute__ ((externally_visible)) ; extern Lisp_Object const Quser_ptrp __attribute__ ((externally_visible)) ; extern Lisp_Object const Quser_search_failed __attribute__ ((externally_visible)) ; extern Lisp_Object const Quser_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qutf_16 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qutf_16le __attribute__ ((externally_visible)) ; extern Lisp_Object const Qutf_8 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qutf_8_emacs __attribute__ ((externally_visible)) ; extern Lisp_Object const Qutf_8_string_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qutf_8_unix __attribute__ ((externally_visible)) ; extern Lisp_Object const Qutime __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvalue __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvariable_documentation __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvector __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvector_or_char_table_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvector_slots __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvectorp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvectors __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvendor_specific_keysyms __attribute__ ((externally_visible)) ; extern Lisp_Object const Qverify_visited_file_modtime __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvertical_border __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvertical_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvertical_scroll_bar __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvertical_scroll_bars __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvisibility __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvisible __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvisual __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvoid_function __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvoid_variable __attribute__ ((externally_visible)) ; extern Lisp_Object const Qvsize __attribute__ ((externally_visible)) ; extern Lisp_Object const Qw32 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwait_for_wm __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwall __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwatchers __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwave __attribute__ ((externally_visible)) ; extern Lisp_Object const Qweakness __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwebp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwebpdemux __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwhen __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwholenump __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwidget_type __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwidth __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwidth_only __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow__pixel_to_total __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow__resize_mini_frame __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow__resize_root_window __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow__resize_root_window_vertically __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_buffer_change_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_configuration __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_configuration_change_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_configuration_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_deletable_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_divider __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_divider_first_pixel __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_divider_last_pixel __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_edges __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_id __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_live_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_point_insertion_type __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_scroll_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_selection_change_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_size_change_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_state_change_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_state_change_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindow_valid_p __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwindowp __attribute__ ((externally_visible)) ; extern Lisp_Object const Qworkarea __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwrap_prefix __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwrite_region __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwrite_region_annotate_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwrong_length_argument __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwrong_number_of_arguments __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwrong_register_subr_call __attribute__ ((externally_visible)) ; extern Lisp_Object const Qwrong_type_argument __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_create_frame_1 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_create_frame_2 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_dnd_targets_list __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_frame_parameter __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_gtk_map_stock __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_lost_selection_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_pre_popup_menu_hook __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_resource_name __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_sent_selection_functions __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_set_menu_bar_lines __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_set_window_size_1 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_underline_at_descent_line __attribute__ ((externally_visible)) ; extern Lisp_Object const Qx_use_underline_position_properties __attribute__ ((externally_visible)) ; extern Lisp_Object const Qxbm __attribute__ ((externally_visible)) ; extern Lisp_Object const Qxg_frame_set_char_size __attribute__ ((externally_visible)) ; extern Lisp_Object const Qxinput2 __attribute__ ((externally_visible)) ; extern Lisp_Object const Qxpm __attribute__ ((externally_visible)) ; extern Lisp_Object const Qxwidget __attribute__ ((externally_visible)) ; extern Lisp_Object const Qxwidget_display_event __attribute__ ((externally_visible)) ; extern Lisp_Object const Qxwidget_event __attribute__ ((externally_visible)) ; extern Lisp_Object const Qxwidget_view __attribute__ ((externally_visible)) ; extern Lisp_Object const Qyes_or_no_p_history __attribute__ ((externally_visible)) ; extern Lisp_Object const Qz_group __attribute__ ((externally_visible)) ; extern Lisp_Object const Qzero_width __attribute__ ((externally_visible)) ; extern Lisp_Object Fabort_minibuffers (void); _Noreturn extern Lisp_Object Fabort_recursive_edit (void) __attribute__ ((__cold__)); extern Lisp_Object Fabs (Lisp_Object); extern Lisp_Object Faccept_process_output (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Faccess_file (Lisp_Object, Lisp_Object); extern Lisp_Object Faccessible_keymaps (Lisp_Object, Lisp_Object); extern Lisp_Object Facos (Lisp_Object); extern Lisp_Object Factive_minibuffer_window (void); extern Lisp_Object Fadd1 (Lisp_Object); extern Lisp_Object Fadd_face_text_property (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fadd_name_to_file (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fadd_text_properties (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fadd_variable_watcher (Lisp_Object, Lisp_Object); extern Lisp_Object Fall_completions (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fall_threads (void); extern Lisp_Object Fand (Lisp_Object); extern Lisp_Object Fappend (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fapply (ptrdiff_t, Lisp_Object *); extern Lisp_Object Faref (Lisp_Object, Lisp_Object); extern Lisp_Object Farrayp (Lisp_Object); extern Lisp_Object Faset (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fash (Lisp_Object, Lisp_Object); extern Lisp_Object Fasin (Lisp_Object); extern Lisp_Object Fassoc (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fassoc_string (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fassq (Lisp_Object, Lisp_Object); extern Lisp_Object Fatan (Lisp_Object, Lisp_Object); extern Lisp_Object Fatom (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fautoload (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fautoload_do_load (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbacktrace__locals (Lisp_Object, Lisp_Object); extern Lisp_Object Fbacktrace_debug (Lisp_Object, Lisp_Object); extern Lisp_Object Fbacktrace_eval (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbacktrace_frame_internal (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbacktrace_frames_from_thread (Lisp_Object); extern Lisp_Object Fbackward_char (Lisp_Object); extern Lisp_Object Fbackward_prefix_chars (void); extern Lisp_Object Fbare_symbol (Lisp_Object); extern Lisp_Object Fbare_symbol_p (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fbarf_if_buffer_read_only (Lisp_Object); extern Lisp_Object Fbase64_decode_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbase64_decode_string (Lisp_Object, Lisp_Object); extern Lisp_Object Fbase64_encode_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbase64_encode_string (Lisp_Object, Lisp_Object); extern Lisp_Object Fbase64url_encode_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbase64url_encode_string (Lisp_Object, Lisp_Object); extern Lisp_Object Fbeginning_of_line (Lisp_Object); extern Lisp_Object Fbidi_find_overridden_directionality (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbidi_resolved_levels (Lisp_Object); extern Lisp_Object Fbitmap_spec_p (Lisp_Object); extern Lisp_Object Fbobp (void); extern Lisp_Object Fbolp (void); extern Lisp_Object Fbool_vector (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fbool_vector_count_consecutive (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbool_vector_count_population (Lisp_Object); extern Lisp_Object Fbool_vector_exclusive_or (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbool_vector_intersection (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbool_vector_not (Lisp_Object, Lisp_Object); extern Lisp_Object Fbool_vector_p (Lisp_Object); extern Lisp_Object Fbool_vector_set_difference (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbool_vector_subsetp (Lisp_Object, Lisp_Object); extern Lisp_Object Fbool_vector_union (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbottom_divider_width (Lisp_Object); extern Lisp_Object Fboundp (Lisp_Object); extern Lisp_Object Fbuffer_base_buffer (Lisp_Object); extern Lisp_Object Fbuffer_chars_modified_tick (Lisp_Object); extern Lisp_Object Fbuffer_enable_undo (Lisp_Object); extern Lisp_Object Fbuffer_file_name (Lisp_Object); extern Lisp_Object Fbuffer_has_markers_at (Lisp_Object); extern Lisp_Object Fbuffer_hash (Lisp_Object); extern Lisp_Object Fbuffer_line_statistics (Lisp_Object); extern Lisp_Object Fbuffer_list (Lisp_Object); extern Lisp_Object Fbuffer_live_p (Lisp_Object); extern Lisp_Object Fbuffer_local_value (Lisp_Object, Lisp_Object); extern Lisp_Object Fbuffer_local_variables (Lisp_Object); extern Lisp_Object Fbuffer_modified_p (Lisp_Object); extern Lisp_Object Fbuffer_modified_tick (Lisp_Object); extern Lisp_Object Fbuffer_name (Lisp_Object); extern Lisp_Object Fbuffer_size (Lisp_Object); extern Lisp_Object Fbuffer_string (void); extern Lisp_Object Fbuffer_substring (Lisp_Object, Lisp_Object); extern Lisp_Object Fbuffer_substring_no_properties (Lisp_Object, Lisp_Object); extern Lisp_Object Fbuffer_swap_text (Lisp_Object); extern Lisp_Object Fbuffer_text_pixel_size (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbufferp (Lisp_Object); extern Lisp_Object Fbury_buffer_internal (Lisp_Object); extern Lisp_Object Fbyte_code (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fbyte_code_function_p (Lisp_Object); extern Lisp_Object Fbyte_to_position (Lisp_Object); extern Lisp_Object Fbyte_to_string (Lisp_Object); extern Lisp_Object Fbyteorder (void) __attribute__ ((__const__)); extern Lisp_Object Fcall_interactively (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcall_last_kbd_macro (Lisp_Object, Lisp_Object); extern Lisp_Object Fcall_process (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fcall_process_region (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fcancel_kbd_macro_events (void); extern Lisp_Object Fcapitalize (Lisp_Object); extern Lisp_Object Fcapitalize_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcapitalize_word (Lisp_Object); extern Lisp_Object Fcar (Lisp_Object); extern Lisp_Object Fcar_less_than_car (Lisp_Object, Lisp_Object); extern Lisp_Object Fcar_safe (Lisp_Object); extern Lisp_Object Fcase_table_p (Lisp_Object); extern Lisp_Object Fcatch (Lisp_Object); extern Lisp_Object Fcategory_docstring (Lisp_Object, Lisp_Object); extern Lisp_Object Fcategory_set_mnemonics (Lisp_Object); extern Lisp_Object Fcategory_table (void); extern Lisp_Object Fcategory_table_p (Lisp_Object); extern Lisp_Object Fccl_execute (Lisp_Object, Lisp_Object); extern Lisp_Object Fccl_execute_on_string (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fccl_program_p (Lisp_Object); extern Lisp_Object Fcdr (Lisp_Object); extern Lisp_Object Fcdr_safe (Lisp_Object); extern Lisp_Object Fceiling (Lisp_Object, Lisp_Object); extern Lisp_Object Fchar_after (Lisp_Object); extern Lisp_Object Fchar_before (Lisp_Object); extern Lisp_Object Fchar_category_set (Lisp_Object); extern Lisp_Object Fchar_charset (Lisp_Object, Lisp_Object); extern Lisp_Object Fchar_equal (Lisp_Object, Lisp_Object); extern Lisp_Object Fchar_or_string_p (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fchar_resolve_modifiers (Lisp_Object); extern Lisp_Object Fchar_syntax (Lisp_Object); extern Lisp_Object Fchar_table_extra_slot (Lisp_Object, Lisp_Object); extern Lisp_Object Fchar_table_p (Lisp_Object); extern Lisp_Object Fchar_table_parent (Lisp_Object); extern Lisp_Object Fchar_table_range (Lisp_Object, Lisp_Object); extern Lisp_Object Fchar_table_subtype (Lisp_Object); extern Lisp_Object Fchar_to_string (Lisp_Object); extern Lisp_Object Fchar_width (Lisp_Object); extern Lisp_Object Fcharacterp (Lisp_Object, Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fcharset_after (Lisp_Object); extern Lisp_Object Fcharset_id_internal (Lisp_Object); extern Lisp_Object Fcharset_plist (Lisp_Object); extern Lisp_Object Fcharset_priority_list (Lisp_Object); extern Lisp_Object Fcharsetp (Lisp_Object); extern Lisp_Object Fcheck_coding_system (Lisp_Object); extern Lisp_Object Fcheck_coding_systems_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fclear_buffer_auto_save_failure (void); extern Lisp_Object Fclear_charset_maps (void); extern Lisp_Object Fclear_composition_cache (void); extern Lisp_Object Fclear_face_cache (Lisp_Object); extern Lisp_Object Fclear_font_cache (void); extern Lisp_Object Fclear_image_cache (Lisp_Object); extern Lisp_Object Fclear_string (Lisp_Object); extern Lisp_Object Fclear_this_command_keys (Lisp_Object); extern Lisp_Object Fclose_font (Lisp_Object, Lisp_Object); extern Lisp_Object Fclrhash (Lisp_Object); extern Lisp_Object Fcoding_system_aliases (Lisp_Object); extern Lisp_Object Fcoding_system_base (Lisp_Object); extern Lisp_Object Fcoding_system_eol_type (Lisp_Object); extern Lisp_Object Fcoding_system_p (Lisp_Object); extern Lisp_Object Fcoding_system_plist (Lisp_Object); extern Lisp_Object Fcoding_system_priority_list (Lisp_Object); extern Lisp_Object Fcoding_system_put (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcolor_distance (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcolor_gray_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fcolor_supported_p (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcolor_values_from_color_spec (Lisp_Object); extern Lisp_Object Fcombine_after_change_execute (void); extern Lisp_Object Fcommand_error_default_function (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcommand_modes (Lisp_Object); extern Lisp_Object Fcommand_remapping (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcommandp (Lisp_Object, Lisp_Object); extern Lisp_Object Fcomp__compile_ctxt_to_file (Lisp_Object); extern Lisp_Object Fcomp__init_ctxt (void); extern Lisp_Object Fcomp__install_trampoline (Lisp_Object, Lisp_Object); extern Lisp_Object Fcomp__late_register_subr (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcomp__register_lambda (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcomp__register_subr (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcomp__release_ctxt (void); extern Lisp_Object Fcomp__subr_signature (Lisp_Object); extern Lisp_Object Fcomp_el_to_eln_filename (Lisp_Object, Lisp_Object); extern Lisp_Object Fcomp_el_to_eln_rel_filename (Lisp_Object); extern Lisp_Object Fcomp_libgccjit_version (void); extern Lisp_Object Fcomp_native_compiler_options_effective_p (void); extern Lisp_Object Fcomp_native_driver_options_effective_p (void); extern Lisp_Object Fcompare_buffer_substrings (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcompare_strings (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcompleting_read (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcompose_region_internal (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcompose_string_internal (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcomposition_get_gstring (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcompute_motion (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fconcat (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fcond (Lisp_Object); extern Lisp_Object Fcondition_case (Lisp_Object); extern Lisp_Object Fcondition_mutex (Lisp_Object); extern Lisp_Object Fcondition_name (Lisp_Object); extern Lisp_Object Fcondition_notify (Lisp_Object, Lisp_Object); extern Lisp_Object Fcondition_variable_p (Lisp_Object); extern Lisp_Object Fcondition_wait (Lisp_Object); extern Lisp_Object Fcons (Lisp_Object, Lisp_Object); extern Lisp_Object Fconsp (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fconstrain_to_field (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcontinue_process (Lisp_Object, Lisp_Object); extern Lisp_Object Fcontrolling_tty_p (Lisp_Object); extern Lisp_Object Fcoordinates_in_window_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fcopy_alist (Lisp_Object); extern Lisp_Object Fcopy_category_table (Lisp_Object); extern Lisp_Object Fcopy_file (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fcopy_hash_table (Lisp_Object); extern Lisp_Object Fcopy_keymap (Lisp_Object); extern Lisp_Object Fcopy_marker (Lisp_Object, Lisp_Object); extern Lisp_Object Fcopy_sequence (Lisp_Object); extern Lisp_Object Fcopy_syntax_table (Lisp_Object); extern Lisp_Object Fcopysign (Lisp_Object, Lisp_Object); extern Lisp_Object Fcos (Lisp_Object); extern Lisp_Object Fcurrent_active_maps (Lisp_Object, Lisp_Object); extern Lisp_Object Fcurrent_bidi_paragraph_direction (Lisp_Object); extern Lisp_Object Fcurrent_buffer (void); extern Lisp_Object Fcurrent_case_table (void); extern Lisp_Object Fcurrent_column (void); extern Lisp_Object Fcurrent_cpu_time (void); extern Lisp_Object Fcurrent_global_map (void); extern Lisp_Object Fcurrent_idle_time (void); extern Lisp_Object Fcurrent_indentation (void); extern Lisp_Object Fcurrent_input_mode (void); extern Lisp_Object Fcurrent_local_map (void); extern Lisp_Object Fcurrent_message (void); extern Lisp_Object Fcurrent_minor_mode_maps (void); extern Lisp_Object Fcurrent_thread (void); extern Lisp_Object Fcurrent_time (void); extern Lisp_Object Fcurrent_time_string (Lisp_Object, Lisp_Object); extern Lisp_Object Fcurrent_time_zone (Lisp_Object, Lisp_Object); extern Lisp_Object Fcurrent_window_configuration (Lisp_Object); extern Lisp_Object Fdaemon_initialized (void); extern Lisp_Object Fdaemonp (void); extern Lisp_Object Fdbus__init_bus (Lisp_Object, Lisp_Object); extern Lisp_Object Fdbus_get_unique_name (Lisp_Object); extern Lisp_Object Fdbus_message_internal (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fdebug_timer_check (void); extern Lisp_Object Fdeclare_equiv_charset (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdecode_big5_char (Lisp_Object); extern Lisp_Object Fdecode_char (Lisp_Object, Lisp_Object); extern Lisp_Object Fdecode_coding_region (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdecode_coding_string (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdecode_sjis_char (Lisp_Object); extern Lisp_Object Fdecode_time (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdefalias (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdefault_boundp (Lisp_Object); extern Lisp_Object Fdefault_file_modes (void); extern Lisp_Object Fdefault_toplevel_value (Lisp_Object); extern Lisp_Object Fdefault_value (Lisp_Object); extern Lisp_Object Fdefconst (Lisp_Object); extern Lisp_Object Fdefconst_1 (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdefine_category (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdefine_charset_alias (Lisp_Object, Lisp_Object); extern Lisp_Object Fdefine_charset_internal (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fdefine_coding_system_alias (Lisp_Object, Lisp_Object); extern Lisp_Object Fdefine_coding_system_internal (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fdefine_fringe_bitmap (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdefine_hash_table_test (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdefine_key (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdefvar (Lisp_Object); extern Lisp_Object Fdefvar_1 (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdefvaralias (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdelete (Lisp_Object, Lisp_Object); extern Lisp_Object Fdelete_all_overlays (Lisp_Object); extern Lisp_Object Fdelete_and_extract_region (Lisp_Object, Lisp_Object); extern Lisp_Object Fdelete_char (Lisp_Object, Lisp_Object); extern Lisp_Object Fdelete_directory_internal (Lisp_Object); extern Lisp_Object Fdelete_field (Lisp_Object); extern Lisp_Object Fdelete_file (Lisp_Object, Lisp_Object); extern Lisp_Object Fdelete_frame (Lisp_Object, Lisp_Object); extern Lisp_Object Fdelete_other_windows_internal (Lisp_Object, Lisp_Object); extern Lisp_Object Fdelete_overlay (Lisp_Object); extern Lisp_Object Fdelete_process (Lisp_Object); extern Lisp_Object Fdelete_region (Lisp_Object, Lisp_Object); extern Lisp_Object Fdelete_terminal (Lisp_Object, Lisp_Object); extern Lisp_Object Fdelete_window_internal (Lisp_Object); extern Lisp_Object Fdelq (Lisp_Object, Lisp_Object); extern Lisp_Object Fdescribe_buffer_bindings (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdescribe_vector (Lisp_Object, Lisp_Object); extern Lisp_Object Fdestroy_fringe_bitmap (Lisp_Object); extern Lisp_Object Fdetect_coding_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdetect_coding_string (Lisp_Object, Lisp_Object); extern Lisp_Object Fding (Lisp_Object); extern Lisp_Object Fdirectory_file_name (Lisp_Object); extern Lisp_Object Fdirectory_files (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdirectory_files_and_attributes (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdirectory_name_p (Lisp_Object); extern Lisp_Object Fdiscard_input (void); extern Lisp_Object Fdisplay__line_is_continued_p (void); extern Lisp_Object Fdisplay__update_for_mouse_movement (Lisp_Object, Lisp_Object); extern Lisp_Object Fdisplay_supports_face_attributes_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fdo_auto_save (Lisp_Object, Lisp_Object); extern Lisp_Object Fdocumentation (Lisp_Object, Lisp_Object); extern Lisp_Object Fdocumentation_property (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdowncase (Lisp_Object); extern Lisp_Object Fdowncase_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fdowncase_word (Lisp_Object); extern Lisp_Object Fdraw_string (Lisp_Object, Lisp_Object); extern Lisp_Object Fdump_colors (void); extern Lisp_Object Fdump_emacs (Lisp_Object, Lisp_Object); extern Lisp_Object Fdump_emacs_portable (Lisp_Object, Lisp_Object); extern Lisp_Object Fdump_emacs_portable__sort_predicate (Lisp_Object, Lisp_Object); extern Lisp_Object Fdump_emacs_portable__sort_predicate_copied (Lisp_Object, Lisp_Object); extern Lisp_Object Fdump_face (Lisp_Object); extern Lisp_Object Fdump_frame_glyph_matrix (void); extern Lisp_Object Fdump_glyph_matrix (Lisp_Object); extern Lisp_Object Fdump_glyph_row (Lisp_Object, Lisp_Object); extern Lisp_Object Fdump_redisplay_history (void); extern Lisp_Object Fdump_tab_bar_row (Lisp_Object, Lisp_Object); extern Lisp_Object Fdump_tool_bar_row (Lisp_Object, Lisp_Object); extern Lisp_Object Felt (Lisp_Object, Lisp_Object); extern Lisp_Object Femacs_pid (void); extern Lisp_Object Fencode_big5_char (Lisp_Object); extern Lisp_Object Fencode_char (Lisp_Object, Lisp_Object); extern Lisp_Object Fencode_coding_region (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fencode_coding_string (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fencode_sjis_char (Lisp_Object); extern Lisp_Object Fencode_time (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fend_kbd_macro (Lisp_Object, Lisp_Object); extern Lisp_Object Fend_of_line (Lisp_Object); extern Lisp_Object Feobp (void); extern Lisp_Object Feolp (void); extern Lisp_Object Feq (Lisp_Object, Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Feql (Lisp_Object, Lisp_Object); extern Lisp_Object Feqlsign (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fequal (Lisp_Object, Lisp_Object); extern Lisp_Object Fequal_including_properties (Lisp_Object, Lisp_Object); extern Lisp_Object Ferase_buffer (void); extern Lisp_Object Ferror_message_string (Lisp_Object); extern Lisp_Object Feval (Lisp_Object, Lisp_Object); extern Lisp_Object Feval_buffer (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Feval_region (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fevent_convert_list (Lisp_Object); extern Lisp_Object Fevent_symbol_parse_modifiers (Lisp_Object); extern Lisp_Object Fexecute_kbd_macro (Lisp_Object, Lisp_Object, Lisp_Object); _Noreturn extern Lisp_Object Fexit_recursive_edit (void) __attribute__ ((__cold__)); extern Lisp_Object Fexp (Lisp_Object); extern Lisp_Object Fexpand_file_name (Lisp_Object, Lisp_Object); extern Lisp_Object Fexpt (Lisp_Object, Lisp_Object); extern Lisp_Object Fexternal_debugging_output (Lisp_Object); extern Lisp_Object Fface_attribute_relative_p (Lisp_Object, Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fface_attributes_as_vector (Lisp_Object); extern Lisp_Object Fface_font (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffboundp (Lisp_Object); extern Lisp_Object Ffceiling (Lisp_Object); extern Lisp_Object Ffeaturep (Lisp_Object, Lisp_Object); extern Lisp_Object Ffetch_bytecode (Lisp_Object); extern Lisp_Object Fffloor (Lisp_Object); extern Lisp_Object Ffield_beginning (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffield_end (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffield_string (Lisp_Object); extern Lisp_Object Ffield_string_no_properties (Lisp_Object); extern Lisp_Object Ffile_accessible_directory_p (Lisp_Object); extern Lisp_Object Ffile_acl (Lisp_Object); extern Lisp_Object Ffile_attributes (Lisp_Object, Lisp_Object); extern Lisp_Object Ffile_attributes_lessp (Lisp_Object, Lisp_Object); extern Lisp_Object Ffile_directory_p (Lisp_Object); extern Lisp_Object Ffile_executable_p (Lisp_Object); extern Lisp_Object Ffile_exists_p (Lisp_Object); extern Lisp_Object Ffile_locked_p (Lisp_Object); extern Lisp_Object Ffile_modes (Lisp_Object, Lisp_Object); extern Lisp_Object Ffile_name_absolute_p (Lisp_Object); extern Lisp_Object Ffile_name_all_completions (Lisp_Object, Lisp_Object); extern Lisp_Object Ffile_name_as_directory (Lisp_Object); extern Lisp_Object Ffile_name_case_insensitive_p (Lisp_Object); extern Lisp_Object Ffile_name_completion (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffile_name_concat (ptrdiff_t, Lisp_Object *); extern Lisp_Object Ffile_name_directory (Lisp_Object); extern Lisp_Object Ffile_name_nondirectory (Lisp_Object); extern Lisp_Object Ffile_newer_than_file_p (Lisp_Object, Lisp_Object); extern Lisp_Object Ffile_readable_p (Lisp_Object); extern Lisp_Object Ffile_regular_p (Lisp_Object); extern Lisp_Object Ffile_selinux_context (Lisp_Object); extern Lisp_Object Ffile_symlink_p (Lisp_Object); extern Lisp_Object Ffile_system_info (Lisp_Object); extern Lisp_Object Ffile_writable_p (Lisp_Object); extern Lisp_Object Ffillarray (Lisp_Object, Lisp_Object); extern Lisp_Object Ffind_charset_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffind_charset_string (Lisp_Object, Lisp_Object); extern Lisp_Object Ffind_coding_systems_region_internal (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffind_composition_internal (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffind_file_name_handler (Lisp_Object, Lisp_Object); extern Lisp_Object Ffind_font (Lisp_Object, Lisp_Object); extern Lisp_Object Ffind_operation_coding_system (ptrdiff_t, Lisp_Object *); extern Lisp_Object Ffloat (Lisp_Object); extern Lisp_Object Ffloat_time (Lisp_Object); extern Lisp_Object Ffloatp (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Ffloor (Lisp_Object, Lisp_Object); extern Lisp_Object Fflush_standard_output (void); extern Lisp_Object Ffmakunbound (Lisp_Object); extern Lisp_Object Ffollowing_char (void); extern Lisp_Object Ffont_at (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_drive_otf (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_face_attributes (Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_family_list (Lisp_Object); extern Lisp_Object Ffont_get (Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_get_glyphs (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_get_system_font (void); extern Lisp_Object Ffont_get_system_normal_font (void); extern Lisp_Object Ffont_has_char_p (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_info (Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_match_p (Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_otf_alternates (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_put (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_shape_gstring (Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_spec (ptrdiff_t, Lisp_Object *); extern Lisp_Object Ffont_variation_glyphs (Lisp_Object, Lisp_Object); extern Lisp_Object Ffont_xlfd_name (Lisp_Object, Lisp_Object); extern Lisp_Object Ffontp (Lisp_Object, Lisp_Object); extern Lisp_Object Ffontset_font (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffontset_info (Lisp_Object, Lisp_Object); extern Lisp_Object Ffontset_list (void); extern Lisp_Object Ffontset_list_all (void); extern Lisp_Object Fforce_mode_line_update (Lisp_Object); extern Lisp_Object Fforce_window_update (Lisp_Object); extern Lisp_Object Fformat (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fformat_message (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fformat_mode_line (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fformat_network_address (Lisp_Object, Lisp_Object); extern Lisp_Object Fformat_time_string (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fforward_char (Lisp_Object); extern Lisp_Object Fforward_comment (Lisp_Object); extern Lisp_Object Fforward_line (Lisp_Object); extern Lisp_Object Fforward_word (Lisp_Object); extern Lisp_Object Fframe__set_was_invisible (Lisp_Object, Lisp_Object); extern Lisp_Object Fframe_after_make_frame (Lisp_Object, Lisp_Object); extern Lisp_Object Fframe_ancestor_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fframe_char_height (Lisp_Object); extern Lisp_Object Fframe_char_width (Lisp_Object); extern Lisp_Object Fframe_child_frame_border_width (Lisp_Object); extern Lisp_Object Fframe_face_hash_table (Lisp_Object); extern Lisp_Object Fframe_first_window (Lisp_Object); extern Lisp_Object Fframe_focus (Lisp_Object); extern Lisp_Object Fframe_font_cache (Lisp_Object); extern Lisp_Object Fframe_internal_border_width (Lisp_Object); extern Lisp_Object Fframe_list (void); extern Lisp_Object Fframe_live_p (Lisp_Object); extern Lisp_Object Fframe_native_height (Lisp_Object); extern Lisp_Object Fframe_native_width (Lisp_Object); extern Lisp_Object Fframe_old_selected_window (Lisp_Object); extern Lisp_Object Fframe_or_buffer_changed_p (Lisp_Object); extern Lisp_Object Fframe_parameter (Lisp_Object, Lisp_Object); extern Lisp_Object Fframe_parameters (Lisp_Object); extern Lisp_Object Fframe_parent (Lisp_Object); extern Lisp_Object Fframe_pointer_visible_p (Lisp_Object); extern Lisp_Object Fframe_position (Lisp_Object); extern Lisp_Object Fframe_root_window (Lisp_Object); extern Lisp_Object Fframe_scale_factor (Lisp_Object); extern Lisp_Object Fframe_selected_window (Lisp_Object); extern Lisp_Object Fframe_terminal (Lisp_Object); extern Lisp_Object Fframe_text_cols (Lisp_Object); extern Lisp_Object Fframe_text_height (Lisp_Object); extern Lisp_Object Fframe_text_lines (Lisp_Object); extern Lisp_Object Fframe_text_width (Lisp_Object); extern Lisp_Object Fframe_total_cols (Lisp_Object); extern Lisp_Object Fframe_total_lines (Lisp_Object); extern Lisp_Object Fframe_visible_p (Lisp_Object); extern Lisp_Object Fframe_window_state_change (Lisp_Object); extern Lisp_Object Fframe_windows_min_size (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fframep (Lisp_Object); extern Lisp_Object Ffrexp (Lisp_Object); extern Lisp_Object Ffringe_bitmaps_at_pos (Lisp_Object, Lisp_Object); extern Lisp_Object Ffringe_width (Lisp_Object); extern Lisp_Object Ffround (Lisp_Object); extern Lisp_Object Ffset (Lisp_Object, Lisp_Object); extern Lisp_Object Fftruncate (Lisp_Object); extern Lisp_Object Ffunc_arity (Lisp_Object); extern Lisp_Object Ffuncall (ptrdiff_t, Lisp_Object *); extern Lisp_Object Ffuncall_interactively (ptrdiff_t, Lisp_Object *); extern Lisp_Object Ffuncall_with_delayed_message (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ffunction (Lisp_Object); extern Lisp_Object Ffunction_equal (Lisp_Object, Lisp_Object); extern Lisp_Object Ffunctionp (Lisp_Object); extern Lisp_Object Fgap_position (void); extern Lisp_Object Fgap_size (void); extern Lisp_Object Fgarbage_collect (void); extern Lisp_Object Fgarbage_collect_maybe (Lisp_Object); extern Lisp_Object Fgenerate_new_buffer_name (Lisp_Object, Lisp_Object); extern Lisp_Object Fgeq (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fget (Lisp_Object, Lisp_Object); extern Lisp_Object Fget_buffer (Lisp_Object); extern Lisp_Object Fget_buffer_create (Lisp_Object, Lisp_Object); extern Lisp_Object Fget_buffer_process (Lisp_Object); extern Lisp_Object Fget_buffer_window (Lisp_Object, Lisp_Object); extern Lisp_Object Fget_byte (Lisp_Object, Lisp_Object); extern Lisp_Object Fget_char_property (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fget_char_property_and_overlay (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fget_display_property (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fget_file_buffer (Lisp_Object); extern Lisp_Object Fget_file_char (void); extern Lisp_Object Fget_internal_run_time (void); extern Lisp_Object Fget_load_suffixes (void); extern Lisp_Object Fget_pos_property (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fget_process (Lisp_Object); extern Lisp_Object Fget_text_property (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fget_unicode_property_internal (Lisp_Object, Lisp_Object); extern Lisp_Object Fget_unused_category (Lisp_Object); extern Lisp_Object Fget_unused_iso_final_char (Lisp_Object, Lisp_Object); extern Lisp_Object Fget_variable_watchers (Lisp_Object); extern Lisp_Object Fgetenv_internal (Lisp_Object, Lisp_Object); extern Lisp_Object Fgethash (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fgnutls_asynchronous_parameters (Lisp_Object, Lisp_Object); extern Lisp_Object Fgnutls_available_p (void); extern Lisp_Object Fgnutls_boot (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fgnutls_bye (Lisp_Object, Lisp_Object); extern Lisp_Object Fgnutls_ciphers (void); extern Lisp_Object Fgnutls_deinit (Lisp_Object); extern Lisp_Object Fgnutls_digests (void); extern Lisp_Object Fgnutls_error_fatalp (Lisp_Object); extern Lisp_Object Fgnutls_error_string (Lisp_Object); extern Lisp_Object Fgnutls_errorp (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fgnutls_format_certificate (Lisp_Object); extern Lisp_Object Fgnutls_get_initstage (Lisp_Object); extern Lisp_Object Fgnutls_hash_digest (Lisp_Object, Lisp_Object); extern Lisp_Object Fgnutls_hash_mac (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fgnutls_macs (void); extern Lisp_Object Fgnutls_peer_status (Lisp_Object); extern Lisp_Object Fgnutls_peer_status_warning_describe (Lisp_Object); extern Lisp_Object Fgnutls_symmetric_decrypt (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fgnutls_symmetric_encrypt (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fgoto_char (Lisp_Object); extern Lisp_Object Fgpm_mouse_start (void); extern Lisp_Object Fgpm_mouse_stop (void); extern Lisp_Object Fgroup_gid (void); extern Lisp_Object Fgroup_name (Lisp_Object); extern Lisp_Object Fgroup_real_gid (void); extern Lisp_Object Fgtr (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fhandle_save_session (Lisp_Object); extern Lisp_Object Fhandle_switch_frame (Lisp_Object); extern Lisp_Object Fhash_table_count (Lisp_Object); extern Lisp_Object Fhash_table_p (Lisp_Object); extern Lisp_Object Fhash_table_rehash_size (Lisp_Object); extern Lisp_Object Fhash_table_rehash_threshold (Lisp_Object); extern Lisp_Object Fhash_table_size (Lisp_Object); extern Lisp_Object Fhash_table_test (Lisp_Object); extern Lisp_Object Fhash_table_weakness (Lisp_Object); extern Lisp_Object Fhelp__describe_vector (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ficonify_frame (Lisp_Object); extern Lisp_Object Fidentity (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fif (Lisp_Object); extern Lisp_Object Fimage_cache_size (void); extern Lisp_Object Fimage_flush (Lisp_Object, Lisp_Object); extern Lisp_Object Fimage_mask_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fimage_metadata (Lisp_Object, Lisp_Object); extern Lisp_Object Fimage_size (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fimage_transforms_p (Lisp_Object); extern Lisp_Object Fimagemagick_types (void); extern Lisp_Object Fimagep (Lisp_Object); extern Lisp_Object Findent_to (Lisp_Object, Lisp_Object); extern Lisp_Object Findirect_function (Lisp_Object, Lisp_Object); extern Lisp_Object Findirect_variable (Lisp_Object); extern Lisp_Object Finit_image_library (Lisp_Object); extern Lisp_Object Finnermost_minibuffer_p (Lisp_Object); extern Lisp_Object Finotify_add_watch (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finotify_allocated_p (void); extern Lisp_Object Finotify_rm_watch (Lisp_Object); extern Lisp_Object Finotify_valid_p (Lisp_Object); extern Lisp_Object Finotify_watch_list (void); extern Lisp_Object Finput_pending_p (Lisp_Object); extern Lisp_Object Finsert (ptrdiff_t, Lisp_Object *); extern Lisp_Object Finsert_and_inherit (ptrdiff_t, Lisp_Object *); extern Lisp_Object Finsert_and_inherit_before_markers (ptrdiff_t, Lisp_Object *); extern Lisp_Object Finsert_before_markers (ptrdiff_t, Lisp_Object *); extern Lisp_Object Finsert_buffer_substring (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finsert_byte (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finsert_char (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finsert_file_contents (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finteger_or_marker_p (Lisp_Object); extern Lisp_Object Fintegerp (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Finteractive (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Finteractive_form (Lisp_Object); extern Lisp_Object Fintern (Lisp_Object, Lisp_Object); extern Lisp_Object Fintern_soft (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal__define_uninitialized_variable (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal__set_buffer_modified_tick (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_char_font (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_complete_buffer (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_copy_lisp_face (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_decode_string_utf_8 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_default_interrupt_process (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_default_process_filter (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_default_process_sentinel (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_default_signal_process (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_describe_syntax_value (Lisp_Object); extern Lisp_Object Finternal_encode_string_utf_8 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_face_x_get_resource (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_get_lisp_face_attribute (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_handle_focus_in (Lisp_Object); extern Lisp_Object Finternal_lisp_face_attribute_values (Lisp_Object); extern Lisp_Object Finternal_lisp_face_empty_p (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_lisp_face_equal_p (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_lisp_face_p (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_make_lisp_face (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_merge_in_global_face (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_set_alternative_font_family_alist (Lisp_Object); extern Lisp_Object Finternal_set_alternative_font_registry_alist (Lisp_Object); extern Lisp_Object Finternal_set_font_selection_order (Lisp_Object); extern Lisp_Object Finternal_set_lisp_face_attribute (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_set_lisp_face_attribute_from_resource (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_show_cursor (Lisp_Object, Lisp_Object); extern Lisp_Object Finternal_show_cursor_p (Lisp_Object); extern Lisp_Object Finternal_stack_stats (void); extern Lisp_Object Finternal_track_mouse (Lisp_Object); extern Lisp_Object Finterrupt_process (Lisp_Object, Lisp_Object); extern Lisp_Object Finvisible_p (Lisp_Object); extern Lisp_Object Finvocation_directory (void); extern Lisp_Object Finvocation_name (void); extern Lisp_Object Fisnan (Lisp_Object); extern Lisp_Object Fiso_charset (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fjson_insert (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fjson_parse_buffer (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fjson_parse_string (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fjson_serialize (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fkey_binding (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fkey_description (Lisp_Object, Lisp_Object); extern Lisp_Object Fkeyboard_coding_system (Lisp_Object); extern Lisp_Object Fkeymap__get_keyelt (Lisp_Object, Lisp_Object); extern Lisp_Object Fkeymap_parent (Lisp_Object); extern Lisp_Object Fkeymap_prompt (Lisp_Object); extern Lisp_Object Fkeymapp (Lisp_Object); extern Lisp_Object Fkeywordp (Lisp_Object); extern Lisp_Object Fkill_all_local_variables (Lisp_Object); extern Lisp_Object Fkill_buffer (Lisp_Object); _Noreturn extern Lisp_Object Fkill_emacs (Lisp_Object, Lisp_Object) __attribute__ ((__cold__)); extern Lisp_Object Fkill_local_variable (Lisp_Object); extern Lisp_Object Fkill_process (Lisp_Object, Lisp_Object); extern Lisp_Object Flast_nonminibuf_frame (void); extern Lisp_Object Flax_plist_get (Lisp_Object, Lisp_Object); extern Lisp_Object Flax_plist_put (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flcms2_available_p (void); extern Lisp_Object Flcms_cam02_ucs (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flcms_cie_de2000 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flcms_jab_to_jch (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flcms_jch_to_jab (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flcms_jch_to_xyz (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flcms_temp_to_white_point (Lisp_Object); extern Lisp_Object Flcms_xyz_to_jch (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fldexp (Lisp_Object, Lisp_Object); extern Lisp_Object Flength (Lisp_Object); extern Lisp_Object Flength_equal (Lisp_Object, Lisp_Object); extern Lisp_Object Flength_greater (Lisp_Object, Lisp_Object); extern Lisp_Object Flength_less (Lisp_Object, Lisp_Object); extern Lisp_Object Fleq (ptrdiff_t, Lisp_Object *); extern Lisp_Object Flet (Lisp_Object); extern Lisp_Object FletX (Lisp_Object); extern Lisp_Object Flibxml_available_p (void); extern Lisp_Object Flibxml_parse_html_region (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flibxml_parse_xml_region (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fline_beginning_position (Lisp_Object); extern Lisp_Object Fline_end_position (Lisp_Object); extern Lisp_Object Fline_number_at_pos (Lisp_Object, Lisp_Object); extern Lisp_Object Fline_number_display_width (Lisp_Object); extern Lisp_Object Fline_pixel_height (void); extern Lisp_Object Flist (ptrdiff_t, Lisp_Object *); extern Lisp_Object Flist_fonts (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flist_system_processes (void); extern Lisp_Object Flistp (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fload (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fload_average (Lisp_Object); extern Lisp_Object Flocal_variable_if_set_p (Lisp_Object, Lisp_Object); extern Lisp_Object Flocal_variable_p (Lisp_Object, Lisp_Object); extern Lisp_Object Flocale_info (Lisp_Object); extern Lisp_Object Flocate_file_internal (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flock_buffer (Lisp_Object); extern Lisp_Object Flock_file (Lisp_Object); extern Lisp_Object Flog (Lisp_Object, Lisp_Object); extern Lisp_Object Flogand (ptrdiff_t, Lisp_Object *); extern Lisp_Object Flogb (Lisp_Object); extern Lisp_Object Flogcount (Lisp_Object); extern Lisp_Object Flogior (ptrdiff_t, Lisp_Object *); extern Lisp_Object Flognot (Lisp_Object); extern Lisp_Object Flogxor (ptrdiff_t, Lisp_Object *); extern Lisp_Object Flooking_at (Lisp_Object, Lisp_Object); extern Lisp_Object Flookup_image (Lisp_Object); extern Lisp_Object Flookup_image_map (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flookup_key (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flossage_size (Lisp_Object); extern Lisp_Object Flower_frame (Lisp_Object); extern Lisp_Object Flread__substitute_object_in_subtree (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Flss (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmacroexpand (Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_bool_vector (Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_byte_code (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmake_category_set (Lisp_Object); extern Lisp_Object Fmake_category_table (void); extern Lisp_Object Fmake_char (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_char_table (Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_closure (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmake_condition_variable (Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_directory_internal (Lisp_Object); extern Lisp_Object Fmake_finalizer (Lisp_Object); extern Lisp_Object Fmake_frame_invisible (Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_frame_visible (Lisp_Object); extern Lisp_Object Fmake_hash_table (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmake_indirect_buffer (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_keymap (Lisp_Object); extern Lisp_Object Fmake_list (Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_local_variable (Lisp_Object); extern Lisp_Object Fmake_marker (void); extern Lisp_Object Fmake_mutex (Lisp_Object); extern Lisp_Object Fmake_network_process (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmake_overlay (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_pipe_process (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmake_process (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmake_record (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_serial_process (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmake_sparse_keymap (Lisp_Object); extern Lisp_Object Fmake_string (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_symbol (Lisp_Object); extern Lisp_Object Fmake_symbolic_link (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_temp_file_internal (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_temp_name (Lisp_Object); extern Lisp_Object Fmake_terminal_frame (Lisp_Object); extern Lisp_Object Fmake_thread (Lisp_Object, Lisp_Object); extern Lisp_Object Fmake_var_non_special (Lisp_Object); extern Lisp_Object Fmake_variable_buffer_local (Lisp_Object); extern Lisp_Object Fmake_vector (Lisp_Object, Lisp_Object); extern Lisp_Object Fmakunbound (Lisp_Object); extern Lisp_Object Fmalloc_info (void); extern Lisp_Object Fmalloc_trim (Lisp_Object); extern Lisp_Object Fmap_char_table (Lisp_Object, Lisp_Object); extern Lisp_Object Fmap_charset_chars (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmap_keymap (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmap_keymap_internal (Lisp_Object, Lisp_Object); extern Lisp_Object Fmapatoms (Lisp_Object, Lisp_Object); extern Lisp_Object Fmapbacktrace (Lisp_Object, Lisp_Object); extern Lisp_Object Fmapc (Lisp_Object, Lisp_Object); extern Lisp_Object Fmapcan (Lisp_Object, Lisp_Object); extern Lisp_Object Fmapcar (Lisp_Object, Lisp_Object); extern Lisp_Object Fmapconcat (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmaphash (Lisp_Object, Lisp_Object); extern Lisp_Object Fmark_marker (void); extern Lisp_Object Fmarker_buffer (Lisp_Object); extern Lisp_Object Fmarker_insertion_type (Lisp_Object); extern Lisp_Object Fmarker_position (Lisp_Object); extern Lisp_Object Fmarkerp (Lisp_Object); extern Lisp_Object Fmatch_beginning (Lisp_Object); extern Lisp_Object Fmatch_data (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmatch_data__translate (Lisp_Object); extern Lisp_Object Fmatch_end (Lisp_Object); extern Lisp_Object Fmatching_paren (Lisp_Object); extern Lisp_Object Fmax (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmax_char (void) __attribute__ ((__const__)); extern Lisp_Object Fmd5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmember (Lisp_Object, Lisp_Object); extern Lisp_Object Fmemory_info (void); extern Lisp_Object Fmemory_use_counts (void); extern Lisp_Object Fmemq (Lisp_Object, Lisp_Object); extern Lisp_Object Fmemql (Lisp_Object, Lisp_Object); extern Lisp_Object Fmenu_bar_menu_at_x_y (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmenu_or_popup_active_p (void); extern Lisp_Object Fmerge_face_attribute (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmessage (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmessage_box (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmessage_or_box (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmin (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fminibuffer_contents (void); extern Lisp_Object Fminibuffer_contents_no_properties (void); extern Lisp_Object Fminibuffer_depth (void); extern Lisp_Object Fminibuffer_innermost_command_loop_p (Lisp_Object); extern Lisp_Object Fminibuffer_prompt (void); extern Lisp_Object Fminibuffer_prompt_end (void); extern Lisp_Object Fminibuffer_selected_window (void); extern Lisp_Object Fminibuffer_window (Lisp_Object); extern Lisp_Object Fminibufferp (Lisp_Object, Lisp_Object); extern Lisp_Object Fminor_mode_key_binding (Lisp_Object, Lisp_Object); extern Lisp_Object Fminus (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fmod (Lisp_Object, Lisp_Object); extern Lisp_Object Fmodify_category_entry (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmodify_frame_parameters (Lisp_Object, Lisp_Object); extern Lisp_Object Fmodify_syntax_entry (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmodule_function_p (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fmodule_load (Lisp_Object); extern Lisp_Object Fmouse_pixel_position (void); extern Lisp_Object Fmouse_position (void); extern Lisp_Object Fmove_overlay (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fmove_point_visually (Lisp_Object); extern Lisp_Object Fmove_to_column (Lisp_Object, Lisp_Object); extern Lisp_Object Fmove_to_window_line (Lisp_Object); extern Lisp_Object Fmultibyte_char_to_unibyte (Lisp_Object); extern Lisp_Object Fmultibyte_string_p (Lisp_Object); extern Lisp_Object Fmutex_lock (Lisp_Object); extern Lisp_Object Fmutex_name (Lisp_Object); extern Lisp_Object Fmutex_unlock (Lisp_Object); extern Lisp_Object Fmutexp (Lisp_Object); extern Lisp_Object Fnarrow_to_region (Lisp_Object, Lisp_Object); extern Lisp_Object Fnative_comp_available_p (void); extern Lisp_Object Fnative_comp_unit_file (Lisp_Object); extern Lisp_Object Fnative_comp_unit_set_file (Lisp_Object, Lisp_Object); extern Lisp_Object Fnative_elisp_load (Lisp_Object, Lisp_Object); extern Lisp_Object Fnatnump (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fnconc (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fneq (Lisp_Object, Lisp_Object); extern Lisp_Object Fnetwork_interface_info (Lisp_Object); extern Lisp_Object Fnetwork_interface_list (Lisp_Object, Lisp_Object); extern Lisp_Object Fnetwork_lookup_address_info (Lisp_Object, Lisp_Object); extern Lisp_Object Fnew_fontset (Lisp_Object, Lisp_Object); extern Lisp_Object Fnewline_cache_check (Lisp_Object); extern Lisp_Object Fnext_char_property_change (Lisp_Object, Lisp_Object); extern Lisp_Object Fnext_frame (Lisp_Object, Lisp_Object); extern Lisp_Object Fnext_overlay_change (Lisp_Object); extern Lisp_Object Fnext_property_change (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fnext_read_file_uses_dialog_p (void); extern Lisp_Object Fnext_single_char_property_change (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fnext_single_property_change (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fnext_window (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fngettext (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fnlistp (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fnreverse (Lisp_Object); extern Lisp_Object Fnth (Lisp_Object, Lisp_Object); extern Lisp_Object Fnthcdr (Lisp_Object, Lisp_Object); extern Lisp_Object Fnull (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fnum_processors (Lisp_Object); extern Lisp_Object Fnumber_or_marker_p (Lisp_Object); extern Lisp_Object Fnumber_to_string (Lisp_Object); extern Lisp_Object Fnumberp (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fobject_intervals (Lisp_Object); extern Lisp_Object Fold_selected_frame (void); extern Lisp_Object Fold_selected_window (void); extern Lisp_Object Fopen_dribble_file (Lisp_Object); extern Lisp_Object Fopen_font (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fopen_termscript (Lisp_Object); extern Lisp_Object Foptimize_char_table (Lisp_Object, Lisp_Object); extern Lisp_Object For (Lisp_Object); extern Lisp_Object Fother_buffer (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fother_window_for_scrolling (void); extern Lisp_Object Foverlay_buffer (Lisp_Object); extern Lisp_Object Foverlay_end (Lisp_Object); extern Lisp_Object Foverlay_get (Lisp_Object, Lisp_Object); extern Lisp_Object Foverlay_lists (void); extern Lisp_Object Foverlay_properties (Lisp_Object); extern Lisp_Object Foverlay_put (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Foverlay_recenter (Lisp_Object); extern Lisp_Object Foverlay_start (Lisp_Object); extern Lisp_Object Foverlayp (Lisp_Object); extern Lisp_Object Foverlays_at (Lisp_Object, Lisp_Object); extern Lisp_Object Foverlays_in (Lisp_Object, Lisp_Object); extern Lisp_Object Fparse_partial_sexp (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fpdumper_stats (void); extern Lisp_Object Fplay_sound_internal (Lisp_Object); extern Lisp_Object Fplist_get (Lisp_Object, Lisp_Object); extern Lisp_Object Fplist_member (Lisp_Object, Lisp_Object); extern Lisp_Object Fplist_put (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fplus (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fpoint (void); extern Lisp_Object Fpoint_marker (void); extern Lisp_Object Fpoint_max (void); extern Lisp_Object Fpoint_max_marker (void); extern Lisp_Object Fpoint_min (void); extern Lisp_Object Fpoint_min_marker (void); extern Lisp_Object Fpos_visible_in_window_p (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fposition_bytes (Lisp_Object); extern Lisp_Object Fposition_symbol (Lisp_Object, Lisp_Object); extern Lisp_Object Fposix_looking_at (Lisp_Object, Lisp_Object); extern Lisp_Object Fposix_search_backward (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fposix_search_forward (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fposix_string_match (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fposn_at_point (Lisp_Object, Lisp_Object); extern Lisp_Object Fposn_at_x_y (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fprefix_numeric_value (Lisp_Object); extern Lisp_Object Fprevious_char (void); extern Lisp_Object Fprevious_char_property_change (Lisp_Object, Lisp_Object); extern Lisp_Object Fprevious_frame (Lisp_Object, Lisp_Object); extern Lisp_Object Fprevious_overlay_change (Lisp_Object); extern Lisp_Object Fprevious_property_change (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fprevious_single_char_property_change (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fprevious_single_property_change (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fprevious_window (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fprin1 (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fprin1_to_string (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fprinc (Lisp_Object, Lisp_Object); extern Lisp_Object Fprint (Lisp_Object, Lisp_Object); extern Lisp_Object Fprint_preprocess (Lisp_Object); extern Lisp_Object Fprocess_attributes (Lisp_Object); extern Lisp_Object Fprocess_buffer (Lisp_Object); extern Lisp_Object Fprocess_coding_system (Lisp_Object); extern Lisp_Object Fprocess_command (Lisp_Object); extern Lisp_Object Fprocess_connection (Lisp_Object); extern Lisp_Object Fprocess_contact (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fprocess_datagram_address (Lisp_Object); extern Lisp_Object Fprocess_exit_status (Lisp_Object); extern Lisp_Object Fprocess_filter (Lisp_Object); extern Lisp_Object Fprocess_filter_multibyte_p (Lisp_Object); extern Lisp_Object Fprocess_id (Lisp_Object); extern Lisp_Object Fprocess_inherit_coding_system_flag (Lisp_Object); extern Lisp_Object Fprocess_list (void); extern Lisp_Object Fprocess_mark (Lisp_Object); extern Lisp_Object Fprocess_name (Lisp_Object); extern Lisp_Object Fprocess_plist (Lisp_Object); extern Lisp_Object Fprocess_query_on_exit_flag (Lisp_Object); extern Lisp_Object Fprocess_running_child_p (Lisp_Object); extern Lisp_Object Fprocess_send_eof (Lisp_Object); extern Lisp_Object Fprocess_send_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fprocess_send_string (Lisp_Object, Lisp_Object); extern Lisp_Object Fprocess_sentinel (Lisp_Object); extern Lisp_Object Fprocess_status (Lisp_Object); extern Lisp_Object Fprocess_thread (Lisp_Object); extern Lisp_Object Fprocess_tty_name (Lisp_Object); extern Lisp_Object Fprocess_type (Lisp_Object); extern Lisp_Object Fprocessp (Lisp_Object); extern Lisp_Object Fprofiler_cpu_log (void); extern Lisp_Object Fprofiler_cpu_running_p (void); extern Lisp_Object Fprofiler_cpu_start (Lisp_Object); extern Lisp_Object Fprofiler_cpu_stop (void); extern Lisp_Object Fprofiler_memory_log (void); extern Lisp_Object Fprofiler_memory_running_p (void); extern Lisp_Object Fprofiler_memory_start (void); extern Lisp_Object Fprofiler_memory_stop (void); extern Lisp_Object Fprog1 (Lisp_Object); extern Lisp_Object Fprogn (Lisp_Object); extern Lisp_Object Fproper_list_p (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fpropertize (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fprovide (Lisp_Object, Lisp_Object); extern Lisp_Object Fpurecopy (Lisp_Object); extern Lisp_Object Fput (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fput_text_property (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fput_unicode_property_internal (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fputhash (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fquery_font (Lisp_Object); extern Lisp_Object Fquery_fontset (Lisp_Object, Lisp_Object); extern Lisp_Object Fquit_process (Lisp_Object, Lisp_Object); extern Lisp_Object Fquo (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fquote (Lisp_Object); extern Lisp_Object Fraise_frame (Lisp_Object); extern Lisp_Object Frandom (Lisp_Object); extern Lisp_Object Frassoc (Lisp_Object, Lisp_Object); extern Lisp_Object Frassq (Lisp_Object, Lisp_Object); extern Lisp_Object Fre_search_backward (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fre_search_forward (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread (Lisp_Object); extern Lisp_Object Fread_buffer (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread_char (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread_char_exclusive (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread_coding_system (Lisp_Object, Lisp_Object); extern Lisp_Object Fread_command (Lisp_Object, Lisp_Object); extern Lisp_Object Fread_event (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread_from_minibuffer (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread_from_string (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread_function (Lisp_Object); extern Lisp_Object Fread_key_sequence (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread_key_sequence_vector (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread_non_nil_coding_system (Lisp_Object); extern Lisp_Object Fread_positioning_symbols (Lisp_Object); extern Lisp_Object Fread_string (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fread_variable (Lisp_Object, Lisp_Object); extern Lisp_Object Frecent_auto_save_p (void); extern Lisp_Object Frecent_keys (Lisp_Object); extern Lisp_Object Frecenter (Lisp_Object, Lisp_Object); extern Lisp_Object Frecord (ptrdiff_t, Lisp_Object *); extern Lisp_Object Frecordp (Lisp_Object); extern Lisp_Object Frecursion_depth (void); extern Lisp_Object Frecursive_edit (void); extern Lisp_Object Fredirect_debugging_output (Lisp_Object, Lisp_Object); extern Lisp_Object Fredirect_frame_focus (Lisp_Object, Lisp_Object); extern Lisp_Object Fredisplay (Lisp_Object); extern Lisp_Object Fredraw_display (void); extern Lisp_Object Fredraw_frame (Lisp_Object); extern Lisp_Object Fregexp_quote (Lisp_Object); extern Lisp_Object Fregion_beginning (void); extern Lisp_Object Fregion_end (void); extern Lisp_Object Fregister_ccl_program (Lisp_Object, Lisp_Object); extern Lisp_Object Fregister_code_conversion_map (Lisp_Object, Lisp_Object); extern Lisp_Object Frem (Lisp_Object, Lisp_Object); extern Lisp_Object Fremhash (Lisp_Object, Lisp_Object); extern Lisp_Object Fremove_list_of_text_properties (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fremove_pos_from_symbol (Lisp_Object); extern Lisp_Object Fremove_text_properties (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fremove_variable_watcher (Lisp_Object, Lisp_Object); extern Lisp_Object Frename_buffer (Lisp_Object, Lisp_Object); extern Lisp_Object Frename_file (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Freplace_buffer_contents (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Freplace_match (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Frequire (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fresize_mini_window_internal (Lisp_Object); extern Lisp_Object Frestore_buffer_modified_p (Lisp_Object); extern Lisp_Object Fresume_tty (Lisp_Object); extern Lisp_Object Freverse (Lisp_Object); extern Lisp_Object Fright_divider_width (Lisp_Object); extern Lisp_Object Fround (Lisp_Object, Lisp_Object); extern Lisp_Object Frun_hook_with_args (ptrdiff_t, Lisp_Object *); extern Lisp_Object Frun_hook_with_args_until_failure (ptrdiff_t, Lisp_Object *); extern Lisp_Object Frun_hook_with_args_until_success (ptrdiff_t, Lisp_Object *); extern Lisp_Object Frun_hook_wrapped (ptrdiff_t, Lisp_Object *); extern Lisp_Object Frun_hooks (ptrdiff_t, Lisp_Object *); extern Lisp_Object Frun_window_configuration_change_hook (Lisp_Object); extern Lisp_Object Frun_window_scroll_functions (Lisp_Object); extern Lisp_Object Fsafe_length (Lisp_Object); extern Lisp_Object Fsave_current_buffer (Lisp_Object); extern Lisp_Object Fsave_excursion (Lisp_Object); extern Lisp_Object Fsave_restriction (Lisp_Object); extern Lisp_Object Fscan_lists (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fscan_sexps (Lisp_Object, Lisp_Object); extern Lisp_Object Fscroll_bar_height (Lisp_Object); extern Lisp_Object Fscroll_bar_width (Lisp_Object); extern Lisp_Object Fscroll_down (Lisp_Object); extern Lisp_Object Fscroll_left (Lisp_Object, Lisp_Object); extern Lisp_Object Fscroll_right (Lisp_Object, Lisp_Object); extern Lisp_Object Fscroll_up (Lisp_Object); extern Lisp_Object Fsearch_backward (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsearch_forward (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsecure_hash (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsecure_hash_algorithms (void); extern Lisp_Object Fselect_frame (Lisp_Object, Lisp_Object); extern Lisp_Object Fselect_window (Lisp_Object, Lisp_Object); extern Lisp_Object Fselected_frame (void); extern Lisp_Object Fselected_window (void); extern Lisp_Object Fself_insert_command (Lisp_Object, Lisp_Object); extern Lisp_Object Fsend_string_to_terminal (Lisp_Object, Lisp_Object); extern Lisp_Object Fsequencep (Lisp_Object); extern Lisp_Object Fserial_process_configure (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fset (Lisp_Object, Lisp_Object); extern Lisp_Object Fset__this_command_keys (Lisp_Object); extern Lisp_Object Fset_binary_mode (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_buffer (Lisp_Object); extern Lisp_Object Fset_buffer_auto_saved (void); extern Lisp_Object Fset_buffer_major_mode (Lisp_Object); extern Lisp_Object Fset_buffer_modified_p (Lisp_Object); extern Lisp_Object Fset_buffer_multibyte (Lisp_Object); extern Lisp_Object Fset_buffer_redisplay (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_case_table (Lisp_Object); extern Lisp_Object Fset_category_table (Lisp_Object); extern Lisp_Object Fset_char_table_extra_slot (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_char_table_parent (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_char_table_range (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_charset_plist (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_charset_priority (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fset_coding_system_priority (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fset_default (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_default_file_modes (Lisp_Object); extern Lisp_Object Fset_default_toplevel_value (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_file_acl (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_file_modes (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_file_selinux_context (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_file_times (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_fontset_font (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_frame_height (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_frame_position (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_frame_selected_window (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_frame_size (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_frame_width (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_frame_window_state_change (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_fringe_bitmap_face (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_input_interrupt_mode (Lisp_Object); extern Lisp_Object Fset_input_meta_mode (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_input_mode (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_keyboard_coding_system_internal (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_keymap_parent (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_marker (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_marker_insertion_type (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_match_data (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_minibuffer_window (Lisp_Object); extern Lisp_Object Fset_mouse_pixel_position (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_mouse_position (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_network_process_option (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_output_flow_control (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_buffer (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_coding_system (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_datagram_address (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_filter (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_filter_multibyte (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_inherit_coding_system_flag (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_plist (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_query_on_exit_flag (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_sentinel (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_thread (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_process_window_size (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_quit_char (Lisp_Object); extern Lisp_Object Fset_safe_terminal_coding_system_internal (Lisp_Object); extern Lisp_Object Fset_standard_case_table (Lisp_Object); extern Lisp_Object Fset_syntax_table (Lisp_Object); extern Lisp_Object Fset_terminal_coding_system_internal (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_terminal_parameter (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_text_properties (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_time_zone_rule (Lisp_Object); extern Lisp_Object Fset_visited_file_modtime (Lisp_Object); extern Lisp_Object Fset_window_buffer (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_combination_limit (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_configuration (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_dedicated_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_display_table (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_fringes (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_hscroll (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_margins (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_new_normal (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_new_pixel (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_new_total (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_next_buffers (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_parameter (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_point (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_prev_buffers (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_redisplay_end_trigger (Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_scroll_bars (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_start (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fset_window_vscroll (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsetcar (Lisp_Object, Lisp_Object); extern Lisp_Object Fsetcdr (Lisp_Object, Lisp_Object); extern Lisp_Object Fsetplist (Lisp_Object, Lisp_Object); extern Lisp_Object Fsetq (Lisp_Object); extern Lisp_Object Fshow_face_resources (void); _Noreturn extern Lisp_Object Fsignal (Lisp_Object, Lisp_Object) __attribute__ ((__cold__)); extern Lisp_Object Fsignal_process (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsin (Lisp_Object); extern Lisp_Object Fsingle_key_description (Lisp_Object, Lisp_Object); extern Lisp_Object Fskip_chars_backward (Lisp_Object, Lisp_Object); extern Lisp_Object Fskip_chars_forward (Lisp_Object, Lisp_Object); extern Lisp_Object Fskip_syntax_backward (Lisp_Object, Lisp_Object); extern Lisp_Object Fskip_syntax_forward (Lisp_Object, Lisp_Object); extern Lisp_Object Fsleep_for (Lisp_Object, Lisp_Object); extern Lisp_Object Fsnarf_documentation (Lisp_Object); extern Lisp_Object Fsort (Lisp_Object, Lisp_Object); extern Lisp_Object Fsort_charsets (Lisp_Object); extern Lisp_Object Fspecial_variable_p (Lisp_Object); extern Lisp_Object Fsplit_char (Lisp_Object); extern Lisp_Object Fsplit_window_internal (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsqlite_available_p (void); extern Lisp_Object Fsqlite_close (Lisp_Object); extern Lisp_Object Fsqlite_columns (Lisp_Object); extern Lisp_Object Fsqlite_commit (Lisp_Object); extern Lisp_Object Fsqlite_execute (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsqlite_finalize (Lisp_Object); extern Lisp_Object Fsqlite_load_extension (Lisp_Object, Lisp_Object); extern Lisp_Object Fsqlite_more_p (Lisp_Object); extern Lisp_Object Fsqlite_next (Lisp_Object); extern Lisp_Object Fsqlite_open (Lisp_Object); extern Lisp_Object Fsqlite_pragma (Lisp_Object, Lisp_Object); extern Lisp_Object Fsqlite_rollback (Lisp_Object); extern Lisp_Object Fsqlite_select (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsqlite_transaction (Lisp_Object); extern Lisp_Object Fsqlitep (Lisp_Object); extern Lisp_Object Fsqrt (Lisp_Object); extern Lisp_Object Fstandard_case_table (void); extern Lisp_Object Fstandard_category_table (void); extern Lisp_Object Fstandard_syntax_table (void); extern Lisp_Object Fstart_kbd_macro (Lisp_Object, Lisp_Object); extern Lisp_Object Fstop_process (Lisp_Object, Lisp_Object); extern Lisp_Object Fstore_kbd_macro_event (Lisp_Object); extern Lisp_Object Fstring (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fstring_as_multibyte (Lisp_Object); extern Lisp_Object Fstring_as_unibyte (Lisp_Object); extern Lisp_Object Fstring_bytes (Lisp_Object); extern Lisp_Object Fstring_collate_equalp (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fstring_collate_lessp (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fstring_distance (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fstring_equal (Lisp_Object, Lisp_Object); extern Lisp_Object Fstring_lessp (Lisp_Object, Lisp_Object); extern Lisp_Object Fstring_make_multibyte (Lisp_Object); extern Lisp_Object Fstring_make_unibyte (Lisp_Object); extern Lisp_Object Fstring_match (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fstring_search (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fstring_to_char (Lisp_Object); extern Lisp_Object Fstring_to_multibyte (Lisp_Object); extern Lisp_Object Fstring_to_number (Lisp_Object, Lisp_Object); extern Lisp_Object Fstring_to_syntax (Lisp_Object); extern Lisp_Object Fstring_to_unibyte (Lisp_Object); extern Lisp_Object Fstring_version_lessp (Lisp_Object, Lisp_Object); extern Lisp_Object Fstring_width (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fstringp (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fsub1 (Lisp_Object); extern Lisp_Object Fsubr_arity (Lisp_Object); extern Lisp_Object Fsubr_name (Lisp_Object); extern Lisp_Object Fsubr_native_comp_unit (Lisp_Object); extern Lisp_Object Fsubr_native_elisp_p (Lisp_Object); extern Lisp_Object Fsubr_native_lambda_list (Lisp_Object); extern Lisp_Object Fsubr_type (Lisp_Object); extern Lisp_Object Fsubrp (Lisp_Object); extern Lisp_Object Fsubst_char_in_region (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsubstitute_in_file_name (Lisp_Object); extern Lisp_Object Fsubstring (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsubstring_no_properties (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fsuspend_emacs (Lisp_Object); extern Lisp_Object Fsuspend_tty (Lisp_Object); extern Lisp_Object Fsuspicious_object (Lisp_Object); extern Lisp_Object Fsxhash_eq (Lisp_Object); extern Lisp_Object Fsxhash_eql (Lisp_Object); extern Lisp_Object Fsxhash_equal (Lisp_Object); extern Lisp_Object Fsxhash_equal_including_properties (Lisp_Object); extern Lisp_Object Fsymbol_function (Lisp_Object); extern Lisp_Object Fsymbol_name (Lisp_Object); extern Lisp_Object Fsymbol_plist (Lisp_Object); extern Lisp_Object Fsymbol_value (Lisp_Object); extern Lisp_Object Fsymbol_with_pos_p (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fsymbol_with_pos_pos (Lisp_Object); extern Lisp_Object Fsymbolp (Lisp_Object) __attribute__ ((__const__)); extern Lisp_Object Fsyntax_class_to_char (Lisp_Object); extern Lisp_Object Fsyntax_table (void); extern Lisp_Object Fsyntax_table_p (Lisp_Object); extern Lisp_Object Fsystem_groups (void); extern Lisp_Object Fsystem_name (void); extern Lisp_Object Fsystem_users (void); extern Lisp_Object Ftab_bar_height (Lisp_Object, Lisp_Object); extern Lisp_Object Ftan (Lisp_Object); extern Lisp_Object Fterminal_coding_system (Lisp_Object); extern Lisp_Object Fterminal_list (void); extern Lisp_Object Fterminal_live_p (Lisp_Object); extern Lisp_Object Fterminal_name (Lisp_Object); extern Lisp_Object Fterminal_parameter (Lisp_Object, Lisp_Object); extern Lisp_Object Fterminal_parameters (Lisp_Object); extern Lisp_Object Fterpri (Lisp_Object, Lisp_Object); extern Lisp_Object Ftest_completion (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ftext_char_description (Lisp_Object); extern Lisp_Object Ftext_properties_at (Lisp_Object, Lisp_Object); extern Lisp_Object Ftext_property_any (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ftext_property_not_all (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ftext_quoting_style (void); extern Lisp_Object Fthis_command_keys (void); extern Lisp_Object Fthis_command_keys_vector (void); extern Lisp_Object Fthis_single_command_keys (void); extern Lisp_Object Fthis_single_command_raw_keys (void); extern Lisp_Object Fthread_blocker (Lisp_Object); extern Lisp_Object Fthread_join (Lisp_Object); extern Lisp_Object Fthread_last_error (Lisp_Object); extern Lisp_Object Fthread_live_p (Lisp_Object); extern Lisp_Object Fthread_name (Lisp_Object); extern Lisp_Object Fthread_signal (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fthread_yield (void); extern Lisp_Object Fthreadp (Lisp_Object); _Noreturn extern Lisp_Object Fthrow (Lisp_Object, Lisp_Object) __attribute__ ((__cold__)); extern Lisp_Object Ftime_add (Lisp_Object, Lisp_Object); extern Lisp_Object Ftime_convert (Lisp_Object, Lisp_Object); extern Lisp_Object Ftime_equal_p (Lisp_Object, Lisp_Object); extern Lisp_Object Ftime_less_p (Lisp_Object, Lisp_Object); extern Lisp_Object Ftime_subtract (Lisp_Object, Lisp_Object); extern Lisp_Object Ftimes (ptrdiff_t, Lisp_Object *); extern Lisp_Object Ftool_bar_get_system_style (void); extern Lisp_Object Ftool_bar_height (Lisp_Object, Lisp_Object); extern Lisp_Object Ftool_bar_pixel_width (Lisp_Object); _Noreturn extern Lisp_Object Ftop_level (void) __attribute__ ((__cold__)); extern Lisp_Object Ftrace_redisplay (Lisp_Object); extern Lisp_Object Ftrace_to_stderr (ptrdiff_t, Lisp_Object *); extern Lisp_Object Ftranslate_region_internal (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ftranspose_regions (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ftruncate (Lisp_Object, Lisp_Object); extern Lisp_Object Ftry_completion (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Ftty_display_color_cells (Lisp_Object); extern Lisp_Object Ftty_display_color_p (Lisp_Object); extern Lisp_Object Ftty_no_underline (Lisp_Object); extern Lisp_Object Ftty_suppress_bold_inverse_default_colors (Lisp_Object); extern Lisp_Object Ftty_top_frame (Lisp_Object); extern Lisp_Object Ftty_type (Lisp_Object); extern Lisp_Object Ftype_of (Lisp_Object); extern Lisp_Object Fundo_boundary (void); extern Lisp_Object Funencodable_char_position (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Funhandled_file_name_directory (Lisp_Object); extern Lisp_Object Funibyte_char_to_multibyte (Lisp_Object); extern Lisp_Object Funibyte_string (ptrdiff_t, Lisp_Object *); extern Lisp_Object Funicode_property_table_internal (Lisp_Object); extern Lisp_Object Funify_charset (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Funintern (Lisp_Object, Lisp_Object); extern Lisp_Object Funix_sync (void); extern Lisp_Object Funlock_buffer (void); extern Lisp_Object Funlock_file (Lisp_Object); extern Lisp_Object Funwind_protect (Lisp_Object); extern Lisp_Object Fupcase (Lisp_Object); extern Lisp_Object Fupcase_initials (Lisp_Object); extern Lisp_Object Fupcase_initials_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fupcase_region (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fupcase_word (Lisp_Object); extern Lisp_Object Fuse_global_map (Lisp_Object); extern Lisp_Object Fuse_local_map (Lisp_Object); extern Lisp_Object Fuser_full_name (Lisp_Object); extern Lisp_Object Fuser_login_name (Lisp_Object); extern Lisp_Object Fuser_ptrp (Lisp_Object); extern Lisp_Object Fuser_real_login_name (void); extern Lisp_Object Fuser_real_uid (void); extern Lisp_Object Fuser_uid (void); extern Lisp_Object Fvariable_binding_locus (Lisp_Object); extern Lisp_Object Fvconcat (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fvector (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fvector_or_char_table_p (Lisp_Object); extern Lisp_Object Fvectorp (Lisp_Object); extern Lisp_Object Fverify_visited_file_modtime (Lisp_Object); extern Lisp_Object Fvertical_motion (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fvisible_frame_list (void); extern Lisp_Object Fvisited_file_modtime (void); extern Lisp_Object Fwaiting_for_user_input_p (void); extern Lisp_Object Fwhere_is_internal (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fwhile (Lisp_Object); extern Lisp_Object Fwiden (void); extern Lisp_Object Fwidget_apply (ptrdiff_t, Lisp_Object *); extern Lisp_Object Fwidget_get (Lisp_Object, Lisp_Object); extern Lisp_Object Fwidget_put (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_at (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_body_height (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_body_width (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_bottom_divider_width (Lisp_Object); extern Lisp_Object Fwindow_buffer (Lisp_Object); extern Lisp_Object Fwindow_bump_use_time (Lisp_Object); extern Lisp_Object Fwindow_combination_limit (Lisp_Object); extern Lisp_Object Fwindow_configuration_equal_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_configuration_frame (Lisp_Object); extern Lisp_Object Fwindow_configuration_p (Lisp_Object); extern Lisp_Object Fwindow_dedicated_p (Lisp_Object); extern Lisp_Object Fwindow_display_table (Lisp_Object); extern Lisp_Object Fwindow_end (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_frame (Lisp_Object); extern Lisp_Object Fwindow_fringes (Lisp_Object); extern Lisp_Object Fwindow_header_line_height (Lisp_Object); extern Lisp_Object Fwindow_hscroll (Lisp_Object); extern Lisp_Object Fwindow_left_child (Lisp_Object); extern Lisp_Object Fwindow_left_column (Lisp_Object); extern Lisp_Object Fwindow_line_height (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_lines_pixel_dimensions (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_list (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_list_1 (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_live_p (Lisp_Object); extern Lisp_Object Fwindow_margins (Lisp_Object); extern Lisp_Object Fwindow_minibuffer_p (Lisp_Object); extern Lisp_Object Fwindow_mode_line_height (Lisp_Object); extern Lisp_Object Fwindow_new_normal (Lisp_Object); extern Lisp_Object Fwindow_new_pixel (Lisp_Object); extern Lisp_Object Fwindow_new_total (Lisp_Object); extern Lisp_Object Fwindow_next_buffers (Lisp_Object); extern Lisp_Object Fwindow_next_sibling (Lisp_Object); extern Lisp_Object Fwindow_normal_size (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_old_body_pixel_height (Lisp_Object); extern Lisp_Object Fwindow_old_body_pixel_width (Lisp_Object); extern Lisp_Object Fwindow_old_buffer (Lisp_Object); extern Lisp_Object Fwindow_old_pixel_height (Lisp_Object); extern Lisp_Object Fwindow_old_pixel_width (Lisp_Object); extern Lisp_Object Fwindow_old_point (Lisp_Object); extern Lisp_Object Fwindow_parameter (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_parameters (Lisp_Object); extern Lisp_Object Fwindow_parent (Lisp_Object); extern Lisp_Object Fwindow_pixel_height (Lisp_Object); extern Lisp_Object Fwindow_pixel_left (Lisp_Object); extern Lisp_Object Fwindow_pixel_top (Lisp_Object); extern Lisp_Object Fwindow_pixel_width (Lisp_Object); extern Lisp_Object Fwindow_point (Lisp_Object); extern Lisp_Object Fwindow_prev_buffers (Lisp_Object); extern Lisp_Object Fwindow_prev_sibling (Lisp_Object); extern Lisp_Object Fwindow_redisplay_end_trigger (Lisp_Object); extern Lisp_Object Fwindow_resize_apply (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_resize_apply_total (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_right_divider_width (Lisp_Object); extern Lisp_Object Fwindow_scroll_bar_height (Lisp_Object); extern Lisp_Object Fwindow_scroll_bar_width (Lisp_Object); extern Lisp_Object Fwindow_scroll_bars (Lisp_Object); extern Lisp_Object Fwindow_start (Lisp_Object); extern Lisp_Object Fwindow_system (Lisp_Object); extern Lisp_Object Fwindow_tab_line_height (Lisp_Object); extern Lisp_Object Fwindow_text_height (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_text_pixel_size (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_text_width (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_top_child (Lisp_Object); extern Lisp_Object Fwindow_top_line (Lisp_Object); extern Lisp_Object Fwindow_total_height (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_total_width (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindow_use_time (Lisp_Object); extern Lisp_Object Fwindow_valid_p (Lisp_Object); extern Lisp_Object Fwindow_vscroll (Lisp_Object, Lisp_Object); extern Lisp_Object Fwindowp (Lisp_Object); extern Lisp_Object Fwrite_char (Lisp_Object, Lisp_Object); extern Lisp_Object Fwrite_region (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_backspace_delete_keys_p (Lisp_Object); extern Lisp_Object Fx_begin_drag (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_change_window_property (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_close_connection (Lisp_Object); extern Lisp_Object Fx_create_frame (Lisp_Object); extern Lisp_Object Fx_delete_window_property (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_disown_selection_internal (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_display_backing_store (Lisp_Object); extern Lisp_Object Fx_display_color_cells (Lisp_Object); extern Lisp_Object Fx_display_grayscale_p (Lisp_Object); extern Lisp_Object Fx_display_list (void); extern Lisp_Object Fx_display_mm_height (Lisp_Object); extern Lisp_Object Fx_display_mm_width (Lisp_Object); extern Lisp_Object Fx_display_monitor_attributes_list (Lisp_Object); extern Lisp_Object Fx_display_pixel_height (Lisp_Object); extern Lisp_Object Fx_display_pixel_width (Lisp_Object); extern Lisp_Object Fx_display_planes (Lisp_Object); extern Lisp_Object Fx_display_save_under (Lisp_Object); extern Lisp_Object Fx_display_screens (Lisp_Object); extern Lisp_Object Fx_display_visual_class (Lisp_Object); extern Lisp_Object Fx_double_buffered_p (Lisp_Object); extern Lisp_Object Fx_export_frames (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_family_fonts (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_file_dialog (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_focus_frame (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_frame_edges (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_frame_geometry (Lisp_Object); extern Lisp_Object Fx_frame_list_z_order (Lisp_Object); extern Lisp_Object Fx_frame_restack (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_get_atom_name (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_get_page_setup (void); extern Lisp_Object Fx_get_resource (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_get_selection_internal (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_gtk_debug (Lisp_Object); extern Lisp_Object Fx_hide_tip (void); extern Lisp_Object Fx_internal_focus_input_context (Lisp_Object); extern Lisp_Object Fx_list_fonts (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_load_color_file (Lisp_Object); extern Lisp_Object Fx_menu_bar_open_internal (Lisp_Object); extern Lisp_Object Fx_mouse_absolute_pixel_position (void); extern Lisp_Object Fx_open_connection (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_own_selection_internal (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_page_setup_dialog (void); extern Lisp_Object Fx_parse_geometry (Lisp_Object); extern Lisp_Object Fx_popup_dialog (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_popup_menu (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_print_frames_dialog (Lisp_Object); extern Lisp_Object Fx_register_dnd_atom (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_select_font (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_selection_exists_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_selection_owner_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_send_client_message (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_server_input_extension_version (Lisp_Object); extern Lisp_Object Fx_server_max_request_size (Lisp_Object); extern Lisp_Object Fx_server_vendor (Lisp_Object); extern Lisp_Object Fx_server_version (Lisp_Object); extern Lisp_Object Fx_set_mouse_absolute_pixel_position (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_show_tip (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_synchronize (Lisp_Object, Lisp_Object); extern Lisp_Object Fx_uses_old_gtk_dialog (void); extern Lisp_Object Fx_window_property (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_window_property_attributes (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object Fx_wm_set_size_hint (Lisp_Object); extern Lisp_Object Fxw_color_defined_p (Lisp_Object, Lisp_Object); extern Lisp_Object Fxw_color_values (Lisp_Object, Lisp_Object); extern Lisp_Object Fxw_display_color_p (Lisp_Object); extern Lisp_Object Fyes_or_no_p (Lisp_Object); extern Lisp_Object Fzlib_available_p (void); extern Lisp_Object Fzlib_decompress_region (Lisp_Object, Lisp_Object, Lisp_Object); union vectorlike_header { ptrdiff_t size; }; struct Lisp_Symbol_With_Pos { union vectorlike_header header; Lisp_Object sym; Lisp_Object pos; } __attribute__ ((aligned (8))); extern ptrdiff_t const ARRAY_MARK_FLAG __attribute__ ((externally_visible)) ; extern ptrdiff_t const PSEUDOVECTOR_FLAG __attribute__ ((externally_visible)) ; enum pvec_type { PVEC_NORMAL_VECTOR, PVEC_FREE, PVEC_BIGNUM, PVEC_MARKER, PVEC_OVERLAY, PVEC_FINALIZER, PVEC_SYMBOL_WITH_POS, PVEC_MISC_PTR, PVEC_USER_PTR, PVEC_PROCESS, PVEC_FRAME, PVEC_WINDOW, PVEC_BOOL_VECTOR, PVEC_BUFFER, PVEC_HASH_TABLE, PVEC_TERMINAL, PVEC_WINDOW_CONFIGURATION, PVEC_SUBR, PVEC_OTHER, PVEC_XWIDGET, PVEC_XWIDGET_VIEW, PVEC_THREAD, PVEC_MUTEX, PVEC_CONDVAR, PVEC_MODULE_FUNCTION, PVEC_NATIVE_COMP_UNIT, PVEC_SQLITE, PVEC_COMPILED, PVEC_CHAR_TABLE, PVEC_SUB_CHAR_TABLE, PVEC_RECORD, PVEC_FONT }; enum More_Lisp_Bits { PSEUDOVECTOR_SIZE_BITS = 12, PSEUDOVECTOR_SIZE_MASK = (1 << PSEUDOVECTOR_SIZE_BITS) - 1, PSEUDOVECTOR_REST_BITS = 12, PSEUDOVECTOR_REST_MASK = (((1 << PSEUDOVECTOR_REST_BITS) - 1) << PSEUDOVECTOR_SIZE_BITS), PSEUDOVECTOR_AREA_BITS = PSEUDOVECTOR_SIZE_BITS + PSEUDOVECTOR_REST_BITS, PVEC_TYPE_MASK = 0x3f << PSEUDOVECTOR_AREA_BITS }; static inline _Bool PSEUDOVECTORP (Lisp_Object a, int code) { return (TAGGEDP ((a), Lisp_Vectorlike) && ((((union vectorlike_header *) ((char *) XLP ((a)) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS))))->size & (( (9223372036854775807L) - (9223372036854775807L) / 2) | PVEC_TYPE_MASK)) == (( (9223372036854775807L) - (9223372036854775807L) / 2) | ((code) << PSEUDOVECTOR_AREA_BITS)))); } static inline _Bool (BARE_SYMBOL_P) (Lisp_Object x) { return TAGGEDP ((x), Lisp_Symbol); } static inline _Bool (SYMBOL_WITH_POS_P) (Lisp_Object x) { return PSEUDOVECTORP ((x), PVEC_SYMBOL_WITH_POS); } static inline _Bool (SYMBOLP) (Lisp_Object x) { return ((BARE_SYMBOL_P ((x)) || (globals.f_symbols_with_pos_enabled && (SYMBOL_WITH_POS_P ((x)))))); } static inline struct Lisp_Symbol_With_Pos * XSYMBOL_WITH_POS (Lisp_Object a) { ((void) ( 0 && (SYMBOL_WITH_POS_P (a)))); return ((struct Lisp_Symbol_With_Pos *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline struct Lisp_Symbol * __attribute__ ((no_sanitize_undefined)) (XBARE_SYMBOL) (Lisp_Object a) { ((void) ( 0 && (BARE_SYMBOL_P (a)))); intptr_t i = (intptr_t) ((struct Lisp_Symbol *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Symbol) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); void *p = (char *) lispsym + i; return p; } static inline struct Lisp_Symbol * __attribute__ ((no_sanitize_undefined)) (XSYMBOL) (Lisp_Object a) { ((void) ( 0 && (SYMBOLP ((a))))); if (!globals.f_symbols_with_pos_enabled || BARE_SYMBOL_P (a)) return XBARE_SYMBOL (a); return XBARE_SYMBOL (XSYMBOL_WITH_POS (a)->sym); } static inline Lisp_Object make_lisp_symbol (struct Lisp_Symbol *sym) { char *symoffset = (char *) ((char *) sym - (char *) lispsym); Lisp_Object a = ((Lisp_Word) ((untagged_ptr) (symoffset) + ((Lisp_Word_tag) (Lisp_Symbol) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); ((void) ( 0 && (XSYMBOL (a) == sym))); return a; } static inline Lisp_Object builtin_lisp_symbol (int index) { return make_lisp_symbol (&lispsym[index]); } static inline _Bool c_symbol_p (struct Lisp_Symbol *sym) { char *bp = (char *) lispsym; char *sp = (char *) sym; if ( (9223372036854775807L) < (9223372036854775807L) ) return bp <= sp && sp < bp + sizeof lispsym; else { ptrdiff_t offset = sp - bp; return 0 <= offset && offset < sizeof lispsym; } } static inline void (CHECK_SYMBOL) (Lisp_Object x) { CHECK_TYPE (SYMBOLP (x), builtin_lisp_symbol (1264), x); } static inline Lisp_Object (make_fixnum) (EMACS_INT n) { ((void) ( 0 && (!(! ((0 <= (n) || (-1 - (0x7fffffffffffffffL >> (3 - 1))) <= (n)) && (n) <= (0x7fffffffffffffffL >> (3 - 1))))))); return XIL ((EMACS_INT) (((EMACS_UINT) (n) << (3 - 1)) + Lisp_Int0)); } static inline EMACS_INT (XFIXNUM_RAW) (Lisp_Object a) { return (XLI (a) >> (3 - 1)); } static inline Lisp_Object make_ufixnum (EMACS_INT n) { ((void) ( 0 && (0 <= n && n <= (0x7fffffffffffffffL >> ((3 - 1) - 1))))); return XIL ((EMACS_INT) (((EMACS_UINT) (n) << (3 - 1)) + Lisp_Int0)); } static inline _Bool (FIXNUMP) (Lisp_Object x) { return (! (((unsigned) (XLI (x) >> (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : FIXNUM_BITS)) - (unsigned) (Lisp_Int0 >> !((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ))) & ((1 << (3 - 1)) - 1))); } static inline EMACS_INT XFIXNUM (Lisp_Object a) { ((void) ( 0 && (FIXNUMP (a)))); return XFIXNUM_RAW (a); } static inline EMACS_UINT XUFIXNUM_RAW (Lisp_Object a) { EMACS_UINT i = XLI (a); return ((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? i >> (3 - 1) : i & (0x7fffffffffffffffL >> ((3 - 1) - 1)); } static inline EMACS_UINT XUFIXNUM (Lisp_Object a) { ((void) ( 0 && (FIXNUMP (a)))); return XUFIXNUM_RAW (a); } static inline EMACS_INT (XHASH) (Lisp_Object a) { return XUFIXNUM_RAW (a); } static inline Lisp_Object make_fixed_natnum (EMACS_INT n) { ((void) ( 0 && (0 <= n && n <= (0x7fffffffffffffffL >> (3 - 1))))); EMACS_INT int0 = Lisp_Int0; return ((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? make_fixnum (n) : XIL (n + (int0 << VALBITS)); } static inline _Bool (BASE_EQ) (Lisp_Object x, Lisp_Object y) { return (XLI (x) == XLI (y)); } static inline _Bool (EQ) (Lisp_Object x, Lisp_Object y) { return ((XLI ((x)) == XLI ((y))) || (globals.f_symbols_with_pos_enabled && (SYMBOL_WITH_POS_P ((x)) ? (BARE_SYMBOL_P ((y)) ? XLI (XSYMBOL_WITH_POS((x))->sym) == XLI (y) : SYMBOL_WITH_POS_P((y)) && (XLI (XSYMBOL_WITH_POS((x))->sym) == XLI (XSYMBOL_WITH_POS((y))->sym))) : (SYMBOL_WITH_POS_P ((y)) && BARE_SYMBOL_P ((x)) && (XLI (x) == XLI ((XSYMBOL_WITH_POS ((y)))->sym)))))); } static inline intmax_t clip_to_bounds (intmax_t lower, intmax_t num, intmax_t upper) { return num < lower ? lower : num <= upper ? num : upper; } static inline Lisp_Object make_lisp_ptr (void *ptr, enum Lisp_Type type) { Lisp_Object a = ((Lisp_Word) ((untagged_ptr) (ptr) + ((Lisp_Word_tag) (type) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); ((void) ( 0 && (TAGGEDP (a, type) && ((char *) ((char *) XLP (a) - ((Lisp_Word_tag) (type) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))) == ptr))); return a; } static inline Lisp_Object dead_object (void) { return make_lisp_ptr ( ((void *)0) , Lisp_String); } static inline void * XFIXNUMPTR (Lisp_Object a) { return ((char *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Int0) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline Lisp_Object make_pointer_integer_unsafe (void *p) { Lisp_Object a = ((Lisp_Word) ((untagged_ptr) (p) + ((Lisp_Word_tag) (Lisp_Int0) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); return a; } static inline Lisp_Object make_pointer_integer (void *p) { Lisp_Object a = make_pointer_integer_unsafe (p); ((void) ( 0 && (FIXNUMP (a) && XFIXNUMPTR (a) == p))); return a; } typedef struct interval *INTERVAL; struct Lisp_Cons { union { struct { Lisp_Object car; union { Lisp_Object cdr; struct Lisp_Cons *chain; } u; } s; char _Alignas (8) gcaligned; } u; }; _Static_assert (( _Alignof (struct Lisp_Cons) % 8 == 0), "verify (" "GCALIGNED (struct Lisp_Cons)" ")"); static inline _Bool (NILP) (Lisp_Object x) { return BASE_EQ (x, builtin_lisp_symbol (0)); } static inline _Bool (CONSP) (Lisp_Object x) { return TAGGEDP (x, Lisp_Cons); } static inline void CHECK_CONS (Lisp_Object x) { CHECK_TYPE (CONSP (x), builtin_lisp_symbol (418), x); } static inline struct Lisp_Cons * (XCONS) (Lisp_Object a) { return (((void) ( 0 && (CONSP (a)))), ((struct Lisp_Cons *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Cons) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS))))); } static inline Lisp_Object * xcar_addr (Lisp_Object c) { return &XCONS (c)->u.s.car; } static inline Lisp_Object * xcdr_addr (Lisp_Object c) { return &XCONS (c)->u.s.u.cdr; } static inline Lisp_Object (XCAR) (Lisp_Object c) { return XCONS (c)->u.s.car; } static inline Lisp_Object (XCDR) (Lisp_Object c) { return XCONS (c)->u.s.u.cdr; } static inline void XSETCAR (Lisp_Object c, Lisp_Object n) { *xcar_addr (c) = n; } static inline void XSETCDR (Lisp_Object c, Lisp_Object n) { *xcdr_addr (c) = n; } static inline Lisp_Object CAR (Lisp_Object c) { if (CONSP (c)) return XCAR (c); if (!NILP (c)) wrong_type_argument (builtin_lisp_symbol (871), c); return builtin_lisp_symbol (0); } static inline Lisp_Object CDR (Lisp_Object c) { if (CONSP (c)) return XCDR (c); if (!NILP (c)) wrong_type_argument (builtin_lisp_symbol (871), c); return builtin_lisp_symbol (0); } static inline Lisp_Object CAR_SAFE (Lisp_Object c) { return CONSP (c) ? XCAR (c) : builtin_lisp_symbol (0); } static inline Lisp_Object CDR_SAFE (Lisp_Object c) { return CONSP (c) ? XCDR (c) : builtin_lisp_symbol (0); } struct Lisp_String { union { struct { ptrdiff_t size; ptrdiff_t size_byte; INTERVAL intervals; unsigned char *data; } s; struct Lisp_String *next; char _Alignas (8) gcaligned; } u; }; _Static_assert (( _Alignof (struct Lisp_String) % 8 == 0), "verify (" "GCALIGNED (struct Lisp_String)" ")"); static inline _Bool STRINGP (Lisp_Object x) { return TAGGEDP (x, Lisp_String); } static inline void CHECK_STRING (Lisp_Object x) { CHECK_TYPE (STRINGP (x), builtin_lisp_symbol (1248), x); } static inline struct Lisp_String * XSTRING (Lisp_Object a) { ((void) ( 0 && (STRINGP (a)))); return ((struct Lisp_String *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_String) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline _Bool STRING_MULTIBYTE (Lisp_Object str) { return 0 <= XSTRING (str)->u.s.size_byte; } static inline unsigned char * SDATA (Lisp_Object string) { return XSTRING (string)->u.s.data; } static inline char * SSDATA (Lisp_Object string) { return (char *) SDATA (string); } static inline unsigned char SREF (Lisp_Object string, ptrdiff_t index) { return SDATA (string)[index]; } static inline void SSET (Lisp_Object string, ptrdiff_t index, unsigned char new) { SDATA (string)[index] = new; } static inline ptrdiff_t SCHARS (Lisp_Object string) { ptrdiff_t nchars = XSTRING (string)->u.s.size; ((0 <= nchars) ? (void) 0 : __builtin_unreachable ()); return nchars; } static inline ptrdiff_t STRING_BYTES (struct Lisp_String *s) { ptrdiff_t nbytes = s->u.s.size_byte < 0 ? s->u.s.size : s->u.s.size_byte; ((0 <= nbytes) ? (void) 0 : __builtin_unreachable ()); return nbytes; } static inline ptrdiff_t SBYTES (Lisp_Object string) { return STRING_BYTES (XSTRING (string)); } static inline void STRING_SET_CHARS (Lisp_Object string, ptrdiff_t newsize) { ((void) ( 0 && (STRING_MULTIBYTE (string) ? 0 <= newsize && newsize <= SBYTES (string) : newsize == SCHARS (string)))) ; XSTRING (string)->u.s.size = newsize; } static inline void CHECK_STRING_NULL_BYTES (Lisp_Object string) { CHECK_TYPE (memchr (SSDATA (string), '\0', SBYTES (string)) == ((void *)0) , builtin_lisp_symbol (608), string); } static inline _Bool string_immovable_p (Lisp_Object str) { return XSTRING (str)->u.s.size_byte == -3; } struct Lisp_Vector { union vectorlike_header header; Lisp_Object contents[]; } __attribute__ ((aligned (8))); static inline _Bool (VECTORLIKEP) (Lisp_Object x) { return TAGGEDP (x, Lisp_Vectorlike); } static inline struct Lisp_Vector * XVECTOR (Lisp_Object a) { ((void) ( 0 && (VECTORLIKEP (a)))); return ((struct Lisp_Vector *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline ptrdiff_t ASIZE (Lisp_Object array) { ptrdiff_t size = XVECTOR (array)->header.size; ((0 <= size) ? (void) 0 : __builtin_unreachable ()); return size; } static inline ptrdiff_t gc_asize (Lisp_Object array) { return XVECTOR (array)->header.size & ~ (-9223372036854775807L-1) ; } static inline ptrdiff_t PVSIZE (Lisp_Object pv) { return ASIZE (pv) & PSEUDOVECTOR_SIZE_MASK; } static inline _Bool VECTORP (Lisp_Object x) { return VECTORLIKEP (x) && ! (ASIZE (x) & ( (9223372036854775807L) - (9223372036854775807L) / 2)); } static inline void CHECK_VECTOR (Lisp_Object x) { CHECK_TYPE (VECTORP (x), builtin_lisp_symbol (1393), x); } static inline enum pvec_type PSEUDOVECTOR_TYPE (const struct Lisp_Vector *v) { ptrdiff_t size = v->header.size; return (size & ( (9223372036854775807L) - (9223372036854775807L) / 2) ? (size & PVEC_TYPE_MASK) >> PSEUDOVECTOR_AREA_BITS : PVEC_NORMAL_VECTOR); } static inline _Bool PSEUDOVECTOR_TYPEP (const union vectorlike_header *a, enum pvec_type code) { return ((a->size & (( (9223372036854775807L) - (9223372036854775807L) / 2) | PVEC_TYPE_MASK)) == (( (9223372036854775807L) - (9223372036854775807L) / 2) | (code << PSEUDOVECTOR_AREA_BITS))); } struct Lisp_Bool_Vector { union vectorlike_header header; EMACS_INT size; bits_word data[]; } __attribute__ ((aligned (8))); enum { header_size = __builtin_offsetof ( struct Lisp_Vector , contents ) , bool_header_size = __builtin_offsetof ( struct Lisp_Bool_Vector , data ) , word_size = sizeof (Lisp_Object) }; static inline EMACS_INT bool_vector_words (EMACS_INT size) { ((0 <= size && size <= 0x7fffffffffffffffL - (BITS_PER_BITS_WORD - 1)) ? (void) 0 : __builtin_unreachable ()); return (size + BITS_PER_BITS_WORD - 1) / BITS_PER_BITS_WORD; } static inline EMACS_INT bool_vector_bytes (EMACS_INT size) { ((0 <= size && size <= 0x7fffffffffffffffL - (BITS_PER_BITS_WORD - 1)) ? (void) 0 : __builtin_unreachable ()); return (size + 8 - 1) / 8; } static inline _Bool BOOL_VECTOR_P (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_BOOL_VECTOR); } static inline void CHECK_BOOL_VECTOR (Lisp_Object x) { CHECK_TYPE (BOOL_VECTOR_P (x), builtin_lisp_symbol (299), x); } static inline struct Lisp_Bool_Vector * XBOOL_VECTOR (Lisp_Object a) { ((void) ( 0 && (BOOL_VECTOR_P (a)))); return ((struct Lisp_Bool_Vector *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline EMACS_INT bool_vector_size (Lisp_Object a) { EMACS_INT size = XBOOL_VECTOR (a)->size; ((0 <= size) ? (void) 0 : __builtin_unreachable ()); return size; } static inline bits_word * bool_vector_data (Lisp_Object a) { return XBOOL_VECTOR (a)->data; } static inline unsigned char * bool_vector_uchar_data (Lisp_Object a) { return (unsigned char *) bool_vector_data (a); } static inline _Bool bool_vector_bitref (Lisp_Object a, EMACS_INT i) { ((0 <= i) ? (void) 0 : __builtin_unreachable ()); ((void) ( 0 && (i < bool_vector_size (a)))); return !! (bool_vector_uchar_data (a)[i / 8] & (1 << (i % 8))); } static inline Lisp_Object bool_vector_ref (Lisp_Object a, EMACS_INT i) { return bool_vector_bitref (a, i) ? builtin_lisp_symbol (1) : builtin_lisp_symbol (0); } static inline void bool_vector_set (Lisp_Object a, EMACS_INT i, _Bool b) { ((0 <= i) ? (void) 0 : __builtin_unreachable ()); ((void) ( 0 && (i < bool_vector_size (a)))); unsigned char *addr = &bool_vector_uchar_data (a)[i / 8]; if (b) *addr |= 1 << (i % 8); else *addr &= ~ (1 << (i % 8)); } static inline Lisp_Object AREF (Lisp_Object array, ptrdiff_t idx) { ((void) ( 0 && (0 <= idx && idx < gc_asize (array)))); return XVECTOR (array)->contents[idx]; } static inline Lisp_Object * aref_addr (Lisp_Object array, ptrdiff_t idx) { ((void) ( 0 && (0 <= idx && idx <= gc_asize (array)))); return & XVECTOR (array)->contents[idx]; } static inline void ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Object val) { ((void) ( 0 && (0 <= idx && idx < ASIZE (array)))); XVECTOR (array)->contents[idx] = val; } static inline void gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Object val) { ((void) ( 0 && (0 <= idx && idx < gc_asize (array)))); XVECTOR (array)->contents[idx] = val; } enum { NIL_IS_ZERO = 0 == 0 && Lisp_Symbol == 0 }; static inline void memclear (void *p, ptrdiff_t nbytes) { ((void) ( 0 && (0 <= nbytes))); _Static_assert (NIL_IS_ZERO, "verify (" "NIL_IS_ZERO" ")"); memset (p, 0, nbytes); } static inline _Bool ASCII_CHAR_P (intmax_t c) { return 0 <= c && c < 0x80; } enum CHARTAB_SIZE_BITS { CHARTAB_SIZE_BITS_0 = 6, CHARTAB_SIZE_BITS_1 = 4, CHARTAB_SIZE_BITS_2 = 5, CHARTAB_SIZE_BITS_3 = 7 }; extern const int chartab_size[4]; struct Lisp_Char_Table { union vectorlike_header header; Lisp_Object defalt; Lisp_Object parent; Lisp_Object purpose; Lisp_Object ascii; Lisp_Object contents[(1 << CHARTAB_SIZE_BITS_0)]; Lisp_Object extras[]; } __attribute__ ((aligned (8))); static inline _Bool CHAR_TABLE_P (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_CHAR_TABLE); } static inline struct Lisp_Char_Table * XCHAR_TABLE (Lisp_Object a) { ((void) ( 0 && (CHAR_TABLE_P (a)))); return ((struct Lisp_Char_Table *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } struct Lisp_Sub_Char_Table { union vectorlike_header header; int depth; int min_char; Lisp_Object contents[]; } __attribute__ ((aligned (8))); static inline _Bool SUB_CHAR_TABLE_P (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_SUB_CHAR_TABLE); } static inline struct Lisp_Sub_Char_Table * XSUB_CHAR_TABLE (Lisp_Object a) { ((void) ( 0 && (SUB_CHAR_TABLE_P (a)))); return ((struct Lisp_Sub_Char_Table *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t idx) { for (struct Lisp_Char_Table *tbl = XCHAR_TABLE (ct); ; tbl = XCHAR_TABLE (tbl->parent)) { Lisp_Object val = (SUB_CHAR_TABLE_P (tbl->ascii) ? XSUB_CHAR_TABLE (tbl->ascii)->contents[idx] : tbl->ascii); if (NILP (val)) val = tbl->defalt; if (!NILP (val) || NILP (tbl->parent)) return val; } } static inline Lisp_Object CHAR_TABLE_REF (Lisp_Object ct, int idx) { return (ASCII_CHAR_P (idx) ? CHAR_TABLE_REF_ASCII (ct, idx) : char_table_ref (ct, idx)); } static inline void CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Object val) { if (ASCII_CHAR_P (idx) && SUB_CHAR_TABLE_P (XCHAR_TABLE (ct)->ascii)) set_sub_char_table_contents (XCHAR_TABLE (ct)->ascii, idx, val); else char_table_set (ct, idx, val); } typedef void *dynlib_handle_ptr; dynlib_handle_ptr dynlib_open (const char *path); dynlib_handle_ptr dynlib_open_for_eln (const char *path); int dynlib_close (dynlib_handle_ptr h); const char *dynlib_error (void); __attribute__ ((__may_alias__)) void *dynlib_sym (dynlib_handle_ptr h, const char *sym); typedef void (__attribute__ ((__may_alias__)) *dynlib_function_ptr) (void); dynlib_function_ptr dynlib_func (dynlib_handle_ptr h, const char *sym); void dynlib_addr (void (*ptr) (void), const char **file, const char **sym); struct Lisp_Native_Comp_Unit { union vectorlike_header header; Lisp_Object file; Lisp_Object optimize_qualities; Lisp_Object lambda_gc_guard_h; Lisp_Object lambda_c_name_idx_h; Lisp_Object data_fdoc_v; Lisp_Object data_vec; Lisp_Object data_impure_vec; Lisp_Object *data_imp_relocs; _Bool loaded_once; _Bool load_ongoing; dynlib_handle_ptr handle; } __attribute__ ((aligned (8))); static inline void maybe_defer_native_compilation (Lisp_Object function_name, Lisp_Object definition) {} static inline void unload_comp_unit (struct Lisp_Native_Comp_Unit *cu) {} extern void syms_of_comp (void); struct Lisp_Subr { union vectorlike_header header; union { Lisp_Object (*a0) (void); Lisp_Object (*a1) (Lisp_Object); Lisp_Object (*a2) (Lisp_Object, Lisp_Object); Lisp_Object (*a3) (Lisp_Object, Lisp_Object, Lisp_Object); Lisp_Object (*a4) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); Lisp_Object (*a5) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); Lisp_Object (*a6) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); Lisp_Object (*a7) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); Lisp_Object (*a8) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); Lisp_Object (*aUNEVALLED) (Lisp_Object args); Lisp_Object (*aMANY) (ptrdiff_t, Lisp_Object *); } function; short min_args, max_args; const char *symbol_name; union { const char *string; Lisp_Object native; } intspec; Lisp_Object command_modes; EMACS_INT doc; } __attribute__ ((aligned (8))); union Aligned_Lisp_Subr { struct Lisp_Subr s; char _Alignas (8) gcaligned; }; _Static_assert (( _Alignof (union Aligned_Lisp_Subr) % 8 == 0), "verify (" "GCALIGNED (union Aligned_Lisp_Subr)" ")"); static inline _Bool SUBRP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_SUBR); } static inline struct Lisp_Subr * XSUBR (Lisp_Object a) { ((void) ( 0 && (SUBRP (a)))); return &((union Aligned_Lisp_Subr *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS))))->s; } static inline _Bool VALID_DOCSTRING_P (Lisp_Object doc) { return FIXNUMP (doc) || STRINGP (doc) || (CONSP (doc) && STRINGP (XCAR (doc)) && FIXNUMP (XCDR (doc))); } enum char_table_specials { CHAR_TABLE_STANDARD_SLOTS = (( __builtin_offsetof ( struct Lisp_Char_Table , contents ) + word_size < header_size ? 0 : ( __builtin_offsetof ( struct Lisp_Char_Table , contents ) + word_size - header_size) / word_size) - 1 + (1 << CHARTAB_SIZE_BITS_0)), SUB_CHAR_TABLE_OFFSET = ( __builtin_offsetof ( struct Lisp_Sub_Char_Table , contents ) + word_size < header_size ? 0 : ( __builtin_offsetof ( struct Lisp_Sub_Char_Table , contents ) + word_size - header_size) / word_size) - 1 }; _Static_assert ( __builtin_offsetof ( struct Lisp_Char_Table , defalt ) == header_size, "verify (" "offsetof (struct Lisp_Char_Table, defalt) == header_size" ")"); _Static_assert ( __builtin_offsetof ( struct Lisp_Char_Table , extras ) == header_size + CHAR_TABLE_STANDARD_SLOTS * sizeof (Lisp_Object), "verify (" "offsetof (struct Lisp_Char_Table, extras) == header_size + CHAR_TABLE_STANDARD_SLOTS * sizeof (Lisp_Object)" ")") ; _Static_assert ( __builtin_offsetof ( struct Lisp_Sub_Char_Table , contents ) == header_size + SUB_CHAR_TABLE_OFFSET * sizeof (Lisp_Object), "verify (" "offsetof (struct Lisp_Sub_Char_Table, contents) == header_size + SUB_CHAR_TABLE_OFFSET * sizeof (Lisp_Object)" ")") ; static inline int CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct) { return ((ct->header.size & PSEUDOVECTOR_SIZE_MASK) - CHAR_TABLE_STANDARD_SLOTS); } typedef jmp_buf sys_jmp_buf; struct re_registers { ptrdiff_t num_regs; ptrdiff_t *start; ptrdiff_t *end; }; extern Lisp_Object re_match_object; extern ptrdiff_t emacs_re_max_failures; extern ptrdiff_t emacs_re_safe_alloca; struct re_pattern_buffer { unsigned char *buffer; ptrdiff_t allocated; ptrdiff_t used; int charset_unibyte; char *fastmap; Lisp_Object translate; ptrdiff_t re_nsub; bool_bf can_be_null : 1; unsigned regs_allocated : 2; bool_bf fastmap_accurate : 1; bool_bf used_syntax : 1; bool_bf multibyte : 1; bool_bf target_multibyte : 1; }; extern const char *re_compile_pattern (const char *pattern, ptrdiff_t length, _Bool posix_backtracking, const char *whitespace_regexp, struct re_pattern_buffer *buffer); extern ptrdiff_t re_search (struct re_pattern_buffer *buffer, const char *string, ptrdiff_t length, ptrdiff_t start, ptrdiff_t range, struct re_registers *regs); extern ptrdiff_t re_search_2 (struct re_pattern_buffer *buffer, const char *string1, ptrdiff_t length1, const char *string2, ptrdiff_t length2, ptrdiff_t start, ptrdiff_t range, struct re_registers *regs, ptrdiff_t stop); extern ptrdiff_t re_match_2 (struct re_pattern_buffer *buffer, const char *string1, ptrdiff_t length1, const char *string2, ptrdiff_t length2, ptrdiff_t start, struct re_registers *regs, ptrdiff_t stop); extern void re_set_registers (struct re_pattern_buffer *buffer, struct re_registers *regs, ptrdiff_t num_regs, ptrdiff_t *starts, ptrdiff_t *ends); typedef enum { RECC_ERROR = 0, RECC_ALNUM, RECC_ALPHA, RECC_WORD, RECC_GRAPH, RECC_PRINT, RECC_LOWER, RECC_UPPER, RECC_PUNCT, RECC_CNTRL, RECC_DIGIT, RECC_XDIGIT, RECC_BLANK, RECC_SPACE, RECC_MULTIBYTE, RECC_NONASCII, RECC_ASCII, RECC_UNIBYTE } re_wctype_t; extern _Bool re_iswctype (int ch, re_wctype_t cc); extern re_wctype_t re_wctype_parse (const unsigned char **strp, ptrdiff_t limit); static inline void fd_CLR (int fd, fd_set *set) { ((0 <= fd && fd < 1024 ) ? (void) 0 : __builtin_unreachable ()); ((void) ((( set )->fds_bits)[__extension__ ({ long int __d = ( fd ); (__builtin_constant_p (__d) ? (0 <= __d && __d < 1024 ? (__d / (8 * (int) sizeof (__fd_mask))) : __fdelt_warn (__d)) : __fdelt_chk (__d)); })] &= ~((__fd_mask) (1UL << (( fd ) % (8 * (int) sizeof (__fd_mask))))))) ; } static inline _Bool fd_ISSET (int fd, fd_set *set) { ((0 <= fd && fd < 1024 ) ? (void) 0 : __builtin_unreachable ()); return (((( set )->fds_bits)[__extension__ ({ long int __d = ( fd ); (__builtin_constant_p (__d) ? (0 <= __d && __d < 1024 ? (__d / (8 * (int) sizeof (__fd_mask))) : __fdelt_warn (__d)) : __fdelt_chk (__d)); })] & ((__fd_mask) (1UL << (( fd ) % (8 * (int) sizeof (__fd_mask)))))) != 0) != 0; } static inline void fd_SET (int fd, fd_set *set) { ((0 <= fd && fd < 1024 ) ? (void) 0 : __builtin_unreachable ()); ((void) ((( set )->fds_bits)[__extension__ ({ long int __d = ( fd ); (__builtin_constant_p (__d) ? (0 <= __d && __d < 1024 ? (__d / (8 * (int) sizeof (__fd_mask))) : __fdelt_warn (__d)) : __fdelt_chk (__d)); })] |= ((__fd_mask) (1UL << (( fd ) % (8 * (int) sizeof (__fd_mask))))))) ; } struct sched_param { int sched_priority; }; extern int clone (int (*__fn) (void *__arg), void *__child_stack, int __flags, void *__arg, ...) __attribute__ ((__nothrow__ , __leaf__)); extern int unshare (int __flags) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_getcpu (void) __attribute__ ((__nothrow__ , __leaf__)); extern int getcpu (unsigned int *, unsigned int *) __attribute__ ((__nothrow__ , __leaf__)); extern int setns (int __fd, int __nstype) __attribute__ ((__nothrow__ , __leaf__)); typedef unsigned long int __cpu_mask; typedef struct { __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; } cpu_set_t; extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) __attribute__ ((__nothrow__ , __leaf__)); extern cpu_set_t *__sched_cpualloc (size_t __count) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern void __sched_cpufree (cpu_set_t *__set) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_setparam (__pid_t __pid, const struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_setscheduler (__pid_t __pid, int __policy, const struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_yield (void) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, const cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__)); extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__)); enum { PTHREAD_CREATE_JOINABLE, PTHREAD_CREATE_DETACHED }; enum { PTHREAD_MUTEX_TIMED_NP, PTHREAD_MUTEX_RECURSIVE_NP, PTHREAD_MUTEX_ERRORCHECK_NP, PTHREAD_MUTEX_ADAPTIVE_NP , PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP }; enum { PTHREAD_MUTEX_STALLED, PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, PTHREAD_MUTEX_ROBUST, PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST }; enum { PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT, PTHREAD_PRIO_PROTECT }; enum { PTHREAD_RWLOCK_PREFER_READER_NP, PTHREAD_RWLOCK_PREFER_WRITER_NP, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP }; enum { PTHREAD_INHERIT_SCHED, PTHREAD_EXPLICIT_SCHED }; enum { PTHREAD_SCOPE_SYSTEM, PTHREAD_SCOPE_PROCESS }; enum { PTHREAD_PROCESS_PRIVATE, PTHREAD_PROCESS_SHARED }; struct _pthread_cleanup_buffer { void (*__routine) (void *); void *__arg; int __canceltype; struct _pthread_cleanup_buffer *__prev; }; enum { PTHREAD_CANCEL_ENABLE, PTHREAD_CANCEL_DISABLE }; enum { PTHREAD_CANCEL_DEFERRED, PTHREAD_CANCEL_ASYNCHRONOUS }; extern int pthread_create (pthread_t *__restrict __newthread, const pthread_attr_t *__restrict __attr, void *(*__start_routine) (void *), void *__restrict __arg) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))); extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); extern int pthread_join (pthread_t __th, void **__thread_return); extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __attribute__ ((__nothrow__ , __leaf__)); extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, const struct timespec *__abstime); extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return, clockid_t __clockid, const struct timespec *__abstime); extern int pthread_detach (pthread_t __th) __attribute__ ((__nothrow__ , __leaf__)); extern pthread_t pthread_self (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern int pthread_attr_init (pthread_attr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_destroy (pthread_attr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr, int *__detachstate) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, int __detachstate) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_getguardsize (const pthread_attr_t *__attr, size_t *__guardsize) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_attr_setguardsize (pthread_attr_t *__attr, size_t __guardsize) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr, struct sched_param *__restrict __param) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, const struct sched_param *__restrict __param) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict __attr, int *__restrict __policy) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict __attr, int *__restrict __inherit) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, int __inherit) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr, int *__restrict __scope) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict __attr, void **__restrict __stackaddr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, void *__stackaddr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict __attr, size_t *__restrict __stacksize) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_attr_setstacksize (pthread_attr_t *__attr, size_t __stacksize) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr, void **__restrict __stackaddr, size_t *__restrict __stacksize) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))); extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, size_t __stacksize) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, size_t __cpusetsize, const cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr, size_t __cpusetsize, cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern int pthread_getattr_default_np (pthread_attr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr, const __sigset_t *sigmask); extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr, __sigset_t *sigmask); extern int pthread_setattr_default_np (const pthread_attr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int pthread_setschedparam (pthread_t __target_thread, int __policy, const struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int pthread_getschedparam (pthread_t __target_thread, int *__restrict __policy, struct sched_param *__restrict __param) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))); extern int pthread_setschedprio (pthread_t __target_thread, int __prio) __attribute__ ((__nothrow__ , __leaf__)); extern int pthread_getname_np (pthread_t __target_thread, char *__buf, size_t __buflen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int pthread_setname_np (pthread_t __target_thread, const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int pthread_getconcurrency (void) __attribute__ ((__nothrow__ , __leaf__)); extern int pthread_setconcurrency (int __level) __attribute__ ((__nothrow__ , __leaf__)); extern int pthread_yield (void) __attribute__ ((__nothrow__ , __leaf__)); extern int pthread_yield (void) __asm__ ("" "sched_yield") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__ ("pthread_yield is deprecated, use sched_yield instead"))) ; extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, const cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))); extern int pthread_once (pthread_once_t *__once_control, void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_setcancelstate (int __state, int *__oldstate); extern int pthread_setcanceltype (int __type, int *__oldtype); extern int pthread_cancel (pthread_t __th); extern void pthread_testcancel (void); struct __cancel_jmp_buf_tag { __jmp_buf __cancel_jmp_buf; int __mask_was_saved; }; typedef struct { struct __cancel_jmp_buf_tag __cancel_jmp_buf[1]; void *__pad[4]; } __pthread_unwind_buf_t __attribute__ ((__aligned__)); struct __pthread_cleanup_frame { void (*__cancel_routine) (void *); void *__cancel_arg; int __do_it; int __cancel_type; }; extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf) ; extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf) ; extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf) ; extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf) ; extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf) __attribute__ ((__noreturn__)) __attribute__ ((__weak__)) ; extern int __sigsetjmp_cancel (struct __cancel_jmp_buf_tag __env[1], int __savemask) __asm__ ("" "__sigsetjmp") __attribute__ ((__nothrow__)) __attribute__ ((__returns_twice__)); extern int pthread_mutex_init (pthread_mutex_t *__mutex, const pthread_mutexattr_t *__mutexattr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutex_lock (pthread_mutex_t *__mutex) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex, clockid_t __clockid, const struct timespec *__restrict __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))); extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutex_getprioceiling (const pthread_mutex_t * __restrict __mutex, int *__restrict __prioceiling) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, int __prioceiling, int *__restrict __old_ceiling) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))); extern int pthread_mutex_consistent (pthread_mutex_t *__mutex) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutex_consistent_np (pthread_mutex_t *) __asm__ ("" "pthread_mutex_consistent") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__ ("pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent"))) ; extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t * __restrict __attr, int *__restrict __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, int __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict __attr, int *__restrict __kind) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t * __restrict __attr, int *__restrict __protocol) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, int __protocol) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t * __restrict __attr, int *__restrict __prioceiling) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, int __prioceiling) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr, int *__robustness) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_mutexattr_getrobust_np (pthread_mutexattr_t *, int *) __asm__ ("" "pthread_mutexattr_getrobust") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__ ("pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust"))) ; extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, int __robustness) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *, int) __asm__ ("" "pthread_mutexattr_setrobust") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__ ("pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust"))) ; extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, const pthread_rwlockattr_t *__restrict __attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))); extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, const struct timespec *__restrict __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock, clockid_t __clockid, const struct timespec *__restrict __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))); extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * __restrict __attr, int *__restrict __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, int __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t * __restrict __attr, int *__restrict __pref) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, int __pref) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_cond_init (pthread_cond_t *__restrict __cond, const pthread_condattr_t *__restrict __cond_attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_cond_destroy (pthread_cond_t *__cond) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_cond_signal (pthread_cond_t *__cond) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_cond_broadcast (pthread_cond_t *__cond) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, const struct timespec *__restrict __abstime) __attribute__ ((__nonnull__ (1, 2, 3))); extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __clockid_t __clock_id, const struct timespec *__restrict __abstime) __attribute__ ((__nonnull__ (1, 2, 4))); extern int pthread_condattr_init (pthread_condattr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_condattr_destroy (pthread_condattr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_condattr_getpshared (const pthread_condattr_t * __restrict __attr, int *__restrict __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, int __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_condattr_getclock (const pthread_condattr_t * __restrict __attr, __clockid_t *__restrict __clock_id) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_condattr_setclock (pthread_condattr_t *__attr, __clockid_t __clock_id) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_spin_destroy (pthread_spinlock_t *__lock) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_spin_lock (pthread_spinlock_t *__lock) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_spin_trylock (pthread_spinlock_t *__lock) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_spin_unlock (pthread_spinlock_t *__lock) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, const pthread_barrierattr_t *__restrict __attr, unsigned int __count) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_barrier_wait (pthread_barrier_t *__barrier) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t * __restrict __attr, int *__restrict __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))); extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, int __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_key_create (pthread_key_t *__key, void (*__destr_function) (void *)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int pthread_key_delete (pthread_key_t __key) __attribute__ ((__nothrow__ , __leaf__)); extern void *pthread_getspecific (pthread_key_t __key) __attribute__ ((__nothrow__ , __leaf__)); extern int pthread_setspecific (pthread_key_t __key, const void *__pointer) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__none__, 2))); extern int pthread_getcpuclockid (pthread_t __thread_id, __clockid_t *__clock_id) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))); extern int pthread_atfork (void (*__prepare) (void), void (*__parent) (void), void (*__child) (void)) __attribute__ ((__nothrow__ , __leaf__)); extern __inline __attribute__ ((__gnu_inline__)) int __attribute__ ((__nothrow__ , __leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) { return __thread1 == __thread2; } typedef pthread_mutex_t sys_mutex_t; typedef pthread_cond_t sys_cond_t; typedef pthread_t sys_thread_t; typedef void *(thread_creation_function) (void *); extern void sys_mutex_init (sys_mutex_t *); extern void sys_mutex_lock (sys_mutex_t *); extern void sys_mutex_unlock (sys_mutex_t *); extern void sys_cond_init (sys_cond_t *); extern void sys_cond_wait (sys_cond_t *, sys_mutex_t *); extern void sys_cond_signal (sys_cond_t *); extern void sys_cond_broadcast (sys_cond_t *); extern void sys_cond_destroy (sys_cond_t *); [[__nodiscard__]] extern sys_thread_t sys_thread_self (void); [[__nodiscard__]] extern _Bool sys_thread_equal (sys_thread_t, sys_thread_t); [[__nodiscard__]] extern _Bool sys_thread_create (sys_thread_t *, thread_creation_function *, void *); extern void sys_thread_yield (void); extern void sys_thread_set_name (const char *); struct bc_thread_state { struct bc_frame *fp; char *stack; char *stack_end; }; struct thread_state { union vectorlike_header header; Lisp_Object m_last_thing_searched; Lisp_Object m_saved_last_thing_searched; Lisp_Object name; Lisp_Object function; Lisp_Object result; Lisp_Object error_symbol; Lisp_Object error_data; Lisp_Object event_object; char const *m_stack_bottom; void const *stack_top; struct catchtag *m_catchlist; struct handler *m_handlerlist; struct handler *m_handlerlist_sentinel; union specbinding *m_specpdl; union specbinding *m_specpdl_end; union specbinding *m_specpdl_ptr; intmax_t m_lisp_eval_depth; struct buffer *m_current_buffer; struct re_registers m_search_regs; struct re_registers m_saved_search_regs; int m_waiting_for_user_input_p; _Bool m_waiting_for_input; sys_jmp_buf m_getcjmp; sys_thread_t thread_id; sys_cond_t thread_condvar; sys_cond_t *wait_condvar; char *thread_name; int not_holding_lock; struct thread_state *next_thread; struct bc_thread_state bc; } __attribute__ ((aligned (8))); static inline _Bool THREADP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_THREAD); } static inline void CHECK_THREAD (Lisp_Object x) { CHECK_TYPE (THREADP (x), builtin_lisp_symbol (1292), x); } static inline struct thread_state * XTHREAD (Lisp_Object a) { ((void) ( 0 && (THREADP (a)))); return ((struct thread_state *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } typedef struct { struct thread_state *owner; unsigned int count; sys_cond_t condition; } lisp_mutex_t; struct Lisp_Mutex { union vectorlike_header header; Lisp_Object name; lisp_mutex_t mutex; } __attribute__ ((aligned (8))); static inline _Bool MUTEXP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_MUTEX); } static inline void CHECK_MUTEX (Lisp_Object x) { CHECK_TYPE (MUTEXP (x), builtin_lisp_symbol (975), x); } static inline struct Lisp_Mutex * XMUTEX (Lisp_Object a) { ((void) ( 0 && (MUTEXP (a)))); return ((struct Lisp_Mutex *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } struct Lisp_CondVar { union vectorlike_header header; Lisp_Object mutex; Lisp_Object name; sys_cond_t cond; } __attribute__ ((aligned (8))); static inline _Bool CONDVARP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_CONDVAR); } static inline void CHECK_CONDVAR (Lisp_Object x) { CHECK_TYPE (CONDVARP (x), builtin_lisp_symbol (413), x); } static inline struct Lisp_CondVar * XCONDVAR (Lisp_Object a) { ((void) ( 0 && (CONDVARP (a)))); return ((struct Lisp_CondVar *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } extern struct thread_state *current_thread; extern void finalize_one_thread (struct thread_state *state); extern void finalize_one_mutex (struct Lisp_Mutex *); extern void finalize_one_condvar (struct Lisp_CondVar *); extern void maybe_reacquire_global_lock (void); extern void init_threads (void); extern void syms_of_threads (void); extern _Bool main_thread_p (const void *); extern _Bool in_current_thread (void); typedef int select_func (int, fd_set *, fd_set *, fd_set *, const struct timespec *, const sigset_t *); int thread_select (select_func *func, int max_fds, fd_set *rfds, fd_set *wfds, fd_set *efds, struct timespec *timeout, sigset_t *sigmask); _Bool thread_check_current_buffer (struct buffer *); static inline Lisp_Object (SYMBOL_VAL) (struct Lisp_Symbol *sym) { return (((void) ( 0 && ((sym)->u.s.redirect == SYMBOL_PLAINVAL))), (sym)->u.s.val.value); } static inline struct Lisp_Symbol * SYMBOL_ALIAS (struct Lisp_Symbol *sym) { ((sym->u.s.redirect == SYMBOL_VARALIAS && sym->u.s.val.alias) ? (void) 0 : __builtin_unreachable ()); return sym->u.s.val.alias; } static inline struct Lisp_Buffer_Local_Value * SYMBOL_BLV (struct Lisp_Symbol *sym) { ((sym->u.s.redirect == SYMBOL_LOCALIZED && sym->u.s.val.blv) ? (void) 0 : __builtin_unreachable ()); return sym->u.s.val.blv; } static inline lispfwd SYMBOL_FWD (struct Lisp_Symbol *sym) { ((sym->u.s.redirect == SYMBOL_FORWARDED && sym->u.s.val.fwd.fwdptr) ? (void) 0 : __builtin_unreachable ()); return sym->u.s.val.fwd; } static inline void (SET_SYMBOL_VAL) (struct Lisp_Symbol *sym, Lisp_Object v) { (((void) ( 0 && ((sym)->u.s.redirect == SYMBOL_PLAINVAL))), (sym)->u.s.val.value = (v)); } static inline void SET_SYMBOL_ALIAS (struct Lisp_Symbol *sym, struct Lisp_Symbol *v) { ((sym->u.s.redirect == SYMBOL_VARALIAS && v) ? (void) 0 : __builtin_unreachable ()); sym->u.s.val.alias = v; } static inline void SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Lisp_Buffer_Local_Value *v) { ((sym->u.s.redirect == SYMBOL_LOCALIZED && v) ? (void) 0 : __builtin_unreachable ()); sym->u.s.val.blv = v; } static inline void SET_SYMBOL_FWD (struct Lisp_Symbol *sym, void const *v) { ((sym->u.s.redirect == SYMBOL_FORWARDED && v) ? (void) 0 : __builtin_unreachable ()); sym->u.s.val.fwd.fwdptr = v; } static inline Lisp_Object SYMBOL_NAME (Lisp_Object sym) { return XSYMBOL (sym)->u.s.name; } static inline _Bool SYMBOL_INTERNED_P (Lisp_Object sym) { return XSYMBOL (sym)->u.s.interned != SYMBOL_UNINTERNED; } static inline _Bool SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object sym) { return XSYMBOL (sym)->u.s.interned == SYMBOL_INTERNED_IN_INITIAL_OBARRAY; } static inline int (SYMBOL_TRAPPED_WRITE_P) (Lisp_Object sym) { return (XSYMBOL (sym)->u.s.trapped_write); } static inline int (SYMBOL_CONSTANT_P) (Lisp_Object sym) { return (XSYMBOL (sym)->u.s.trapped_write == SYMBOL_NOWRITE); } struct Lisp_Hash_Table; struct hash_table_test { Lisp_Object name; Lisp_Object user_hash_function; Lisp_Object user_cmp_function; Lisp_Object (*cmpfn) (Lisp_Object, Lisp_Object, struct Lisp_Hash_Table *); Lisp_Object (*hashfn) (Lisp_Object, struct Lisp_Hash_Table *); }; struct Lisp_Hash_Table { union vectorlike_header header; Lisp_Object weak; Lisp_Object hash; Lisp_Object next; Lisp_Object index; ptrdiff_t count; ptrdiff_t next_free; _Bool purecopy; _Bool mutable; float rehash_threshold; float rehash_size; Lisp_Object key_and_value; struct hash_table_test test; struct Lisp_Hash_Table *next_weak; } __attribute__ ((aligned (8))); _Static_assert ( __builtin_offsetof ( struct Lisp_Hash_Table , weak ) == header_size, "verify (" "offsetof (struct Lisp_Hash_Table, weak) == header_size" ")"); static inline _Bool HASH_TABLE_P (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_HASH_TABLE); } static inline struct Lisp_Hash_Table * XHASH_TABLE (Lisp_Object a) { ((void) ( 0 && (HASH_TABLE_P (a)))); return ((struct Lisp_Hash_Table *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline Lisp_Object HASH_KEY (const struct Lisp_Hash_Table *h, ptrdiff_t idx) { return AREF (h->key_and_value, 2 * idx); } static inline Lisp_Object HASH_VALUE (const struct Lisp_Hash_Table *h, ptrdiff_t idx) { return AREF (h->key_and_value, 2 * idx + 1); } static inline Lisp_Object HASH_HASH (const struct Lisp_Hash_Table *h, ptrdiff_t idx) { return AREF (h->hash, idx); } static inline ptrdiff_t HASH_TABLE_SIZE (const struct Lisp_Hash_Table *h) { ptrdiff_t size = ASIZE (h->next); ((0 < size) ? (void) 0 : __builtin_unreachable ()); return size; } void hash_table_rehash (Lisp_Object); enum DEFAULT_HASH_SIZE { DEFAULT_HASH_SIZE = 65 }; static float const DEFAULT_REHASH_THRESHOLD = 0.8125; static float const DEFAULT_REHASH_SIZE = 1.5 - 1; static inline EMACS_UINT sxhash_combine (EMACS_UINT x, EMACS_UINT y) { return (x << 4) + (x >> (EMACS_INT_WIDTH - 4)) + y; } static inline EMACS_UINT SXHASH_REDUCE (EMACS_UINT x) { return (x ^ x >> (EMACS_INT_WIDTH - FIXNUM_BITS)) & (0x7fffffffffffffffL >> ((3 - 1) - 1)); } struct Lisp_Marker { union vectorlike_header header; struct buffer *buffer; bool_bf need_adjustment : 1; bool_bf insertion_type : 1; struct Lisp_Marker *next; ptrdiff_t charpos; ptrdiff_t bytepos; } __attribute__ ((aligned (8))); struct Lisp_Overlay { union vectorlike_header header; Lisp_Object start; Lisp_Object end; Lisp_Object plist; struct Lisp_Overlay *next; } __attribute__ ((aligned (8))); struct Lisp_Misc_Ptr { union vectorlike_header header; void *pointer; } __attribute__ ((aligned (8))); extern Lisp_Object make_misc_ptr (void *); static inline Lisp_Object make_mint_ptr (void *a) { Lisp_Object val = ((Lisp_Word) ((untagged_ptr) (a) + ((Lisp_Word_tag) (Lisp_Int0) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); return FIXNUMP (val) && XFIXNUMPTR (val) == a ? val : make_misc_ptr (a); } static inline _Bool mint_ptrp (Lisp_Object x) { return FIXNUMP (x) || PSEUDOVECTORP (x, PVEC_MISC_PTR); } static inline void * xmint_pointer (Lisp_Object a) { ((void) ( 0 && (mint_ptrp (a)))); if (FIXNUMP (a)) return XFIXNUMPTR (a); return ((struct Lisp_Misc_Ptr *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS))))->pointer; } struct Lisp_Sqlite { union vectorlike_header header; void *db; void *stmt; char *name; void (*finalizer) (void *); _Bool eof; _Bool is_statement; } __attribute__ ((aligned (8))); struct Lisp_User_Ptr { union vectorlike_header header; void (*finalizer) (void *); void *p; } __attribute__ ((aligned (8))); struct Lisp_Finalizer { union vectorlike_header header; Lisp_Object function; struct Lisp_Finalizer *prev; struct Lisp_Finalizer *next; } __attribute__ ((aligned (8))); extern struct Lisp_Finalizer finalizers; extern struct Lisp_Finalizer doomed_finalizers; static inline _Bool FINALIZERP (Lisp_Object x) { return PSEUDOVECTORP (x, PVEC_FINALIZER); } static inline struct Lisp_Finalizer * XFINALIZER (Lisp_Object a) { ((void) ( 0 && (FINALIZERP (a)))); return ((struct Lisp_Finalizer *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline _Bool MARKERP (Lisp_Object x) { return PSEUDOVECTORP (x, PVEC_MARKER); } static inline struct Lisp_Marker * XMARKER (Lisp_Object a) { ((void) ( 0 && (MARKERP (a)))); return ((struct Lisp_Marker *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline _Bool OVERLAYP (Lisp_Object x) { return PSEUDOVECTORP (x, PVEC_OVERLAY); } static inline struct Lisp_Overlay * XOVERLAY (Lisp_Object a) { ((void) ( 0 && (OVERLAYP (a)))); return ((struct Lisp_Overlay *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline Lisp_Object SYMBOL_WITH_POS_SYM (Lisp_Object a) { if (!SYMBOL_WITH_POS_P (a)) wrong_type_argument (builtin_lisp_symbol (1263), a); return XSYMBOL_WITH_POS (a)->sym; } static inline Lisp_Object SYMBOL_WITH_POS_POS (Lisp_Object a) { if (!SYMBOL_WITH_POS_P (a)) wrong_type_argument (builtin_lisp_symbol (1263), a); return XSYMBOL_WITH_POS (a)->pos; } static inline _Bool USER_PTRP (Lisp_Object x) { return PSEUDOVECTORP (x, PVEC_USER_PTR); } static inline struct Lisp_User_Ptr * XUSER_PTR (Lisp_Object a) { ((void) ( 0 && (USER_PTRP (a)))); return ((struct Lisp_User_Ptr *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline _Bool SQLITEP (Lisp_Object x) { return PSEUDOVECTORP (x, PVEC_SQLITE); } static inline _Bool SQLITE (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_SQLITE); } static inline void CHECK_SQLITE (Lisp_Object x) { CHECK_TYPE (SQLITE (x), builtin_lisp_symbol (1231), x); } static inline struct Lisp_Sqlite * XSQLITE (Lisp_Object a) { ((void) ( 0 && (SQLITEP (a)))); return ((struct Lisp_Sqlite *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline _Bool BIGNUMP (Lisp_Object x) { return PSEUDOVECTORP (x, PVEC_BIGNUM); } static inline _Bool INTEGERP (Lisp_Object x) { return FIXNUMP (x) || BIGNUMP (x); } static inline Lisp_Object make_int (intmax_t n) { return (! ((0 <= (n) || (-1 - (0x7fffffffffffffffL >> (3 - 1))) <= (n)) && (n) <= (0x7fffffffffffffffL >> (3 - 1)))) ? make_bigint (n) : make_fixnum (n); } static inline Lisp_Object make_uint (uintmax_t n) { return (! ((0 <= (n) || (-1 - (0x7fffffffffffffffL >> (3 - 1))) <= (n)) && (n) <= (0x7fffffffffffffffL >> (3 - 1)))) ? make_biguint (n) : make_fixnum (n); } struct Lisp_Intfwd { enum Lisp_Fwd_Type type; intmax_t *intvar; }; struct Lisp_Boolfwd { enum Lisp_Fwd_Type type; _Bool *boolvar; }; struct Lisp_Objfwd { enum Lisp_Fwd_Type type; Lisp_Object *objvar; }; struct Lisp_Buffer_Objfwd { enum Lisp_Fwd_Type type; int offset; Lisp_Object predicate; }; struct Lisp_Buffer_Local_Value { bool_bf local_if_set : 1; bool_bf found : 1; lispfwd fwd; Lisp_Object where; Lisp_Object defcell; Lisp_Object valcell; }; struct Lisp_Kboard_Objfwd { enum Lisp_Fwd_Type type; int offset; }; static inline enum Lisp_Fwd_Type XFWDTYPE (lispfwd a) { enum Lisp_Fwd_Type const *p = a.fwdptr; return *p; } static inline _Bool BUFFER_OBJFWDP (lispfwd a) { return XFWDTYPE (a) == Lisp_Fwd_Buffer_Obj; } static inline struct Lisp_Buffer_Objfwd const * XBUFFER_OBJFWD (lispfwd a) { ((void) ( 0 && (BUFFER_OBJFWDP (a)))); return a.fwdptr; } struct Lisp_Float { union { double data; struct Lisp_Float *chain; char _Alignas (8) gcaligned; } u; }; _Static_assert (( _Alignof (struct Lisp_Float) % 8 == 0), "verify (" "GCALIGNED (struct Lisp_Float)" ")"); static inline _Bool (FLOATP) (Lisp_Object x) { return TAGGEDP (x, Lisp_Float); } static inline struct Lisp_Float * XFLOAT (Lisp_Object a) { ((void) ( 0 && (FLOATP (a)))); return ((struct Lisp_Float *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Float) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline double XFLOAT_DATA (Lisp_Object f) { return XFLOAT (f)->u.data; } enum Lisp_Compiled { COMPILED_ARGLIST = 0, COMPILED_BYTECODE = 1, COMPILED_CONSTANTS = 2, COMPILED_STACK_DEPTH = 3, COMPILED_DOC_STRING = 4, COMPILED_INTERACTIVE = 5 }; enum char_bits { CHAR_ALT = 0x0400000, CHAR_SUPER = 0x0800000, CHAR_HYPER = 0x1000000, CHAR_SHIFT = 0x2000000, CHAR_CTL = 0x4000000, CHAR_META = 0x8000000, CHAR_MODIFIER_MASK = CHAR_ALT | CHAR_SUPER | CHAR_HYPER | CHAR_SHIFT | CHAR_CTL | CHAR_META, CHARACTERBITS = 22 }; static inline _Bool FIXNATP (Lisp_Object x) { return FIXNUMP (x) && 0 <= XFIXNUM (x); } static inline EMACS_INT XFIXNAT (Lisp_Object a) { ((void) ( 0 && (FIXNUMP (a)))); EMACS_INT int0 = Lisp_Int0; EMACS_INT result = ((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? XFIXNUM (a) : XLI (a) - (int0 << VALBITS); ((0 <= result) ? (void) 0 : __builtin_unreachable ()); return result; } static inline _Bool NUMBERP (Lisp_Object x) { return INTEGERP (x) || FLOATP (x); } static inline _Bool RANGED_FIXNUMP (intmax_t lo, Lisp_Object x, intmax_t hi) { return FIXNUMP (x) && lo <= XFIXNUM (x) && XFIXNUM (x) <= hi; } static inline _Bool AUTOLOADP (Lisp_Object x) { return CONSP (x) && EQ (builtin_lisp_symbol (277), XCAR (x)); } static inline _Bool WINDOW_CONFIGURATIONP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_WINDOW_CONFIGURATION); } static inline _Bool COMPILEDP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_COMPILED); } static inline _Bool FRAMEP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_FRAME); } static inline _Bool RECORDP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_RECORD); } static inline void CHECK_RECORD (Lisp_Object x) { CHECK_TYPE (RECORDP (x), builtin_lisp_symbol (1124), x); } static inline _Bool IMAGEP (Lisp_Object x) { return CONSP (x) && EQ (XCAR (x), builtin_lisp_symbol (747)); } static inline _Bool ARRAYP (Lisp_Object x) { return VECTORP (x) || STRINGP (x) || CHAR_TABLE_P (x) || BOOL_VECTOR_P (x); } static inline void CHECK_LIST (Lisp_Object x) { CHECK_TYPE (CONSP (x) || NILP (x), builtin_lisp_symbol (871), x); } static inline void CHECK_LIST_END (Lisp_Object x, Lisp_Object y) { CHECK_TYPE (NILP (x), builtin_lisp_symbol (871), y); } static inline void (CHECK_FIXNUM) (Lisp_Object x) { CHECK_TYPE (FIXNUMP (x), builtin_lisp_symbol (614), x); } static inline void CHECK_STRING_CAR (Lisp_Object x) { CHECK_TYPE (STRINGP (XCAR (x)), builtin_lisp_symbol (1248), XCAR (x)); } static inline ptrdiff_t CHECK_VECTOR_OR_STRING (Lisp_Object x) { if (VECTORP (x)) return ASIZE (x); if (STRINGP (x)) return SCHARS (x); wrong_type_argument (builtin_lisp_symbol (263), x); } static inline void CHECK_ARRAY (Lisp_Object x, Lisp_Object predicate) { CHECK_TYPE (ARRAYP (x), predicate, x); } static inline void CHECK_FIXNAT (Lisp_Object x) { CHECK_TYPE (FIXNATP (x), builtin_lisp_symbol (1416), x); } static inline double XFLOATINT (Lisp_Object n) { return (FIXNUMP (n) ? XFIXNUM (n) : FLOATP (n) ? XFLOAT_DATA (n) : bignum_to_double (n)); } static inline void CHECK_NUMBER (Lisp_Object x) { CHECK_TYPE (NUMBERP (x), builtin_lisp_symbol (1016), x); } static inline void CHECK_INTEGER (Lisp_Object x) { CHECK_TYPE (INTEGERP (x), builtin_lisp_symbol (1016), x); } static inline void CHECK_SUBR (Lisp_Object x) { CHECK_TYPE (SUBRP (x), builtin_lisp_symbol (1253), x); } extern void defsubr (union Aligned_Lisp_Subr *); enum maxargs { MANY = -2, UNEVALLED = -1 }; static inline Lisp_Object call0 (Lisp_Object fn) { return Ffuncall (1, &fn); } static inline Lisp_Object call1 (Lisp_Object fn, Lisp_Object arg1) { return (Ffuncall) ((sizeof (((Lisp_Object []) {fn, arg1})) / sizeof (((Lisp_Object []) {fn, arg1}))[0]), ((Lisp_Object []) {fn, arg1})); } static inline Lisp_Object call2 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2) { return (Ffuncall) ((sizeof (((Lisp_Object []) {fn, arg1, arg2})) / sizeof (((Lisp_Object []) {fn, arg1, arg2}))[0]), ((Lisp_Object []) {fn, arg1, arg2})); } static inline Lisp_Object call3 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3) { return (Ffuncall) ((sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3})) / sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3}))[0]), ((Lisp_Object []) {fn, arg1, arg2, arg3})); } static inline Lisp_Object call4 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3, Lisp_Object arg4) { return (Ffuncall) ((sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4})) / sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4}))[0]), ((Lisp_Object []) {fn, arg1, arg2, arg3, arg4})); } static inline Lisp_Object call5 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3, Lisp_Object arg4, Lisp_Object arg5) { return (Ffuncall) ((sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5})) / sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5}))[0]), ((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5})); } static inline Lisp_Object call6 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3, Lisp_Object arg4, Lisp_Object arg5, Lisp_Object arg6) { return (Ffuncall) ((sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5, arg6})) / sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5, arg6}))[0]), ((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5, arg6})); } static inline Lisp_Object call7 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3, Lisp_Object arg4, Lisp_Object arg5, Lisp_Object arg6, Lisp_Object arg7) { return (Ffuncall) ((sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7})) / sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7}))[0]), ((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7})); } static inline Lisp_Object call8 (Lisp_Object fn, Lisp_Object arg1, Lisp_Object arg2, Lisp_Object arg3, Lisp_Object arg4, Lisp_Object arg5, Lisp_Object arg6, Lisp_Object arg7, Lisp_Object arg8) { return (Ffuncall) ((sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8})) / sizeof (((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8}))[0]), ((Lisp_Object []) {fn, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8})); } extern void defvar_lisp (struct Lisp_Objfwd const *, char const *); extern void defvar_lisp_nopro (struct Lisp_Objfwd const *, char const *); extern void defvar_bool (struct Lisp_Boolfwd const *, char const *); extern void defvar_int (struct Lisp_Intfwd const *, char const *); extern void defvar_kboard (struct Lisp_Kboard_Objfwd const *, char const *); enum specbind_tag { SPECPDL_UNWIND, SPECPDL_UNWIND_ARRAY, SPECPDL_UNWIND_PTR, SPECPDL_UNWIND_INT, SPECPDL_UNWIND_INTMAX, SPECPDL_UNWIND_EXCURSION, SPECPDL_UNWIND_VOID, SPECPDL_BACKTRACE, SPECPDL_NOP, SPECPDL_MODULE_RUNTIME, SPECPDL_MODULE_ENVIRONMENT, SPECPDL_LET, SPECPDL_LET_LOCAL, SPECPDL_LET_DEFAULT }; union specbinding { enum specbind_tag kind : 8; struct { enum specbind_tag kind : 8; void (*func) (Lisp_Object); Lisp_Object arg; EMACS_INT eval_depth; } unwind; struct { enum specbind_tag kind : 8; ptrdiff_t nelts; Lisp_Object *array; } unwind_array; struct { enum specbind_tag kind : 8; void (*func) (void *); void *arg; void (*mark) (void *); } unwind_ptr; struct { enum specbind_tag kind : 8; void (*func) (int); int arg; } unwind_int; struct { enum specbind_tag kind : 8; void (*func) (intmax_t); intmax_t arg; } unwind_intmax; struct { enum specbind_tag kind : 8; Lisp_Object marker, window; } unwind_excursion; struct { enum specbind_tag kind : 8; void (*func) (void); } unwind_void; struct { enum specbind_tag kind : 8; Lisp_Object symbol, old_value, where; } let; struct { enum specbind_tag kind : 8; bool_bf debug_on_exit : 1; Lisp_Object function; Lisp_Object *args; ptrdiff_t nargs; } bt; }; typedef struct { ptrdiff_t bytes; } specpdl_ref; static inline specpdl_ref wrap_specpdl_ref (ptrdiff_t bytes) { return (specpdl_ref){.bytes = bytes}; } static inline ptrdiff_t unwrap_specpdl_ref (specpdl_ref ref) { return ref.bytes; } static inline specpdl_ref specpdl_count_to_ref (ptrdiff_t count) { return wrap_specpdl_ref (count * sizeof (union specbinding)); } static inline ptrdiff_t specpdl_ref_to_count (specpdl_ref ref) { return unwrap_specpdl_ref (ref) / sizeof (union specbinding); } static inline _Bool specpdl_ref_eq (specpdl_ref a, specpdl_ref b) { return unwrap_specpdl_ref (a) == unwrap_specpdl_ref (b); } static inline _Bool specpdl_ref_lt (specpdl_ref a, specpdl_ref b) { return unwrap_specpdl_ref (a) < unwrap_specpdl_ref (b); } static inline _Bool specpdl_ref_valid_p (specpdl_ref ref) { return unwrap_specpdl_ref (ref) >= 0; } static inline specpdl_ref make_invalid_specpdl_ref (void) { return wrap_specpdl_ref (-1); } static inline specpdl_ref specpdl_ref_add (specpdl_ref ref, ptrdiff_t delta) { return wrap_specpdl_ref (unwrap_specpdl_ref (ref) + delta * sizeof (union specbinding)); } static inline union specbinding * specpdl_ref_to_ptr (specpdl_ref ref) { return (union specbinding *)((char *)(current_thread->m_specpdl) + unwrap_specpdl_ref (ref)); } static inline specpdl_ref SPECPDL_INDEX (void) { return wrap_specpdl_ref ((char *)(current_thread->m_specpdl_ptr) - (char *)(current_thread->m_specpdl)); } static inline _Bool backtrace_debug_on_exit (union specbinding *pdl) { ((void) ( 0 && (pdl->kind == SPECPDL_BACKTRACE))); return pdl->bt.debug_on_exit; } void grow_specpdl_allocation (void); static inline void grow_specpdl (void) { (current_thread->m_specpdl_ptr)++; if ((current_thread->m_specpdl_ptr) == (current_thread->m_specpdl_end)) grow_specpdl_allocation (); } static inline specpdl_ref record_in_backtrace (Lisp_Object function, Lisp_Object *args, ptrdiff_t nargs) { specpdl_ref count = SPECPDL_INDEX (); ((void) ( 0 && (nargs >= UNEVALLED))); (current_thread->m_specpdl_ptr)->bt.kind = SPECPDL_BACKTRACE; (current_thread->m_specpdl_ptr)->bt.debug_on_exit = 0 ; (current_thread->m_specpdl_ptr)->bt.function = function; current_thread->stack_top = (current_thread->m_specpdl_ptr)->bt.args = args; (current_thread->m_specpdl_ptr)->bt.nargs = nargs; grow_specpdl (); return count; } enum handlertype { CATCHER, CONDITION_CASE, CATCHER_ALL }; enum nonlocal_exit { NONLOCAL_EXIT_SIGNAL, NONLOCAL_EXIT_THROW, }; struct handler { enum handlertype type; Lisp_Object tag_or_ch; enum nonlocal_exit nonlocal_exit; Lisp_Object val; struct handler *next; struct handler *nextfree; Lisp_Object *bytecode_top; int bytecode_dest; sys_jmp_buf jmp; EMACS_INT f_lisp_eval_depth; specpdl_ref pdlcount; struct bc_frame *act_rec; int poll_suppress_count; int interrupt_input_blocked; int x_error_handler_depth; }; extern Lisp_Object memory_signal_data; extern _Bool volatile pending_signals; extern void process_pending_signals (void); extern void probably_quit (void); static inline void maybe_quit (void) { if (!NILP (globals.f_Vquit_flag) || pending_signals) probably_quit (); } static inline void rarely_quit (unsigned short int count) { if (! count) maybe_quit (); } extern Lisp_Object Vascii_downcase_table; extern Lisp_Object Vascii_canon_table; void staticpro (Lisp_Object const *); enum { NSTATICS = 2048 }; extern Lisp_Object const *staticvec[NSTATICS]; extern int staticidx; struct window; struct frame; static inline Lisp_Object * xvector_contents_addr (Lisp_Object a, ptrdiff_t i) { void *v = XVECTOR (a); char *p = v; void *w = p + header_size + i * word_size; return w; } static inline Lisp_Object * xvector_contents (Lisp_Object a) { return xvector_contents_addr (a, 0); } static inline void vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Object const *args, ptrdiff_t count) { ((void) ( 0 && (0 <= offset && 0 <= count && offset + count <= ASIZE (v)))); memcpy (xvector_contents_addr (v, offset), args, count * sizeof *args); } static inline void set_hash_key_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) { gc_aset (h->key_and_value, 2 * idx, val); } static inline void set_hash_value_slot (struct Lisp_Hash_Table *h, ptrdiff_t idx, Lisp_Object val) { gc_aset (h->key_and_value, 2 * idx + 1, val); } static inline void set_symbol_function (Lisp_Object sym, Lisp_Object function) { XSYMBOL (sym)->u.s.function = function; } static inline void set_symbol_plist (Lisp_Object sym, Lisp_Object plist) { XSYMBOL (sym)->u.s.plist = plist; } static inline void set_symbol_next (Lisp_Object sym, struct Lisp_Symbol *next) { XSYMBOL (sym)->u.s.next = next; } static inline void make_symbol_constant (Lisp_Object sym) { XSYMBOL (sym)->u.s.trapped_write = SYMBOL_NOWRITE; } static inline int blv_found (struct Lisp_Buffer_Local_Value *blv) { ((void) ( 0 && (blv->found == !EQ (blv->defcell, blv->valcell)))); return blv->found; } static inline void set_overlay_plist (Lisp_Object overlay, Lisp_Object plist) { XOVERLAY (overlay)->plist = plist; } static inline INTERVAL string_intervals (Lisp_Object s) { return XSTRING (s)->u.s.intervals; } static inline void set_string_intervals (Lisp_Object s, INTERVAL i) { XSTRING (s)->u.s.intervals = i; } static inline void set_char_table_defalt (Lisp_Object table, Lisp_Object val) { XCHAR_TABLE (table)->defalt = val; } static inline void set_char_table_purpose (Lisp_Object table, Lisp_Object val) { XCHAR_TABLE (table)->purpose = val; } static inline void set_char_table_extras (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) { ((void) ( 0 && (0 <= idx && idx < CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (table))))); XCHAR_TABLE (table)->extras[idx] = val; } static inline void set_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) { ((void) ( 0 && (0 <= idx && idx < (1 << CHARTAB_SIZE_BITS_0)))); XCHAR_TABLE (table)->contents[idx] = val; } static inline void set_sub_char_table_contents (Lisp_Object table, ptrdiff_t idx, Lisp_Object val) { XSUB_CHAR_TABLE (table)->contents[idx] = val; } extern intmax_t bignum_to_intmax (Lisp_Object) __attribute__ ((__const__)); extern uintmax_t bignum_to_uintmax (Lisp_Object) __attribute__ ((__const__)); extern ptrdiff_t bignum_bufsize (Lisp_Object, int) __attribute__ ((__const__)); extern ptrdiff_t bignum_to_c_string (char *, ptrdiff_t, Lisp_Object, int); extern Lisp_Object bignum_to_string (Lisp_Object, int); extern Lisp_Object make_bignum_str (char const *, int); extern Lisp_Object make_neg_biguint (uintmax_t); extern Lisp_Object double_to_integer (double); static inline _Bool integer_to_intmax (Lisp_Object num, intmax_t *n) { if (FIXNUMP (num)) { *n = XFIXNUM (num); return 1 ; } else { intmax_t i = bignum_to_intmax (num); *n = i; return i != 0; } } static inline _Bool integer_to_uintmax (Lisp_Object num, uintmax_t *n) { if (FIXNUMP (num)) { *n = XFIXNUM (num); return 0 <= XFIXNUM (num); } else { uintmax_t i = bignum_to_uintmax (num); *n = i; return i != 0; } } typedef intmax_t modiff_count; static inline modiff_count modiff_incr (modiff_count *a) { modiff_count a0 = *a; _Bool modiff_overflow = __builtin_add_overflow (a0, 1, a); ((void) ( 0 && (!modiff_overflow && *a >> 30 >> 30 == 0))); return a0; } static inline Lisp_Object modiff_to_integer (modiff_count a) { ((0 <= a && a >> 30 >> 30 == 0) ? (void) 0 : __builtin_unreachable ()); return make_int (a); } extern _Noreturn __attribute__ ((__cold__)) void wrong_choice (Lisp_Object, Lisp_Object); extern void notify_variable_watchers (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object indirect_function (Lisp_Object); extern Lisp_Object find_symbol_value (Lisp_Object); enum Arith_Comparison { ARITH_EQUAL, ARITH_NOTEQUAL, ARITH_LESS, ARITH_GRTR, ARITH_LESS_OR_EQUAL, ARITH_GRTR_OR_EQUAL }; extern Lisp_Object arithcompare (Lisp_Object num1, Lisp_Object num2, enum Arith_Comparison comparison); extern intmax_t cons_to_signed (Lisp_Object, intmax_t, intmax_t); extern uintmax_t cons_to_unsigned (Lisp_Object, uintmax_t); extern struct Lisp_Symbol *indirect_variable (struct Lisp_Symbol *); extern _Noreturn __attribute__ ((__cold__)) void args_out_of_range (Lisp_Object, Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void circular_list (Lisp_Object); extern Lisp_Object do_symval_forwarding (lispfwd); enum Set_Internal_Bind { SET_INTERNAL_SET, SET_INTERNAL_BIND, SET_INTERNAL_UNBIND, SET_INTERNAL_THREAD_SWITCH }; extern void set_internal (Lisp_Object, Lisp_Object, Lisp_Object, enum Set_Internal_Bind); extern void set_default_internal (Lisp_Object, Lisp_Object, enum Set_Internal_Bind bindflag); extern Lisp_Object expt_integer (Lisp_Object, Lisp_Object); extern void syms_of_data (void); extern void swap_in_global_binding (struct Lisp_Symbol *); extern void syms_of_cmds (void); extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t, ptrdiff_t, _Bool , _Bool , Lisp_Object); extern void init_coding (void); extern void init_coding_once (void); extern void syms_of_coding (void); extern _Bool string_ascii_p (Lisp_Object); extern ptrdiff_t chars_in_text (const unsigned char *, ptrdiff_t); extern ptrdiff_t multibyte_chars_in_text (const unsigned char *, ptrdiff_t); extern void syms_of_character (void); extern void init_charset (void); extern void init_charset_once (void); extern void syms_of_charset (void); struct charset; extern void init_syntax_once (void); extern void syms_of_syntax (void); enum { NEXT_ALMOST_PRIME_LIMIT = 11 }; extern ptrdiff_t list_length (Lisp_Object); extern EMACS_INT next_almost_prime (EMACS_INT) __attribute__ ((__const__)); extern Lisp_Object larger_vector (Lisp_Object, ptrdiff_t, ptrdiff_t); extern _Bool sweep_weak_table (struct Lisp_Hash_Table *, _Bool ); extern void hexbuf_digest (char *, void const *, int); extern char *extract_data_from_object (Lisp_Object, ptrdiff_t *, ptrdiff_t *); EMACS_UINT hash_string (char const *, ptrdiff_t); EMACS_UINT sxhash (Lisp_Object); Lisp_Object hashfn_user_defined (Lisp_Object, struct Lisp_Hash_Table *); Lisp_Object make_hash_table (struct hash_table_test, EMACS_INT, float, float, Lisp_Object, _Bool ); ptrdiff_t hash_lookup (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object *); ptrdiff_t hash_put (struct Lisp_Hash_Table *, Lisp_Object, Lisp_Object, Lisp_Object); void hash_remove_from_table (struct Lisp_Hash_Table *, Lisp_Object); extern struct hash_table_test const hashtest_eq, hashtest_eql, hashtest_equal; extern void validate_subarray (Lisp_Object, Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t *, ptrdiff_t *); extern Lisp_Object substring_both (Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t); extern Lisp_Object merge (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object merge_c (Lisp_Object, Lisp_Object, _Bool (*) (Lisp_Object, Lisp_Object)); extern Lisp_Object do_yes_or_no_p (Lisp_Object); extern Lisp_Object concat2 (Lisp_Object, Lisp_Object); extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object); extern _Bool equal_no_quit (Lisp_Object, Lisp_Object); extern Lisp_Object nconc2 (Lisp_Object, Lisp_Object); extern Lisp_Object assq_no_quit (Lisp_Object, Lisp_Object); extern Lisp_Object assoc_no_quit (Lisp_Object, Lisp_Object); extern void clear_string_char_byte_cache (void); extern ptrdiff_t string_char_to_byte (Lisp_Object, ptrdiff_t); extern ptrdiff_t string_byte_to_char (Lisp_Object, ptrdiff_t); extern Lisp_Object string_to_multibyte (Lisp_Object); extern Lisp_Object string_make_unibyte (Lisp_Object); extern void syms_of_fns (void); extern void tim_sort (Lisp_Object, Lisp_Object *, const ptrdiff_t); _Static_assert (2 == 2 || 2 == 16, "verify (" "FLT_RADIX == 2 || FLT_RADIX == 16" ")"); enum { LOG2_FLT_RADIX = 2 == 2 ? 1 : 4 }; int double_integer_scale (double); extern Lisp_Object fmod_float (Lisp_Object x, Lisp_Object y); extern void syms_of_floatfns (void); extern void syms_of_fringe (void); extern void init_fringe (void); extern void mark_fringe_data (void); extern void init_fringe_once (void); extern int x_bitmap_mask (struct frame *, ptrdiff_t); extern void syms_of_image (void); extern void init_json (void); extern void syms_of_json (void); extern void move_gap_both (ptrdiff_t, ptrdiff_t); extern _Noreturn __attribute__ ((__cold__)) void buffer_overflow (void); extern void make_gap (ptrdiff_t); extern void make_gap_1 (struct buffer *, ptrdiff_t); extern ptrdiff_t copy_text (const unsigned char *, unsigned char *, ptrdiff_t, _Bool , _Bool ); extern int count_combining_before (const unsigned char *, ptrdiff_t, ptrdiff_t, ptrdiff_t); extern int count_combining_after (const unsigned char *, ptrdiff_t, ptrdiff_t, ptrdiff_t); extern void insert (const char *, ptrdiff_t); extern void insert_and_inherit (const char *, ptrdiff_t); extern void insert_1_both (const char *, ptrdiff_t, ptrdiff_t, _Bool , _Bool , _Bool ); extern void insert_from_gap_1 (ptrdiff_t, ptrdiff_t, _Bool text_at_gap_tail); extern void insert_from_gap (ptrdiff_t, ptrdiff_t, _Bool text_at_gap_tail); extern void insert_from_string (Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, _Bool ); extern void insert_from_buffer (struct buffer *, ptrdiff_t, ptrdiff_t, _Bool ); extern void insert_char (int); extern void insert_string (const char *); extern void insert_before_markers (const char *, ptrdiff_t); extern void insert_before_markers_and_inherit (const char *, ptrdiff_t); extern void insert_from_string_before_markers (Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, _Bool ); extern void del_range (ptrdiff_t, ptrdiff_t); extern Lisp_Object del_range_1 (ptrdiff_t, ptrdiff_t, _Bool , _Bool ); extern void del_range_byte (ptrdiff_t, ptrdiff_t); extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, _Bool ); extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, _Bool ); extern void modify_text (ptrdiff_t, ptrdiff_t); extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *); extern void prepare_to_modify_buffer_1 (ptrdiff_t, ptrdiff_t, ptrdiff_t *); extern void invalidate_buffer_caches (struct buffer *, ptrdiff_t, ptrdiff_t); extern void signal_after_change (ptrdiff_t, ptrdiff_t, ptrdiff_t); extern void adjust_after_insert (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t); extern void adjust_markers_for_delete (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t); extern void adjust_markers_bytepos (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, int); extern void replace_range (ptrdiff_t, ptrdiff_t, Lisp_Object, _Bool , _Bool , _Bool , _Bool , _Bool ); extern void replace_range_2 (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, const char *, ptrdiff_t, ptrdiff_t, _Bool ); extern void syms_of_insdel (void); extern Lisp_Object Vwindow_system; extern Lisp_Object sit_for (Lisp_Object, _Bool , int); extern _Bool noninteractive_need_newline; extern Lisp_Object echo_area_buffer[2]; extern void add_to_log (char const *, ...); extern void vadd_to_log (char const *, va_list); extern void check_message_stack (void); extern void clear_message_stack (void); extern void setup_echo_area_for_printing ( _Bool ); extern _Bool push_message (void); extern void pop_message_unwind (void); extern Lisp_Object restore_message_unwind (Lisp_Object); extern void restore_message (void); extern Lisp_Object current_message (void); extern void clear_message ( _Bool , _Bool ); extern void message (const char *, ...) __attribute__ ((__format__ (__printf__, 1, 2))); extern void message1 (const char *); extern void message1_nolog (const char *); extern void message3 (Lisp_Object); extern void message3_nolog (Lisp_Object); extern void message_dolog (const char *, ptrdiff_t, _Bool , _Bool ); extern void message_with_string (const char *, Lisp_Object, _Bool ); extern void message_log_maybe_newline (void); extern void update_echo_area (void); extern void truncate_echo_area (ptrdiff_t); extern void redisplay (void); extern ptrdiff_t count_lines (ptrdiff_t start_byte, ptrdiff_t end_byte); void set_frame_cursor_types (struct frame *, Lisp_Object); extern void syms_of_xdisp (void); extern void init_xdisp (void); extern Lisp_Object safe_eval (Lisp_Object); extern _Bool pos_visible_p (struct window *, ptrdiff_t, int *, int *, int *, int *, int *, int *); extern void syms_of_sqlite (void); extern void syms_of_xsettings (void); extern void memory_warnings (void *, void (*warnfun) (const char *)); extern void parse_str_as_multibyte (const unsigned char *, ptrdiff_t, ptrdiff_t *, ptrdiff_t *); extern void *my_heap_start (void); extern void check_pure_size (void); unsigned char *resize_string_data (Lisp_Object, ptrdiff_t, int, int); extern void malloc_warning (const char *); extern _Noreturn __attribute__ ((__cold__)) void memory_full (size_t); extern _Noreturn __attribute__ ((__cold__)) void buffer_memory_full (ptrdiff_t); extern _Bool survives_gc_p (Lisp_Object); extern void mark_object (Lisp_Object); extern void mark_objects (Lisp_Object *, ptrdiff_t); extern void alloc_unexec_pre (void); extern void alloc_unexec_post (void); extern void mark_c_stack (char const *, char const *); extern void flush_stack_call_func1 (void (*func) (void *arg), void *arg); extern void mark_memory (void const *start, void const *end); static inline void flush_stack_call_func (void (*func) (void *arg), void *arg) { __builtin_unwind_init (); flush_stack_call_func1 (func, arg); } extern void garbage_collect (void); extern void maybe_garbage_collect (void); extern _Bool maybe_garbage_collect_eagerly (EMACS_INT factor); extern const char *pending_malloc_warning; extern Lisp_Object zero_vector; extern EMACS_INT consing_until_gc; extern int number_finalizers_run; extern Lisp_Object list1 (Lisp_Object); extern Lisp_Object list2 (Lisp_Object, Lisp_Object); extern Lisp_Object list3 (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object list4 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object list5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object listn (ptrdiff_t, Lisp_Object, ...); extern Lisp_Object pure_listn (ptrdiff_t, Lisp_Object, ...); enum gc_root_type { GC_ROOT_STATICPRO, GC_ROOT_BUFFER_LOCAL_DEFAULT, GC_ROOT_BUFFER_LOCAL_NAME, GC_ROOT_C_SYMBOL }; struct gc_root_visitor { void (*visit) (Lisp_Object const *, enum gc_root_type, void *); void *data; }; extern void visit_static_gc_roots (struct gc_root_visitor visitor); static inline Lisp_Object list1i (intmax_t a) { return list1 (make_int (a)); } static inline Lisp_Object list2i (intmax_t a, intmax_t b) { return list2 (make_int (a), make_int (b)); } static inline Lisp_Object list3i (intmax_t a, intmax_t b, intmax_t c) { return list3 (make_int (a), make_int (b), make_int (c)); } static inline Lisp_Object list4i (intmax_t a, intmax_t b, intmax_t c, intmax_t d) { return list4 (make_int (a), make_int (b), make_int (c), make_int (d)); } extern Lisp_Object make_uninit_bool_vector (EMACS_INT); extern Lisp_Object bool_vector_fill (Lisp_Object, Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void string_overflow (void); extern Lisp_Object make_string (const char *, ptrdiff_t); extern Lisp_Object make_formatted_string (char *, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern Lisp_Object make_unibyte_string (const char *, ptrdiff_t); extern ptrdiff_t vectorlike_nbytes (const union vectorlike_header *hdr); static inline ptrdiff_t vector_nbytes (const struct Lisp_Vector *v) { return vectorlike_nbytes (&v->header); } static inline Lisp_Object build_unibyte_string (const char *str) { return make_unibyte_string (str, strlen (str)); } extern Lisp_Object make_multibyte_string (const char *, ptrdiff_t, ptrdiff_t); extern Lisp_Object make_event_array (ptrdiff_t, Lisp_Object *); extern Lisp_Object make_uninit_string (EMACS_INT); extern Lisp_Object make_uninit_multibyte_string (EMACS_INT, EMACS_INT); extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, ptrdiff_t); extern Lisp_Object make_specified_string (const char *, ptrdiff_t, ptrdiff_t, _Bool ); extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, _Bool ); extern Lisp_Object make_pure_c_string (const char *, ptrdiff_t); extern void pin_string (Lisp_Object string); static inline Lisp_Object build_pure_c_string (const char *str) { return make_pure_c_string (str, strlen (str)); } static inline Lisp_Object build_string (const char *str) { return make_string (str, strlen (str)); } extern Lisp_Object pure_cons (Lisp_Object, Lisp_Object); extern Lisp_Object make_vector (ptrdiff_t, Lisp_Object); extern struct Lisp_Vector *allocate_nil_vector (ptrdiff_t) __attribute__ ((__returns_nonnull__)); extern struct Lisp_Vector *allocate_vector (ptrdiff_t) __attribute__ ((__returns_nonnull__)); static inline Lisp_Object make_uninit_vector (ptrdiff_t size) { return make_lisp_ptr (allocate_vector (size), Lisp_Vectorlike); } static inline Lisp_Object make_uninit_sub_char_table (int depth, int min_char) { int slots = SUB_CHAR_TABLE_OFFSET + chartab_size[depth]; Lisp_Object v = make_uninit_vector (slots); ((XVECTOR (v))->header.size |= ( (9223372036854775807L) - (9223372036854775807L) / 2) | ((PVEC_SUB_CHAR_TABLE) << PSEUDOVECTOR_AREA_BITS)); XSUB_CHAR_TABLE (v)->depth = depth; XSUB_CHAR_TABLE (v)->min_char = min_char; return v; } static inline Lisp_Object make_nil_vector (ptrdiff_t size) { return make_lisp_ptr (allocate_nil_vector (size), Lisp_Vectorlike); } extern struct Lisp_Vector *allocate_pseudovector (int, int, int, enum pvec_type) __attribute__ ((__returns_nonnull__)); extern _Bool gc_in_progress; extern Lisp_Object make_float (double); extern void display_malloc_warning (void); extern specpdl_ref inhibit_garbage_collection (void); extern Lisp_Object build_symbol_with_pos (Lisp_Object, Lisp_Object); extern Lisp_Object build_overlay (Lisp_Object, Lisp_Object, Lisp_Object); extern void free_cons (struct Lisp_Cons *); extern void init_alloc_once (void); extern void init_alloc (void); extern void syms_of_alloc (void); extern struct buffer *allocate_buffer (void) __attribute__ ((__returns_nonnull__)); extern int valid_lisp_object_p (Lisp_Object); extern void malloc_enable_thread (void); extern Lisp_Object copy_char_table (Lisp_Object); extern Lisp_Object char_table_ref_and_range (Lisp_Object, int, int *, int *); extern void char_table_set_range (Lisp_Object, int, int, Lisp_Object); extern void map_char_table (void (*) (Lisp_Object, Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object); extern void map_char_table_for_charset (void (*c_function) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, struct charset *, unsigned, unsigned); extern Lisp_Object uniprop_table (Lisp_Object); extern Lisp_Object get_unicode_property (Lisp_Object, int); extern void syms_of_chartab (void); extern Lisp_Object Vprin1_to_string_buffer; extern void debug_print (Lisp_Object) __attribute__ ((externally_visible)); extern void temp_output_buffer_setup (const char *); extern int print_level; extern void print_error_message (Lisp_Object, Lisp_Object, const char *, Lisp_Object); extern Lisp_Object internal_with_output_to_temp_buffer (const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object); extern int float_to_string (char *, double); extern void init_print_once (void); extern void syms_of_print (void); extern ptrdiff_t doprnt (char *, ptrdiff_t, const char *, const char *, va_list); extern ptrdiff_t esprintf (char *, char const *, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern ptrdiff_t exprintf (char **, ptrdiff_t *, char *, ptrdiff_t, char const *, ...) __attribute__ ((__format__ (__printf__, 5, 6))); extern ptrdiff_t evxprintf (char **, ptrdiff_t *, char *, ptrdiff_t, char const *, va_list) __attribute__ ((__format__ (__printf__, 5, 0))); extern Lisp_Object check_obarray (Lisp_Object); extern Lisp_Object intern_1 (const char *, ptrdiff_t); extern Lisp_Object intern_c_string_1 (const char *, ptrdiff_t); extern Lisp_Object intern_driver (Lisp_Object, Lisp_Object, Lisp_Object); extern void init_symbol (Lisp_Object, Lisp_Object); extern Lisp_Object oblookup (Lisp_Object, const char *, ptrdiff_t, ptrdiff_t); static inline void LOADHIST_ATTACH (Lisp_Object x) { if (initialized) globals.f_Vcurrent_load_list = Fcons (x, globals.f_Vcurrent_load_list); } extern _Bool suffix_p (Lisp_Object, const char *); extern Lisp_Object save_match_data_load (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern int openp (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object *, Lisp_Object, _Bool , _Bool ); enum { S2N_IGNORE_TRAILING = 1 }; extern Lisp_Object string_to_number (char const *, int, ptrdiff_t *); extern void map_obarray (Lisp_Object, void (*) (Lisp_Object, Lisp_Object), Lisp_Object); extern void dir_warning (const char *, Lisp_Object); extern void init_obarray_once (void); extern void init_lread (void); extern void syms_of_lread (void); extern void mark_lread (void); static inline Lisp_Object intern (const char *str) { return intern_1 (str, strlen (str)); } static inline Lisp_Object intern_c_string (const char *str) { return intern_c_string_1 (str, strlen (str)); } extern Lisp_Object Vautoload_queue; extern Lisp_Object Vrun_hooks; extern Lisp_Object Vsignaling_function; extern Lisp_Object inhibit_lisp_code; extern _Bool signal_quit_p (Lisp_Object); extern void run_hook (Lisp_Object); extern void run_hook_with_args_2 (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object run_hook_with_args (ptrdiff_t nargs, Lisp_Object *args, Lisp_Object (*funcall) (ptrdiff_t nargs, Lisp_Object *args)); extern Lisp_Object quit (void); static inline _Noreturn __attribute__ ((__cold__)) void xsignal (Lisp_Object error_symbol, Lisp_Object data) { Fsignal (error_symbol, data); } extern _Noreturn __attribute__ ((__cold__)) void xsignal0 (Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void xsignal1 (Lisp_Object, Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void xsignal2 (Lisp_Object, Lisp_Object, Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void xsignal3 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void signal_error (const char *, Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void overflow_error (void); extern _Bool FUNCTIONP (Lisp_Object); extern Lisp_Object funcall_subr (struct Lisp_Subr *subr, ptrdiff_t numargs, Lisp_Object *arg_vector); extern Lisp_Object eval_sub (Lisp_Object form); extern Lisp_Object apply1 (Lisp_Object, Lisp_Object); extern Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) (Lisp_Object), Lisp_Object); extern Lisp_Object internal_lisp_condition_case (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object internal_condition_case (Lisp_Object (*) (void), Lisp_Object, Lisp_Object (*) (Lisp_Object)); extern Lisp_Object internal_condition_case_1 (Lisp_Object (*) (Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); extern Lisp_Object internal_condition_case_2 (Lisp_Object (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object (*) (Lisp_Object)); extern Lisp_Object internal_condition_case_n (Lisp_Object (*) (ptrdiff_t, Lisp_Object *), ptrdiff_t, Lisp_Object *, Lisp_Object, Lisp_Object (*) (Lisp_Object, ptrdiff_t, Lisp_Object *)); extern Lisp_Object internal_catch_all (Lisp_Object (*) (void *), void *, Lisp_Object (*) (enum nonlocal_exit, Lisp_Object)); extern struct handler *push_handler (Lisp_Object, enum handlertype) __attribute__ ((__returns_nonnull__)); extern struct handler *push_handler_nosignal (Lisp_Object, enum handlertype); extern void specbind (Lisp_Object, Lisp_Object); extern void record_unwind_protect (void (*) (Lisp_Object), Lisp_Object); extern void record_unwind_protect_array (Lisp_Object *, ptrdiff_t); extern void record_unwind_protect_ptr (void (*) (void *), void *); extern void record_unwind_protect_ptr_mark (void (*function) (void *), void *arg, void (*mark) (void *)); extern void record_unwind_protect_int (void (*) (int), int); extern void record_unwind_protect_intmax (void (*) (intmax_t), intmax_t); extern void record_unwind_protect_void (void (*) (void)); extern void record_unwind_protect_excursion (void); extern void record_unwind_protect_nothing (void); extern void record_unwind_protect_module (enum specbind_tag, void *); extern void clear_unwind_protect (specpdl_ref); extern void set_unwind_protect (specpdl_ref, void (*) (Lisp_Object), Lisp_Object); extern void set_unwind_protect_ptr (specpdl_ref, void (*) (void *), void *); extern Lisp_Object unbind_to (specpdl_ref, Lisp_Object); void specpdl_unrewind (union specbinding *pdl, int distance, _Bool vars_only); extern _Noreturn __attribute__ ((__cold__)) void error (const char *, ...) __attribute__ ((__format__ (__printf__, 1, 2))); extern _Noreturn __attribute__ ((__cold__)) void verror (const char *, va_list) __attribute__ ((__format__ (__printf__, 1, 0))); extern Lisp_Object vformat_string (const char *, va_list) __attribute__ ((__format__ (__printf__, 1, 0))); extern Lisp_Object load_with_autoload_queue (Lisp_Object file, Lisp_Object noerror, Lisp_Object nomessage, Lisp_Object nosuffix, Lisp_Object must_suffix); extern Lisp_Object call_debugger (Lisp_Object arg); extern void init_eval_once (void); extern Lisp_Object safe_call (ptrdiff_t, Lisp_Object, ...); extern Lisp_Object safe_call1 (Lisp_Object, Lisp_Object); extern Lisp_Object safe_call2 (Lisp_Object, Lisp_Object, Lisp_Object); extern void init_eval (void); extern void syms_of_eval (void); extern void prog_ignore (Lisp_Object); extern void mark_specpdl (union specbinding *first, union specbinding *ptr); extern void get_backtrace (Lisp_Object array); Lisp_Object backtrace_top_function (void); extern _Bool let_shadows_buffer_binding_p (struct Lisp_Symbol *symbol); void do_debug_on_call (Lisp_Object code, specpdl_ref count); Lisp_Object funcall_general (Lisp_Object fun, ptrdiff_t numargs, Lisp_Object *args); static inline _Bool MODULE_FUNCTIONP (Lisp_Object o) { return PSEUDOVECTORP (o, PVEC_MODULE_FUNCTION); } static inline struct Lisp_Module_Function * XMODULE_FUNCTION (Lisp_Object o) { ((void) ( 0 && (MODULE_FUNCTIONP (o)))); return ((struct Lisp_Module_Function *) ((char *) XLP (o) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } typedef void (*module_funcptr) (void); extern Lisp_Object make_user_ptr (void (*finalizer) (void *), void *p); extern Lisp_Object funcall_module (Lisp_Object, ptrdiff_t, Lisp_Object *); extern Lisp_Object module_function_arity (const struct Lisp_Module_Function *); extern Lisp_Object module_function_documentation (struct Lisp_Module_Function const *); extern Lisp_Object module_function_interactive_form (const struct Lisp_Module_Function *); extern Lisp_Object module_function_command_modes (const struct Lisp_Module_Function *); extern module_funcptr module_function_address (struct Lisp_Module_Function const *); extern void *module_function_data (const struct Lisp_Module_Function *); extern void module_finalize_function (const struct Lisp_Module_Function *); extern void mark_module_environment (void *); extern void finalize_runtime_unwind (void *); extern void finalize_environment_unwind (void *); extern void init_module_assertions ( _Bool ); extern void syms_of_module (void); extern void mark_threads (void); extern void unmark_main_thread (void); extern void insert1 (Lisp_Object); extern void save_excursion_save (union specbinding *); extern void save_excursion_restore (Lisp_Object, Lisp_Object); extern Lisp_Object save_restriction_save (void); extern void save_restriction_restore (Lisp_Object); extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, _Bool ); extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, _Bool ); extern void init_editfns (void); extern void syms_of_editfns (void); extern _Bool mouse_face_overlay_overlaps (Lisp_Object); extern Lisp_Object disable_line_numbers_overlay_at_eob (void); extern _Noreturn __attribute__ ((__cold__)) void nsberror (Lisp_Object); extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t); extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t); extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t); extern void report_overlay_modification (Lisp_Object, Lisp_Object, _Bool , Lisp_Object, Lisp_Object, Lisp_Object); extern _Bool overlay_touches_p (ptrdiff_t); extern Lisp_Object other_buffer_safely (Lisp_Object); extern Lisp_Object get_truename_buffer (Lisp_Object); extern void init_buffer_once (void); extern void init_buffer (void); extern void syms_of_buffer (void); extern ptrdiff_t marker_position (Lisp_Object); extern ptrdiff_t marker_byte_position (Lisp_Object); extern void clear_charpos_cache (struct buffer *); extern ptrdiff_t buf_charpos_to_bytepos (struct buffer *, ptrdiff_t); extern ptrdiff_t buf_bytepos_to_charpos (struct buffer *, ptrdiff_t); extern void detach_marker (Lisp_Object); extern void unchain_marker (struct Lisp_Marker *); extern Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object set_marker_both (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t); extern Lisp_Object set_marker_restricted_both (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t); extern Lisp_Object build_marker (struct buffer *, ptrdiff_t, ptrdiff_t); extern void syms_of_marker (void); extern char *splice_dir_file (char *, char const *, char const *) __attribute__ ((__returns_nonnull__)); extern _Bool file_name_absolute_p (const char *); extern char const *get_homedir (void) __attribute__ ((__returns_nonnull__)); extern Lisp_Object expand_and_dir_to_file (Lisp_Object); extern Lisp_Object write_region (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, int); extern void close_file_unwind (int); extern void fclose_unwind (void *); extern void restore_point_unwind (Lisp_Object); extern _Bool file_access_p (char const *, int); extern Lisp_Object get_file_errno_data (const char *, Lisp_Object, int); extern _Noreturn __attribute__ ((__cold__)) void report_file_errno (const char *, Lisp_Object, int); extern _Noreturn __attribute__ ((__cold__)) void report_file_error (const char *, Lisp_Object); extern _Noreturn __attribute__ ((__cold__)) void report_file_notify_error (const char *, Lisp_Object); extern Lisp_Object file_attribute_errno (Lisp_Object, int); extern _Bool internal_delete_file (Lisp_Object); extern Lisp_Object check_emacs_readlinkat (int, Lisp_Object, char const *); extern _Bool file_directory_p (Lisp_Object); extern _Bool file_accessible_directory_p (Lisp_Object); extern void init_fileio (void); extern void syms_of_fileio (void); extern void shrink_regexp_cache (void); extern void restore_search_regs (void); extern void update_search_regs (ptrdiff_t oldstart, ptrdiff_t oldend, ptrdiff_t newend); extern void record_unwind_save_match_data (void); extern ptrdiff_t fast_string_match_internal (Lisp_Object, Lisp_Object, Lisp_Object); static inline ptrdiff_t fast_string_match (Lisp_Object regexp, Lisp_Object string) { return fast_string_match_internal (regexp, string, builtin_lisp_symbol (0)); } static inline ptrdiff_t fast_string_match_ignore_case (Lisp_Object regexp, Lisp_Object string) { return fast_string_match_internal (regexp, string, Vascii_canon_table); } extern ptrdiff_t fast_c_string_match_ignore_case (Lisp_Object, const char *, ptrdiff_t); extern ptrdiff_t fast_looking_at (Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, Lisp_Object); extern ptrdiff_t find_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t *, ptrdiff_t *, _Bool ); extern void scan_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, _Bool ); extern ptrdiff_t scan_newline_from_point (ptrdiff_t, ptrdiff_t *, ptrdiff_t *); extern ptrdiff_t find_newline_no_quit (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t *); extern ptrdiff_t find_before_next_newline (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t *); extern void syms_of_search (void); extern void clear_regexp_cache (void); extern Lisp_Object Vminibuffer_list; extern Lisp_Object last_minibuf_string; extern void move_minibuffers_onto_frame (struct frame *, _Bool ); extern _Bool is_minibuffer (EMACS_INT, Lisp_Object); extern EMACS_INT this_minibuffer_depth (Lisp_Object); extern EMACS_INT minibuf_level; extern Lisp_Object get_minibuffer (EMACS_INT); extern void init_minibuf_once (void); extern void set_initial_minibuffer_mode (void); extern void syms_of_minibuf (void); extern void barf_if_interaction_inhibited (void); extern void syms_of_callint (void); extern void syms_of_casefiddle (void); extern void init_casetab_once (void); extern void syms_of_casetab (void); extern EMACS_INT command_loop_level; extern Lisp_Object echo_message_buffer; extern struct kboard *echo_kboard; extern void cancel_echoing (void); extern _Bool input_pending; extern sigjmp_buf return_to_command_loop; extern Lisp_Object menu_bar_items (Lisp_Object); extern Lisp_Object tab_bar_items (Lisp_Object, int *); extern Lisp_Object tool_bar_items (Lisp_Object, int *); extern void discard_mouse_events (void); void handle_input_available_signal (int); extern Lisp_Object pending_funcalls; extern _Bool detect_input_pending (void); extern _Bool detect_input_pending_ignore_squeezables (void); extern _Bool detect_input_pending_run_timers ( _Bool ); extern void safe_run_hooks (Lisp_Object); extern void cmd_error_internal (Lisp_Object, const char *); extern Lisp_Object command_loop_2 (Lisp_Object); extern Lisp_Object read_menu_command (void); extern Lisp_Object recursive_edit_1 (void); extern void record_auto_save (void); extern void force_auto_save_soon (void); extern void init_keyboard (void); extern void syms_of_keyboard (void); extern void keys_of_keyboard (void); extern ptrdiff_t current_column (void); extern void invalidate_current_column (void); extern _Bool indented_beyond_p (ptrdiff_t, ptrdiff_t, EMACS_INT); extern void syms_of_indent (void); extern void store_frame_param (struct frame *, Lisp_Object, Lisp_Object); extern void store_in_alist (Lisp_Object *, Lisp_Object, Lisp_Object); extern Lisp_Object do_switch_frame (Lisp_Object, int, int, Lisp_Object); extern Lisp_Object get_frame_param (struct frame *, Lisp_Object); extern void frames_discard_buffer (Lisp_Object); extern void init_frame_once (void); extern void syms_of_frame (void); extern char **initial_argv; extern int initial_argc; extern char const *emacs_wd; extern _Bool display_arg; extern Lisp_Object decode_env_path (const char *, const char *, _Bool ); extern Lisp_Object empty_unibyte_string, empty_multibyte_string; extern _Noreturn __attribute__ ((__cold__)) void terminate_due_to_signal (int, int); void fixup_locale (void); void synchronize_system_messages_locale (void); void synchronize_system_time_locale (void); extern char *emacs_strerror (int) __attribute__ ((__returns_nonnull__)); extern void shut_down_emacs (int, Lisp_Object); extern _Bool noninteractive; extern _Bool no_site_lisp; extern _Bool build_details; extern int daemon_type; extern _Bool fatal_error_in_progress; extern _Bool inhibit_window_system; extern _Bool running_asynch_code; struct Lisp_Process; extern void kill_buffer_processes (Lisp_Object); extern int wait_reading_process_output (intmax_t, int, int, _Bool , Lisp_Object, struct Lisp_Process *, int); extern void add_timer_wait_descriptor (int); extern void add_keyboard_wait_descriptor (int); extern void delete_keyboard_wait_descriptor (int); extern void add_gpm_wait_descriptor (int); extern void delete_gpm_wait_descriptor (int); extern void init_process_emacs (int); extern void syms_of_process (void); extern void setup_process_coding_systems (Lisp_Object); extern int emacs_spawn (pid_t *, int, int, int, char **, char **, const char *, const char *, const sigset_t *); extern char **make_environment_block (Lisp_Object) __attribute__ ((__returns_nonnull__)); extern void init_callproc_1 (void); extern void init_callproc (void); extern void set_initial_environment (void); extern void syms_of_callproc (void); extern Lisp_Object read_doc_string (Lisp_Object); extern Lisp_Object get_doc_string (Lisp_Object, _Bool , _Bool ); extern void syms_of_doc (void); extern int read_bytecode_char ( _Bool ); extern void syms_of_bytecode (void); extern Lisp_Object exec_byte_code (Lisp_Object, ptrdiff_t, ptrdiff_t, Lisp_Object *); extern Lisp_Object get_byte_code_arity (Lisp_Object); extern void init_bc_thread (struct bc_thread_state *bc); extern void free_bc_thread (struct bc_thread_state *bc); extern void mark_bytecode (struct bc_thread_state *bc); static inline struct bc_frame * get_act_rec (struct thread_state *th) { return th->bc.fp; } static inline void set_act_rec (struct thread_state *th, struct bc_frame *act_rec) { th->bc.fp = act_rec; } extern void init_macros (void); extern void syms_of_macros (void); extern void truncate_undo_list (struct buffer *); extern void record_insert (ptrdiff_t, ptrdiff_t); extern void record_delete (ptrdiff_t, Lisp_Object, _Bool ); extern void record_first_change (void); extern void record_change (ptrdiff_t, ptrdiff_t); extern void record_property_change (ptrdiff_t, ptrdiff_t, Lisp_Object, Lisp_Object, Lisp_Object); extern void syms_of_undo (void); extern void report_interval_modification (Lisp_Object, Lisp_Object); extern void syms_of_menu (void); extern void syms_of_xmenu (void); struct tty_display_info; extern int maybe_disable_address_randomization (int, char **); extern int emacs_exec_file (char const *, char *const *, char *const *); extern void init_standard_fds (void); extern char *emacs_get_current_dir_name (void); extern void stuff_char (char c); extern void init_foreground_group (void); extern void sys_subshell (void); extern void sys_suspend (void); extern void discard_tty_input (void); extern void init_sys_modes (struct tty_display_info *); extern void reset_sys_modes (struct tty_display_info *); extern void init_all_sys_modes (void); extern void reset_all_sys_modes (void); extern void child_setup_tty (int); extern void setup_pty (int); extern int set_window_size (int, int, int); extern EMACS_INT get_random (void); extern unsigned long int get_random_ulong (void); extern void seed_random (void *, ptrdiff_t); extern void init_random (void); extern void emacs_backtrace (int); extern _Noreturn __attribute__ ((__cold__)) void emacs_abort (void) __attribute__ ((__noinline__)); extern int emacs_fstatat (int, char const *, void *, int); extern int emacs_openat (int, char const *, int, int); extern int emacs_open (const char *, int, int); extern int emacs_open_noquit (const char *, int, int); extern int emacs_pipe (int[2]); extern int emacs_close (int); extern ptrdiff_t emacs_read (int, void *, ptrdiff_t); extern ptrdiff_t emacs_read_quit (int, void *, ptrdiff_t); extern ptrdiff_t emacs_write (int, void const *, ptrdiff_t); extern ptrdiff_t emacs_write_sig (int, void const *, ptrdiff_t); extern ptrdiff_t emacs_write_quit (int, void const *, ptrdiff_t); extern void emacs_perror (char const *); extern int renameat_noreplace (int, char const *, int, char const *); extern int str_collate (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern void syms_of_sysdep (void); extern void unlock_all_files (void); extern void unlock_buffer (struct buffer *); extern void syms_of_filelock (void); extern void syms_of_sound (void); extern void init_category_once (void); extern Lisp_Object char_category_set (int); extern void syms_of_category (void); extern void syms_of_ccl (void); extern void syms_of_dired (void); extern Lisp_Object directory_files_internal (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, _Bool , Lisp_Object, Lisp_Object); extern int *char_ins_del_vector; extern void syms_of_term (void); extern _Noreturn __attribute__ ((__cold__)) void fatal (const char *msgid, ...) __attribute__ ((__format__ (__printf__, 1, 2))); extern void syms_of_terminal (void); extern char * tty_type_name (Lisp_Object); extern void syms_of_font (void); extern void init_font (void); extern void syms_of_fontset (void); extern void syms_of_inotify (void); extern Lisp_Object Vface_alternative_font_family_alist; extern Lisp_Object Vface_alternative_font_registry_alist; extern void syms_of_xfaces (void); extern void init_xfaces (void); extern void syms_of_xfns (void); extern void syms_of_xsmfns (void); extern void syms_of_xselect (void); extern void init_xterm (void); extern void syms_of_xterm (void); extern char *get_keysym_name (int); extern void syms_of_xml (void); extern void xml_cleanup_parser (void); extern void syms_of_lcms2 (void); typedef struct { int __count; union { unsigned int __wch; char __wchb[4]; } __value; } __mbstate_t; typedef struct _G_fpos_t { __off_t __pos; __mbstate_t __state; } __fpos_t; typedef struct _G_fpos64_t { __off64_t __pos; __mbstate_t __state; } __fpos64_t; struct _IO_FILE; typedef struct _IO_FILE __FILE; struct _IO_FILE; typedef struct _IO_FILE FILE; struct _IO_FILE; struct _IO_marker; struct _IO_codecvt; struct _IO_wide_data; typedef void _IO_lock_t; struct _IO_FILE { int _flags; char *_IO_read_ptr; char *_IO_read_end; char *_IO_read_base; char *_IO_write_base; char *_IO_write_ptr; char *_IO_write_end; char *_IO_buf_base; char *_IO_buf_end; char *_IO_save_base; char *_IO_backup_base; char *_IO_save_end; struct _IO_marker *_markers; struct _IO_FILE *_chain; int _fileno; int _flags2; __off_t _old_offset; unsigned short _cur_column; signed char _vtable_offset; char _shortbuf[1]; _IO_lock_t *_lock; __off64_t _offset; struct _IO_codecvt *_codecvt; struct _IO_wide_data *_wide_data; struct _IO_FILE *_freeres_list; void *_freeres_buf; size_t __pad5; int _mode; char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; }; typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf, size_t __nbytes); typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf, size_t __nbytes); typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w); typedef int cookie_close_function_t (void *__cookie); typedef struct _IO_cookie_io_functions_t { cookie_read_function_t *read; cookie_write_function_t *write; cookie_seek_function_t *seek; cookie_close_function_t *close; } cookie_io_functions_t; typedef __fpos_t fpos_t; typedef __fpos64_t fpos64_t; extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; extern int remove (const char *__filename) __attribute__ ((__nothrow__ , __leaf__)); extern int rename (const char *__old, const char *__new) __attribute__ ((__nothrow__ , __leaf__)); extern int renameat (int __oldfd, const char *__old, int __newfd, const char *__new) __attribute__ ((__nothrow__ , __leaf__)); extern int renameat2 (int __oldfd, const char *__old, int __newfd, const char *__new, unsigned int __flags) __attribute__ ((__nothrow__ , __leaf__)); extern int fclose (FILE *__stream); extern FILE *tmpfile (void) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); extern FILE *tmpfile64 (void) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); extern char *tmpnam (char[20]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern char *tmpnam_r (char __s[20]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern char *tempnam (const char *__dir, const char *__pfx) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1))); extern int fflush (FILE *__stream); extern int fflush_unlocked (FILE *__stream); extern int fcloseall (void); extern FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); extern FILE *freopen (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); extern FILE *fopen64 (const char *__restrict __filename, const char *__restrict __modes) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); extern FILE *freopen64 (const char *__restrict __filename, const char *__restrict __modes, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); extern FILE *fdopen (int __fd, const char *__modes) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); extern FILE *fopencookie (void *__restrict __magic_cookie, const char *__restrict __modes, cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__)); extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)); extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__)); extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) __attribute__ ((__nothrow__ , __leaf__)); extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); extern int fprintf (FILE *__restrict __stream, const char *__restrict __format, ...); extern int printf (const char *__restrict __format, ...); extern int sprintf (char *__restrict __s, const char *__restrict __format, ...) __attribute__ ((__nothrow__)); extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg); extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg); extern int vsprintf (char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__nothrow__)); extern int snprintf (char *__restrict __s, size_t __maxlen, const char *__restrict __format, ...) __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))); extern int vsnprintf (char *__restrict __s, size_t __maxlen, const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))); extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, __gnuc_va_list __arg) __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); extern int __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); extern int asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); extern int vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 2, 0))); extern int dprintf (int __fd, const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); extern int scanf (const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__)); extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") __attribute__ ((__warn_unused_result__)); extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") __attribute__ ((__warn_unused_result__)); extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__ , __leaf__)) ; extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0))); extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf") __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf") __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0))); extern int fgetc (FILE *__stream); extern int getc (FILE *__stream); extern int getchar (void); extern int getc_unlocked (FILE *__stream); extern int getchar_unlocked (void); extern int fgetc_unlocked (FILE *__stream); extern int fputc (int __c, FILE *__stream); extern int putc (int __c, FILE *__stream); extern int putchar (int __c); extern int fputc_unlocked (int __c, FILE *__stream); extern int putc_unlocked (int __c, FILE *__stream); extern int putchar_unlocked (int __c); extern int getw (FILE *__stream); extern int putw (int __w, FILE *__stream); extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern char *fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern __ssize_t __getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); extern __ssize_t getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); extern __ssize_t getline (char **__restrict __lineptr, size_t *__restrict __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); extern int fputs (const char *__restrict __s, FILE *__restrict __stream); extern int puts (const char *__s); extern int ungetc (int __c, FILE *__stream); extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); extern size_t fwrite (const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s); extern int fputs_unlocked (const char *__restrict __s, FILE *__restrict __stream); extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream); extern int fseek (FILE *__stream, long int __off, int __whence); extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)); extern void rewind (FILE *__stream); extern int fseeko (FILE *__stream, __off_t __off, int __whence); extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__)); extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); extern int fsetpos (FILE *__stream, const fpos_t *__pos); extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)); extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern void perror (const char *__s); extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern int pclose (FILE *__stream); extern FILE *popen (const char *__command, const char *__modes) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) __attribute__ ((__warn_unused_result__)); extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1))); extern char *cuserid (char *__s) __attribute__ ((__access__ (__write_only__, 1))); struct obstack; extern int obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __format, ...) __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))); extern int obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __format, __gnuc_va_list __args) __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))); extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)); extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)); extern int __uflow (FILE *); extern int __overflow (FILE *, int); extern __inline __attribute__ ((__gnu_inline__)) int getchar (void) { return getc (stdin); } extern __inline __attribute__ ((__gnu_inline__)) int fgetc_unlocked (FILE *__fp) { return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); } extern __inline __attribute__ ((__gnu_inline__)) int getc_unlocked (FILE *__fp) { return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); } extern __inline __attribute__ ((__gnu_inline__)) int getchar_unlocked (void) { return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); } extern __inline __attribute__ ((__gnu_inline__)) int putchar (int __c) { return putc (__c, stdout); } extern __inline __attribute__ ((__gnu_inline__)) int fputc_unlocked (int __c, FILE *__stream) { return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); } extern __inline __attribute__ ((__gnu_inline__)) int putc_unlocked (int __c, FILE *__stream) { return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); } extern __inline __attribute__ ((__gnu_inline__)) int putchar_unlocked (int __c) { return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); } extern __inline __attribute__ ((__gnu_inline__)) __ssize_t getline (char **__lineptr, size_t *__n, FILE *__stream) { return __getdelim (__lineptr, __n, '\n', __stream); } extern __inline __attribute__ ((__gnu_inline__)) int __attribute__ ((__nothrow__ , __leaf__)) feof_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x0010) != 0); } extern __inline __attribute__ ((__gnu_inline__)) int __attribute__ ((__nothrow__ , __leaf__)) ferror_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x0020) != 0); } extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1, 3))); extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, const char *__restrict __format, __gnuc_va_list __ap) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1, 3))); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) sprintf (char *__restrict __s, const char *__restrict __fmt, ...) { return __builtin___sprintf_chk (__s, 2 - 1, __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) vsprintf (char *__restrict __s, const char *__restrict __fmt, __gnuc_va_list __ap) { return __builtin___vsprintf_chk (__s, 2 - 1, __builtin_object_size (__s, 2 > 1), __fmt, __ap); } extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, size_t __slen, const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, size_t __slen, const char *__restrict __format, __gnuc_va_list __ap) __attribute__ ((__nothrow__ , __leaf__)); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) snprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, ...) { return __builtin___snprintf_chk (__s, __n, 2 - 1, __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) vsnprintf (char *__restrict __s, size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap) { return __builtin___vsnprintf_chk (__s, __n, 2 - 1, __builtin_object_size (__s, 2 > 1), __fmt, __ap); } extern int __fprintf_chk (FILE *__restrict __stream, int __flag, const char *__restrict __format, ...); extern int __printf_chk (int __flag, const char *__restrict __format, ...); extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, const char *__restrict __format, __gnuc_va_list __ap); extern int __vprintf_chk (int __flag, const char *__restrict __format, __gnuc_va_list __ap); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...) { return __fprintf_chk (__stream, 2 - 1, __fmt, __builtin_va_arg_pack ()); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int printf (const char *__restrict __fmt, ...) { return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int vprintf (const char *__restrict __fmt, __gnuc_va_list __ap) { return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int vfprintf (FILE *__restrict __stream, const char *__restrict __fmt, __gnuc_va_list __ap) { return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); } extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern int __vdprintf_chk (int __fd, int __flag, const char *__restrict __fmt, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 3, 0))); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int dprintf (int __fd, const char *__restrict __fmt, ...) { return __dprintf_chk (__fd, 2 - 1, __fmt, __builtin_va_arg_pack ()); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap) { return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); } extern int __asprintf_chk (char **__restrict __ptr, int __flag, const char *__restrict __fmt, ...) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); extern int __vasprintf_chk (char **__restrict __ptr, int __flag, const char *__restrict __fmt, __gnuc_va_list __arg) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); extern int __obstack_printf_chk (struct obstack *__restrict __obstack, int __flag, const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 4))); extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, int __flag, const char *__restrict __format, __gnuc_va_list __args) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 0))); extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) { return __asprintf_chk (__ptr, 2 - 1, __fmt, __builtin_va_arg_pack ()); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) __asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...) { return __asprintf_chk (__ptr, 2 - 1, __fmt, __builtin_va_arg_pack ()); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...) { return __obstack_printf_chk (__obstack, 2 - 1, __fmt, __builtin_va_arg_pack ()); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) vasprintf (char **__restrict __ptr, const char *__restrict __fmt, __gnuc_va_list __ap) { return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); } extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) int __attribute__ ((__nothrow__ , __leaf__)) obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, __gnuc_va_list __ap) { return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, __ap); } extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))); extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) char * fgets (char *__restrict __s, int __n, FILE *__restrict __stream) { size_t sz = __builtin_object_size (__s, 2 > 1); if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))))) return __fgets_alias (__s, __n, __stream); if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (char)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (char))))) return __fgets_chk_warn (__s, sz, __n, __stream); return __fgets_chk (__s, sz, __n, __stream); } extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") __attribute__ ((__warn_unused_result__)); extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) { size_t sz = __builtin_object_size (__ptr, 0); if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((__size)))) && (((long unsigned int) (__n)) <= ((sz)) / ((__size)))))) return __fread_alias (__ptr, __size, __n, __stream); if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (__size))) && !(((long unsigned int) (__n)) <= (sz) / (__size)))) return __fread_chk_warn (__ptr, sz, __size, __n, __stream); return __fread_chk (__ptr, sz, __size, __n, __stream); } extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3))); extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))); extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2))) char * fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) { size_t sz = __builtin_object_size (__s, 2 > 1); if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))) && (((long unsigned int) (__n)) <= ((sz)) / ((sizeof (char))))))) return __fgets_unlocked_alias (__s, __n, __stream); if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (sizeof (char)))) && !(((long unsigned int) (__n)) <= (sz) / (sizeof (char))))) return __fgets_unlocked_chk_warn (__s, sz, __n, __stream); return __fgets_unlocked_chk (__s, sz, __n, __stream); } extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") __attribute__ ((__warn_unused_result__)); extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk") __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))) ; extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) { size_t sz = __builtin_object_size (__ptr, 0); if (((__builtin_constant_p (sz) && (sz) == (long unsigned int) -1) || (((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= ((sz)) / ((__size)))) && (((long unsigned int) (__n)) <= ((sz)) / ((__size)))))) { if (__builtin_constant_p (__size) && __builtin_constant_p (__n) && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) && __size * __n <= 8) { size_t __cnt = __size * __n; char *__cptr = (char *) __ptr; if (__cnt == 0) return 0; for (; __cnt > 0; --__cnt) { int __c = getc_unlocked (__stream); if (__c == (-1)) break; *__cptr++ = __c; } return (__cptr - (char *) __ptr) / __size; } return __fread_unlocked_alias (__ptr, __size, __n, __stream); } if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((long unsigned int) (__n)) <= (sz) / (__size))) && !(((long unsigned int) (__n)) <= (sz) / (__size)))) return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream); return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream); } extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; extern int md5_gz_stream (FILE *, void *); extern void syms_of_decompress (void); void init_dbusbind (void); void syms_of_dbusbind (void); extern _Bool profiler_memory_running; extern void malloc_probe (size_t); extern void syms_of_profiler (void); static inline _Bool SUBR_NATIVE_COMPILEDP (Lisp_Object a) { return 0 ; } static inline _Bool SUBR_NATIVE_COMPILED_DYNP (Lisp_Object a) { return 0 ; } extern char my_edata[]; extern char my_endbss[]; extern char *my_endbss_static; extern void *xmalloc (size_t) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1))) __attribute__ ((__returns_nonnull__)); extern void *xzalloc (size_t) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1))) __attribute__ ((__returns_nonnull__)); extern void *xrealloc (void *, size_t) __attribute__ ((__alloc_size__ (2))) __attribute__ ((__returns_nonnull__)); extern void xfree (void *); extern void *xnmalloc (ptrdiff_t, ptrdiff_t) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1,2))) __attribute__ ((__returns_nonnull__)); extern void *xnrealloc (void *, ptrdiff_t, ptrdiff_t) __attribute__ ((__alloc_size__ (2,3))) __attribute__ ((__returns_nonnull__)); extern void *xpalloc (void *, ptrdiff_t *, ptrdiff_t, ptrdiff_t, ptrdiff_t) __attribute__ ((__returns_nonnull__)); extern char *xstrdup (char const *) __attribute__ ((__malloc__)) __attribute__ ((__returns_nonnull__)); extern char *xlispstrdup (Lisp_Object) __attribute__ ((__malloc__)) __attribute__ ((__returns_nonnull__)); extern void dupstring (char **, char const *); static inline char * lispstpcpy (char *dest, Lisp_Object string) { ptrdiff_t len = SBYTES (string); memcpy (dest, SDATA (string), len + 1); return dest + len; } static inline void __lsan_ignore_object (void const *p) { } extern void xputenv (const char *); extern char *egetenv_internal (const char *, ptrdiff_t); static inline char * egetenv (const char *var) { return egetenv_internal (var, strlen (var)); } extern void init_system_name (void); enum MAX_ALLOCA { MAX_ALLOCA = 16 * 1024 }; extern void *record_xmalloc (size_t) __attribute__ ((__alloc_size__ (1))) __attribute__ ((__returns_nonnull__)); static inline void safe_free (specpdl_ref sa_count) { while ((current_thread->m_specpdl_ptr) != specpdl_ref_to_ptr (sa_count)) { (current_thread->m_specpdl_ptr)--; if ((current_thread->m_specpdl_ptr)->kind == SPECPDL_UNWIND_PTR) { ((void) ( 0 && ((current_thread->m_specpdl_ptr)->unwind_ptr.func == xfree))); xfree ((current_thread->m_specpdl_ptr)->unwind_ptr.arg); } else { ((void) ( 0 && ((current_thread->m_specpdl_ptr)->kind == SPECPDL_UNWIND_ARRAY))); xfree ((current_thread->m_specpdl_ptr)->unwind_array.array); } } } static inline Lisp_Object safe_free_unbind_to (specpdl_ref count, specpdl_ref sa_count, Lisp_Object val) { ((void) ( 0 && (!specpdl_ref_lt (sa_count, count)))); return unbind_to (count, val); } enum { defined_GC_CHECK_STRING_BYTES = 0 }; enum { USE_STACK_CONS = 1 , USE_STACK_STRING = (USE_STACK_CONS && !defined_GC_CHECK_STRING_BYTES) }; enum { SMALL_LIST_LEN_MAX = 127 }; struct for_each_tail_internal { Lisp_Object tortoise; intptr_t max, n; unsigned short int q; }; static inline void maybe_gc (void) { if (consing_until_gc < 0) maybe_garbage_collect (); } enum { MAX_CHAR = 0x3FFFFF }; enum { MAX_UNICODE_CHAR = 0x10FFFF }; enum { MAX_1_BYTE_CHAR = 0x7F }; enum { MAX_2_BYTE_CHAR = 0x7FF }; enum { MAX_3_BYTE_CHAR = 0xFFFF }; enum { MAX_4_BYTE_CHAR = 0x1FFFFF }; enum { MAX_5_BYTE_CHAR = 0x3FFF7F }; enum { MIN_MULTIBYTE_LEADING_CODE = 0xC0 }; enum { MAX_MULTIBYTE_LEADING_CODE = 0xF8 }; enum { NO_BREAK_SPACE = 0x00A0, SOFT_HYPHEN = 0x00AD, ZERO_WIDTH_NON_JOINER = 0x200C, ZERO_WIDTH_JOINER = 0x200D, HYPHEN = 0x2010, NON_BREAKING_HYPHEN = 0x2011, LEFT_SINGLE_QUOTATION_MARK = 0x2018, RIGHT_SINGLE_QUOTATION_MARK = 0x2019, PARAGRAPH_SEPARATOR = 0x2029, LEFT_POINTING_ANGLE_BRACKET = 0x2329, RIGHT_POINTING_ANGLE_BRACKET = 0x232A, LEFT_ANGLE_BRACKET = 0x3008, RIGHT_ANGLE_BRACKET = 0x3009, OBJECT_REPLACEMENT_CHARACTER = 0xFFFC, TAG_SPACE = 0xE0020, CANCEL_TAG = 0xE007F, }; extern int char_string (unsigned, unsigned char *); static inline _Bool SINGLE_BYTE_CHAR_P (intmax_t c) { return 0 <= c && c < 0x100; } static inline _Bool CHAR_BYTE8_P (int c) { return MAX_5_BYTE_CHAR < c; } static inline int BYTE8_TO_CHAR (int byte) { return byte + 0x3FFF00; } static inline int UNIBYTE_TO_CHAR (int byte) { return ASCII_CHAR_P (byte) ? byte : BYTE8_TO_CHAR (byte); } static inline int CHAR_TO_BYTE8 (int c) { return CHAR_BYTE8_P (c) ? c - 0x3FFF00 : c & 0xFF; } static inline int CHAR_TO_BYTE_SAFE (int c) { return ASCII_CHAR_P (c) ? c : CHAR_BYTE8_P (c) ? c - 0x3FFF00 : -1; } static inline _Bool CHAR_BYTE8_HEAD_P (int byte) { return byte == 0xC0 || byte == 0xC1; } static inline int make_char_multibyte (int c) { ((void) ( 0 && (SINGLE_BYTE_CHAR_P (c)))); return UNIBYTE_TO_CHAR (c); } enum { MAX_MULTIBYTE_LENGTH = 5 }; static inline _Bool CHAR_VALID_P (intmax_t c) { return 0 <= c && c <= MAX_CHAR; } static inline _Bool CHARACTERP (Lisp_Object x) { return FIXNUMP (x) && CHAR_VALID_P (XFIXNUM (x)); } static inline void CHECK_CHARACTER (Lisp_Object x) { CHECK_TYPE (CHARACTERP (x), builtin_lisp_symbol (363), x); } static inline void CHECK_CHARACTER_CAR (Lisp_Object x) { CHECK_CHARACTER (XCAR (x)); } static inline void CHECK_CHARACTER_CDR (Lisp_Object x) { CHECK_CHARACTER (XCDR (x)); } static inline _Bool CHAR_PRINTABLE_P (int c) { return ((32 <= c && c < 127) || ! NILP (CHAR_TABLE_REF (globals.f_Vprintable_chars, c))); } static inline int CHAR_BYTES (int c) { return ((MAX_5_BYTE_CHAR < c ? -2 : 1) + (MAX_1_BYTE_CHAR < c) + (MAX_2_BYTE_CHAR < c) + (MAX_3_BYTE_CHAR < c) + (MAX_4_BYTE_CHAR < c)); } static inline int CHAR_LEADING_CODE (int c) { return (c <= MAX_1_BYTE_CHAR ? c : c <= MAX_2_BYTE_CHAR ? 0xC0 | (c >> 6) : c <= MAX_3_BYTE_CHAR ? 0xE0 | (c >> 12) : c <= MAX_4_BYTE_CHAR ? 0xF0 | (c >> 18) : c <= MAX_5_BYTE_CHAR ? 0xF8 : 0xC0 | ((c >> 6) & 0x01)); } static inline int CHAR_STRING (int c, unsigned char *p) { ((0 <= c) ? (void) 0 : __builtin_unreachable ()); if (c <= MAX_1_BYTE_CHAR) { p[0] = c; return 1; } if (c <= MAX_2_BYTE_CHAR) { p[0] = 0xC0 | (c >> 6); p[1] = 0x80 | (c & 0x3F); return 2; } if (c <= MAX_3_BYTE_CHAR) { p[0] = 0xE0 | (c >> 12); p[1] = 0x80 | ((c >> 6) & 0x3F); p[2] = 0x80 | (c & 0x3F); return 3; } int len = char_string (c, p); ((0 < len && len <= MAX_MULTIBYTE_LENGTH) ? (void) 0 : __builtin_unreachable ()); return len; } static inline int BYTE8_STRING (int b, unsigned char *p) { p[0] = 0xC0 | ((b >> 6) & 0x01); p[1] = 0x80 | (b & 0x3F); return 2; } static inline _Bool LEADING_CODE_P (int byte) { return (byte & 0xC0) == 0xC0; } static inline _Bool TRAILING_CODE_P (int byte) { return (byte & 0xC0) == 0x80; } static inline _Bool CHAR_HEAD_P (int byte) { return (byte & 0xC0) != 0x80; } static inline int BYTES_BY_CHAR_HEAD (int byte) { return (!(byte & 0x80) ? 1 : !(byte & 0x20) ? 2 : !(byte & 0x10) ? 3 : !(byte & 0x08) ? 4 : 5); } static inline int multibyte_length (unsigned char const *p, unsigned char const *pend, _Bool check, _Bool allow_8bit) { if (!check || p < pend) { unsigned char c = p[0]; if (c < 0x80) return 1; if (!check || p + 1 < pend) { unsigned char d = p[1]; int w = ((d & 0xC0) << 2) + c; if ((allow_8bit ? 0x2C0 : 0x2C2) <= w && w <= 0x2DF) return 2; if (!check || p + 2 < pend) { unsigned char e = p[2]; w += (e & 0xC0) << 4; int w1 = w | ((d & 0x20) >> 2); if (0xAE1 <= w1 && w1 <= 0xAEF) return 3; if (!check || p + 3 < pend) { unsigned char f = p[3]; w += (f & 0xC0) << 6; int w2 = w | ((d & 0x30) >> 3); if (0x2AF1 <= w2 && w2 <= 0x2AF7) return 4; if (!check || p + 4 < pend) { int_fast64_t lw = w + ((p[4] & 0xC0) << 8), w3 = (lw << 24) + (d << 16) + (e << 8) + f; if (0xAAF8888080 <= w3 && w3 <= 0xAAF88FBFBD) return 5; } } } } } return 0; } static inline int raw_prev_char_len (unsigned char const *p) { for (int len = 1; ; len++) if (CHAR_HEAD_P (p[-len])) return len; } static inline int string_char_and_length (unsigned char const *p, int *length) { int c = p[0]; if (! (c & 0x80)) { *length = 1; return c; } ((0xC0 <= c) ? (void) 0 : __builtin_unreachable ()); int d = (c << 6) + p[1] - ((0xC0 << 6) + 0x80); if (! (c & 0x20)) { *length = 2; return d + (c < 0xC2 ? 0x3FFF80 : 0); } d = (d << 6) + p[2] - ((0x20 << 12) + 0x80); if (! (c & 0x10)) { *length = 3; ((MAX_2_BYTE_CHAR < d && d <= MAX_3_BYTE_CHAR) ? (void) 0 : __builtin_unreachable ()); return d; } d = (d << 6) + p[3] - ((0x10 << 18) + 0x80); if (! (c & 0x08)) { *length = 4; ((MAX_3_BYTE_CHAR < d && d <= MAX_4_BYTE_CHAR) ? (void) 0 : __builtin_unreachable ()); return d; } d = (d << 6) + p[4] - ((0x08 << 24) + 0x80); *length = 5; ((MAX_4_BYTE_CHAR < d && d <= MAX_5_BYTE_CHAR) ? (void) 0 : __builtin_unreachable ()); return d; } static inline int STRING_CHAR (unsigned char const *p) { int len; return string_char_and_length (p, &len); } static inline int string_char_advance (unsigned char const **pp) { unsigned char const *p = *pp; int len, c = string_char_and_length (p, &len); *pp = p + len; return c; } static inline int fetch_string_char_advance (Lisp_Object string, ptrdiff_t *charidx, ptrdiff_t *byteidx) { int output; ptrdiff_t b = *byteidx; unsigned char *chp = SDATA (string) + b; if (STRING_MULTIBYTE (string)) { int chlen; output = string_char_and_length (chp, &chlen); b += chlen; } else { output = *chp; b++; } (*charidx)++; *byteidx = b; return output; } static inline int fetch_string_char_as_multibyte_advance (Lisp_Object string, ptrdiff_t *charidx, ptrdiff_t *byteidx) { int output; ptrdiff_t b = *byteidx; unsigned char *chp = SDATA (string) + b; if (STRING_MULTIBYTE (string)) { int chlen; output = string_char_and_length (chp, &chlen); b += chlen; } else { output = make_char_multibyte (*chp); b++; } (*charidx)++; *byteidx = b; return output; } static inline int fetch_string_char_advance_no_check (Lisp_Object string, ptrdiff_t *charidx, ptrdiff_t *byteidx) { ptrdiff_t b = *byteidx; unsigned char *chp = SDATA (string) + b; int chlen, output = string_char_and_length (chp, &chlen); (*charidx)++; *byteidx = b + chlen; return output; } static inline int CHAR_VARIATION_SELECTOR_P (int c) { return (c < 0xFE00 ? 0 : c <= 0xFE0F ? c - 0xFE00 + 1 : c < 0xE0100 ? 0 : c <= 0xE01EF ? c - 0xE0100 + 17 : 0); } static inline _Bool char_surrogate_p (int c) { return 0xD800 <= c && c <= 0xDFFF; } typedef enum { UNICODE_CATEGORY_UNKNOWN = 0, UNICODE_CATEGORY_Lu, UNICODE_CATEGORY_Ll, UNICODE_CATEGORY_Lt, UNICODE_CATEGORY_Lm, UNICODE_CATEGORY_Lo, UNICODE_CATEGORY_Mn, UNICODE_CATEGORY_Mc, UNICODE_CATEGORY_Me, UNICODE_CATEGORY_Nd, UNICODE_CATEGORY_Nl, UNICODE_CATEGORY_No, UNICODE_CATEGORY_Pc, UNICODE_CATEGORY_Pd, UNICODE_CATEGORY_Ps, UNICODE_CATEGORY_Pe, UNICODE_CATEGORY_Pi, UNICODE_CATEGORY_Pf, UNICODE_CATEGORY_Po, UNICODE_CATEGORY_Sm, UNICODE_CATEGORY_Sc, UNICODE_CATEGORY_Sk, UNICODE_CATEGORY_So, UNICODE_CATEGORY_Zs, UNICODE_CATEGORY_Zl, UNICODE_CATEGORY_Zp, UNICODE_CATEGORY_Cc, UNICODE_CATEGORY_Cf, UNICODE_CATEGORY_Cs, UNICODE_CATEGORY_Co, UNICODE_CATEGORY_Cn } unicode_category_t; extern EMACS_INT char_resolve_modifier_mask (EMACS_INT) __attribute__ ((__const__)); extern int translate_char (Lisp_Object, int c); extern ptrdiff_t count_size_as_multibyte (const unsigned char *, ptrdiff_t); extern ptrdiff_t str_as_multibyte (unsigned char *, ptrdiff_t, ptrdiff_t, ptrdiff_t *); extern ptrdiff_t str_to_multibyte (unsigned char *, ptrdiff_t, ptrdiff_t); extern ptrdiff_t str_as_unibyte (unsigned char *, ptrdiff_t); extern ptrdiff_t str_to_unibyte (const unsigned char *, unsigned char *, ptrdiff_t); extern ptrdiff_t strwidth (const char *, ptrdiff_t); extern ptrdiff_t c_string_width (const unsigned char *, ptrdiff_t, int, ptrdiff_t *, ptrdiff_t *); extern ptrdiff_t lisp_string_width (Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t *, ptrdiff_t *, _Bool ); extern Lisp_Object Vchar_unify_table; extern Lisp_Object string_escape_byte8 (Lisp_Object); extern _Bool alphabeticp (int); extern _Bool alphanumericp (int); extern _Bool graphicp (int); extern _Bool printablep (int); extern _Bool blankp (int); extern _Bool graphic_base_p (int); static inline int char_table_translate (Lisp_Object obj, int ch) { ((void) ( 0 && (CHAR_VALID_P (ch)))); ((void) ( 0 && (CHAR_TABLE_P (obj)))); obj = CHAR_TABLE_REF (obj, ch); return CHARACTERP (obj) ? XFIXNUM (obj) : ch; } extern signed char const hexdigit[]; static inline int char_hexdigit (int c) { return 0 <= c && c <= (0x7f * 2 + 1) ? hexdigit[c] - 1 : -1; } enum { BEG = 1, BEG_BYTE = BEG }; extern void set_point (ptrdiff_t); extern void temp_set_point (struct buffer *, ptrdiff_t); extern void set_point_both (ptrdiff_t, ptrdiff_t); extern void temp_set_point_both (struct buffer *, ptrdiff_t, ptrdiff_t); extern void set_point_from_marker (Lisp_Object); extern void enlarge_buffer_text (struct buffer *, ptrdiff_t); static inline void SET_PT (ptrdiff_t position) { set_point (position); } static inline void TEMP_SET_PT (ptrdiff_t position) { temp_set_point ((current_thread->m_current_buffer), position); } static inline void SET_PT_BOTH (ptrdiff_t position, ptrdiff_t byte) { set_point_both (position, byte); } static inline void TEMP_SET_PT_BOTH (ptrdiff_t position, ptrdiff_t byte) { temp_set_point_both ((current_thread->m_current_buffer), position, byte); } static inline void BUF_TEMP_SET_PT (struct buffer *buffer, ptrdiff_t position) { temp_set_point (buffer, position); } enum { GAP_BYTES_DFL = 2000 }; enum { GAP_BYTES_MIN = 20 }; extern ptrdiff_t advance_to_char_boundary (ptrdiff_t byte_pos); struct buffer_text { unsigned char *beg; ptrdiff_t gpt; ptrdiff_t z; ptrdiff_t gpt_byte; ptrdiff_t z_byte; ptrdiff_t gap_size; modiff_count modiff; modiff_count chars_modiff; modiff_count save_modiff; modiff_count overlay_modiff; modiff_count compact; ptrdiff_t beg_unchanged; ptrdiff_t end_unchanged; modiff_count unchanged_modified; modiff_count overlay_unchanged_modified; INTERVAL intervals; struct Lisp_Marker *markers; bool_bf inhibit_shrinking : 1; bool_bf redisplay : 1; }; enum { MAX_PER_BUFFER_VARS = 50 }; enum { NONEXISTENT_MODTIME_NSECS = -1 }; enum { UNKNOWN_MODTIME_NSECS = -2 }; struct buffer { union vectorlike_header header; Lisp_Object name_; Lisp_Object filename_; Lisp_Object directory_; Lisp_Object backed_up_; Lisp_Object save_length_; Lisp_Object auto_save_file_name_; Lisp_Object read_only_; Lisp_Object mark_; Lisp_Object local_var_alist_; Lisp_Object major_mode_; Lisp_Object local_minor_modes_; Lisp_Object mode_name_; Lisp_Object mode_line_format_; Lisp_Object header_line_format_; Lisp_Object tab_line_format_; Lisp_Object keymap_; Lisp_Object abbrev_table_; Lisp_Object syntax_table_; Lisp_Object category_table_; Lisp_Object case_fold_search_; Lisp_Object tab_width_; Lisp_Object fill_column_; Lisp_Object left_margin_; Lisp_Object auto_fill_function_; Lisp_Object downcase_table_; Lisp_Object upcase_table_; Lisp_Object case_canon_table_; Lisp_Object case_eqv_table_; Lisp_Object truncate_lines_; Lisp_Object word_wrap_; Lisp_Object ctl_arrow_; Lisp_Object bidi_display_reordering_; Lisp_Object bidi_paragraph_direction_; Lisp_Object bidi_paragraph_separate_re_; Lisp_Object bidi_paragraph_start_re_; Lisp_Object selective_display_; Lisp_Object selective_display_ellipses_; Lisp_Object overwrite_mode_; Lisp_Object abbrev_mode_; Lisp_Object display_table_; Lisp_Object mark_active_; Lisp_Object enable_multibyte_characters_; Lisp_Object buffer_file_coding_system_; Lisp_Object file_format_; Lisp_Object auto_save_file_format_; Lisp_Object cache_long_scans_; Lisp_Object width_table_; Lisp_Object pt_marker_; Lisp_Object begv_marker_; Lisp_Object zv_marker_; Lisp_Object point_before_scroll_; Lisp_Object file_truename_; Lisp_Object invisibility_spec_; Lisp_Object last_selected_window_; Lisp_Object display_count_; Lisp_Object left_margin_cols_; Lisp_Object right_margin_cols_; Lisp_Object left_fringe_width_; Lisp_Object right_fringe_width_; Lisp_Object fringes_outside_margins_; Lisp_Object scroll_bar_width_; Lisp_Object scroll_bar_height_; Lisp_Object vertical_scroll_bar_type_; Lisp_Object horizontal_scroll_bar_type_; Lisp_Object indicate_empty_lines_; Lisp_Object indicate_buffer_boundaries_; Lisp_Object fringe_indicator_alist_; Lisp_Object fringe_cursor_alist_; Lisp_Object display_time_; Lisp_Object scroll_up_aggressively_; Lisp_Object scroll_down_aggressively_; Lisp_Object cursor_type_; Lisp_Object extra_line_spacing_; Lisp_Object cursor_in_non_selected_windows_; struct buffer_text own_text; struct buffer_text *text; ptrdiff_t pt; ptrdiff_t pt_byte; ptrdiff_t begv; ptrdiff_t begv_byte; ptrdiff_t zv; ptrdiff_t zv_byte; struct buffer *base_buffer; int indirections; int window_count; char local_flags[MAX_PER_BUFFER_VARS]; struct timespec modtime; off_t modtime_size; modiff_count auto_save_modified; modiff_count display_error_modiff; time_t auto_save_failure_time; ptrdiff_t last_window_start; struct region_cache *newline_cache; struct region_cache *width_run_cache; struct region_cache *bidi_paragraph_cache; bool_bf prevent_redisplay_optimizations_p : 1; bool_bf clip_changed : 1; bool_bf inhibit_buffer_hooks : 1; struct Lisp_Overlay *overlays_before; struct Lisp_Overlay *overlays_after; ptrdiff_t overlay_center; Lisp_Object undo_list_; }; static inline _Bool BUFFERP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_BUFFER); } static inline void CHECK_BUFFER (Lisp_Object x) { CHECK_TYPE (BUFFERP (x), builtin_lisp_symbol (325), x); } static inline struct buffer * XBUFFER (Lisp_Object a) { ((void) ( 0 && (BUFFERP (a)))); return ((struct buffer *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline void bset_bidi_paragraph_direction (struct buffer *b, Lisp_Object val) { b->bidi_paragraph_direction_ = val; } static inline void bset_cache_long_scans (struct buffer *b, Lisp_Object val) { b->cache_long_scans_ = val; } static inline void bset_case_canon_table (struct buffer *b, Lisp_Object val) { b->case_canon_table_ = val; } static inline void bset_case_eqv_table (struct buffer *b, Lisp_Object val) { b->case_eqv_table_ = val; } static inline void bset_directory (struct buffer *b, Lisp_Object val) { b->directory_ = val; } static inline void bset_display_count (struct buffer *b, Lisp_Object val) { b->display_count_ = val; } static inline void bset_left_margin_cols (struct buffer *b, Lisp_Object val) { b->left_margin_cols_ = val; } static inline void bset_right_margin_cols (struct buffer *b, Lisp_Object val) { b->right_margin_cols_ = val; } static inline void bset_display_time (struct buffer *b, Lisp_Object val) { b->display_time_ = val; } static inline void bset_downcase_table (struct buffer *b, Lisp_Object val) { b->downcase_table_ = val; } static inline void bset_enable_multibyte_characters (struct buffer *b, Lisp_Object val) { b->enable_multibyte_characters_ = val; } static inline void bset_filename (struct buffer *b, Lisp_Object val) { b->filename_ = val; } static inline void bset_keymap (struct buffer *b, Lisp_Object val) { b->keymap_ = val; } static inline void bset_last_selected_window (struct buffer *b, Lisp_Object val) { b->last_selected_window_ = val; } static inline void bset_local_var_alist (struct buffer *b, Lisp_Object val) { b->local_var_alist_ = val; } static inline void bset_mark_active (struct buffer *b, Lisp_Object val) { b->mark_active_ = val; } static inline void bset_point_before_scroll (struct buffer *b, Lisp_Object val) { b->point_before_scroll_ = val; } static inline void bset_read_only (struct buffer *b, Lisp_Object val) { b->read_only_ = val; } static inline void bset_truncate_lines (struct buffer *b, Lisp_Object val) { b->truncate_lines_ = val; } static inline void bset_undo_list (struct buffer *b, Lisp_Object val) { b->undo_list_ = val; } static inline void bset_upcase_table (struct buffer *b, Lisp_Object val) { b->upcase_table_ = val; } static inline void bset_width_table (struct buffer *b, Lisp_Object val) { b->width_table_ = val; } static inline ptrdiff_t BUFFER_CEILING_OF (ptrdiff_t bytepos) { return (bytepos < ((current_thread->m_current_buffer)->text->gpt_byte) && ((current_thread->m_current_buffer)->text->gpt) < ((current_thread->m_current_buffer)->zv) ? ((current_thread->m_current_buffer)->text->gpt_byte) : ((current_thread->m_current_buffer)->zv_byte)) - 1; } static inline ptrdiff_t BUFFER_FLOOR_OF (ptrdiff_t bytepos) { return ((current_thread->m_current_buffer)->begv) <= ((current_thread->m_current_buffer)->text->gpt) && ((current_thread->m_current_buffer)->text->gpt_byte) <= bytepos ? ((current_thread->m_current_buffer)->text->gpt_byte) : ((current_thread->m_current_buffer)->begv_byte); } static inline ptrdiff_t BUF_BEGV (struct buffer *buf) { return (buf == (current_thread->m_current_buffer) ? ((current_thread->m_current_buffer)->begv) : NILP (((buf)->begv_marker_)) ? buf->begv : marker_position (((buf)->begv_marker_))); } static inline ptrdiff_t BUF_BEGV_BYTE (struct buffer *buf) { return (buf == (current_thread->m_current_buffer) ? ((current_thread->m_current_buffer)->begv_byte) : NILP (((buf)->begv_marker_)) ? buf->begv_byte : marker_byte_position (((buf)->begv_marker_))); } static inline ptrdiff_t BUF_PT (struct buffer *buf) { return (buf == (current_thread->m_current_buffer) ? ((current_thread->m_current_buffer)->pt + 0) : NILP (((buf)->pt_marker_)) ? buf->pt : marker_position (((buf)->pt_marker_))); } static inline ptrdiff_t BUF_PT_BYTE (struct buffer *buf) { return (buf == (current_thread->m_current_buffer) ? ((current_thread->m_current_buffer)->pt_byte + 0) : NILP (((buf)->pt_marker_)) ? buf->pt_byte : marker_byte_position (((buf)->pt_marker_))); } static inline ptrdiff_t BUF_ZV (struct buffer *buf) { return (buf == (current_thread->m_current_buffer) ? ((current_thread->m_current_buffer)->zv) : NILP (((buf)->zv_marker_)) ? buf->zv : marker_position (((buf)->zv_marker_))); } static inline ptrdiff_t BUF_ZV_BYTE (struct buffer *buf) { return (buf == (current_thread->m_current_buffer) ? ((current_thread->m_current_buffer)->zv_byte) : NILP (((buf)->zv_marker_)) ? buf->zv_byte : marker_byte_position (((buf)->zv_marker_))); } static inline ptrdiff_t BUF_BEG (struct buffer *buf) { return BEG; } static inline ptrdiff_t BUF_BEG_BYTE (struct buffer *buf) { return BEG_BYTE; } static inline unsigned char * BUF_GPT_ADDR (struct buffer *buf) { return buf->text->beg + buf->text->gpt_byte - BEG_BYTE; } static inline unsigned char * BUF_Z_ADDR (struct buffer *buf) { return buf->text->beg + buf->text->gap_size + buf->text->z_byte - BEG_BYTE; } static inline unsigned char * BUF_GAP_END_ADDR (struct buffer *buf) { return buf->text->beg + buf->text->gpt_byte + buf->text->gap_size - BEG_BYTE; } static inline void BUF_COMPUTE_UNCHANGED (struct buffer *buf, ptrdiff_t start, ptrdiff_t end) { if (((buf)->text->unchanged_modified) == ((buf)->text->modiff) && (((buf)->text->overlay_unchanged_modified) == ((buf)->text->overlay_modiff))) { buf->text->beg_unchanged = start - BUF_BEG (buf); buf->text->end_unchanged = ((buf)->text->z) - (end); } else { if (((buf)->text->z) - end < ((buf)->text->end_unchanged)) buf->text->end_unchanged = ((buf)->text->z) - end; if (start - BUF_BEG (buf) < ((buf)->text->beg_unchanged)) buf->text->beg_unchanged = start - BUF_BEG (buf); } } static inline void SET_BUF_BEGV (struct buffer *buf, ptrdiff_t charpos) { buf->begv_byte = buf_charpos_to_bytepos (buf, charpos); buf->begv = charpos; } static inline void SET_BUF_ZV (struct buffer *buf, ptrdiff_t charpos) { buf->zv_byte = buf_charpos_to_bytepos (buf, charpos); buf->zv = charpos; } static inline void SET_BUF_BEGV_BOTH (struct buffer *buf, ptrdiff_t charpos, ptrdiff_t byte) { buf->begv = charpos; buf->begv_byte = byte; } static inline void SET_BUF_ZV_BOTH (struct buffer *buf, ptrdiff_t charpos, ptrdiff_t byte) { buf->zv = charpos; buf->zv_byte = byte; } static inline void SET_BUF_PT_BOTH (struct buffer *buf, ptrdiff_t charpos, ptrdiff_t byte) { buf->pt = charpos; buf->pt_byte = byte; } static inline unsigned char * BYTE_POS_ADDR (ptrdiff_t n) { return (n < ((current_thread->m_current_buffer)->text->gpt_byte) ? 0 : ((current_thread->m_current_buffer)->text->gap_size)) + n + ((current_thread->m_current_buffer)->text->beg) - BEG_BYTE; } static inline unsigned char * CHAR_POS_ADDR (ptrdiff_t n) { return ((n < ((current_thread->m_current_buffer)->text->gpt) ? 0 : ((current_thread->m_current_buffer)->text->gap_size)) + buf_charpos_to_bytepos ((current_thread->m_current_buffer), n) + ((current_thread->m_current_buffer)->text->beg) - BEG_BYTE); } static inline ptrdiff_t CHAR_TO_BYTE (ptrdiff_t charpos) { return buf_charpos_to_bytepos ((current_thread->m_current_buffer), charpos); } static inline ptrdiff_t BYTE_TO_CHAR (ptrdiff_t bytepos) { return buf_bytepos_to_charpos ((current_thread->m_current_buffer), bytepos); } static inline ptrdiff_t PTR_BYTE_POS (unsigned char const *ptr) { ptrdiff_t byte = ptr - (current_thread->m_current_buffer)->text->beg; return byte - (byte <= ((current_thread->m_current_buffer)->text->gpt_byte) - BEG_BYTE ? 0 : ((current_thread->m_current_buffer)->text->gap_size)) + BEG_BYTE; } enum { BUFFER_LISP_SIZE = ( __builtin_offsetof ( struct buffer , cursor_in_non_selected_windows_ ) + word_size < header_size ? 0 : ( __builtin_offsetof ( struct buffer , cursor_in_non_selected_windows_ ) + word_size - header_size) / word_size) }; enum { BUFFER_REST_SIZE = ((sizeof (struct buffer) - header_size + word_size - 1) / word_size) - BUFFER_LISP_SIZE }; static inline void BUFFER_PVEC_INIT (struct buffer *b) { ((b)->header.size = (( (9223372036854775807L) - (9223372036854775807L) / 2) | ((PVEC_BUFFER) << PSEUDOVECTOR_AREA_BITS) | ((BUFFER_REST_SIZE) << PSEUDOVECTOR_SIZE_BITS) | (BUFFER_LISP_SIZE))); } static inline _Bool BUFFER_LIVE_P (struct buffer *b) { return !NILP (((b)->name_)); } static inline _Bool BUFFER_HIDDEN_P (struct buffer *b) { return SREF (((b)->name_), 0) == ' '; } static inline void BUFFER_CHECK_INDIRECTION (struct buffer *b) { if (BUFFER_LIVE_P (b)) { if (b->base_buffer) { ((void) ( 0 && (b->indirections == -1))); ((void) ( 0 && (b->base_buffer->indirections > 0))); } else ((void) ( 0 && (b->indirections >= 0))); } } extern struct buffer buffer_defaults; extern struct buffer buffer_local_flags; extern struct buffer buffer_local_symbols; extern Lisp_Object interval_insert_behind_hooks; extern Lisp_Object interval_insert_in_front_hooks; extern EMACS_INT fix_position (Lisp_Object); extern void delete_all_overlays (struct buffer *); extern void reset_buffer (struct buffer *); extern void compact_buffer (struct buffer *); extern void evaporate_overlays (ptrdiff_t); extern ptrdiff_t overlays_at (EMACS_INT, _Bool , Lisp_Object **, ptrdiff_t *, ptrdiff_t *, ptrdiff_t *, _Bool ); extern ptrdiff_t sort_overlays (Lisp_Object *, ptrdiff_t, struct window *); extern void recenter_overlay_lists (struct buffer *, ptrdiff_t); extern ptrdiff_t overlay_strings (ptrdiff_t, struct window *, unsigned char **); extern void validate_region (Lisp_Object *, Lisp_Object *); extern void set_buffer_internal_1 (struct buffer *); extern void set_buffer_internal_2 (struct buffer *); extern void set_buffer_temp (struct buffer *); extern Lisp_Object buffer_local_value (Lisp_Object, Lisp_Object); extern void record_buffer (Lisp_Object); extern void fix_overlays_before (struct buffer *, ptrdiff_t, ptrdiff_t); extern void mmap_set_vars ( _Bool ); extern void restore_buffer (Lisp_Object); extern void set_buffer_if_live (Lisp_Object); static inline struct buffer * decode_buffer (Lisp_Object b) { return NILP (b) ? (current_thread->m_current_buffer) : (CHECK_BUFFER (b), XBUFFER (b)); } static inline void set_buffer_internal (struct buffer *b) { if ((current_thread->m_current_buffer) != b) set_buffer_internal_1 (b); } static inline void record_unwind_current_buffer (void) { record_unwind_protect (set_buffer_if_live, Fcurrent_buffer ()); } extern Lisp_Object Vbuffer_alist; static inline INTERVAL buffer_intervals (struct buffer *b) { ((void) ( 0 && (b->text != ((void *)0) ))); return b->text->intervals; } static inline void set_buffer_intervals (struct buffer *b, INTERVAL i) { ((void) ( 0 && (b->text != ((void *)0) ))); b->text->intervals = i; } static inline _Bool buffer_has_overlays (void) { return (current_thread->m_current_buffer)->overlays_before || (current_thread->m_current_buffer)->overlays_after; } static inline int FETCH_MULTIBYTE_CHAR (ptrdiff_t pos) { unsigned char *p = BYTE_POS_ADDR (pos); return STRING_CHAR (p); } static inline int BUF_FETCH_MULTIBYTE_CHAR (struct buffer *buf, ptrdiff_t pos) { unsigned char *p = ((pos >= ((buf)->text->gpt_byte) ? ((buf)->text->gap_size) : 0) + pos + ((buf)->text->beg) - BEG_BYTE); return STRING_CHAR (p); } static inline int FETCH_CHAR_AS_MULTIBYTE (ptrdiff_t pos) { return (!NILP ((((current_thread->m_current_buffer))->enable_multibyte_characters_)) ? FETCH_MULTIBYTE_CHAR (pos) : UNIBYTE_TO_CHAR (*(BYTE_POS_ADDR ((pos))))); } static inline int FETCH_CHAR (ptrdiff_t pos) { return (!NILP ((((current_thread->m_current_buffer))->enable_multibyte_characters_)) ? FETCH_MULTIBYTE_CHAR (pos) : *(BYTE_POS_ADDR ((pos)))); } static inline unsigned char * BUF_BYTE_ADDRESS (struct buffer *buf, ptrdiff_t pos) { return (buf->text->beg + pos - BEG_BYTE + (pos < buf->text->gpt_byte ? 0 : buf->text->gap_size)); } static inline unsigned char * BUF_CHAR_ADDRESS (struct buffer *buf, ptrdiff_t pos) { return (buf->text->beg + buf_charpos_to_bytepos (buf, pos) - BEG_BYTE + (pos < buf->text->gpt ? 0 : buf->text->gap_size)); } static inline ptrdiff_t BUF_PTR_BYTE_POS (struct buffer *buf, unsigned char *ptr) { ptrdiff_t byte = ptr - buf->text->beg; return (byte - (byte <= ((buf)->text->gpt_byte) - BEG_BYTE ? 0 : ((buf)->text->gap_size)) + BEG_BYTE); } static inline unsigned char BUF_FETCH_BYTE (struct buffer *buf, ptrdiff_t n) { return *BUF_BYTE_ADDRESS (buf, n); } static inline int BUF_FETCH_CHAR_AS_MULTIBYTE (struct buffer *buf, ptrdiff_t pos) { return (! NILP (((buf)->enable_multibyte_characters_)) ? BUF_FETCH_MULTIBYTE_CHAR (buf, pos) : UNIBYTE_TO_CHAR (BUF_FETCH_BYTE (buf, pos))); } static inline int buffer_window_count (struct buffer *b) { if (b->base_buffer) b = b->base_buffer; ((void) ( 0 && (b->window_count >= 0))); return b->window_count; } static inline ptrdiff_t OVERLAY_POSITION (Lisp_Object p) { return marker_position (p); } extern _Bool valid_per_buffer_idx (int); static inline _Bool PER_BUFFER_VALUE_P (struct buffer *b, int idx) { ((void) ( 0 && (valid_per_buffer_idx (idx)))); return b->local_flags[idx]; } static inline void SET_PER_BUFFER_VALUE_P (struct buffer *b, int idx, _Bool val) { ((void) ( 0 && (valid_per_buffer_idx (idx)))); b->local_flags[idx] = val; } static inline int PER_BUFFER_IDX (ptrdiff_t offset) { return XFIXNUM (*(Lisp_Object *) (offset + (char *) &buffer_local_flags)); } static inline Lisp_Object per_buffer_default (int offset) { return *(Lisp_Object *)(offset + (char *) &buffer_defaults); } static inline void set_per_buffer_default (int offset, Lisp_Object value) { *(Lisp_Object *)(offset + (char *) &buffer_defaults) = value; } static inline Lisp_Object per_buffer_value (struct buffer *b, int offset) { return *(Lisp_Object *)(offset + (char *) b); } static inline void set_per_buffer_value (struct buffer *b, int offset, Lisp_Object value) { *(Lisp_Object *)(offset + (char *) b) = value; } static inline int downcase (int c) { Lisp_Object downcase_table = (((current_thread->m_current_buffer))->downcase_table_); Lisp_Object down = CHAR_TABLE_REF (downcase_table, c); return FIXNATP (down) ? XFIXNAT (down) : c; } static inline int upcase (int c) { Lisp_Object upcase_table = (((current_thread->m_current_buffer))->upcase_table_); Lisp_Object up = CHAR_TABLE_REF (upcase_table, c); return FIXNATP (up) ? XFIXNAT (up) : c; } static inline _Bool uppercasep (int c) { return downcase (c) != c; } static inline _Bool lowercasep (int c) { return !uppercasep (c) && upcase (c) != c; } static inline int sanitize_tab_width (Lisp_Object width) { return (FIXNUMP (width) && 0 < XFIXNUM (width) && XFIXNUM (width) <= 1000 ? XFIXNUM (width) : 8); } static inline int SANE_TAB_WIDTH (struct buffer *buf) { return sanitize_tab_width (((buf)->tab_width_)); } static inline int sanitize_char_width (EMACS_INT width) { return 0 <= width && width <= 1000 ? width : 1000; } static inline int CHARACTER_WIDTH (int c) { return (0x20 <= c && c < 0x7f ? 1 : 0x7f < c ? (sanitize_char_width (XFIXNUM (CHAR_TABLE_REF (globals.f_Vchar_width_table, c)))) : c == '\t' ? SANE_TAB_WIDTH ((current_thread->m_current_buffer)) : c == '\n' ? 0 : !NILP ((((current_thread->m_current_buffer))->ctl_arrow_)) ? 2 : 4); } static inline int fetch_char_advance (ptrdiff_t *charidx, ptrdiff_t *byteidx) { int output; ptrdiff_t c = *charidx, b = *byteidx; c++; unsigned char *chp = BYTE_POS_ADDR (b); if (!NILP ((((current_thread->m_current_buffer))->enable_multibyte_characters_))) { int chlen; output = string_char_and_length (chp, &chlen); b += chlen; } else { output = *chp; b++; } *charidx = c; *byteidx = b; return output; } static inline int fetch_char_advance_no_check (ptrdiff_t *charidx, ptrdiff_t *byteidx) { int output; ptrdiff_t c = *charidx, b = *byteidx; c++; unsigned char *chp = BYTE_POS_ADDR (b); int chlen; output = string_char_and_length (chp, &chlen); b += chlen; *charidx = c; *byteidx = b; return output; } static inline int buf_next_char_len (struct buffer *buf, ptrdiff_t pos_byte) { unsigned char *chp = BUF_BYTE_ADDRESS (buf, pos_byte); return BYTES_BY_CHAR_HEAD (*chp); } static inline int next_char_len (ptrdiff_t pos_byte) { return buf_next_char_len ((current_thread->m_current_buffer), pos_byte); } static inline int buf_prev_char_len (struct buffer *buf, ptrdiff_t pos_byte) { unsigned char *chp = (((buf)->text->beg) + pos_byte - BEG_BYTE + (pos_byte <= ((buf)->text->gpt_byte) ? 0 : ((buf)->text->gap_size))); return raw_prev_char_len (chp); } static inline int prev_char_len (ptrdiff_t pos_byte) { return buf_prev_char_len ((current_thread->m_current_buffer), pos_byte); } static inline void inc_both (ptrdiff_t *charpos, ptrdiff_t *bytepos) { (*charpos)++; (*bytepos) += (!NILP ((((current_thread->m_current_buffer))->enable_multibyte_characters_)) ? next_char_len (*bytepos) : 1); } static inline void dec_both (ptrdiff_t *charpos, ptrdiff_t *bytepos) { (*charpos)--; (*bytepos) -= (!NILP ((((current_thread->m_current_buffer))->enable_multibyte_characters_)) ? prev_char_len (*bytepos) : 1); } enum define_charset_arg_index { charset_arg_name, charset_arg_dimension, charset_arg_code_space, charset_arg_min_code, charset_arg_max_code, charset_arg_iso_final, charset_arg_iso_revision, charset_arg_emacs_mule_id, charset_arg_ascii_compatible_p, charset_arg_supplementary_p, charset_arg_invalid_code, charset_arg_code_offset, charset_arg_map, charset_arg_subset, charset_arg_superset, charset_arg_unify_map, charset_arg_plist, charset_arg_max }; enum charset_attr_index { charset_id, charset_name, charset_plist, charset_map, charset_decoder, charset_encoder, charset_subset, charset_superset, charset_unify_map, charset_deunifier, charset_attr_max }; enum charset_method { CHARSET_METHOD_OFFSET, CHARSET_METHOD_MAP, CHARSET_METHOD_SUBSET, CHARSET_METHOD_SUPERSET }; struct charset { int id; ptrdiff_t hash_index; int dimension; int code_space[15]; unsigned char *code_space_mask; bool_bf code_linear_p : 1; bool_bf iso_chars_96 : 1; bool_bf ascii_compatible_p : 1; bool_bf supplementary_p : 1; bool_bf compact_codes_p : 1; bool_bf unified_p : 1; int iso_final; int iso_revision; int emacs_mule_id; enum charset_method method; unsigned min_code, max_code; unsigned char_index_offset; int min_char, max_char; unsigned invalid_code; unsigned char fast_map[190]; int code_offset; }; extern Lisp_Object Vcharset_hash_table; extern struct charset *charset_table; extern int charset_table_size; extern int charset_table_used; extern Lisp_Object Vcharset_ordered_list; extern Lisp_Object Vcharset_non_preferred_head; extern EMACS_UINT charset_ordered_list_tick; extern Lisp_Object Viso_2022_charset_list; extern Lisp_Object Vemacs_mule_charset_list; extern int emacs_mule_charset[256]; static inline void set_charset_attr (struct charset *charset, enum charset_attr_index idx, Lisp_Object val) { ASET ((HASH_VALUE (XHASH_TABLE (Vcharset_hash_table), (charset)->hash_index)), idx, val); } extern Lisp_Object charset_work; extern _Bool charset_map_loaded; extern int iso_charset_table[3][2][0x80]; extern int charset_ascii, charset_eight_bit; extern int charset_unicode; extern int charset_jisx0201_roman; extern int charset_jisx0208_1978; extern int charset_jisx0208; extern int charset_ksc5601; extern int charset_unibyte; extern struct charset *char_charset (int, Lisp_Object, unsigned *); extern Lisp_Object charset_attributes (int); extern int decode_char (struct charset *, unsigned); extern unsigned encode_char (struct charset *, int); extern int string_xstring_p (Lisp_Object); extern void map_charset_chars (void (*) (Lisp_Object, Lisp_Object), Lisp_Object, Lisp_Object, struct charset *, unsigned, unsigned); enum define_coding_system_arg_index { coding_arg_name, coding_arg_mnemonic, coding_arg_coding_type, coding_arg_charset_list, coding_arg_ascii_compatible_p, coding_arg_decode_translation_table, coding_arg_encode_translation_table, coding_arg_post_read_conversion, coding_arg_pre_write_conversion, coding_arg_default_char, coding_arg_for_unibyte, coding_arg_plist, coding_arg_eol_type, coding_arg_max }; enum define_coding_iso2022_arg_index { coding_arg_iso2022_initial = coding_arg_max, coding_arg_iso2022_reg_usage, coding_arg_iso2022_request, coding_arg_iso2022_flags, coding_arg_iso2022_max }; enum define_coding_utf8_arg_index { coding_arg_utf8_bom = coding_arg_max, coding_arg_utf8_max }; enum define_coding_utf16_arg_index { coding_arg_utf16_bom = coding_arg_max, coding_arg_utf16_endian, coding_arg_utf16_max }; enum define_coding_ccl_arg_index { coding_arg_ccl_decoder = coding_arg_max, coding_arg_ccl_encoder, coding_arg_ccl_valids, coding_arg_ccl_max }; enum define_coding_undecided_arg_index { coding_arg_undecided_inhibit_null_byte_detection = coding_arg_max, coding_arg_undecided_inhibit_iso_escape_detection, coding_arg_undecided_prefer_utf_8, coding_arg_undecided_max }; extern Lisp_Object Vcoding_system_hash_table; enum coding_attr_index { coding_attr_base_name, coding_attr_docstring, coding_attr_mnemonic, coding_attr_type, coding_attr_charset_list, coding_attr_ascii_compat, coding_attr_decode_tbl, coding_attr_encode_tbl, coding_attr_trans_tbl, coding_attr_post_read, coding_attr_pre_write, coding_attr_default_char, coding_attr_for_unibyte, coding_attr_plist, coding_attr_category, coding_attr_safe_charsets, coding_attr_charset_valids, coding_attr_ccl_decoder, coding_attr_ccl_encoder, coding_attr_ccl_valids, coding_attr_iso_initial, coding_attr_iso_usage, coding_attr_iso_request, coding_attr_iso_flags, coding_attr_utf_bom, coding_attr_utf_16_endian, coding_attr_emacs_mule_full, coding_attr_undecided_inhibit_null_byte_detection, coding_attr_undecided_inhibit_iso_escape_detection, coding_attr_undecided_prefer_utf_8, coding_attr_last_index }; enum coding_result_code { CODING_RESULT_SUCCESS, CODING_RESULT_INSUFFICIENT_SRC, CODING_RESULT_INSUFFICIENT_DST, CODING_RESULT_INVALID_SRC, CODING_RESULT_INTERRUPT }; typedef int hb_bool_t; typedef uint32_t hb_codepoint_t; typedef int32_t hb_position_t; typedef uint32_t hb_mask_t; typedef union _hb_var_int_t { uint32_t u32; int32_t i32; uint16_t u16[2]; int16_t i16[2]; uint8_t u8[4]; int8_t i8[4]; } hb_var_int_t; typedef union _hb_var_num_t { float f; uint32_t u32; int32_t i32; uint16_t u16[2]; int16_t i16[2]; uint8_t u8[4]; int8_t i8[4]; } hb_var_num_t; typedef uint32_t hb_tag_t; extern hb_tag_t hb_tag_from_string (const char *str, int len); extern void hb_tag_to_string (hb_tag_t tag, char *buf); typedef enum { HB_DIRECTION_INVALID = 0, HB_DIRECTION_LTR = 4, HB_DIRECTION_RTL, HB_DIRECTION_TTB, HB_DIRECTION_BTT } hb_direction_t; extern hb_direction_t hb_direction_from_string (const char *str, int len); extern const char * hb_direction_to_string (hb_direction_t direction); typedef const struct hb_language_impl_t *hb_language_t; extern hb_language_t hb_language_from_string (const char *str, int len); extern const char * hb_language_to_string (hb_language_t language); extern hb_language_t hb_language_get_default (void); typedef enum { HB_SCRIPT_COMMON = ((hb_tag_t)((((uint32_t)('Z')&0xFF)<<24)|(((uint32_t)('y')&0xFF)<<16)|(((uint32_t)('y')&0xFF)<<8)|((uint32_t)('y')&0xFF))), HB_SCRIPT_INHERITED = ((hb_tag_t)((((uint32_t)('Z')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('h')&0xFF))), HB_SCRIPT_UNKNOWN = ((hb_tag_t)((((uint32_t)('Z')&0xFF)<<24)|(((uint32_t)('z')&0xFF)<<16)|(((uint32_t)('z')&0xFF)<<8)|((uint32_t)('z')&0xFF))), HB_SCRIPT_ARABIC = ((hb_tag_t)((((uint32_t)('A')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('b')&0xFF))), HB_SCRIPT_ARMENIAN = ((hb_tag_t)((((uint32_t)('A')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('n')&0xFF))), HB_SCRIPT_BENGALI = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_CYRILLIC = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('y')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('l')&0xFF))), HB_SCRIPT_DEVANAGARI = ((hb_tag_t)((((uint32_t)('D')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('v')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_GEORGIAN = ((hb_tag_t)((((uint32_t)('G')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('o')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_GREEK = ((hb_tag_t)((((uint32_t)('G')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('e')&0xFF)<<8)|((uint32_t)('k')&0xFF))), HB_SCRIPT_GUJARATI = ((hb_tag_t)((((uint32_t)('G')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('j')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_GURMUKHI = ((hb_tag_t)((((uint32_t)('G')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('u')&0xFF))), HB_SCRIPT_HANGUL = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_HAN = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_HEBREW = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('b')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_HIRAGANA = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_KANNADA = ((hb_tag_t)((((uint32_t)('K')&0xFF)<<24)|(((uint32_t)('n')&0xFF)<<16)|(((uint32_t)('d')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_KATAKANA = ((hb_tag_t)((((uint32_t)('K')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_LAO = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('o')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_LATIN = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('n')&0xFF))), HB_SCRIPT_MALAYALAM = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('l')&0xFF)<<16)|(((uint32_t)('y')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_ORIYA = ((hb_tag_t)((((uint32_t)('O')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('y')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_TAMIL = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('l')&0xFF))), HB_SCRIPT_TELUGU = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('u')&0xFF))), HB_SCRIPT_THAI = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_TIBETAN = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('b')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_SCRIPT_BOPOMOFO = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('p')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_BRAILLE = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_CANADIAN_SYLLABICS = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('s')&0xFF))), HB_SCRIPT_CHEROKEE = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('e')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_ETHIOPIC = ((hb_tag_t)((((uint32_t)('E')&0xFF)<<24)|(((uint32_t)('t')&0xFF)<<16)|(((uint32_t)('h')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_KHMER = ((hb_tag_t)((((uint32_t)('K')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_MONGOLIAN = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_MYANMAR = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('y')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_OGHAM = ((hb_tag_t)((((uint32_t)('O')&0xFF)<<24)|(((uint32_t)('g')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_RUNIC = ((hb_tag_t)((((uint32_t)('R')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_SINHALA = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('h')&0xFF))), HB_SCRIPT_SYRIAC = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('y')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('c')&0xFF))), HB_SCRIPT_THAANA = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_YI = ((hb_tag_t)((((uint32_t)('Y')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('i')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_DESERET = ((hb_tag_t)((((uint32_t)('D')&0xFF)<<24)|(((uint32_t)('s')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_SCRIPT_GOTHIC = ((hb_tag_t)((((uint32_t)('G')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('h')&0xFF))), HB_SCRIPT_OLD_ITALIC = ((hb_tag_t)((((uint32_t)('I')&0xFF)<<24)|(((uint32_t)('t')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('l')&0xFF))), HB_SCRIPT_BUHID = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('h')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_HANUNOO = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_TAGALOG = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('g')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_TAGBANWA = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('g')&0xFF)<<8)|((uint32_t)('b')&0xFF))), HB_SCRIPT_CYPRIOT = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('p')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_SCRIPT_LIMBU = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('b')&0xFF))), HB_SCRIPT_LINEAR_B = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('b')&0xFF))), HB_SCRIPT_OSMANYA = ((hb_tag_t)((((uint32_t)('O')&0xFF)<<24)|(((uint32_t)('s')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_SHAVIAN = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('w')&0xFF))), HB_SCRIPT_TAI_LE = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('e')&0xFF))), HB_SCRIPT_UGARITIC = ((hb_tag_t)((((uint32_t)('U')&0xFF)<<24)|(((uint32_t)('g')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_BUGINESE = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('g')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_COPTIC = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('p')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_SCRIPT_GLAGOLITIC = ((hb_tag_t)((((uint32_t)('G')&0xFF)<<24)|(((uint32_t)('l')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_KHAROSHTHI = ((hb_tag_t)((((uint32_t)('K')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_NEW_TAI_LUE = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('u')&0xFF))), HB_SCRIPT_OLD_PERSIAN = ((hb_tag_t)((((uint32_t)('X')&0xFF)<<24)|(((uint32_t)('p')&0xFF)<<16)|(((uint32_t)('e')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_SYLOTI_NAGRI = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('y')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_TIFINAGH = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('f')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_BALINESE = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_CUNEIFORM = ((hb_tag_t)((((uint32_t)('X')&0xFF)<<24)|(((uint32_t)('s')&0xFF)<<16)|(((uint32_t)('u')&0xFF)<<8)|((uint32_t)('x')&0xFF))), HB_SCRIPT_NKO = ((hb_tag_t)((((uint32_t)('N')&0xFF)<<24)|(((uint32_t)('k')&0xFF)<<16)|(((uint32_t)('o')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_PHAGS_PA = ((hb_tag_t)((((uint32_t)('P')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_PHOENICIAN = ((hb_tag_t)((((uint32_t)('P')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('x')&0xFF))), HB_SCRIPT_CARIAN = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_CHAM = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_KAYAH_LI = ((hb_tag_t)((((uint32_t)('K')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_LEPCHA = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('p')&0xFF)<<8)|((uint32_t)('c')&0xFF))), HB_SCRIPT_LYCIAN = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('y')&0xFF)<<16)|(((uint32_t)('c')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_LYDIAN = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('y')&0xFF)<<16)|(((uint32_t)('d')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_OL_CHIKI = ((hb_tag_t)((((uint32_t)('O')&0xFF)<<24)|(((uint32_t)('l')&0xFF)<<16)|(((uint32_t)('c')&0xFF)<<8)|((uint32_t)('k')&0xFF))), HB_SCRIPT_REJANG = ((hb_tag_t)((((uint32_t)('R')&0xFF)<<24)|(((uint32_t)('j')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_SAURASHTRA = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('u')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_SUNDANESE = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_VAI = ((hb_tag_t)((((uint32_t)('V')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('i')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_AVESTAN = ((hb_tag_t)((((uint32_t)('A')&0xFF)<<24)|(((uint32_t)('v')&0xFF)<<16)|(((uint32_t)('s')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_SCRIPT_BAMUM = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('u')&0xFF))), HB_SCRIPT_EGYPTIAN_HIEROGLYPHS = ((hb_tag_t)((((uint32_t)('E')&0xFF)<<24)|(((uint32_t)('g')&0xFF)<<16)|(((uint32_t)('y')&0xFF)<<8)|((uint32_t)('p')&0xFF))), HB_SCRIPT_IMPERIAL_ARAMAIC = ((hb_tag_t)((((uint32_t)('A')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_INSCRIPTIONAL_PAHLAVI = ((hb_tag_t)((((uint32_t)('P')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_INSCRIPTIONAL_PARTHIAN = ((hb_tag_t)((((uint32_t)('P')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_JAVANESE = ((hb_tag_t)((((uint32_t)('J')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('v')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_KAITHI = ((hb_tag_t)((((uint32_t)('K')&0xFF)<<24)|(((uint32_t)('t')&0xFF)<<16)|(((uint32_t)('h')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_LISU = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('s')&0xFF)<<8)|((uint32_t)('u')&0xFF))), HB_SCRIPT_MEETEI_MAYEK = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('t')&0xFF)<<16)|(((uint32_t)('e')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_OLD_SOUTH_ARABIAN = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('b')&0xFF))), HB_SCRIPT_OLD_TURKIC = ((hb_tag_t)((((uint32_t)('O')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('k')&0xFF)<<8)|((uint32_t)('h')&0xFF))), HB_SCRIPT_SAMARITAN = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_TAI_THAM = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_TAI_VIET = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('v')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_SCRIPT_BATAK = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('k')&0xFF))), HB_SCRIPT_BRAHMI = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('h')&0xFF))), HB_SCRIPT_MANDAIC = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_CHAKMA = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('k')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_MEROITIC_CURSIVE = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('c')&0xFF))), HB_SCRIPT_MEROITIC_HIEROGLYPHS = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_MIAO = ((hb_tag_t)((((uint32_t)('P')&0xFF)<<24)|(((uint32_t)('l')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_SHARADA = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_SORA_SOMPENG = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_TAKRI = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('k')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_BASSA_VAH = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('s')&0xFF)<<8)|((uint32_t)('s')&0xFF))), HB_SCRIPT_CAUCASIAN_ALBANIAN = ((hb_tag_t)((((uint32_t)('A')&0xFF)<<24)|(((uint32_t)('g')&0xFF)<<16)|(((uint32_t)('h')&0xFF)<<8)|((uint32_t)('b')&0xFF))), HB_SCRIPT_DUPLOYAN = ((hb_tag_t)((((uint32_t)('D')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('p')&0xFF)<<8)|((uint32_t)('l')&0xFF))), HB_SCRIPT_ELBASAN = ((hb_tag_t)((((uint32_t)('E')&0xFF)<<24)|(((uint32_t)('l')&0xFF)<<16)|(((uint32_t)('b')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_GRANTHA = ((hb_tag_t)((((uint32_t)('G')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('n')&0xFF))), HB_SCRIPT_KHOJKI = ((hb_tag_t)((((uint32_t)('K')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('o')&0xFF)<<8)|((uint32_t)('j')&0xFF))), HB_SCRIPT_KHUDAWADI = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_LINEAR_A = ((hb_tag_t)((((uint32_t)('L')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_MAHAJANI = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('h')&0xFF)<<8)|((uint32_t)('j')&0xFF))), HB_SCRIPT_MANICHAEAN = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_MENDE_KIKAKUI = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_MODI = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('d')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_MRO = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('r')&0xFF)<<16)|(((uint32_t)('o')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_NABATAEAN = ((hb_tag_t)((((uint32_t)('N')&0xFF)<<24)|(((uint32_t)('b')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_SCRIPT_OLD_NORTH_ARABIAN = ((hb_tag_t)((((uint32_t)('N')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('b')&0xFF))), HB_SCRIPT_OLD_PERMIC = ((hb_tag_t)((((uint32_t)('P')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_PAHAWH_HMONG = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('m')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_PALMYRENE = ((hb_tag_t)((((uint32_t)('P')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_PAU_CIN_HAU = ((hb_tag_t)((((uint32_t)('P')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('u')&0xFF)<<8)|((uint32_t)('c')&0xFF))), HB_SCRIPT_PSALTER_PAHLAVI = ((hb_tag_t)((((uint32_t)('P')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('p')&0xFF))), HB_SCRIPT_SIDDHAM = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('d')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_TIRHUTA = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('h')&0xFF))), HB_SCRIPT_WARANG_CITI = ((hb_tag_t)((((uint32_t)('W')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_AHOM = ((hb_tag_t)((((uint32_t)('A')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('o')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_ANATOLIAN_HIEROGLYPHS = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('l')&0xFF)<<16)|(((uint32_t)('u')&0xFF)<<8)|((uint32_t)('w')&0xFF))), HB_SCRIPT_HATRAN = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_MULTANI = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_SCRIPT_OLD_HUNGARIAN = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_SIGNWRITING = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('g')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('w')&0xFF))), HB_SCRIPT_ADLAM = ((hb_tag_t)((((uint32_t)('A')&0xFF)<<24)|(((uint32_t)('d')&0xFF)<<16)|(((uint32_t)('l')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_BHAIKSUKI = ((hb_tag_t)((((uint32_t)('B')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('k')&0xFF)<<8)|((uint32_t)('s')&0xFF))), HB_SCRIPT_MARCHEN = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('c')&0xFF))), HB_SCRIPT_OSAGE = ((hb_tag_t)((((uint32_t)('O')&0xFF)<<24)|(((uint32_t)('s')&0xFF)<<16)|(((uint32_t)('g')&0xFF)<<8)|((uint32_t)('e')&0xFF))), HB_SCRIPT_TANGUT = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_NEWA = ((hb_tag_t)((((uint32_t)('N')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('w')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_MASARAM_GONDI = ((hb_tag_t)((((uint32_t)('G')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_NUSHU = ((hb_tag_t)((((uint32_t)('N')&0xFF)<<24)|(((uint32_t)('s')&0xFF)<<16)|(((uint32_t)('h')&0xFF)<<8)|((uint32_t)('u')&0xFF))), HB_SCRIPT_SOYOMBO = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('y')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_ZANABAZAR_SQUARE = ((hb_tag_t)((((uint32_t)('Z')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('b')&0xFF))), HB_SCRIPT_DOGRA = ((hb_tag_t)((((uint32_t)('D')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('g')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_GUNJALA_GONDI = ((hb_tag_t)((((uint32_t)('G')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_HANIFI_ROHINGYA = ((hb_tag_t)((((uint32_t)('R')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('h')&0xFF)<<8)|((uint32_t)('g')&0xFF))), HB_SCRIPT_MAKASAR = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('k')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_MEDEFAIDRIN = ((hb_tag_t)((((uint32_t)('M')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('d')&0xFF)<<8)|((uint32_t)('f')&0xFF))), HB_SCRIPT_OLD_SOGDIAN = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('g')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_SOGDIAN = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('g')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_ELYMAIC = ((hb_tag_t)((((uint32_t)('E')&0xFF)<<24)|(((uint32_t)('l')&0xFF)<<16)|(((uint32_t)('y')&0xFF)<<8)|((uint32_t)('m')&0xFF))), HB_SCRIPT_NANDINAGARI = ((hb_tag_t)((((uint32_t)('N')&0xFF)<<24)|(((uint32_t)('a')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('d')&0xFF))), HB_SCRIPT_NYIAKENG_PUACHUE_HMONG = ((hb_tag_t)((((uint32_t)('H')&0xFF)<<24)|(((uint32_t)('m')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('p')&0xFF))), HB_SCRIPT_WANCHO = ((hb_tag_t)((((uint32_t)('W')&0xFF)<<24)|(((uint32_t)('c')&0xFF)<<16)|(((uint32_t)('h')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_CHORASMIAN = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('h')&0xFF)<<16)|(((uint32_t)('r')&0xFF)<<8)|((uint32_t)('s')&0xFF))), HB_SCRIPT_DIVES_AKURU = ((hb_tag_t)((((uint32_t)('D')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('k')&0xFF))), HB_SCRIPT_KHITAN_SMALL_SCRIPT = ((hb_tag_t)((((uint32_t)('K')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('s')&0xFF))), HB_SCRIPT_YEZIDI = ((hb_tag_t)((((uint32_t)('Y')&0xFF)<<24)|(((uint32_t)('e')&0xFF)<<16)|(((uint32_t)('z')&0xFF)<<8)|((uint32_t)('i')&0xFF))), HB_SCRIPT_CYPRO_MINOAN = ((hb_tag_t)((((uint32_t)('C')&0xFF)<<24)|(((uint32_t)('p')&0xFF)<<16)|(((uint32_t)('m')&0xFF)<<8)|((uint32_t)('n')&0xFF))), HB_SCRIPT_OLD_UYGHUR = ((hb_tag_t)((((uint32_t)('O')&0xFF)<<24)|(((uint32_t)('u')&0xFF)<<16)|(((uint32_t)('g')&0xFF)<<8)|((uint32_t)('r')&0xFF))), HB_SCRIPT_TANGSA = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('n')&0xFF)<<16)|(((uint32_t)('s')&0xFF)<<8)|((uint32_t)('a')&0xFF))), HB_SCRIPT_TOTO = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('o')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('o')&0xFF))), HB_SCRIPT_VITHKUQI = ((hb_tag_t)((((uint32_t)('V')&0xFF)<<24)|(((uint32_t)('i')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('h')&0xFF))), HB_SCRIPT_MATH = ((hb_tag_t)((((uint32_t)('Z')&0xFF)<<24)|(((uint32_t)('m')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('h')&0xFF))), HB_SCRIPT_INVALID = ((hb_tag_t)((((uint32_t)(0)&0xFF)<<24)|(((uint32_t)(0)&0xFF)<<16)|(((uint32_t)(0)&0xFF)<<8)|((uint32_t)(0)&0xFF))), _HB_SCRIPT_MAX_VALUE = ((hb_tag_t)((((uint32_t)(0x7f)&0xFF)<<24)|(((uint32_t)(0xff)&0xFF)<<16)|(((uint32_t)(0xff)&0xFF)<<8)|((uint32_t)(0xff)&0xFF))), _HB_SCRIPT_MAX_VALUE_SIGNED = ((hb_tag_t)((((uint32_t)(0x7f)&0xFF)<<24)|(((uint32_t)(0xff)&0xFF)<<16)|(((uint32_t)(0xff)&0xFF)<<8)|((uint32_t)(0xff)&0xFF))) } hb_script_t; extern hb_script_t hb_script_from_iso15924_tag (hb_tag_t tag); extern hb_script_t hb_script_from_string (const char *str, int len); extern hb_tag_t hb_script_to_iso15924_tag (hb_script_t script); extern hb_direction_t hb_script_get_horizontal_direction (hb_script_t script); typedef struct hb_user_data_key_t { char unused; } hb_user_data_key_t; typedef void (*hb_destroy_func_t) (void *user_data); typedef struct hb_feature_t { hb_tag_t tag; uint32_t value; unsigned int start; unsigned int end; } hb_feature_t; extern hb_bool_t hb_feature_from_string (const char *str, int len, hb_feature_t *feature); extern void hb_feature_to_string (hb_feature_t *feature, char *buf, unsigned int size); typedef struct hb_variation_t { hb_tag_t tag; float value; } hb_variation_t; extern hb_bool_t hb_variation_from_string (const char *str, int len, hb_variation_t *variation); extern void hb_variation_to_string (hb_variation_t *variation, char *buf, unsigned int size); typedef uint32_t hb_color_t; extern uint8_t hb_color_get_alpha (hb_color_t color); extern uint8_t hb_color_get_red (hb_color_t color); extern uint8_t hb_color_get_green (hb_color_t color); extern uint8_t hb_color_get_blue (hb_color_t color); typedef enum { HB_MEMORY_MODE_DUPLICATE, HB_MEMORY_MODE_READONLY, HB_MEMORY_MODE_WRITABLE, HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE } hb_memory_mode_t; typedef struct hb_blob_t hb_blob_t; extern hb_blob_t * hb_blob_create (const char *data, unsigned int length, hb_memory_mode_t mode, void *user_data, hb_destroy_func_t destroy); extern hb_blob_t * hb_blob_create_or_fail (const char *data, unsigned int length, hb_memory_mode_t mode, void *user_data, hb_destroy_func_t destroy); extern hb_blob_t * hb_blob_create_from_file (const char *file_name); extern hb_blob_t * hb_blob_create_from_file_or_fail (const char *file_name); extern hb_blob_t * hb_blob_create_sub_blob (hb_blob_t *parent, unsigned int offset, unsigned int length); extern hb_blob_t * hb_blob_copy_writable_or_fail (hb_blob_t *blob); extern hb_blob_t * hb_blob_get_empty (void); extern hb_blob_t * hb_blob_reference (hb_blob_t *blob); extern void hb_blob_destroy (hb_blob_t *blob); extern hb_bool_t hb_blob_set_user_data (hb_blob_t *blob, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); extern void * hb_blob_get_user_data (hb_blob_t *blob, hb_user_data_key_t *key); extern void hb_blob_make_immutable (hb_blob_t *blob); extern hb_bool_t hb_blob_is_immutable (hb_blob_t *blob); extern unsigned int hb_blob_get_length (hb_blob_t *blob); extern const char * hb_blob_get_data (hb_blob_t *blob, unsigned int *length); extern char * hb_blob_get_data_writable (hb_blob_t *blob, unsigned int *length); typedef enum { HB_UNICODE_GENERAL_CATEGORY_CONTROL, HB_UNICODE_GENERAL_CATEGORY_FORMAT, HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED, HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE, HB_UNICODE_GENERAL_CATEGORY_SURROGATE, HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER, HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER, HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER, HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER, HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER, HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK, HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK, HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK, HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER, HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER, HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER, HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION, HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION, HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION, HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION, HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION, HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION, HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION, HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL, HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL, HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL, HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL, HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR, HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR, HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR } hb_unicode_general_category_t; typedef enum { HB_UNICODE_COMBINING_CLASS_NOT_REORDERED = 0, HB_UNICODE_COMBINING_CLASS_OVERLAY = 1, HB_UNICODE_COMBINING_CLASS_NUKTA = 7, HB_UNICODE_COMBINING_CLASS_KANA_VOICING = 8, HB_UNICODE_COMBINING_CLASS_VIRAMA = 9, HB_UNICODE_COMBINING_CLASS_CCC10 = 10, HB_UNICODE_COMBINING_CLASS_CCC11 = 11, HB_UNICODE_COMBINING_CLASS_CCC12 = 12, HB_UNICODE_COMBINING_CLASS_CCC13 = 13, HB_UNICODE_COMBINING_CLASS_CCC14 = 14, HB_UNICODE_COMBINING_CLASS_CCC15 = 15, HB_UNICODE_COMBINING_CLASS_CCC16 = 16, HB_UNICODE_COMBINING_CLASS_CCC17 = 17, HB_UNICODE_COMBINING_CLASS_CCC18 = 18, HB_UNICODE_COMBINING_CLASS_CCC19 = 19, HB_UNICODE_COMBINING_CLASS_CCC20 = 20, HB_UNICODE_COMBINING_CLASS_CCC21 = 21, HB_UNICODE_COMBINING_CLASS_CCC22 = 22, HB_UNICODE_COMBINING_CLASS_CCC23 = 23, HB_UNICODE_COMBINING_CLASS_CCC24 = 24, HB_UNICODE_COMBINING_CLASS_CCC25 = 25, HB_UNICODE_COMBINING_CLASS_CCC26 = 26, HB_UNICODE_COMBINING_CLASS_CCC27 = 27, HB_UNICODE_COMBINING_CLASS_CCC28 = 28, HB_UNICODE_COMBINING_CLASS_CCC29 = 29, HB_UNICODE_COMBINING_CLASS_CCC30 = 30, HB_UNICODE_COMBINING_CLASS_CCC31 = 31, HB_UNICODE_COMBINING_CLASS_CCC32 = 32, HB_UNICODE_COMBINING_CLASS_CCC33 = 33, HB_UNICODE_COMBINING_CLASS_CCC34 = 34, HB_UNICODE_COMBINING_CLASS_CCC35 = 35, HB_UNICODE_COMBINING_CLASS_CCC36 = 36, HB_UNICODE_COMBINING_CLASS_CCC84 = 84, HB_UNICODE_COMBINING_CLASS_CCC91 = 91, HB_UNICODE_COMBINING_CLASS_CCC103 = 103, HB_UNICODE_COMBINING_CLASS_CCC107 = 107, HB_UNICODE_COMBINING_CLASS_CCC118 = 118, HB_UNICODE_COMBINING_CLASS_CCC122 = 122, HB_UNICODE_COMBINING_CLASS_CCC129 = 129, HB_UNICODE_COMBINING_CLASS_CCC130 = 130, HB_UNICODE_COMBINING_CLASS_CCC133 = 132, HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT = 200, HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW = 202, HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE = 214, HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT = 216, HB_UNICODE_COMBINING_CLASS_BELOW_LEFT = 218, HB_UNICODE_COMBINING_CLASS_BELOW = 220, HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT = 222, HB_UNICODE_COMBINING_CLASS_LEFT = 224, HB_UNICODE_COMBINING_CLASS_RIGHT = 226, HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT = 228, HB_UNICODE_COMBINING_CLASS_ABOVE = 230, HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT = 232, HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW = 233, HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE = 234, HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT = 240, HB_UNICODE_COMBINING_CLASS_INVALID = 255 } hb_unicode_combining_class_t; typedef struct hb_unicode_funcs_t hb_unicode_funcs_t; extern hb_unicode_funcs_t * hb_unicode_funcs_get_default (void); extern hb_unicode_funcs_t * hb_unicode_funcs_create (hb_unicode_funcs_t *parent); extern hb_unicode_funcs_t * hb_unicode_funcs_get_empty (void); extern hb_unicode_funcs_t * hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs); extern void hb_unicode_funcs_destroy (hb_unicode_funcs_t *ufuncs); extern hb_bool_t hb_unicode_funcs_set_user_data (hb_unicode_funcs_t *ufuncs, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); extern void * hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs, hb_user_data_key_t *key); extern void hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs); extern hb_bool_t hb_unicode_funcs_is_immutable (hb_unicode_funcs_t *ufuncs); extern hb_unicode_funcs_t * hb_unicode_funcs_get_parent (hb_unicode_funcs_t *ufuncs); typedef hb_unicode_combining_class_t (*hb_unicode_combining_class_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); typedef hb_unicode_general_category_t (*hb_unicode_general_category_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); typedef hb_codepoint_t (*hb_unicode_mirroring_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); typedef hb_script_t (*hb_unicode_script_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); typedef hb_bool_t (*hb_unicode_compose_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab, void *user_data); typedef hb_bool_t (*hb_unicode_decompose_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b, void *user_data); extern void hb_unicode_funcs_set_combining_class_func (hb_unicode_funcs_t *ufuncs, hb_unicode_combining_class_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_unicode_funcs_set_general_category_func (hb_unicode_funcs_t *ufuncs, hb_unicode_general_category_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_unicode_funcs_set_mirroring_func (hb_unicode_funcs_t *ufuncs, hb_unicode_mirroring_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_unicode_funcs_set_script_func (hb_unicode_funcs_t *ufuncs, hb_unicode_script_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_unicode_funcs_set_compose_func (hb_unicode_funcs_t *ufuncs, hb_unicode_compose_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_unicode_funcs_set_decompose_func (hb_unicode_funcs_t *ufuncs, hb_unicode_decompose_func_t func, void *user_data, hb_destroy_func_t destroy); extern hb_unicode_combining_class_t hb_unicode_combining_class (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); extern hb_unicode_general_category_t hb_unicode_general_category (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); extern hb_codepoint_t hb_unicode_mirroring (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); extern hb_script_t hb_unicode_script (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); extern hb_bool_t hb_unicode_compose (hb_unicode_funcs_t *ufuncs, hb_codepoint_t a, hb_codepoint_t b, hb_codepoint_t *ab); extern hb_bool_t hb_unicode_decompose (hb_unicode_funcs_t *ufuncs, hb_codepoint_t ab, hb_codepoint_t *a, hb_codepoint_t *b); typedef struct hb_set_t hb_set_t; extern hb_set_t * hb_set_create (void); extern hb_set_t * hb_set_get_empty (void); extern hb_set_t * hb_set_reference (hb_set_t *set); extern void hb_set_destroy (hb_set_t *set); extern hb_bool_t hb_set_set_user_data (hb_set_t *set, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); extern void * hb_set_get_user_data (hb_set_t *set, hb_user_data_key_t *key); extern hb_bool_t hb_set_allocation_successful (const hb_set_t *set); extern hb_set_t * hb_set_copy (const hb_set_t *set); extern void hb_set_clear (hb_set_t *set); extern hb_bool_t hb_set_is_empty (const hb_set_t *set); extern void hb_set_invert (hb_set_t *set); extern hb_bool_t hb_set_has (const hb_set_t *set, hb_codepoint_t codepoint); extern void hb_set_add (hb_set_t *set, hb_codepoint_t codepoint); extern void hb_set_add_range (hb_set_t *set, hb_codepoint_t first, hb_codepoint_t last); extern void hb_set_del (hb_set_t *set, hb_codepoint_t codepoint); extern void hb_set_del_range (hb_set_t *set, hb_codepoint_t first, hb_codepoint_t last); extern hb_bool_t hb_set_is_equal (const hb_set_t *set, const hb_set_t *other); extern hb_bool_t hb_set_is_subset (const hb_set_t *set, const hb_set_t *larger_set); extern void hb_set_set (hb_set_t *set, const hb_set_t *other); extern void hb_set_union (hb_set_t *set, const hb_set_t *other); extern void hb_set_intersect (hb_set_t *set, const hb_set_t *other); extern void hb_set_subtract (hb_set_t *set, const hb_set_t *other); extern void hb_set_symmetric_difference (hb_set_t *set, const hb_set_t *other); extern unsigned int hb_set_get_population (const hb_set_t *set); extern hb_codepoint_t hb_set_get_min (const hb_set_t *set); extern hb_codepoint_t hb_set_get_max (const hb_set_t *set); extern hb_bool_t hb_set_next (const hb_set_t *set, hb_codepoint_t *codepoint); extern hb_bool_t hb_set_previous (const hb_set_t *set, hb_codepoint_t *codepoint); extern hb_bool_t hb_set_next_range (const hb_set_t *set, hb_codepoint_t *first, hb_codepoint_t *last); extern hb_bool_t hb_set_previous_range (const hb_set_t *set, hb_codepoint_t *first, hb_codepoint_t *last); extern unsigned int hb_face_count (hb_blob_t *blob); typedef struct hb_face_t hb_face_t; extern hb_face_t * hb_face_create (hb_blob_t *blob, unsigned int index); typedef hb_blob_t * (*hb_reference_table_func_t) (hb_face_t *face, hb_tag_t tag, void *user_data); extern hb_face_t * hb_face_create_for_tables (hb_reference_table_func_t reference_table_func, void *user_data, hb_destroy_func_t destroy); extern hb_face_t * hb_face_get_empty (void); extern hb_face_t * hb_face_reference (hb_face_t *face); extern void hb_face_destroy (hb_face_t *face); extern hb_bool_t hb_face_set_user_data (hb_face_t *face, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); extern void * hb_face_get_user_data (const hb_face_t *face, hb_user_data_key_t *key); extern void hb_face_make_immutable (hb_face_t *face); extern hb_bool_t hb_face_is_immutable (const hb_face_t *face); extern hb_blob_t * hb_face_reference_table (const hb_face_t *face, hb_tag_t tag); extern hb_blob_t * hb_face_reference_blob (hb_face_t *face); extern void hb_face_set_index (hb_face_t *face, unsigned int index); extern unsigned int hb_face_get_index (const hb_face_t *face); extern void hb_face_set_upem (hb_face_t *face, unsigned int upem); extern unsigned int hb_face_get_upem (const hb_face_t *face); extern void hb_face_set_glyph_count (hb_face_t *face, unsigned int glyph_count); extern unsigned int hb_face_get_glyph_count (const hb_face_t *face); extern unsigned int hb_face_get_table_tags (const hb_face_t *face, unsigned int start_offset, unsigned int *table_count, hb_tag_t *table_tags ); extern void hb_face_collect_unicodes (hb_face_t *face, hb_set_t *out); extern void hb_face_collect_variation_selectors (hb_face_t *face, hb_set_t *out); extern void hb_face_collect_variation_unicodes (hb_face_t *face, hb_codepoint_t variation_selector, hb_set_t *out); extern hb_face_t * hb_face_builder_create (void); extern hb_bool_t hb_face_builder_add_table (hb_face_t *face, hb_tag_t tag, hb_blob_t *blob); typedef struct hb_draw_state_t { hb_bool_t path_open; float path_start_x; float path_start_y; float current_x; float current_y; hb_var_num_t reserved1; hb_var_num_t reserved2; hb_var_num_t reserved3; hb_var_num_t reserved4; hb_var_num_t reserved5; hb_var_num_t reserved6; hb_var_num_t reserved7; } hb_draw_state_t; typedef struct hb_draw_funcs_t hb_draw_funcs_t; typedef void (*hb_draw_move_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st, float to_x, float to_y, void *user_data); typedef void (*hb_draw_line_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st, float to_x, float to_y, void *user_data); typedef void (*hb_draw_quadratic_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st, float control_x, float control_y, float to_x, float to_y, void *user_data); typedef void (*hb_draw_cubic_to_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st, float control1_x, float control1_y, float control2_x, float control2_y, float to_x, float to_y, void *user_data); typedef void (*hb_draw_close_path_func_t) (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st, void *user_data); extern void hb_draw_funcs_set_move_to_func (hb_draw_funcs_t *dfuncs, hb_draw_move_to_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_draw_funcs_set_line_to_func (hb_draw_funcs_t *dfuncs, hb_draw_line_to_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_draw_funcs_set_quadratic_to_func (hb_draw_funcs_t *dfuncs, hb_draw_quadratic_to_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_draw_funcs_set_cubic_to_func (hb_draw_funcs_t *dfuncs, hb_draw_cubic_to_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_draw_funcs_set_close_path_func (hb_draw_funcs_t *dfuncs, hb_draw_close_path_func_t func, void *user_data, hb_destroy_func_t destroy); extern hb_draw_funcs_t * hb_draw_funcs_create (void); extern hb_draw_funcs_t * hb_draw_funcs_reference (hb_draw_funcs_t *dfuncs); extern void hb_draw_funcs_destroy (hb_draw_funcs_t *dfuncs); extern void hb_draw_funcs_make_immutable (hb_draw_funcs_t *dfuncs); extern hb_bool_t hb_draw_funcs_is_immutable (hb_draw_funcs_t *dfuncs); extern void hb_draw_move_to (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st, float to_x, float to_y); extern void hb_draw_line_to (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st, float to_x, float to_y); extern void hb_draw_quadratic_to (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st, float control_x, float control_y, float to_x, float to_y); extern void hb_draw_cubic_to (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st, float control1_x, float control1_y, float control2_x, float control2_y, float to_x, float to_y); extern void hb_draw_close_path (hb_draw_funcs_t *dfuncs, void *draw_data, hb_draw_state_t *st); typedef struct hb_font_t hb_font_t; typedef struct hb_font_funcs_t hb_font_funcs_t; extern hb_font_funcs_t * hb_font_funcs_create (void); extern hb_font_funcs_t * hb_font_funcs_get_empty (void); extern hb_font_funcs_t * hb_font_funcs_reference (hb_font_funcs_t *ffuncs); extern void hb_font_funcs_destroy (hb_font_funcs_t *ffuncs); extern hb_bool_t hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); extern void * hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs, hb_user_data_key_t *key); extern void hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs); extern hb_bool_t hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs); typedef struct hb_font_extents_t { hb_position_t ascender; hb_position_t descender; hb_position_t line_gap; hb_position_t reserved9; hb_position_t reserved8; hb_position_t reserved7; hb_position_t reserved6; hb_position_t reserved5; hb_position_t reserved4; hb_position_t reserved3; hb_position_t reserved2; hb_position_t reserved1; } hb_font_extents_t; typedef struct hb_glyph_extents_t { hb_position_t x_bearing; hb_position_t y_bearing; hb_position_t width; hb_position_t height; } hb_glyph_extents_t; typedef hb_bool_t (*hb_font_get_font_extents_func_t) (hb_font_t *font, void *font_data, hb_font_extents_t *extents, void *user_data); typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t; typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t; typedef hb_bool_t (*hb_font_get_nominal_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t *glyph, void *user_data); typedef hb_bool_t (*hb_font_get_variation_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph, void *user_data); typedef unsigned int (*hb_font_get_nominal_glyphs_func_t) (hb_font_t *font, void *font_data, unsigned int count, const hb_codepoint_t *first_unicode, unsigned int unicode_stride, hb_codepoint_t *first_glyph, unsigned int glyph_stride, void *user_data); typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, void *user_data); typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t; typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t; typedef void (*hb_font_get_glyph_advances_func_t) (hb_font_t* font, void* font_data, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride, void *user_data); typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_h_advances_func_t; typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_v_advances_func_t; typedef hb_bool_t (*hb_font_get_glyph_origin_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y, void *user_data); typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t; typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t; typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, void *user_data); typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t; typedef hb_bool_t (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, hb_glyph_extents_t *extents, void *user_data); typedef hb_bool_t (*hb_font_get_glyph_contour_point_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y, void *user_data); typedef hb_bool_t (*hb_font_get_glyph_name_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, char *name, unsigned int size, void *user_data); typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *font_data, const char *name, int len, hb_codepoint_t *glyph, void *user_data); typedef void (*hb_font_get_glyph_shape_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t glyph, hb_draw_funcs_t *draw_funcs, void *draw_data, void *user_data); extern void hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_font_h_extents_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_font_v_extents_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_nominal_glyph_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_nominal_glyphs_func (hb_font_funcs_t *ffuncs, hb_font_get_nominal_glyphs_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_variation_glyph_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_advance_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_advance_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_h_advances_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_advances_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_v_advances_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_advances_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_origin_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_origin_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_h_kerning_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_extents_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_contour_point_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_name_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_from_name_func_t func, void *user_data, hb_destroy_func_t destroy); extern void hb_font_funcs_set_glyph_shape_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_shape_func_t func, void *user_data, hb_destroy_func_t destroy); extern hb_bool_t hb_font_get_h_extents (hb_font_t *font, hb_font_extents_t *extents); extern hb_bool_t hb_font_get_v_extents (hb_font_t *font, hb_font_extents_t *extents); extern hb_bool_t hb_font_get_nominal_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t *glyph); extern hb_bool_t hb_font_get_variation_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph); extern unsigned int hb_font_get_nominal_glyphs (hb_font_t *font, unsigned int count, const hb_codepoint_t *first_unicode, unsigned int unicode_stride, hb_codepoint_t *first_glyph, unsigned int glyph_stride); extern hb_position_t hb_font_get_glyph_h_advance (hb_font_t *font, hb_codepoint_t glyph); extern hb_position_t hb_font_get_glyph_v_advance (hb_font_t *font, hb_codepoint_t glyph); extern void hb_font_get_glyph_h_advances (hb_font_t* font, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride); extern void hb_font_get_glyph_v_advances (hb_font_t* font, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride); extern hb_bool_t hb_font_get_glyph_h_origin (hb_font_t *font, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y); extern hb_bool_t hb_font_get_glyph_v_origin (hb_font_t *font, hb_codepoint_t glyph, hb_position_t *x, hb_position_t *y); extern hb_position_t hb_font_get_glyph_h_kerning (hb_font_t *font, hb_codepoint_t left_glyph, hb_codepoint_t right_glyph); extern hb_bool_t hb_font_get_glyph_extents (hb_font_t *font, hb_codepoint_t glyph, hb_glyph_extents_t *extents); extern hb_bool_t hb_font_get_glyph_contour_point (hb_font_t *font, hb_codepoint_t glyph, unsigned int point_index, hb_position_t *x, hb_position_t *y); extern hb_bool_t hb_font_get_glyph_name (hb_font_t *font, hb_codepoint_t glyph, char *name, unsigned int size); extern hb_bool_t hb_font_get_glyph_from_name (hb_font_t *font, const char *name, int len, hb_codepoint_t *glyph); extern void hb_font_get_glyph_shape (hb_font_t *font, hb_codepoint_t glyph, hb_draw_funcs_t *dfuncs, void *draw_data); extern hb_bool_t hb_font_get_glyph (hb_font_t *font, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph); extern void hb_font_get_extents_for_direction (hb_font_t *font, hb_direction_t direction, hb_font_extents_t *extents); extern void hb_font_get_glyph_advance_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); extern void hb_font_get_glyph_advances_for_direction (hb_font_t* font, hb_direction_t direction, unsigned int count, const hb_codepoint_t *first_glyph, unsigned glyph_stride, hb_position_t *first_advance, unsigned advance_stride); extern void hb_font_get_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); extern void hb_font_add_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); extern void hb_font_subtract_glyph_origin_for_direction (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); extern void hb_font_get_glyph_kerning_for_direction (hb_font_t *font, hb_codepoint_t first_glyph, hb_codepoint_t second_glyph, hb_direction_t direction, hb_position_t *x, hb_position_t *y); extern hb_bool_t hb_font_get_glyph_extents_for_origin (hb_font_t *font, hb_codepoint_t glyph, hb_direction_t direction, hb_glyph_extents_t *extents); extern hb_bool_t hb_font_get_glyph_contour_point_for_origin (hb_font_t *font, hb_codepoint_t glyph, unsigned int point_index, hb_direction_t direction, hb_position_t *x, hb_position_t *y); extern void hb_font_glyph_to_string (hb_font_t *font, hb_codepoint_t glyph, char *s, unsigned int size); extern hb_bool_t hb_font_glyph_from_string (hb_font_t *font, const char *s, int len, hb_codepoint_t *glyph); extern hb_font_t * hb_font_create (hb_face_t *face); extern hb_font_t * hb_font_create_sub_font (hb_font_t *parent); extern hb_font_t * hb_font_get_empty (void); extern hb_font_t * hb_font_reference (hb_font_t *font); extern void hb_font_destroy (hb_font_t *font); extern hb_bool_t hb_font_set_user_data (hb_font_t *font, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); extern void * hb_font_get_user_data (hb_font_t *font, hb_user_data_key_t *key); extern void hb_font_make_immutable (hb_font_t *font); extern hb_bool_t hb_font_is_immutable (hb_font_t *font); extern void hb_font_set_parent (hb_font_t *font, hb_font_t *parent); extern hb_font_t * hb_font_get_parent (hb_font_t *font); extern void hb_font_set_face (hb_font_t *font, hb_face_t *face); extern hb_face_t * hb_font_get_face (hb_font_t *font); extern void hb_font_set_funcs (hb_font_t *font, hb_font_funcs_t *klass, void *font_data, hb_destroy_func_t destroy); extern void hb_font_set_funcs_data (hb_font_t *font, void *font_data, hb_destroy_func_t destroy); extern void hb_font_set_scale (hb_font_t *font, int x_scale, int y_scale); extern void hb_font_get_scale (hb_font_t *font, int *x_scale, int *y_scale); extern void hb_font_set_ppem (hb_font_t *font, unsigned int x_ppem, unsigned int y_ppem); extern void hb_font_get_ppem (hb_font_t *font, unsigned int *x_ppem, unsigned int *y_ppem); extern void hb_font_set_ptem (hb_font_t *font, float ptem); extern float hb_font_get_ptem (hb_font_t *font); extern void hb_font_set_synthetic_slant (hb_font_t *font, float slant); extern float hb_font_get_synthetic_slant (hb_font_t *font); extern void hb_font_set_variations (hb_font_t *font, const hb_variation_t *variations, unsigned int variations_length); extern void hb_font_set_var_coords_design (hb_font_t *font, const float *coords, unsigned int coords_length); extern const float * hb_font_get_var_coords_design (hb_font_t *font, unsigned int *length); extern void hb_font_set_var_coords_normalized (hb_font_t *font, const int *coords, unsigned int coords_length); extern const int * hb_font_get_var_coords_normalized (hb_font_t *font, unsigned int *length); extern void hb_font_set_var_named_instance (hb_font_t *font, unsigned instance_index); typedef struct hb_glyph_info_t { hb_codepoint_t codepoint; hb_mask_t mask; uint32_t cluster; hb_var_int_t var1; hb_var_int_t var2; } hb_glyph_info_t; typedef enum { HB_GLYPH_FLAG_UNSAFE_TO_BREAK = 0x00000001, HB_GLYPH_FLAG_UNSAFE_TO_CONCAT = 0x00000002, HB_GLYPH_FLAG_DEFINED = 0x00000003 } hb_glyph_flags_t; extern hb_glyph_flags_t hb_glyph_info_get_glyph_flags (const hb_glyph_info_t *info); typedef struct hb_glyph_position_t { hb_position_t x_advance; hb_position_t y_advance; hb_position_t x_offset; hb_position_t y_offset; hb_var_int_t var; } hb_glyph_position_t; typedef struct hb_segment_properties_t { hb_direction_t direction; hb_script_t script; hb_language_t language; void *reserved1; void *reserved2; } hb_segment_properties_t; extern hb_bool_t hb_segment_properties_equal (const hb_segment_properties_t *a, const hb_segment_properties_t *b); extern unsigned int hb_segment_properties_hash (const hb_segment_properties_t *p); extern void hb_segment_properties_overlay (hb_segment_properties_t *p, const hb_segment_properties_t *src); typedef struct hb_buffer_t hb_buffer_t; extern hb_buffer_t * hb_buffer_create (void); extern hb_buffer_t * hb_buffer_create_similar (const hb_buffer_t *src); extern void hb_buffer_reset (hb_buffer_t *buffer); extern hb_buffer_t * hb_buffer_get_empty (void); extern hb_buffer_t * hb_buffer_reference (hb_buffer_t *buffer); extern void hb_buffer_destroy (hb_buffer_t *buffer); extern hb_bool_t hb_buffer_set_user_data (hb_buffer_t *buffer, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); extern void * hb_buffer_get_user_data (hb_buffer_t *buffer, hb_user_data_key_t *key); typedef enum { HB_BUFFER_CONTENT_TYPE_INVALID = 0, HB_BUFFER_CONTENT_TYPE_UNICODE, HB_BUFFER_CONTENT_TYPE_GLYPHS } hb_buffer_content_type_t; extern void hb_buffer_set_content_type (hb_buffer_t *buffer, hb_buffer_content_type_t content_type); extern hb_buffer_content_type_t hb_buffer_get_content_type (hb_buffer_t *buffer); extern void hb_buffer_set_unicode_funcs (hb_buffer_t *buffer, hb_unicode_funcs_t *unicode_funcs); extern hb_unicode_funcs_t * hb_buffer_get_unicode_funcs (hb_buffer_t *buffer); extern void hb_buffer_set_direction (hb_buffer_t *buffer, hb_direction_t direction); extern hb_direction_t hb_buffer_get_direction (hb_buffer_t *buffer); extern void hb_buffer_set_script (hb_buffer_t *buffer, hb_script_t script); extern hb_script_t hb_buffer_get_script (hb_buffer_t *buffer); extern void hb_buffer_set_language (hb_buffer_t *buffer, hb_language_t language); extern hb_language_t hb_buffer_get_language (hb_buffer_t *buffer); extern void hb_buffer_set_segment_properties (hb_buffer_t *buffer, const hb_segment_properties_t *props); extern void hb_buffer_get_segment_properties (hb_buffer_t *buffer, hb_segment_properties_t *props); extern void hb_buffer_guess_segment_properties (hb_buffer_t *buffer); typedef enum { HB_BUFFER_FLAG_DEFAULT = 0x00000000u, HB_BUFFER_FLAG_BOT = 0x00000001u, HB_BUFFER_FLAG_EOT = 0x00000002u, HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES = 0x00000004u, HB_BUFFER_FLAG_REMOVE_DEFAULT_IGNORABLES = 0x00000008u, HB_BUFFER_FLAG_DO_NOT_INSERT_DOTTED_CIRCLE = 0x00000010u, HB_BUFFER_FLAG_VERIFY = 0x00000020u, HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT = 0x00000040u } hb_buffer_flags_t; extern void hb_buffer_set_flags (hb_buffer_t *buffer, hb_buffer_flags_t flags); extern hb_buffer_flags_t hb_buffer_get_flags (hb_buffer_t *buffer); typedef enum { HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES = 0, HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS = 1, HB_BUFFER_CLUSTER_LEVEL_CHARACTERS = 2, HB_BUFFER_CLUSTER_LEVEL_DEFAULT = HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES } hb_buffer_cluster_level_t; extern void hb_buffer_set_cluster_level (hb_buffer_t *buffer, hb_buffer_cluster_level_t cluster_level); extern hb_buffer_cluster_level_t hb_buffer_get_cluster_level (hb_buffer_t *buffer); extern void hb_buffer_set_replacement_codepoint (hb_buffer_t *buffer, hb_codepoint_t replacement); extern hb_codepoint_t hb_buffer_get_replacement_codepoint (hb_buffer_t *buffer); extern void hb_buffer_set_invisible_glyph (hb_buffer_t *buffer, hb_codepoint_t invisible); extern hb_codepoint_t hb_buffer_get_invisible_glyph (hb_buffer_t *buffer); extern void hb_buffer_set_not_found_glyph (hb_buffer_t *buffer, hb_codepoint_t not_found); extern hb_codepoint_t hb_buffer_get_not_found_glyph (hb_buffer_t *buffer); extern void hb_buffer_clear_contents (hb_buffer_t *buffer); extern hb_bool_t hb_buffer_pre_allocate (hb_buffer_t *buffer, unsigned int size); extern hb_bool_t hb_buffer_allocation_successful (hb_buffer_t *buffer); extern void hb_buffer_reverse (hb_buffer_t *buffer); extern void hb_buffer_reverse_range (hb_buffer_t *buffer, unsigned int start, unsigned int end); extern void hb_buffer_reverse_clusters (hb_buffer_t *buffer); extern void hb_buffer_add (hb_buffer_t *buffer, hb_codepoint_t codepoint, unsigned int cluster); extern void hb_buffer_add_utf8 (hb_buffer_t *buffer, const char *text, int text_length, unsigned int item_offset, int item_length); extern void hb_buffer_add_utf16 (hb_buffer_t *buffer, const uint16_t *text, int text_length, unsigned int item_offset, int item_length); extern void hb_buffer_add_utf32 (hb_buffer_t *buffer, const uint32_t *text, int text_length, unsigned int item_offset, int item_length); extern void hb_buffer_add_latin1 (hb_buffer_t *buffer, const uint8_t *text, int text_length, unsigned int item_offset, int item_length); extern void hb_buffer_add_codepoints (hb_buffer_t *buffer, const hb_codepoint_t *text, int text_length, unsigned int item_offset, int item_length); extern void hb_buffer_append (hb_buffer_t *buffer, const hb_buffer_t *source, unsigned int start, unsigned int end); extern hb_bool_t hb_buffer_set_length (hb_buffer_t *buffer, unsigned int length); extern unsigned int hb_buffer_get_length (hb_buffer_t *buffer); extern hb_glyph_info_t * hb_buffer_get_glyph_infos (hb_buffer_t *buffer, unsigned int *length); extern hb_glyph_position_t * hb_buffer_get_glyph_positions (hb_buffer_t *buffer, unsigned int *length); extern hb_bool_t hb_buffer_has_positions (hb_buffer_t *buffer); extern void hb_buffer_normalize_glyphs (hb_buffer_t *buffer); typedef enum { HB_BUFFER_SERIALIZE_FLAG_DEFAULT = 0x00000000u, HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS = 0x00000001u, HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS = 0x00000002u, HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES = 0x00000004u, HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS = 0x00000008u, HB_BUFFER_SERIALIZE_FLAG_GLYPH_FLAGS = 0x00000010u, HB_BUFFER_SERIALIZE_FLAG_NO_ADVANCES = 0x00000020u } hb_buffer_serialize_flags_t; typedef enum { HB_BUFFER_SERIALIZE_FORMAT_TEXT = ((hb_tag_t)((((uint32_t)('T')&0xFF)<<24)|(((uint32_t)('E')&0xFF)<<16)|(((uint32_t)('X')&0xFF)<<8)|((uint32_t)('T')&0xFF))), HB_BUFFER_SERIALIZE_FORMAT_JSON = ((hb_tag_t)((((uint32_t)('J')&0xFF)<<24)|(((uint32_t)('S')&0xFF)<<16)|(((uint32_t)('O')&0xFF)<<8)|((uint32_t)('N')&0xFF))), HB_BUFFER_SERIALIZE_FORMAT_INVALID = ((hb_tag_t)((((uint32_t)(0)&0xFF)<<24)|(((uint32_t)(0)&0xFF)<<16)|(((uint32_t)(0)&0xFF)<<8)|((uint32_t)(0)&0xFF))) } hb_buffer_serialize_format_t; extern hb_buffer_serialize_format_t hb_buffer_serialize_format_from_string (const char *str, int len); extern const char * hb_buffer_serialize_format_to_string (hb_buffer_serialize_format_t format); extern const char ** hb_buffer_serialize_list_formats (void); extern unsigned int hb_buffer_serialize_glyphs (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, unsigned int *buf_consumed, hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags); extern unsigned int hb_buffer_serialize_unicode (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, unsigned int *buf_consumed, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags); extern unsigned int hb_buffer_serialize (hb_buffer_t *buffer, unsigned int start, unsigned int end, char *buf, unsigned int buf_size, unsigned int *buf_consumed, hb_font_t *font, hb_buffer_serialize_format_t format, hb_buffer_serialize_flags_t flags); extern hb_bool_t hb_buffer_deserialize_glyphs (hb_buffer_t *buffer, const char *buf, int buf_len, const char **end_ptr, hb_font_t *font, hb_buffer_serialize_format_t format); extern hb_bool_t hb_buffer_deserialize_unicode (hb_buffer_t *buffer, const char *buf, int buf_len, const char **end_ptr, hb_buffer_serialize_format_t format); typedef enum { HB_BUFFER_DIFF_FLAG_EQUAL = 0x0000, HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH = 0x0001, HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH = 0x0002, HB_BUFFER_DIFF_FLAG_NOTDEF_PRESENT = 0x0004, HB_BUFFER_DIFF_FLAG_DOTTED_CIRCLE_PRESENT = 0x0008, HB_BUFFER_DIFF_FLAG_CODEPOINT_MISMATCH = 0x0010, HB_BUFFER_DIFF_FLAG_CLUSTER_MISMATCH = 0x0020, HB_BUFFER_DIFF_FLAG_GLYPH_FLAGS_MISMATCH = 0x0040, HB_BUFFER_DIFF_FLAG_POSITION_MISMATCH = 0x0080 } hb_buffer_diff_flags_t; extern hb_buffer_diff_flags_t hb_buffer_diff (hb_buffer_t *buffer, hb_buffer_t *reference, hb_codepoint_t dottedcircle_glyph, unsigned int position_fuzz); typedef hb_bool_t (*hb_buffer_message_func_t) (hb_buffer_t *buffer, hb_font_t *font, const char *message, void *user_data); extern void hb_buffer_set_message_func (hb_buffer_t *buffer, hb_buffer_message_func_t func, void *user_data, hb_destroy_func_t destroy); typedef hb_bool_t (*hb_font_get_glyph_func_t) (hb_font_t *font, void *font_data, hb_codepoint_t unicode, hb_codepoint_t variation_selector, hb_codepoint_t *glyph, void *user_data); extern __attribute__((__deprecated__("Use '" "hb_font_funcs_set_nominal_glyph_func and hb_font_funcs_set_variation_glyph_func" "' instead"))) void hb_font_funcs_set_glyph_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_func_t func, void *user_data, hb_destroy_func_t destroy); typedef unsigned int (*hb_unicode_eastasian_width_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode, void *user_data); extern __attribute__((__deprecated__)) void hb_unicode_funcs_set_eastasian_width_func (hb_unicode_funcs_t *ufuncs, hb_unicode_eastasian_width_func_t func, void *user_data, hb_destroy_func_t destroy); extern __attribute__((__deprecated__)) unsigned int hb_unicode_eastasian_width (hb_unicode_funcs_t *ufuncs, hb_codepoint_t unicode); typedef unsigned int (*hb_unicode_decompose_compatibility_func_t) (hb_unicode_funcs_t *ufuncs, hb_codepoint_t u, hb_codepoint_t *decomposed, void *user_data); extern __attribute__((__deprecated__)) void hb_unicode_funcs_set_decompose_compatibility_func (hb_unicode_funcs_t *ufuncs, hb_unicode_decompose_compatibility_func_t func, void *user_data, hb_destroy_func_t destroy); extern __attribute__((__deprecated__)) unsigned int hb_unicode_decompose_compatibility (hb_unicode_funcs_t *ufuncs, hb_codepoint_t u, hb_codepoint_t *decomposed); typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_v_kerning_func_t; extern void hb_font_funcs_set_glyph_v_kerning_func (hb_font_funcs_t *ffuncs, hb_font_get_glyph_v_kerning_func_t func, void *user_data, hb_destroy_func_t destroy); extern hb_position_t hb_font_get_glyph_v_kerning (hb_font_t *font, hb_codepoint_t top_glyph, hb_codepoint_t bottom_glyph); typedef struct hb_map_t hb_map_t; extern hb_map_t * hb_map_create (void); extern hb_map_t * hb_map_get_empty (void); extern hb_map_t * hb_map_reference (hb_map_t *map); extern void hb_map_destroy (hb_map_t *map); extern hb_bool_t hb_map_set_user_data (hb_map_t *map, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); extern void * hb_map_get_user_data (hb_map_t *map, hb_user_data_key_t *key); extern hb_bool_t hb_map_allocation_successful (const hb_map_t *map); extern void hb_map_clear (hb_map_t *map); extern hb_bool_t hb_map_is_empty (const hb_map_t *map); extern unsigned int hb_map_get_population (const hb_map_t *map); extern void hb_map_set (hb_map_t *map, hb_codepoint_t key, hb_codepoint_t value); extern hb_codepoint_t hb_map_get (const hb_map_t *map, hb_codepoint_t key); extern void hb_map_del (hb_map_t *map, hb_codepoint_t key); extern hb_bool_t hb_map_has (const hb_map_t *map, hb_codepoint_t key); extern void hb_shape (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features); extern hb_bool_t hb_shape_full (hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features, const char * const *shaper_list); extern const char ** hb_shape_list_shapers (void); typedef struct hb_shape_plan_t hb_shape_plan_t; extern hb_shape_plan_t * hb_shape_plan_create (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const char * const *shaper_list); extern hb_shape_plan_t * hb_shape_plan_create_cached (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const char * const *shaper_list); extern hb_shape_plan_t * hb_shape_plan_create2 (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const int *coords, unsigned int num_coords, const char * const *shaper_list); extern hb_shape_plan_t * hb_shape_plan_create_cached2 (hb_face_t *face, const hb_segment_properties_t *props, const hb_feature_t *user_features, unsigned int num_user_features, const int *coords, unsigned int num_coords, const char * const *shaper_list); extern hb_shape_plan_t * hb_shape_plan_get_empty (void); extern hb_shape_plan_t * hb_shape_plan_reference (hb_shape_plan_t *shape_plan); extern void hb_shape_plan_destroy (hb_shape_plan_t *shape_plan); extern hb_bool_t hb_shape_plan_set_user_data (hb_shape_plan_t *shape_plan, hb_user_data_key_t *key, void * data, hb_destroy_func_t destroy, hb_bool_t replace); extern void * hb_shape_plan_get_user_data (hb_shape_plan_t *shape_plan, hb_user_data_key_t *key); extern hb_bool_t hb_shape_plan_execute (hb_shape_plan_t *shape_plan, hb_font_t *font, hb_buffer_t *buffer, const hb_feature_t *features, unsigned int num_features); extern const char * hb_shape_plan_get_shaper (hb_shape_plan_t *shape_plan); typedef enum { HB_STYLE_TAG_ITALIC = ((hb_tag_t)((((uint32_t)('i')&0xFF)<<24)|(((uint32_t)('t')&0xFF)<<16)|(((uint32_t)('a')&0xFF)<<8)|((uint32_t)('l')&0xFF))), HB_STYLE_TAG_OPTICAL_SIZE = ((hb_tag_t)((((uint32_t)('o')&0xFF)<<24)|(((uint32_t)('p')&0xFF)<<16)|(((uint32_t)('s')&0xFF)<<8)|((uint32_t)('z')&0xFF))), HB_STYLE_TAG_SLANT_ANGLE = ((hb_tag_t)((((uint32_t)('s')&0xFF)<<24)|(((uint32_t)('l')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_STYLE_TAG_SLANT_RATIO = ((hb_tag_t)((((uint32_t)('S')&0xFF)<<24)|(((uint32_t)('l')&0xFF)<<16)|(((uint32_t)('n')&0xFF)<<8)|((uint32_t)('t')&0xFF))), HB_STYLE_TAG_WIDTH = ((hb_tag_t)((((uint32_t)('w')&0xFF)<<24)|(((uint32_t)('d')&0xFF)<<16)|(((uint32_t)('t')&0xFF)<<8)|((uint32_t)('h')&0xFF))), HB_STYLE_TAG_WEIGHT = ((hb_tag_t)((((uint32_t)('w')&0xFF)<<24)|(((uint32_t)('g')&0xFF)<<16)|(((uint32_t)('h')&0xFF)<<8)|((uint32_t)('t')&0xFF))), _HB_STYLE_TAG_MAX_VALUE = ((hb_tag_t)((((uint32_t)(0x7f)&0xFF)<<24)|(((uint32_t)(0xff)&0xFF)<<16)|(((uint32_t)(0xff)&0xFF)<<8)|((uint32_t)(0xff)&0xFF))) } hb_style_tag_t; extern float hb_style_get_value (hb_font_t *font, hb_style_tag_t style_tag); extern void hb_version (unsigned int *major, unsigned int *minor, unsigned int *micro); extern const char * hb_version_string (void); extern hb_bool_t hb_version_atleast (unsigned int major, unsigned int minor, unsigned int micro); struct composition_it; struct face; struct glyph_string; enum font_property_index { FONT_TYPE_INDEX, FONT_FOUNDRY_INDEX, FONT_FAMILY_INDEX, FONT_ADSTYLE_INDEX, FONT_REGISTRY_INDEX, FONT_WEIGHT_INDEX, FONT_SLANT_INDEX, FONT_WIDTH_INDEX, FONT_SIZE_INDEX, FONT_DPI_INDEX, FONT_SPACING_INDEX, FONT_AVGWIDTH_INDEX, FONT_EXTRA_INDEX, FONT_SPEC_MAX, FONT_OBJLIST_INDEX = FONT_SPEC_MAX, FONT_ENTITY_MAX, FONT_NAME_INDEX = FONT_ENTITY_MAX, FONT_FULLNAME_INDEX, FONT_FILE_INDEX, FONT_OBJECT_MAX }; struct font_spec { union vectorlike_header header; Lisp_Object props[FONT_SPEC_MAX]; }; struct font_entity { union vectorlike_header header; Lisp_Object props[FONT_ENTITY_MAX]; }; struct font { union vectorlike_header header; Lisp_Object props[FONT_OBJECT_MAX]; int min_width; int max_width; int pixel_size; int height; int space_width; int average_width; int ascent, descent; int underline_thickness; int underline_position; _Bool vertical_centering; int baseline_offset; int relative_compose; int default_ascent; int encoding_charset; int repertory_charset; struct font_driver const *driver; }; enum font_spacing { FONT_SPACING_PROPORTIONAL = 0, FONT_SPACING_DUAL = 90, FONT_SPACING_MONO = 100, FONT_SPACING_CHARCELL = 110 }; struct font_metrics { short lbearing, rbearing, width, ascent, descent; }; struct font_bitmap { int bits_per_pixel; int rows; int width; int pitch; unsigned char *buffer; int left; int top; int advance; }; static inline _Bool FONTP (Lisp_Object x) { return PSEUDOVECTORP (x, PVEC_FONT); } static inline _Bool FONT_SPEC_P (Lisp_Object x) { return FONTP (x) && PVSIZE (x) == FONT_SPEC_MAX; } static inline _Bool GC_FONT_SPEC_P (Lisp_Object x) { return FONTP (x) && (gc_asize (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_SPEC_MAX; } static inline _Bool FONT_ENTITY_P (Lisp_Object x) { return FONTP (x) && PVSIZE (x) == FONT_ENTITY_MAX; } static inline _Bool GC_FONT_ENTITY_P (Lisp_Object x) { return FONTP (x) && (gc_asize (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_ENTITY_MAX; } static inline _Bool FONT_OBJECT_P (Lisp_Object x) { return FONTP (x) && PVSIZE (x) == FONT_OBJECT_MAX; } static inline _Bool GC_FONT_OBJECT_P (Lisp_Object x) { return FONTP (x) && (gc_asize (x) & PSEUDOVECTOR_SIZE_MASK) == FONT_OBJECT_MAX; } static inline void CHECK_FONT (Lisp_Object x) { CHECK_TYPE (FONTP (x), builtin_lisp_symbol (622), x); } static inline void CHECK_FONT_SPEC (Lisp_Object x) { CHECK_TYPE (FONT_SPEC_P (x), builtin_lisp_symbol (631), x); } static inline void CHECK_FONT_ENTITY (Lisp_Object x) { CHECK_TYPE (FONT_ENTITY_P (x), builtin_lisp_symbol (625), x); } static inline void CHECK_FONT_OBJECT (Lisp_Object x) { CHECK_TYPE (FONT_OBJECT_P (x), builtin_lisp_symbol (628), x); } static inline struct font_spec * XFONT_SPEC (Lisp_Object p) { ((void) ( 0 && (FONT_SPEC_P (p)))); return ((struct font_spec *) ((char *) XLP (p) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline struct font_spec * GC_XFONT_SPEC (Lisp_Object p) { ((void) ( 0 && (GC_FONT_SPEC_P (p)))); return ((struct font_spec *) ((char *) XLP (p) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline struct font_entity * XFONT_ENTITY (Lisp_Object p) { ((void) ( 0 && (FONT_ENTITY_P (p)))); return ((struct font_entity *) ((char *) XLP (p) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline struct font_entity * GC_XFONT_ENTITY (Lisp_Object p) { ((void) ( 0 && (GC_FONT_ENTITY_P (p)))); return ((struct font_entity *) ((char *) XLP (p) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline struct font * XFONT_OBJECT (Lisp_Object p) { ((void) ( 0 && (FONT_OBJECT_P (p)))); return ((struct font *) ((char *) XLP (p) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline struct font * GC_XFONT_OBJECT (Lisp_Object p) { ((void) ( 0 && (GC_FONT_OBJECT_P (p)))); return ((struct font *) ((char *) XLP (p) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline struct font * CHECK_FONT_GET_OBJECT (Lisp_Object x) { CHECK_FONT_OBJECT (x); return XFONT_OBJECT (x); } struct font_driver { Lisp_Object type; _Bool case_sensitive; Lisp_Object (*get_cache) (struct frame *f); Lisp_Object (*list) (struct frame *frame, Lisp_Object font_spec); Lisp_Object (*match) (struct frame *f, Lisp_Object font_spec); Lisp_Object (*list_family) (struct frame *f); void (*free_entity) (Lisp_Object font_entity); Lisp_Object (*open_font) (struct frame *f, Lisp_Object font_entity, int pixel_size); void (*close_font) (struct font *font); void (*prepare_face) (struct frame *f, struct face *face); void (*done_face) (struct frame *f, struct face *face); int (*has_char) (Lisp_Object font, int c); unsigned (*encode_char) (struct font *font, int c); void (*text_extents) (struct font *font, const unsigned *code, int nglyphs, struct font_metrics *metrics); int (*draw) (struct glyph_string *s, int from, int to, int x, int y, _Bool with_background); int (*get_bitmap) (struct font *font, unsigned code, struct font_bitmap *bitmap, int bits_per_pixel); void (*free_bitmap) (struct font *font, struct font_bitmap *bitmap); int (*anchor_point) (struct font *font, unsigned code, int index, int *x, int *y); Lisp_Object (*otf_capability) (struct font *font); int (*otf_drive) (struct font *font, Lisp_Object features, Lisp_Object gstring_in, int from, int to, Lisp_Object gstring_out, int idx, _Bool alternate_subst); int (*start_for_frame) (struct frame *f); int (*end_for_frame) (struct frame *f); Lisp_Object (*shape) (Lisp_Object lgstring, Lisp_Object direction); int (*check) (struct frame *f, struct font *font); int (*get_variation_glyphs) (struct font *font, int c, unsigned variations[256]); void (*filter_properties) (Lisp_Object font, Lisp_Object properties); _Bool (*cached_font_ok) (struct frame *f, Lisp_Object font_object, Lisp_Object entity); Lisp_Object (*combining_capability) (struct font *font); void (*drop_xrender_surfaces) (struct frame *f); hb_font_t *(*begin_hb_font) (struct font *font, double *position_unit); void (*end_hb_font) (struct font *font, hb_font_t *hb_font); }; struct font_driver_list { _Bool on; struct font_driver const *driver; struct font_driver_list *next; }; extern Lisp_Object copy_font_spec (Lisp_Object); extern Lisp_Object merge_font_spec (Lisp_Object, Lisp_Object); extern Lisp_Object font_make_entity (void); extern Lisp_Object font_make_object (int, Lisp_Object, int); extern Lisp_Object font_build_object (int, Lisp_Object, Lisp_Object, double); extern Lisp_Object find_font_encoding (Lisp_Object); extern int font_registry_charsets (Lisp_Object, struct charset **, struct charset **); extern int font_style_to_value (enum font_property_index prop, Lisp_Object name, _Bool noerror); extern Lisp_Object font_style_symbolic (Lisp_Object font, enum font_property_index prop, _Bool for_face); extern _Bool font_match_p (Lisp_Object spec, Lisp_Object font); extern _Bool font_is_ignored (const char *name, ptrdiff_t namelen); extern Lisp_Object font_list_entities (struct frame *, Lisp_Object); extern Lisp_Object font_get_name (Lisp_Object font_object); extern Lisp_Object font_spec_from_name (Lisp_Object font_name); extern Lisp_Object font_get_frame (Lisp_Object font_object); extern int font_has_char (struct frame *, Lisp_Object, int); extern void font_clear_prop (Lisp_Object *attrs, enum font_property_index prop); extern Lisp_Object font_find_for_lface (struct frame *f, Lisp_Object *lface, Lisp_Object spec, int c); extern Lisp_Object font_open_for_lface (struct frame *f, Lisp_Object entity, Lisp_Object *lface, Lisp_Object spec); extern Lisp_Object font_load_for_lface (struct frame *f, Lisp_Object *lface, Lisp_Object spec); extern void font_prepare_for_face (struct frame *f, struct face *face); extern void font_done_for_face (struct frame *f, struct face *face); extern void clear_font_cache (struct frame *); extern Lisp_Object font_open_by_spec (struct frame *f, Lisp_Object spec); extern Lisp_Object font_open_by_name (struct frame *f, Lisp_Object name); extern Lisp_Object font_intern_prop (const char *str, ptrdiff_t len, _Bool force_symbol); extern void font_update_sort_order (int *order); extern void font_parse_family_registry (Lisp_Object family, Lisp_Object registry, Lisp_Object spec); extern int font_parse_xlfd (char *name, ptrdiff_t len, Lisp_Object font); extern ptrdiff_t font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int bytes); extern void register_font_driver (struct font_driver const *, struct frame *); extern void free_font_driver_list (struct frame *f); static inline _Bool valid_font_driver (struct font_driver const *d) { return 1 ; } extern Lisp_Object font_update_drivers (struct frame *f, Lisp_Object list); extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t, ptrdiff_t *, struct window *, struct face *, Lisp_Object, int); extern void font_fill_lglyph_metrics (Lisp_Object, struct font *, unsigned int); extern Lisp_Object font_put_extra (Lisp_Object font, Lisp_Object prop, Lisp_Object val); extern Lisp_Object hbfont_otf_capability (struct font *); extern Lisp_Object hbfont_shape (Lisp_Object, Lisp_Object); extern Lisp_Object hbfont_combining_capability (struct font *); extern void font_put_frame_data (struct frame *, Lisp_Object, void *); extern void *font_get_frame_data (struct frame *f, Lisp_Object); extern void font_filter_properties (Lisp_Object font, Lisp_Object alist, const char *const boolean_properties[], const char *const non_boolean_properties[]); extern void font_drop_xrender_surfaces (struct frame *f); extern int ftfont_anchor_point (struct font *, unsigned int, int, int *, int *); extern int ftfont_get_bitmap (struct font *, unsigned int, struct font_bitmap *, int); extern int ftfont_has_char (Lisp_Object, int); extern int ftfont_variation_glyphs (struct font *, int, unsigned[256]); extern Lisp_Object ftfont_combining_capability (struct font *); extern Lisp_Object ftfont_get_cache (struct frame *); extern Lisp_Object ftfont_list2 (struct frame *, Lisp_Object, Lisp_Object); extern Lisp_Object ftfont_list_family (struct frame *); extern Lisp_Object ftfont_match2 (struct frame *, Lisp_Object, Lisp_Object); extern Lisp_Object ftfont_open (struct frame *, Lisp_Object, int); extern Lisp_Object ftfont_otf_capability (struct font *); extern Lisp_Object ftfont_shape (Lisp_Object, Lisp_Object); extern unsigned ftfont_encode_char (struct font *, int); extern void ftfont_close (struct font *); extern void ftfont_filter_properties (Lisp_Object, Lisp_Object); extern void ftfont_text_extents (struct font *, const unsigned *, int, struct font_metrics *); extern hb_font_t *fthbfont_begin_hb_font (struct font *, double *); extern void syms_of_ftfont (void); extern struct font_driver const xfont_driver; extern Lisp_Object xfont_get_cache (struct frame *); extern void syms_of_xfont (void); extern void syms_of_xftfont (void); extern struct font_driver const ftcrfont_driver; extern struct font_driver ftcrhbfont_driver; extern void syms_of_ftcrfont (void); extern void font_add_log (const char *, Lisp_Object, Lisp_Object); extern void font_deferred_log (const char *, Lisp_Object, Lisp_Object); static inline _Bool font_data_structures_may_be_ill_formed (void) { return gc_in_progress; } typedef unsigned long XID; typedef unsigned long Mask; typedef unsigned long Atom; typedef unsigned long VisualID; typedef unsigned long Time; typedef XID Window; typedef XID Drawable; typedef XID Font; typedef XID Pixmap; typedef XID Cursor; typedef XID Colormap; typedef XID GContext; typedef XID KeySym; typedef unsigned char KeyCode; extern int _Xmblen( char *str, int len ); typedef char *XPointer; typedef struct _XExtData { int number; struct _XExtData *next; int (*free_private)( struct _XExtData *extension ); XPointer private_data; } XExtData; typedef struct { int extension; int major_opcode; int first_event; int first_error; } XExtCodes; typedef struct { int depth; int bits_per_pixel; int scanline_pad; } XPixmapFormatValues; typedef struct { int function; unsigned long plane_mask; unsigned long foreground; unsigned long background; int line_width; int line_style; int cap_style; int join_style; int fill_style; int fill_rule; int arc_mode; Pixmap tile; Pixmap stipple; int ts_x_origin; int ts_y_origin; Font font; int subwindow_mode; int graphics_exposures; int clip_x_origin; int clip_y_origin; Pixmap clip_mask; int dash_offset; char dashes; } XGCValues; typedef struct _XGC *GC; typedef struct { XExtData *ext_data; VisualID visualid; int class; unsigned long red_mask, green_mask, blue_mask; int bits_per_rgb; int map_entries; } Visual; typedef struct { int depth; int nvisuals; Visual *visuals; } Depth; struct _XDisplay; typedef struct { XExtData *ext_data; struct _XDisplay *display; Window root; int width, height; int mwidth, mheight; int ndepths; Depth *depths; int root_depth; Visual *root_visual; GC default_gc; Colormap cmap; unsigned long white_pixel; unsigned long black_pixel; int max_maps, min_maps; int backing_store; int save_unders; long root_input_mask; } Screen; typedef struct { XExtData *ext_data; int depth; int bits_per_pixel; int scanline_pad; } ScreenFormat; typedef struct { Pixmap background_pixmap; unsigned long background_pixel; Pixmap border_pixmap; unsigned long border_pixel; int bit_gravity; int win_gravity; int backing_store; unsigned long backing_planes; unsigned long backing_pixel; int save_under; long event_mask; long do_not_propagate_mask; int override_redirect; Colormap colormap; Cursor cursor; } XSetWindowAttributes; typedef struct { int x, y; int width, height; int border_width; int depth; Visual *visual; Window root; int class; int bit_gravity; int win_gravity; int backing_store; unsigned long backing_planes; unsigned long backing_pixel; int save_under; Colormap colormap; int map_installed; int map_state; long all_event_masks; long your_event_mask; long do_not_propagate_mask; int override_redirect; Screen *screen; } XWindowAttributes; typedef struct { int family; int length; char *address; } XHostAddress; typedef struct { int typelength; int valuelength; char *type; char *value; } XServerInterpretedAddress; typedef struct _XImage { int width, height; int xoffset; int format; char *data; int byte_order; int bitmap_unit; int bitmap_bit_order; int bitmap_pad; int depth; int bytes_per_line; int bits_per_pixel; unsigned long red_mask; unsigned long green_mask; unsigned long blue_mask; XPointer obdata; struct funcs { struct _XImage *(*create_image)( struct _XDisplay* , Visual* , unsigned int , int , int , char* , unsigned int , unsigned int , int , int ); int (*destroy_image) (struct _XImage *); unsigned long (*get_pixel) (struct _XImage *, int, int); int (*put_pixel) (struct _XImage *, int, int, unsigned long); struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int); int (*add_pixel) (struct _XImage *, long); } f; } XImage; typedef struct { int x, y; int width, height; int border_width; Window sibling; int stack_mode; } XWindowChanges; typedef struct { unsigned long pixel; unsigned short red, green, blue; char flags; char pad; } XColor; typedef struct { short x1, y1, x2, y2; } XSegment; typedef struct { short x, y; } XPoint; typedef struct { short x, y; unsigned short width, height; } XRectangle; typedef struct { short x, y; unsigned short width, height; short angle1, angle2; } XArc; typedef struct { int key_click_percent; int bell_percent; int bell_pitch; int bell_duration; int led; int led_mode; int key; int auto_repeat_mode; } XKeyboardControl; typedef struct { int key_click_percent; int bell_percent; unsigned int bell_pitch, bell_duration; unsigned long led_mask; int global_auto_repeat; char auto_repeats[32]; } XKeyboardState; typedef struct { Time time; short x, y; } XTimeCoord; typedef struct { int max_keypermod; KeyCode *modifiermap; } XModifierKeymap; typedef struct _XDisplay Display; struct _XPrivate; struct _XrmHashBucketRec; typedef struct { XExtData *ext_data; struct _XPrivate *private1; int fd; int private2; int proto_major_version; int proto_minor_version; char *vendor; XID private3; XID private4; XID private5; int private6; XID (*resource_alloc)( struct _XDisplay* ); int byte_order; int bitmap_unit; int bitmap_pad; int bitmap_bit_order; int nformats; ScreenFormat *pixmap_format; int private8; int release; struct _XPrivate *private9, *private10; int qlen; unsigned long last_request_read; unsigned long request; XPointer private11; XPointer private12; XPointer private13; XPointer private14; unsigned max_request_size; struct _XrmHashBucketRec *db; int (*private15)( struct _XDisplay* ); char *display_name; int default_screen; int nscreens; Screen *screens; unsigned long motion_buffer; unsigned long private16; int min_keycode; int max_keycode; XPointer private17; XPointer private18; int private19; char *xdefaults; } *_XPrivDisplay; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; Window root; Window subwindow; Time time; int x, y; int x_root, y_root; unsigned int state; unsigned int keycode; int same_screen; } XKeyEvent; typedef XKeyEvent XKeyPressedEvent; typedef XKeyEvent XKeyReleasedEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; Window root; Window subwindow; Time time; int x, y; int x_root, y_root; unsigned int state; unsigned int button; int same_screen; } XButtonEvent; typedef XButtonEvent XButtonPressedEvent; typedef XButtonEvent XButtonReleasedEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; Window root; Window subwindow; Time time; int x, y; int x_root, y_root; unsigned int state; char is_hint; int same_screen; } XMotionEvent; typedef XMotionEvent XPointerMovedEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; Window root; Window subwindow; Time time; int x, y; int x_root, y_root; int mode; int detail; int same_screen; int focus; unsigned int state; } XCrossingEvent; typedef XCrossingEvent XEnterWindowEvent; typedef XCrossingEvent XLeaveWindowEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; int mode; int detail; } XFocusChangeEvent; typedef XFocusChangeEvent XFocusInEvent; typedef XFocusChangeEvent XFocusOutEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; char key_vector[32]; } XKeymapEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; int x, y; int width, height; int count; } XExposeEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Drawable drawable; int x, y; int width, height; int count; int major_code; int minor_code; } XGraphicsExposeEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Drawable drawable; int major_code; int minor_code; } XNoExposeEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; int state; } XVisibilityEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window parent; Window window; int x, y; int width, height; int border_width; int override_redirect; } XCreateWindowEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window event; Window window; } XDestroyWindowEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window event; Window window; int from_configure; } XUnmapEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window event; Window window; int override_redirect; } XMapEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window parent; Window window; } XMapRequestEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window event; Window window; Window parent; int x, y; int override_redirect; } XReparentEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window event; Window window; int x, y; int width, height; int border_width; Window above; int override_redirect; } XConfigureEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window event; Window window; int x, y; } XGravityEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; int width, height; } XResizeRequestEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window parent; Window window; int x, y; int width, height; int border_width; Window above; int detail; unsigned long value_mask; } XConfigureRequestEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window event; Window window; int place; } XCirculateEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window parent; Window window; int place; } XCirculateRequestEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; Atom atom; Time time; int state; } XPropertyEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; Atom selection; Time time; } XSelectionClearEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window owner; Window requestor; Atom selection; Atom target; Atom property; Time time; } XSelectionRequestEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window requestor; Atom selection; Atom target; Atom property; Time time; } XSelectionEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; Colormap colormap; int new; int state; } XColormapEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; Atom message_type; int format; union { char b[20]; short s[10]; long l[5]; } data; } XClientMessageEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; int request; int first_keycode; int count; } XMappingEvent; typedef struct { int type; Display *display; XID resourceid; unsigned long serial; unsigned char error_code; unsigned char request_code; unsigned char minor_code; } XErrorEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; Window window; } XAnyEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; int extension; int evtype; } XGenericEvent; typedef struct { int type; unsigned long serial; int send_event; Display *display; int extension; int evtype; unsigned int cookie; void *data; } XGenericEventCookie; typedef union _XEvent { int type; XAnyEvent xany; XKeyEvent xkey; XButtonEvent xbutton; XMotionEvent xmotion; XCrossingEvent xcrossing; XFocusChangeEvent xfocus; XExposeEvent xexpose; XGraphicsExposeEvent xgraphicsexpose; XNoExposeEvent xnoexpose; XVisibilityEvent xvisibility; XCreateWindowEvent xcreatewindow; XDestroyWindowEvent xdestroywindow; XUnmapEvent xunmap; XMapEvent xmap; XMapRequestEvent xmaprequest; XReparentEvent xreparent; XConfigureEvent xconfigure; XGravityEvent xgravity; XResizeRequestEvent xresizerequest; XConfigureRequestEvent xconfigurerequest; XCirculateEvent xcirculate; XCirculateRequestEvent xcirculaterequest; XPropertyEvent xproperty; XSelectionClearEvent xselectionclear; XSelectionRequestEvent xselectionrequest; XSelectionEvent xselection; XColormapEvent xcolormap; XClientMessageEvent xclient; XMappingEvent xmapping; XErrorEvent xerror; XKeymapEvent xkeymap; XGenericEvent xgeneric; XGenericEventCookie xcookie; long pad[24]; } XEvent; typedef struct { short lbearing; short rbearing; short width; short ascent; short descent; unsigned short attributes; } XCharStruct; typedef struct { Atom name; unsigned long card32; } XFontProp; typedef struct { XExtData *ext_data; Font fid; unsigned direction; unsigned min_char_or_byte2; unsigned max_char_or_byte2; unsigned min_byte1; unsigned max_byte1; int all_chars_exist; unsigned default_char; int n_properties; XFontProp *properties; XCharStruct min_bounds; XCharStruct max_bounds; XCharStruct *per_char; int ascent; int descent; } XFontStruct; typedef struct { char *chars; int nchars; int delta; Font font; } XTextItem; typedef struct { unsigned char byte1; unsigned char byte2; } XChar2b; typedef struct { XChar2b *chars; int nchars; int delta; Font font; } XTextItem16; typedef union { Display *display; GC gc; Visual *visual; Screen *screen; ScreenFormat *pixmap_format; XFontStruct *font; } XEDataObject; typedef struct { XRectangle max_ink_extent; XRectangle max_logical_extent; } XFontSetExtents; typedef struct _XOM *XOM; typedef struct _XOC *XOC, *XFontSet; typedef struct { char *chars; int nchars; int delta; XFontSet font_set; } XmbTextItem; typedef struct { wchar_t *chars; int nchars; int delta; XFontSet font_set; } XwcTextItem; typedef struct { int charset_count; char **charset_list; } XOMCharSetList; typedef enum { XOMOrientation_LTR_TTB, XOMOrientation_RTL_TTB, XOMOrientation_TTB_LTR, XOMOrientation_TTB_RTL, XOMOrientation_Context } XOrientation; typedef struct { int num_orientation; XOrientation *orientation; } XOMOrientation; typedef struct { int num_font; XFontStruct **font_struct_list; char **font_name_list; } XOMFontInfo; typedef struct _XIM *XIM; typedef struct _XIC *XIC; typedef void (*XIMProc)( XIM, XPointer, XPointer ); typedef int (*XICProc)( XIC, XPointer, XPointer ); typedef void (*XIDProc)( Display*, XPointer, XPointer ); typedef unsigned long XIMStyle; typedef struct { unsigned short count_styles; XIMStyle *supported_styles; } XIMStyles; typedef void *XVaNestedList; typedef struct { XPointer client_data; XIMProc callback; } XIMCallback; typedef struct { XPointer client_data; XICProc callback; } XICCallback; typedef unsigned long XIMFeedback; typedef struct _XIMText { unsigned short length; XIMFeedback *feedback; int encoding_is_wchar; union { char *multi_byte; wchar_t *wide_char; } string; } XIMText; typedef unsigned long XIMPreeditState; typedef struct _XIMPreeditStateNotifyCallbackStruct { XIMPreeditState state; } XIMPreeditStateNotifyCallbackStruct; typedef unsigned long XIMResetState; typedef unsigned long XIMStringConversionFeedback; typedef struct _XIMStringConversionText { unsigned short length; XIMStringConversionFeedback *feedback; int encoding_is_wchar; union { char *mbs; wchar_t *wcs; } string; } XIMStringConversionText; typedef unsigned short XIMStringConversionPosition; typedef unsigned short XIMStringConversionType; typedef unsigned short XIMStringConversionOperation; typedef enum { XIMForwardChar, XIMBackwardChar, XIMForwardWord, XIMBackwardWord, XIMCaretUp, XIMCaretDown, XIMNextLine, XIMPreviousLine, XIMLineStart, XIMLineEnd, XIMAbsolutePosition, XIMDontChange } XIMCaretDirection; typedef struct _XIMStringConversionCallbackStruct { XIMStringConversionPosition position; XIMCaretDirection direction; XIMStringConversionOperation operation; unsigned short factor; XIMStringConversionText *text; } XIMStringConversionCallbackStruct; typedef struct _XIMPreeditDrawCallbackStruct { int caret; int chg_first; int chg_length; XIMText *text; } XIMPreeditDrawCallbackStruct; typedef enum { XIMIsInvisible, XIMIsPrimary, XIMIsSecondary } XIMCaretStyle; typedef struct _XIMPreeditCaretCallbackStruct { int position; XIMCaretDirection direction; XIMCaretStyle style; } XIMPreeditCaretCallbackStruct; typedef enum { XIMTextType, XIMBitmapType } XIMStatusDataType; typedef struct _XIMStatusDrawCallbackStruct { XIMStatusDataType type; union { XIMText *text; Pixmap bitmap; } data; } XIMStatusDrawCallbackStruct; typedef struct _XIMHotKeyTrigger { KeySym keysym; int modifier; int modifier_mask; } XIMHotKeyTrigger; typedef struct _XIMHotKeyTriggers { int num_hot_key; XIMHotKeyTrigger *key; } XIMHotKeyTriggers; typedef unsigned long XIMHotKeyState; typedef struct { unsigned short count_values; char **supported_values; } XIMValuesList; extern int _Xdebug; extern XFontStruct *XLoadQueryFont( Display* , const char* ); extern XFontStruct *XQueryFont( Display* , XID ); extern XTimeCoord *XGetMotionEvents( Display* , Window , Time , Time , int* ); extern XModifierKeymap *XDeleteModifiermapEntry( XModifierKeymap* , KeyCode , int ); extern XModifierKeymap *XGetModifierMapping( Display* ); extern XModifierKeymap *XInsertModifiermapEntry( XModifierKeymap* , KeyCode , int ); extern XModifierKeymap *XNewModifiermap( int ); extern XImage *XCreateImage( Display* , Visual* , unsigned int , int , int , char* , unsigned int , unsigned int , int , int ); extern int XInitImage( XImage* ); extern XImage *XGetImage( Display* , Drawable , int , int , unsigned int , unsigned int , unsigned long , int ); extern XImage *XGetSubImage( Display* , Drawable , int , int , unsigned int , unsigned int , unsigned long , int , XImage* , int , int ); extern Display *XOpenDisplay( const char* ); extern void XrmInitialize( void ); extern char *XFetchBytes( Display* , int* ); extern char *XFetchBuffer( Display* , int* , int ); extern char *XGetAtomName( Display* , Atom ); extern int XGetAtomNames( Display* , Atom* , int , char** ); extern char *XGetDefault( Display* , const char* , const char* ); extern char *XDisplayName( const char* ); extern char *XKeysymToString( KeySym ); extern int (*XSynchronize( Display* , int ))( Display* ); extern int (*XSetAfterFunction( Display* , int (*) ( Display* ) ))( Display* ); extern Atom XInternAtom( Display* , const char* , int ); extern int XInternAtoms( Display* , char** , int , int , Atom* ); extern Colormap XCopyColormapAndFree( Display* , Colormap ); extern Colormap XCreateColormap( Display* , Window , Visual* , int ); extern Cursor XCreatePixmapCursor( Display* , Pixmap , Pixmap , XColor* , XColor* , unsigned int , unsigned int ); extern Cursor XCreateGlyphCursor( Display* , Font , Font , unsigned int , unsigned int , XColor const * , XColor const * ); extern Cursor XCreateFontCursor( Display* , unsigned int ); extern Font XLoadFont( Display* , const char* ); extern GC XCreateGC( Display* , Drawable , unsigned long , XGCValues* ); extern GContext XGContextFromGC( GC ); extern void XFlushGC( Display* , GC ); extern Pixmap XCreatePixmap( Display* , Drawable , unsigned int , unsigned int , unsigned int ); extern Pixmap XCreateBitmapFromData( Display* , Drawable , const char* , unsigned int , unsigned int ); extern Pixmap XCreatePixmapFromBitmapData( Display* , Drawable , char* , unsigned int , unsigned int , unsigned long , unsigned long , unsigned int ); extern Window XCreateSimpleWindow( Display* , Window , int , int , unsigned int , unsigned int , unsigned int , unsigned long , unsigned long ); extern Window XGetSelectionOwner( Display* , Atom ); extern Window XCreateWindow( Display* , Window , int , int , unsigned int , unsigned int , unsigned int , int , unsigned int , Visual* , unsigned long , XSetWindowAttributes* ); extern Colormap *XListInstalledColormaps( Display* , Window , int* ); extern char **XListFonts( Display* , const char* , int , int* ); extern char **XListFontsWithInfo( Display* , const char* , int , int* , XFontStruct** ); extern char **XGetFontPath( Display* , int* ); extern char **XListExtensions( Display* , int* ); extern Atom *XListProperties( Display* , Window , int* ); extern XHostAddress *XListHosts( Display* , int* , int* ); __attribute__((deprecated)) extern KeySym XKeycodeToKeysym( Display* , KeyCode , int ); extern KeySym XLookupKeysym( XKeyEvent* , int ); extern KeySym *XGetKeyboardMapping( Display* , KeyCode , int , int* ); extern KeySym XStringToKeysym( const char* ); extern long XMaxRequestSize( Display* ); extern long XExtendedMaxRequestSize( Display* ); extern char *XResourceManagerString( Display* ); extern char *XScreenResourceString( Screen* ); extern unsigned long XDisplayMotionBufferSize( Display* ); extern VisualID XVisualIDFromVisual( Visual* ); extern int XInitThreads( void ); extern void XLockDisplay( Display* ); extern void XUnlockDisplay( Display* ); extern XExtCodes *XInitExtension( Display* , const char* ); extern XExtCodes *XAddExtension( Display* ); extern XExtData *XFindOnExtensionList( XExtData** , int ); extern XExtData **XEHeadOfExtensionList( XEDataObject ); extern Window XRootWindow( Display* , int ); extern Window XDefaultRootWindow( Display* ); extern Window XRootWindowOfScreen( Screen* ); extern Visual *XDefaultVisual( Display* , int ); extern Visual *XDefaultVisualOfScreen( Screen* ); extern GC XDefaultGC( Display* , int ); extern GC XDefaultGCOfScreen( Screen* ); extern unsigned long XBlackPixel( Display* , int ); extern unsigned long XWhitePixel( Display* , int ); extern unsigned long XAllPlanes( void ); extern unsigned long XBlackPixelOfScreen( Screen* ); extern unsigned long XWhitePixelOfScreen( Screen* ); extern unsigned long XNextRequest( Display* ); extern unsigned long XLastKnownRequestProcessed( Display* ); extern char *XServerVendor( Display* ); extern char *XDisplayString( Display* ); extern Colormap XDefaultColormap( Display* , int ); extern Colormap XDefaultColormapOfScreen( Screen* ); extern Display *XDisplayOfScreen( Screen* ); extern Screen *XScreenOfDisplay( Display* , int ); extern Screen *XDefaultScreenOfDisplay( Display* ); extern long XEventMaskOfScreen( Screen* ); extern int XScreenNumberOfScreen( Screen* ); typedef int (*XErrorHandler) ( Display* , XErrorEvent* ); extern XErrorHandler XSetErrorHandler ( XErrorHandler ); typedef int (*XIOErrorHandler) ( Display* ); extern XIOErrorHandler XSetIOErrorHandler ( XIOErrorHandler ); typedef void (*XIOErrorExitHandler) ( Display*, void* ); extern void XSetIOErrorExitHandler ( Display*, XIOErrorExitHandler, void* ); extern XPixmapFormatValues *XListPixmapFormats( Display* , int* ); extern int *XListDepths( Display* , int , int* ); extern int XReconfigureWMWindow( Display* , Window , int , unsigned int , XWindowChanges* ); extern int XGetWMProtocols( Display* , Window , Atom** , int* ); extern int XSetWMProtocols( Display* , Window , Atom* , int ); extern int XIconifyWindow( Display* , Window , int ); extern int XWithdrawWindow( Display* , Window , int ); extern int XGetCommand( Display* , Window , char*** , int* ); extern int XGetWMColormapWindows( Display* , Window , Window** , int* ); extern int XSetWMColormapWindows( Display* , Window , Window* , int ); extern void XFreeStringList( char** ); extern int XSetTransientForHint( Display* , Window , Window ); extern int XActivateScreenSaver( Display* ); extern int XAddHost( Display* , XHostAddress* ); extern int XAddHosts( Display* , XHostAddress* , int ); extern int XAddToExtensionList( struct _XExtData** , XExtData* ); extern int XAddToSaveSet( Display* , Window ); extern int XAllocColor( Display* , Colormap , XColor* ); extern int XAllocColorCells( Display* , Colormap , int , unsigned long* , unsigned int , unsigned long* , unsigned int ); extern int XAllocColorPlanes( Display* , Colormap , int , unsigned long* , int , int , int , int , unsigned long* , unsigned long* , unsigned long* ); extern int XAllocNamedColor( Display* , Colormap , const char* , XColor* , XColor* ); extern int XAllowEvents( Display* , int , Time ); extern int XAutoRepeatOff( Display* ); extern int XAutoRepeatOn( Display* ); extern int XBell( Display* , int ); extern int XBitmapBitOrder( Display* ); extern int XBitmapPad( Display* ); extern int XBitmapUnit( Display* ); extern int XCellsOfScreen( Screen* ); extern int XChangeActivePointerGrab( Display* , unsigned int , Cursor , Time ); extern int XChangeGC( Display* , GC , unsigned long , XGCValues* ); extern int XChangeKeyboardControl( Display* , unsigned long , XKeyboardControl* ); extern int XChangeKeyboardMapping( Display* , int , int , KeySym* , int ); extern int XChangePointerControl( Display* , int , int , int , int , int ); extern int XChangeProperty( Display* , Window , Atom , Atom , int , int , const unsigned char* , int ); extern int XChangeSaveSet( Display* , Window , int ); extern int XChangeWindowAttributes( Display* , Window , unsigned long , XSetWindowAttributes* ); extern int XCheckIfEvent( Display* , XEvent* , int (*) ( Display* , XEvent* , XPointer ) , XPointer ); extern int XCheckMaskEvent( Display* , long , XEvent* ); extern int XCheckTypedEvent( Display* , int , XEvent* ); extern int XCheckTypedWindowEvent( Display* , Window , int , XEvent* ); extern int XCheckWindowEvent( Display* , Window , long , XEvent* ); extern int XCirculateSubwindows( Display* , Window , int ); extern int XCirculateSubwindowsDown( Display* , Window ); extern int XCirculateSubwindowsUp( Display* , Window ); extern int XClearArea( Display* , Window , int , int , unsigned int , unsigned int , int ); extern int XClearWindow( Display* , Window ); extern int XCloseDisplay( Display* ); extern int XConfigureWindow( Display* , Window , unsigned int , XWindowChanges* ); extern int XConnectionNumber( Display* ); extern int XConvertSelection( Display* , Atom , Atom , Atom , Window , Time ); extern int XCopyArea( Display* , Drawable , Drawable , GC , int , int , unsigned int , unsigned int , int , int ); extern int XCopyGC( Display* , GC , unsigned long , GC ); extern int XCopyPlane( Display* , Drawable , Drawable , GC , int , int , unsigned int , unsigned int , int , int , unsigned long ); extern int XDefaultDepth( Display* , int ); extern int XDefaultDepthOfScreen( Screen* ); extern int XDefaultScreen( Display* ); extern int XDefineCursor( Display* , Window , Cursor ); extern int XDeleteProperty( Display* , Window , Atom ); extern int XDestroyWindow( Display* , Window ); extern int XDestroySubwindows( Display* , Window ); extern int XDoesBackingStore( Screen* ); extern int XDoesSaveUnders( Screen* ); extern int XDisableAccessControl( Display* ); extern int XDisplayCells( Display* , int ); extern int XDisplayHeight( Display* , int ); extern int XDisplayHeightMM( Display* , int ); extern int XDisplayKeycodes( Display* , int* , int* ); extern int XDisplayPlanes( Display* , int ); extern int XDisplayWidth( Display* , int ); extern int XDisplayWidthMM( Display* , int ); extern int XDrawArc( Display* , Drawable , GC , int , int , unsigned int , unsigned int , int , int ); extern int XDrawArcs( Display* , Drawable , GC , XArc* , int ); extern int XDrawImageString( Display* , Drawable , GC , int , int , const char* , int ); extern int XDrawImageString16( Display* , Drawable , GC , int , int , const XChar2b* , int ); extern int XDrawLine( Display* , Drawable , GC , int , int , int , int ); extern int XDrawLines( Display* , Drawable , GC , XPoint* , int , int ); extern int XDrawPoint( Display* , Drawable , GC , int , int ); extern int XDrawPoints( Display* , Drawable , GC , XPoint* , int , int ); extern int XDrawRectangle( Display* , Drawable , GC , int , int , unsigned int , unsigned int ); extern int XDrawRectangles( Display* , Drawable , GC , XRectangle* , int ); extern int XDrawSegments( Display* , Drawable , GC , XSegment* , int ); extern int XDrawString( Display* , Drawable , GC , int , int , const char* , int ); extern int XDrawString16( Display* , Drawable , GC , int , int , const XChar2b* , int ); extern int XDrawText( Display* , Drawable , GC , int , int , XTextItem* , int ); extern int XDrawText16( Display* , Drawable , GC , int , int , XTextItem16* , int ); extern int XEnableAccessControl( Display* ); extern int XEventsQueued( Display* , int ); extern int XFetchName( Display* , Window , char** ); extern int XFillArc( Display* , Drawable , GC , int , int , unsigned int , unsigned int , int , int ); extern int XFillArcs( Display* , Drawable , GC , XArc* , int ); extern int XFillPolygon( Display* , Drawable , GC , XPoint* , int , int , int ); extern int XFillRectangle( Display* , Drawable , GC , int , int , unsigned int , unsigned int ); extern int XFillRectangles( Display* , Drawable , GC , XRectangle* , int ); extern int XFlush( Display* ); extern int XForceScreenSaver( Display* , int ); extern int XFree( void* ); extern int XFreeColormap( Display* , Colormap ); extern int XFreeColors( Display* , Colormap , unsigned long* , int , unsigned long ); extern int XFreeCursor( Display* , Cursor ); extern int XFreeExtensionList( char** ); extern int XFreeFont( Display* , XFontStruct* ); extern int XFreeFontInfo( char** , XFontStruct* , int ); extern int XFreeFontNames( char** ); extern int XFreeFontPath( char** ); extern int XFreeGC( Display* , GC ); extern int XFreeModifiermap( XModifierKeymap* ); extern int XFreePixmap( Display* , Pixmap ); extern int XGeometry( Display* , int , const char* , const char* , unsigned int , unsigned int , unsigned int , int , int , int* , int* , int* , int* ); extern int XGetErrorDatabaseText( Display* , const char* , const char* , const char* , char* , int ); extern int XGetErrorText( Display* , int , char* , int ); extern int XGetFontProperty( XFontStruct* , Atom , unsigned long* ); extern int XGetGCValues( Display* , GC , unsigned long , XGCValues* ); extern int XGetGeometry( Display* , Drawable , Window* , int* , int* , unsigned int* , unsigned int* , unsigned int* , unsigned int* ); extern int XGetIconName( Display* , Window , char** ); extern int XGetInputFocus( Display* , Window* , int* ); extern int XGetKeyboardControl( Display* , XKeyboardState* ); extern int XGetPointerControl( Display* , int* , int* , int* ); extern int XGetPointerMapping( Display* , unsigned char* , int ); extern int XGetScreenSaver( Display* , int* , int* , int* , int* ); extern int XGetTransientForHint( Display* , Window , Window* ); extern int XGetWindowProperty( Display* , Window , Atom , long , long , int , Atom , Atom* , int* , unsigned long* , unsigned long* , unsigned char** ); extern int XGetWindowAttributes( Display* , Window , XWindowAttributes* ); extern int XGrabButton( Display* , unsigned int , unsigned int , Window , int , unsigned int , int , int , Window , Cursor ); extern int XGrabKey( Display* , int , unsigned int , Window , int , int , int ); extern int XGrabKeyboard( Display* , Window , int , int , int , Time ); extern int XGrabPointer( Display* , Window , int , unsigned int , int , int , Window , Cursor , Time ); extern int XGrabServer( Display* ); extern int XHeightMMOfScreen( Screen* ); extern int XHeightOfScreen( Screen* ); extern int XIfEvent( Display* , XEvent* , int (*) ( Display* , XEvent* , XPointer ) , XPointer ); extern int XImageByteOrder( Display* ); extern int XInstallColormap( Display* , Colormap ); extern KeyCode XKeysymToKeycode( Display* , KeySym ); extern int XKillClient( Display* , XID ); extern int XLookupColor( Display* , Colormap , const char* , XColor* , XColor* ); extern int XLowerWindow( Display* , Window ); extern int XMapRaised( Display* , Window ); extern int XMapSubwindows( Display* , Window ); extern int XMapWindow( Display* , Window ); extern int XMaskEvent( Display* , long , XEvent* ); extern int XMaxCmapsOfScreen( Screen* ); extern int XMinCmapsOfScreen( Screen* ); extern int XMoveResizeWindow( Display* , Window , int , int , unsigned int , unsigned int ); extern int XMoveWindow( Display* , Window , int , int ); extern int XNextEvent( Display* , XEvent* ); extern int XNoOp( Display* ); extern int XParseColor( Display* , Colormap , const char* , XColor* ); extern int XParseGeometry( const char* , int* , int* , unsigned int* , unsigned int* ); extern int XPeekEvent( Display* , XEvent* ); extern int XPeekIfEvent( Display* , XEvent* , int (*) ( Display* , XEvent* , XPointer ) , XPointer ); extern int XPending( Display* ); extern int XPlanesOfScreen( Screen* ); extern int XProtocolRevision( Display* ); extern int XProtocolVersion( Display* ); extern int XPutBackEvent( Display* , XEvent* ); extern int XPutImage( Display* , Drawable , GC , XImage* , int , int , int , int , unsigned int , unsigned int ); extern int XQLength( Display* ); extern int XQueryBestCursor( Display* , Drawable , unsigned int , unsigned int , unsigned int* , unsigned int* ); extern int XQueryBestSize( Display* , int , Drawable , unsigned int , unsigned int , unsigned int* , unsigned int* ); extern int XQueryBestStipple( Display* , Drawable , unsigned int , unsigned int , unsigned int* , unsigned int* ); extern int XQueryBestTile( Display* , Drawable , unsigned int , unsigned int , unsigned int* , unsigned int* ); extern int XQueryColor( Display* , Colormap , XColor* ); extern int XQueryColors( Display* , Colormap , XColor* , int ); extern int XQueryExtension( Display* , const char* , int* , int* , int* ); extern int XQueryKeymap( Display* , char [32] ); extern int XQueryPointer( Display* , Window , Window* , Window* , int* , int* , int* , int* , unsigned int* ); extern int XQueryTextExtents( Display* , XID , const char* , int , int* , int* , int* , XCharStruct* ); extern int XQueryTextExtents16( Display* , XID , const XChar2b* , int , int* , int* , int* , XCharStruct* ); extern int XQueryTree( Display* , Window , Window* , Window* , Window** , unsigned int* ); extern int XRaiseWindow( Display* , Window ); extern int XReadBitmapFile( Display* , Drawable , const char* , unsigned int* , unsigned int* , Pixmap* , int* , int* ); extern int XReadBitmapFileData( const char* , unsigned int* , unsigned int* , unsigned char** , int* , int* ); extern int XRebindKeysym( Display* , KeySym , KeySym* , int , const unsigned char* , int ); extern int XRecolorCursor( Display* , Cursor , XColor* , XColor* ); extern int XRefreshKeyboardMapping( XMappingEvent* ); extern int XRemoveFromSaveSet( Display* , Window ); extern int XRemoveHost( Display* , XHostAddress* ); extern int XRemoveHosts( Display* , XHostAddress* , int ); extern int XReparentWindow( Display* , Window , Window , int , int ); extern int XResetScreenSaver( Display* ); extern int XResizeWindow( Display* , Window , unsigned int , unsigned int ); extern int XRestackWindows( Display* , Window* , int ); extern int XRotateBuffers( Display* , int ); extern int XRotateWindowProperties( Display* , Window , Atom* , int , int ); extern int XScreenCount( Display* ); extern int XSelectInput( Display* , Window , long ); extern int XSendEvent( Display* , Window , int , long , XEvent* ); extern int XSetAccessControl( Display* , int ); extern int XSetArcMode( Display* , GC , int ); extern int XSetBackground( Display* , GC , unsigned long ); extern int XSetClipMask( Display* , GC , Pixmap ); extern int XSetClipOrigin( Display* , GC , int , int ); extern int XSetClipRectangles( Display* , GC , int , int , XRectangle* , int , int ); extern int XSetCloseDownMode( Display* , int ); extern int XSetCommand( Display* , Window , char** , int ); extern int XSetDashes( Display* , GC , int , const char* , int ); extern int XSetFillRule( Display* , GC , int ); extern int XSetFillStyle( Display* , GC , int ); extern int XSetFont( Display* , GC , Font ); extern int XSetFontPath( Display* , char** , int ); extern int XSetForeground( Display* , GC , unsigned long ); extern int XSetFunction( Display* , GC , int ); extern int XSetGraphicsExposures( Display* , GC , int ); extern int XSetIconName( Display* , Window , const char* ); extern int XSetInputFocus( Display* , Window , int , Time ); extern int XSetLineAttributes( Display* , GC , unsigned int , int , int , int ); extern int XSetModifierMapping( Display* , XModifierKeymap* ); extern int XSetPlaneMask( Display* , GC , unsigned long ); extern int XSetPointerMapping( Display* , const unsigned char* , int ); extern int XSetScreenSaver( Display* , int , int , int , int ); extern int XSetSelectionOwner( Display* , Atom , Window , Time ); extern int XSetState( Display* , GC , unsigned long , unsigned long , int , unsigned long ); extern int XSetStipple( Display* , GC , Pixmap ); extern int XSetSubwindowMode( Display* , GC , int ); extern int XSetTSOrigin( Display* , GC , int , int ); extern int XSetTile( Display* , GC , Pixmap ); extern int XSetWindowBackground( Display* , Window , unsigned long ); extern int XSetWindowBackgroundPixmap( Display* , Window , Pixmap ); extern int XSetWindowBorder( Display* , Window , unsigned long ); extern int XSetWindowBorderPixmap( Display* , Window , Pixmap ); extern int XSetWindowBorderWidth( Display* , Window , unsigned int ); extern int XSetWindowColormap( Display* , Window , Colormap ); extern int XStoreBuffer( Display* , const char* , int , int ); extern int XStoreBytes( Display* , const char* , int ); extern int XStoreColor( Display* , Colormap , XColor* ); extern int XStoreColors( Display* , Colormap , XColor* , int ); extern int XStoreName( Display* , Window , const char* ); extern int XStoreNamedColor( Display* , Colormap , const char* , unsigned long , int ); extern int XSync( Display* , int ); extern int XTextExtents( XFontStruct* , const char* , int , int* , int* , int* , XCharStruct* ); extern int XTextExtents16( XFontStruct* , const XChar2b* , int , int* , int* , int* , XCharStruct* ); extern int XTextWidth( XFontStruct* , const char* , int ); extern int XTextWidth16( XFontStruct* , const XChar2b* , int ); extern int XTranslateCoordinates( Display* , Window , Window , int , int , int* , int* , Window* ); extern int XUndefineCursor( Display* , Window ); extern int XUngrabButton( Display* , unsigned int , unsigned int , Window ); extern int XUngrabKey( Display* , int , unsigned int , Window ); extern int XUngrabKeyboard( Display* , Time ); extern int XUngrabPointer( Display* , Time ); extern int XUngrabServer( Display* ); extern int XUninstallColormap( Display* , Colormap ); extern int XUnloadFont( Display* , Font ); extern int XUnmapSubwindows( Display* , Window ); extern int XUnmapWindow( Display* , Window ); extern int XVendorRelease( Display* ); extern int XWarpPointer( Display* , Window , Window , int , int , unsigned int , unsigned int , int , int ); extern int XWidthMMOfScreen( Screen* ); extern int XWidthOfScreen( Screen* ); extern int XWindowEvent( Display* , Window , long , XEvent* ); extern int XWriteBitmapFile( Display* , const char* , Pixmap , unsigned int , unsigned int , int , int ); extern int XSupportsLocale (void); extern char *XSetLocaleModifiers( const char* ); extern XOM XOpenOM( Display* , struct _XrmHashBucketRec* , const char* , const char* ); extern int XCloseOM( XOM ); extern char *XSetOMValues( XOM , ... ) __attribute__ ((__sentinel__(0))); extern char *XGetOMValues( XOM , ... ) __attribute__ ((__sentinel__(0))); extern Display *XDisplayOfOM( XOM ); extern char *XLocaleOfOM( XOM ); extern XOC XCreateOC( XOM , ... ) __attribute__ ((__sentinel__(0))); extern void XDestroyOC( XOC ); extern XOM XOMOfOC( XOC ); extern char *XSetOCValues( XOC , ... ) __attribute__ ((__sentinel__(0))); extern char *XGetOCValues( XOC , ... ) __attribute__ ((__sentinel__(0))); extern XFontSet XCreateFontSet( Display* , const char* , char*** , int* , char** ); extern void XFreeFontSet( Display* , XFontSet ); extern int XFontsOfFontSet( XFontSet , XFontStruct*** , char*** ); extern char *XBaseFontNameListOfFontSet( XFontSet ); extern char *XLocaleOfFontSet( XFontSet ); extern int XContextDependentDrawing( XFontSet ); extern int XDirectionalDependentDrawing( XFontSet ); extern int XContextualDrawing( XFontSet ); extern XFontSetExtents *XExtentsOfFontSet( XFontSet ); extern int XmbTextEscapement( XFontSet , const char* , int ); extern int XwcTextEscapement( XFontSet , const wchar_t* , int ); extern int Xutf8TextEscapement( XFontSet , const char* , int ); extern int XmbTextExtents( XFontSet , const char* , int , XRectangle* , XRectangle* ); extern int XwcTextExtents( XFontSet , const wchar_t* , int , XRectangle* , XRectangle* ); extern int Xutf8TextExtents( XFontSet , const char* , int , XRectangle* , XRectangle* ); extern int XmbTextPerCharExtents( XFontSet , const char* , int , XRectangle* , XRectangle* , int , int* , XRectangle* , XRectangle* ); extern int XwcTextPerCharExtents( XFontSet , const wchar_t* , int , XRectangle* , XRectangle* , int , int* , XRectangle* , XRectangle* ); extern int Xutf8TextPerCharExtents( XFontSet , const char* , int , XRectangle* , XRectangle* , int , int* , XRectangle* , XRectangle* ); extern void XmbDrawText( Display* , Drawable , GC , int , int , XmbTextItem* , int ); extern void XwcDrawText( Display* , Drawable , GC , int , int , XwcTextItem* , int ); extern void Xutf8DrawText( Display* , Drawable , GC , int , int , XmbTextItem* , int ); extern void XmbDrawString( Display* , Drawable , XFontSet , GC , int , int , const char* , int ); extern void XwcDrawString( Display* , Drawable , XFontSet , GC , int , int , const wchar_t* , int ); extern void Xutf8DrawString( Display* , Drawable , XFontSet , GC , int , int , const char* , int ); extern void XmbDrawImageString( Display* , Drawable , XFontSet , GC , int , int , const char* , int ); extern void XwcDrawImageString( Display* , Drawable , XFontSet , GC , int , int , const wchar_t* , int ); extern void Xutf8DrawImageString( Display* , Drawable , XFontSet , GC , int , int , const char* , int ); extern XIM XOpenIM( Display* , struct _XrmHashBucketRec* , char* , char* ); extern int XCloseIM( XIM ); extern char *XGetIMValues( XIM , ... ) __attribute__ ((__sentinel__(0))); extern char *XSetIMValues( XIM , ... ) __attribute__ ((__sentinel__(0))); extern Display *XDisplayOfIM( XIM ); extern char *XLocaleOfIM( XIM ); extern XIC XCreateIC( XIM , ... ) __attribute__ ((__sentinel__(0))); extern void XDestroyIC( XIC ); extern void XSetICFocus( XIC ); extern void XUnsetICFocus( XIC ); extern wchar_t *XwcResetIC( XIC ); extern char *XmbResetIC( XIC ); extern char *Xutf8ResetIC( XIC ); extern char *XSetICValues( XIC , ... ) __attribute__ ((__sentinel__(0))); extern char *XGetICValues( XIC , ... ) __attribute__ ((__sentinel__(0))); extern XIM XIMOfIC( XIC ); extern int XFilterEvent( XEvent* , Window ); extern int XmbLookupString( XIC , XKeyPressedEvent* , char* , int , KeySym* , int* ); extern int XwcLookupString( XIC , XKeyPressedEvent* , wchar_t* , int , KeySym* , int* ); extern int Xutf8LookupString( XIC , XKeyPressedEvent* , char* , int , KeySym* , int* ); extern XVaNestedList XVaCreateNestedList( int , ... ) __attribute__ ((__sentinel__(0))); extern int XRegisterIMInstantiateCallback( Display* , struct _XrmHashBucketRec* , char* , char* , XIDProc , XPointer ); extern int XUnregisterIMInstantiateCallback( Display* , struct _XrmHashBucketRec* , char* , char* , XIDProc , XPointer ); typedef void (*XConnectionWatchProc)( Display* , XPointer , int , int , XPointer* ); extern int XInternalConnectionNumbers( Display* , int** , int* ); extern void XProcessInternalConnection( Display* , int ); extern int XAddConnectionWatch( Display* , XConnectionWatchProc , XPointer ); extern void XRemoveConnectionWatch( Display* , XConnectionWatchProc , XPointer ); extern void XSetAuthorization( char * , int , char * , int ); extern int _Xmbtowc( wchar_t * , char * , int ); extern int _Xwctomb( char * , wchar_t ); extern int XGetEventData( Display* , XGenericEventCookie* ); extern void XFreeEventData( Display* , XGenericEventCookie* ); typedef struct { long flags; int x, y; int width, height; int min_width, min_height; int max_width, max_height; int width_inc, height_inc; struct { int x; int y; } min_aspect, max_aspect; int base_width, base_height; int win_gravity; } XSizeHints; typedef struct { long flags; int input; int initial_state; Pixmap icon_pixmap; Window icon_window; int icon_x, icon_y; Pixmap icon_mask; XID window_group; } XWMHints; typedef struct { unsigned char *value; Atom encoding; int format; unsigned long nitems; } XTextProperty; typedef enum { XStringStyle, XCompoundTextStyle, XTextStyle, XStdICCTextStyle, XUTF8StringStyle } XICCEncodingStyle; typedef struct { int min_width, min_height; int max_width, max_height; int width_inc, height_inc; } XIconSize; typedef struct { char *res_name; char *res_class; } XClassHint; typedef struct _XComposeStatus { XPointer compose_ptr; int chars_matched; } XComposeStatus; typedef struct _XRegion *Region; typedef struct { Visual *visual; VisualID visualid; int screen; int depth; int class; unsigned long red_mask; unsigned long green_mask; unsigned long blue_mask; int colormap_size; int bits_per_rgb; } XVisualInfo; typedef struct { Colormap colormap; unsigned long red_max; unsigned long red_mult; unsigned long green_max; unsigned long green_mult; unsigned long blue_max; unsigned long blue_mult; unsigned long base_pixel; VisualID visualid; XID killid; } XStandardColormap; typedef int XContext; extern XClassHint *XAllocClassHint ( void ); extern XIconSize *XAllocIconSize ( void ); extern XSizeHints *XAllocSizeHints ( void ); extern XStandardColormap *XAllocStandardColormap ( void ); extern XWMHints *XAllocWMHints ( void ); extern int XClipBox( Region , XRectangle* ); extern Region XCreateRegion( void ); extern const char *XDefaultString (void); extern int XDeleteContext( Display* , XID , XContext ); extern int XDestroyRegion( Region ); extern int XEmptyRegion( Region ); extern int XEqualRegion( Region , Region ); extern int XFindContext( Display* , XID , XContext , XPointer* ); extern int XGetClassHint( Display* , Window , XClassHint* ); extern int XGetIconSizes( Display* , Window , XIconSize** , int* ); extern int XGetNormalHints( Display* , Window , XSizeHints* ); extern int XGetRGBColormaps( Display* , Window , XStandardColormap** , int* , Atom ); extern int XGetSizeHints( Display* , Window , XSizeHints* , Atom ); extern int XGetStandardColormap( Display* , Window , XStandardColormap* , Atom ); extern int XGetTextProperty( Display* , Window , XTextProperty* , Atom ); extern XVisualInfo *XGetVisualInfo( Display* , long , XVisualInfo* , int* ); extern int XGetWMClientMachine( Display* , Window , XTextProperty* ); extern XWMHints *XGetWMHints( Display* , Window ); extern int XGetWMIconName( Display* , Window , XTextProperty* ); extern int XGetWMName( Display* , Window , XTextProperty* ); extern int XGetWMNormalHints( Display* , Window , XSizeHints* , long* ); extern int XGetWMSizeHints( Display* , Window , XSizeHints* , long* , Atom ); extern int XGetZoomHints( Display* , Window , XSizeHints* ); extern int XIntersectRegion( Region , Region , Region ); extern void XConvertCase( KeySym , KeySym* , KeySym* ); extern int XLookupString( XKeyEvent* , char* , int , KeySym* , XComposeStatus* ); extern int XMatchVisualInfo( Display* , int , int , int , XVisualInfo* ); extern int XOffsetRegion( Region , int , int ); extern int XPointInRegion( Region , int , int ); extern Region XPolygonRegion( XPoint* , int , int ); extern int XRectInRegion( Region , int , int , unsigned int , unsigned int ); extern int XSaveContext( Display* , XID , XContext , const char* ); extern int XSetClassHint( Display* , Window , XClassHint* ); extern int XSetIconSizes( Display* , Window , XIconSize* , int ); extern int XSetNormalHints( Display* , Window , XSizeHints* ); extern void XSetRGBColormaps( Display* , Window , XStandardColormap* , int , Atom ); extern int XSetSizeHints( Display* , Window , XSizeHints* , Atom ); extern int XSetStandardProperties( Display* , Window , const char* , const char* , Pixmap , char** , int , XSizeHints* ); extern void XSetTextProperty( Display* , Window , XTextProperty* , Atom ); extern void XSetWMClientMachine( Display* , Window , XTextProperty* ); extern int XSetWMHints( Display* , Window , XWMHints* ); extern void XSetWMIconName( Display* , Window , XTextProperty* ); extern void XSetWMName( Display* , Window , XTextProperty* ); extern void XSetWMNormalHints( Display* , Window , XSizeHints* ); extern void XSetWMProperties( Display* , Window , XTextProperty* , XTextProperty* , char** , int , XSizeHints* , XWMHints* , XClassHint* ); extern void XmbSetWMProperties( Display* , Window , const char* , const char* , char** , int , XSizeHints* , XWMHints* , XClassHint* ); extern void Xutf8SetWMProperties( Display* , Window , const char* , const char* , char** , int , XSizeHints* , XWMHints* , XClassHint* ); extern void XSetWMSizeHints( Display* , Window , XSizeHints* , Atom ); extern int XSetRegion( Display* , GC , Region ); extern void XSetStandardColormap( Display* , Window , XStandardColormap* , Atom ); extern int XSetZoomHints( Display* , Window , XSizeHints* ); extern int XShrinkRegion( Region , int , int ); extern int XStringListToTextProperty( char** , int , XTextProperty* ); extern int XSubtractRegion( Region , Region , Region ); extern int XmbTextListToTextProperty( Display* display, char** list, int count, XICCEncodingStyle style, XTextProperty* text_prop_return ); extern int XwcTextListToTextProperty( Display* display, wchar_t** list, int count, XICCEncodingStyle style, XTextProperty* text_prop_return ); extern int Xutf8TextListToTextProperty( Display* display, char** list, int count, XICCEncodingStyle style, XTextProperty* text_prop_return ); extern void XwcFreeStringList( wchar_t** list ); extern int XTextPropertyToStringList( XTextProperty* , char*** , int* ); extern int XmbTextPropertyToTextList( Display* display, const XTextProperty* text_prop, char*** list_return, int* count_return ); extern int XwcTextPropertyToTextList( Display* display, const XTextProperty* text_prop, wchar_t*** list_return, int* count_return ); extern int Xutf8TextPropertyToTextList( Display* display, const XTextProperty* text_prop, char*** list_return, int* count_return ); extern int XUnionRectWithRegion( XRectangle* , Region , Region ); extern int XUnionRegion( Region , Region , Region ); extern int XWMGeometry( Display* , int , const char* , const char* , unsigned int , XSizeHints* , int* , int* , int* , int* , int* ); extern int XXorRegion( Region , Region , Region ); typedef void *pointer; typedef struct _Client *ClientPtr; typedef struct _Font *FontPtr; typedef unsigned long FSID; typedef FSID AccContext; typedef struct timeval **OSTimePtr; typedef void (* BlockHandlerProcPtr)(void * , OSTimePtr , void * ); typedef XID Glyph; typedef XID GlyphSet; typedef XID Picture; typedef XID PictFormat; typedef struct { short red; short redMask; short green; short greenMask; short blue; short blueMask; short alpha; short alphaMask; } XRenderDirectFormat; typedef struct { PictFormat id; int type; int depth; XRenderDirectFormat direct; Colormap colormap; } XRenderPictFormat; typedef struct _XRenderPictureAttributes { int repeat; Picture alpha_map; int alpha_x_origin; int alpha_y_origin; int clip_x_origin; int clip_y_origin; Pixmap clip_mask; int graphics_exposures; int subwindow_mode; int poly_edge; int poly_mode; Atom dither; int component_alpha; } XRenderPictureAttributes; typedef struct { unsigned short red; unsigned short green; unsigned short blue; unsigned short alpha; } XRenderColor; typedef struct _XGlyphInfo { unsigned short width; unsigned short height; short x; short y; short xOff; short yOff; } XGlyphInfo; typedef struct _XGlyphElt8 { GlyphSet glyphset; const char *chars; int nchars; int xOff; int yOff; } XGlyphElt8; typedef struct _XGlyphElt16 { GlyphSet glyphset; const unsigned short *chars; int nchars; int xOff; int yOff; } XGlyphElt16; typedef struct _XGlyphElt32 { GlyphSet glyphset; const unsigned int *chars; int nchars; int xOff; int yOff; } XGlyphElt32; typedef double XDouble; typedef struct _XPointDouble { XDouble x, y; } XPointDouble; typedef int XFixed; typedef struct _XPointFixed { XFixed x, y; } XPointFixed; typedef struct _XLineFixed { XPointFixed p1, p2; } XLineFixed; typedef struct _XTriangle { XPointFixed p1, p2, p3; } XTriangle; typedef struct _XCircle { XFixed x; XFixed y; XFixed radius; } XCircle; typedef struct _XTrapezoid { XFixed top, bottom; XLineFixed left, right; } XTrapezoid; typedef struct _XTransform { XFixed matrix[3][3]; } XTransform; typedef struct _XFilters { int nfilter; char **filter; int nalias; short *alias; } XFilters; typedef struct _XIndexValue { unsigned long pixel; unsigned short red, green, blue, alpha; } XIndexValue; typedef struct _XAnimCursor { Cursor cursor; unsigned long delay; } XAnimCursor; typedef struct _XSpanFix { XFixed left, right, y; } XSpanFix; typedef struct _XTrap { XSpanFix top, bottom; } XTrap; typedef struct _XLinearGradient { XPointFixed p1; XPointFixed p2; } XLinearGradient; typedef struct _XRadialGradient { XCircle inner; XCircle outer; } XRadialGradient; typedef struct _XConicalGradient { XPointFixed center; XFixed angle; } XConicalGradient; int XRenderQueryExtension (Display *dpy, int *event_basep, int *error_basep); int XRenderQueryVersion (Display *dpy, int *major_versionp, int *minor_versionp); int XRenderQueryFormats (Display *dpy); int XRenderQuerySubpixelOrder (Display *dpy, int screen); int XRenderSetSubpixelOrder (Display *dpy, int screen, int subpixel); XRenderPictFormat * XRenderFindVisualFormat (Display *dpy, const Visual *visual); XRenderPictFormat * XRenderFindFormat (Display *dpy, unsigned long mask, const XRenderPictFormat *templ, int count); XRenderPictFormat * XRenderFindStandardFormat (Display *dpy, int format); XIndexValue * XRenderQueryPictIndexValues(Display *dpy, const XRenderPictFormat *format, int *num); Picture XRenderCreatePicture (Display *dpy, Drawable drawable, const XRenderPictFormat *format, unsigned long valuemask, const XRenderPictureAttributes *attributes); void XRenderChangePicture (Display *dpy, Picture picture, unsigned long valuemask, const XRenderPictureAttributes *attributes); void XRenderSetPictureClipRectangles (Display *dpy, Picture picture, int xOrigin, int yOrigin, const XRectangle *rects, int n); void XRenderSetPictureClipRegion (Display *dpy, Picture picture, Region r); void XRenderSetPictureTransform (Display *dpy, Picture picture, XTransform *transform); void XRenderFreePicture (Display *dpy, Picture picture); void XRenderComposite (Display *dpy, int op, Picture src, Picture mask, Picture dst, int src_x, int src_y, int mask_x, int mask_y, int dst_x, int dst_y, unsigned int width, unsigned int height); GlyphSet XRenderCreateGlyphSet (Display *dpy, const XRenderPictFormat *format); GlyphSet XRenderReferenceGlyphSet (Display *dpy, GlyphSet existing); void XRenderFreeGlyphSet (Display *dpy, GlyphSet glyphset); void XRenderAddGlyphs (Display *dpy, GlyphSet glyphset, const Glyph *gids, const XGlyphInfo *glyphs, int nglyphs, const char *images, int nbyte_images); void XRenderFreeGlyphs (Display *dpy, GlyphSet glyphset, const Glyph *gids, int nglyphs); void XRenderCompositeString8 (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, GlyphSet glyphset, int xSrc, int ySrc, int xDst, int yDst, const char *string, int nchar); void XRenderCompositeString16 (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, GlyphSet glyphset, int xSrc, int ySrc, int xDst, int yDst, const unsigned short *string, int nchar); void XRenderCompositeString32 (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, GlyphSet glyphset, int xSrc, int ySrc, int xDst, int yDst, const unsigned int *string, int nchar); void XRenderCompositeText8 (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, int xSrc, int ySrc, int xDst, int yDst, const XGlyphElt8 *elts, int nelt); void XRenderCompositeText16 (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, int xSrc, int ySrc, int xDst, int yDst, const XGlyphElt16 *elts, int nelt); void XRenderCompositeText32 (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, int xSrc, int ySrc, int xDst, int yDst, const XGlyphElt32 *elts, int nelt); void XRenderFillRectangle (Display *dpy, int op, Picture dst, const XRenderColor *color, int x, int y, unsigned int width, unsigned int height); void XRenderFillRectangles (Display *dpy, int op, Picture dst, const XRenderColor *color, const XRectangle *rectangles, int n_rects); void XRenderCompositeTrapezoids (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, int xSrc, int ySrc, const XTrapezoid *traps, int ntrap); void XRenderCompositeTriangles (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, int xSrc, int ySrc, const XTriangle *triangles, int ntriangle); void XRenderCompositeTriStrip (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, int xSrc, int ySrc, const XPointFixed *points, int npoint); void XRenderCompositeTriFan (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, int xSrc, int ySrc, const XPointFixed *points, int npoint); void XRenderCompositeDoublePoly (Display *dpy, int op, Picture src, Picture dst, const XRenderPictFormat *maskFormat, int xSrc, int ySrc, int xDst, int yDst, const XPointDouble *fpoints, int npoints, int winding); int XRenderParseColor(Display *dpy, char *spec, XRenderColor *def); Cursor XRenderCreateCursor (Display *dpy, Picture source, unsigned int x, unsigned int y); XFilters * XRenderQueryFilters (Display *dpy, Drawable drawable); void XRenderSetPictureFilter (Display *dpy, Picture picture, const char *filter, XFixed *params, int nparams); Cursor XRenderCreateAnimCursor (Display *dpy, int ncursor, XAnimCursor *cursors); void XRenderAddTraps (Display *dpy, Picture picture, int xOff, int yOff, const XTrap *traps, int ntrap); Picture XRenderCreateSolidFill (Display *dpy, const XRenderColor *color); Picture XRenderCreateLinearGradient (Display *dpy, const XLinearGradient *gradient, const XFixed *stops, const XRenderColor *colors, int nstops); Picture XRenderCreateRadialGradient (Display *dpy, const XRadialGradient *gradient, const XFixed *stops, const XRenderColor *colors, int nstops); Picture XRenderCreateConicalGradient (Display *dpy, const XConicalGradient *gradient, const XFixed *stops, const XRenderColor *colors, int nstops); typedef XColor Emacs_Color; typedef Cursor Emacs_Cursor; typedef XRectangle Emacs_Rectangle; typedef XGCValues Emacs_GC; extern int c_strcasecmp (const char *s1, const char *s2) __attribute__ ((__pure__)); extern int c_strncasecmp (const char *s1, const char *s2, size_t n) __attribute__ ((__pure__)); static inline int xstrcasecmp (char const *a, char const *b) { return c_strcasecmp (a, b); } extern char *Xpermalloc( unsigned int ); typedef int XrmQuark, *XrmQuarkList; typedef char *XrmString; extern XrmQuark XrmStringToQuark( const char* ); extern XrmQuark XrmPermStringToQuark( const char* ); extern XrmString XrmQuarkToString( XrmQuark ); extern XrmQuark XrmUniqueQuark( void ); typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList; extern void XrmStringToQuarkList( const char* , XrmQuarkList ); extern void XrmStringToBindingQuarkList( const char* , XrmBindingList , XrmQuarkList ); typedef XrmQuark XrmName; typedef XrmQuarkList XrmNameList; typedef XrmQuark XrmClass; typedef XrmQuarkList XrmClassList; typedef XrmQuark XrmRepresentation; typedef struct { unsigned int size; XPointer addr; } XrmValue, *XrmValuePtr; typedef struct _XrmHashBucketRec *XrmHashBucket; typedef XrmHashBucket *XrmHashTable; typedef XrmHashTable XrmSearchList[]; typedef struct _XrmHashBucketRec *XrmDatabase; extern void XrmDestroyDatabase( XrmDatabase ); extern void XrmQPutResource( XrmDatabase* , XrmBindingList , XrmQuarkList , XrmRepresentation , XrmValue* ); extern void XrmPutResource( XrmDatabase* , const char* , const char* , XrmValue* ); extern void XrmQPutStringResource( XrmDatabase* , XrmBindingList , XrmQuarkList , const char* ); extern void XrmPutStringResource( XrmDatabase* , const char* , const char* ); extern void XrmPutLineResource( XrmDatabase* , const char* ); extern int XrmQGetResource( XrmDatabase , XrmNameList , XrmClassList , XrmRepresentation* , XrmValue* ); extern int XrmGetResource( XrmDatabase , const char* , const char* , char** , XrmValue* ); extern int XrmQGetSearchList( XrmDatabase , XrmNameList , XrmClassList , XrmSearchList , int ); extern int XrmQGetSearchResource( XrmSearchList , XrmName , XrmClass , XrmRepresentation* , XrmValue* ); extern void XrmSetDatabase( Display* , XrmDatabase ); extern XrmDatabase XrmGetDatabase( Display* ); extern XrmDatabase XrmGetFileDatabase( const char* ); extern int XrmCombineFileDatabase( const char* , XrmDatabase* , int ); extern XrmDatabase XrmGetStringDatabase( const char* ); extern void XrmPutFileDatabase( XrmDatabase , const char* ); extern void XrmMergeDatabases( XrmDatabase , XrmDatabase* ); extern void XrmCombineDatabase( XrmDatabase , XrmDatabase* , int ); extern int XrmEnumerateDatabase( XrmDatabase , XrmNameList , XrmClassList , int , int (*)( XrmDatabase* , XrmBindingList , XrmQuarkList , XrmRepresentation* , XrmValue* , XPointer ) , XPointer ); extern const char *XrmLocaleOfDatabase( XrmDatabase ); typedef enum { XrmoptionNoArg, XrmoptionIsArg, XrmoptionStickyArg, XrmoptionSepArg, XrmoptionResArg, XrmoptionSkipArg, XrmoptionSkipLine, XrmoptionSkipNArgs } XrmOptionKind; typedef struct { char *option; char *specifier; XrmOptionKind argKind; XPointer value; } XrmOptionDescRec, *XrmOptionDescList; extern void XrmParseCommand( XrmDatabase* , XrmOptionDescList , int , const char* , int* , char** ); typedef struct x_display_info Display_Info; typedef struct { int width, height; char *data; int bytes_per_line; int bits_per_pixel; } *Emacs_Pix_Container; typedef Emacs_Pix_Container Emacs_Pixmap; typedef Emacs_Pix_Container Emacs_Pix_Context; struct face; extern void free_face_fontset (struct frame *, struct face *); extern int face_for_char (struct frame *, struct face *, int, ptrdiff_t, Lisp_Object); extern Lisp_Object font_for_char (struct face *, int, ptrdiff_t, Lisp_Object); extern int make_fontset_for_ascii_face (struct frame *, int, struct face *); extern int fontset_from_font (Lisp_Object); extern int fs_query_fontset (Lisp_Object, int); extern Lisp_Object list_fontsets (struct frame *, Lisp_Object, int); extern Lisp_Object fontset_name (int); extern Lisp_Object fontset_ascii (int); extern int face_for_font (struct frame *, Lisp_Object, struct face *); enum text_cursor_kinds { DEFAULT_CURSOR = -2, NO_CURSOR = -1, FILLED_BOX_CURSOR, HOLLOW_BOX_CURSOR, BAR_CURSOR, HBAR_CURSOR }; enum window_part { ON_NOTHING, ON_TEXT, ON_MODE_LINE, ON_VERTICAL_BORDER, ON_HEADER_LINE, ON_TAB_LINE, ON_LEFT_FRINGE, ON_RIGHT_FRINGE, ON_LEFT_MARGIN, ON_RIGHT_MARGIN, ON_VERTICAL_SCROLL_BAR, ON_HORIZONTAL_SCROLL_BAR, ON_RIGHT_DIVIDER, ON_BOTTOM_DIVIDER }; struct text_pos { ptrdiff_t charpos; ptrdiff_t bytepos; }; struct display_pos { struct text_pos pos; ptrdiff_t overlay_string_index; struct text_pos string_pos; int dpvec_index; }; typedef struct { int ch; int face_id; } GLYPH; static inline int GLYPH_CHAR (GLYPH glyph) { return glyph.ch; } static inline int GLYPH_FACE (GLYPH glyph) { return glyph.face_id; } static inline int GLYPH_CODE_CHAR (Lisp_Object gc) { return (CONSP (gc) ? XFIXNUM (XCAR (gc)) : XFIXNUM (gc) & MAX_CHAR); } static inline int GLYPH_CODE_FACE (Lisp_Object gc) { return CONSP (gc) ? XFIXNUM (XCDR (gc)) : XFIXNUM (gc) >> CHARACTERBITS; } enum { GLYPH_MODE_LINE_FACE = 1 }; enum glyph_type { CHAR_GLYPH, COMPOSITE_GLYPH, GLYPHLESS_GLYPH, IMAGE_GLYPH, STRETCH_GLYPH, XWIDGET_GLYPH }; struct glyph_slice { unsigned x : 16; unsigned y : 16; unsigned width : 16; unsigned height : 16; }; struct glyph { ptrdiff_t charpos; Lisp_Object object; short pixel_width; short ascent, descent; short voffset; unsigned type : 3; bool_bf multibyte_p : 1; bool_bf left_box_line_p : 1; bool_bf right_box_line_p : 1; bool_bf overlaps_vertically_p : 1; bool_bf padding_p : 1; bool_bf glyph_not_available_p : 1; bool_bf avoid_cursor_p : 1; unsigned resolved_level : 7; unsigned bidi_type : 3; unsigned face_id : 20; unsigned font_type : 3; union { struct glyph_slice img; struct { int from, to; } cmp; struct { short upper_xoff, upper_yoff; short lower_xoff, lower_yoff; } glyphless; } slice; union { unsigned ch; struct { bool_bf automatic : 1; unsigned id : 31; } cmp; int img_id; struct { unsigned height : 16; unsigned ascent : 16; } stretch; struct { unsigned method : 2; bool_bf for_no_font : 1; unsigned len : 4; unsigned ch : 25; } glyphless; unsigned val; } u; }; struct glyph_pool { struct glyph *glyphs; ptrdiff_t nglyphs; int nrows, ncolumns; }; struct glyph_matrix { struct glyph_pool *pool; struct glyph_row *rows; ptrdiff_t rows_allocated; int nrows; int matrix_x, matrix_y; int matrix_w, matrix_h; int window_pixel_left, window_pixel_top; int window_height, window_width; int window_vscroll; int left_margin_glyphs, right_margin_glyphs; bool_bf no_scrolling_p : 1; bool_bf tab_line_p : 1; bool_bf header_line_p : 1; struct buffer *buffer; ptrdiff_t begv, zv; }; enum glyph_row_area { ANY_AREA = -1, LEFT_MARGIN_AREA, TEXT_AREA, RIGHT_MARGIN_AREA, LAST_AREA }; struct glyph_row { struct glyph *glyphs[1 + LAST_AREA]; short used[1 + LAST_AREA]; unsigned hash; int x, y; int pixel_width; int ascent, height; int phys_ascent, phys_height; int visible_height; int extra_line_spacing; struct display_pos start; struct display_pos end; struct text_pos minpos, maxpos; int overlay_arrow_bitmap; unsigned left_user_fringe_bitmap : 16; unsigned right_user_fringe_bitmap : 16; unsigned left_fringe_bitmap : 16; unsigned right_fringe_bitmap : 16; unsigned left_user_fringe_face_id : 20; unsigned right_user_fringe_face_id : 20; unsigned left_fringe_face_id : 20; unsigned right_fringe_face_id : 20; signed left_fringe_offset : 8; signed right_fringe_offset : 8; bool_bf fringe_bitmap_periodic_p : 1; bool_bf redraw_fringe_bitmaps_p : 1; bool_bf enabled_p : 1; bool_bf truncated_on_left_p : 1; bool_bf truncated_on_right_p : 1; bool_bf continued_p : 1; bool_bf displays_text_p : 1; bool_bf ends_at_zv_p : 1; bool_bf fill_line_p : 1; bool_bf indicate_empty_line_p : 1; bool_bf contains_overlapping_glyphs_p : 1; bool_bf full_width_p : 1; bool_bf mode_line_p : 1; bool_bf tab_line_p : 1; bool_bf overlapped_p : 1; bool_bf ends_in_middle_of_char_p : 1; bool_bf starts_in_middle_of_char_p : 1; bool_bf overlapping_p : 1; bool_bf mouse_face_p : 1; bool_bf ends_in_newline_from_string_p : 1; bool_bf exact_window_width_line_p : 1; bool_bf cursor_in_fringe_p : 1; bool_bf ends_in_ellipsis_p : 1; bool_bf indicate_bob_p : 1; bool_bf indicate_top_line_p : 1; bool_bf indicate_eob_p : 1; bool_bf indicate_bottom_line_p : 1; bool_bf reversed_p : 1; bool_bf stipple_p : 1; int continuation_lines_width; const Emacs_Rectangle *clip; }; extern struct glyph space_glyph; extern _Bool display_completed; enum draw_glyphs_face { DRAW_NORMAL_TEXT, DRAW_INVERSE_VIDEO, DRAW_CURSOR, DRAW_MOUSE_FACE, DRAW_IMAGE_RAISED, DRAW_IMAGE_SUNKEN }; struct glyph_string { int x; int y, ybase; int width; int background_width; int height; int left_overhang; int right_overhang; struct frame *f; struct window *w; struct glyph_row *row; enum glyph_row_area area; unsigned *char2b; int nchars; enum draw_glyphs_face hl; struct face *face; struct font *font; struct composition *cmp; ptrdiff_t cmp_id; int cmp_from, cmp_to; bool_bf extends_to_end_of_line_p : 1; bool_bf background_filled_p : 1; bool_bf font_not_found_p : 1; bool_bf stippled_p : 1; unsigned for_overlaps : 3; bool_bf padding_p : 1; GC gc; struct glyph *first_glyph; struct image *img; struct xwidget *xwidget; struct glyph_slice slice; struct glyph_string *clip_head, *clip_tail; XRectangle clip[2]; int num_clips; int underline_position; int underline_thickness; struct glyph_string *next, *prev; }; enum lface_attribute_index { LFACE_FAMILY_INDEX = 1, LFACE_FOUNDRY_INDEX, LFACE_SWIDTH_INDEX, LFACE_HEIGHT_INDEX, LFACE_WEIGHT_INDEX, LFACE_SLANT_INDEX, LFACE_UNDERLINE_INDEX, LFACE_INVERSE_INDEX, LFACE_FOREGROUND_INDEX, LFACE_BACKGROUND_INDEX, LFACE_STIPPLE_INDEX, LFACE_OVERLINE_INDEX, LFACE_STRIKE_THROUGH_INDEX, LFACE_BOX_INDEX, LFACE_FONT_INDEX, LFACE_INHERIT_INDEX, LFACE_FONTSET_INDEX, LFACE_DISTANT_FOREGROUND_INDEX, LFACE_EXTEND_INDEX, LFACE_VECTOR_SIZE }; enum face_box_type { FACE_NO_BOX, FACE_SIMPLE_BOX, FACE_RAISED_BOX, FACE_SUNKEN_BOX }; enum face_underline_type { FACE_NO_UNDERLINE = 0, FACE_UNDER_LINE, FACE_UNDER_WAVE }; struct face { Lisp_Object lface[LFACE_VECTOR_SIZE]; int id; GC gc; ptrdiff_t stipple; unsigned long foreground; unsigned long background; unsigned long underline_color; unsigned long overline_color; unsigned long strike_through_color; unsigned long box_color; struct font *font; int fontset; int box_vertical_line_width; int box_horizontal_line_width; int underline_pixels_above_descent_line; enum face_box_type box : 2; enum face_underline_type underline : 2; bool_bf use_box_color_for_shadows_p : 1; bool_bf overline_p : 1; bool_bf strike_through_p : 1; bool_bf foreground_defaulted_p : 1; bool_bf background_defaulted_p : 1; bool_bf underline_defaulted_p : 1; bool_bf overline_color_defaulted_p : 1; bool_bf strike_through_color_defaulted_p : 1; bool_bf box_color_defaulted_p : 1; bool_bf underline_at_descent_line_p : 1; bool_bf tty_bold_p : 1; bool_bf tty_italic_p : 1; bool_bf tty_underline_p : 1; bool_bf tty_reverse_p : 1; bool_bf tty_strike_through_p : 1; bool_bf colors_copied_bitwise_p : 1; bool_bf overstrike : 1; uintptr_t hash; struct face *next, *prev; struct face *ascii_face; void *extra; }; static inline _Bool face_tty_specified_color (unsigned long color) { return color < ((unsigned long) -3); } enum face_id { DEFAULT_FACE_ID, MODE_LINE_ACTIVE_FACE_ID, MODE_LINE_INACTIVE_FACE_ID, TOOL_BAR_FACE_ID, FRINGE_FACE_ID, HEADER_LINE_FACE_ID, SCROLL_BAR_FACE_ID, BORDER_FACE_ID, CURSOR_FACE_ID, MOUSE_FACE_ID, MENU_FACE_ID, VERTICAL_BORDER_FACE_ID, WINDOW_DIVIDER_FACE_ID, WINDOW_DIVIDER_FIRST_PIXEL_FACE_ID, WINDOW_DIVIDER_LAST_PIXEL_FACE_ID, INTERNAL_BORDER_FACE_ID, CHILD_FRAME_BORDER_FACE_ID, TAB_BAR_FACE_ID, TAB_LINE_FACE_ID, BASIC_FACE_ID_SENTINEL }; struct face_cache { struct face **buckets; struct frame *f; struct face **faces_by_id; ptrdiff_t size; int used; bool_bf menu_face_changed_p : 1; }; static inline _Bool FACE_SUITABLE_FOR_ASCII_CHAR_P (struct face *face) { return face == face->ascii_face; } static inline int FACE_FOR_CHAR (struct frame *f, struct face *face, int character, ptrdiff_t pos, Lisp_Object object) { return face_for_char (f, face, character, pos, object); } static inline _Bool GLYPH_CHAR_VALID_P (GLYPH g) { return CHAR_VALID_P (GLYPH_CHAR (g)); } static inline _Bool GLYPH_CODE_P (Lisp_Object gc) { return (CONSP (gc) ? (CHARACTERP (XCAR (gc)) && RANGED_FIXNUMP (0, XCDR (gc), ((1 << 20) - 1))) : (RANGED_FIXNUMP (0, gc, (((1 << 20) - 1) < ((EMACS_INT) (! (! ((EMACS_INT) 0 < (EMACS_INT) -1)) ? (EMACS_INT) -1 : ((((EMACS_INT) 1 << ((sizeof (EMACS_INT) * 8) - 2)) - 1) * 2 + 1))) >> CHARACTERBITS ? ((EMACS_INT) ((1 << 20) - 1) << CHARACTERBITS) | MAX_CHAR : ((EMACS_INT) (! (! ((EMACS_INT) 0 < (EMACS_INT) -1)) ? (EMACS_INT) -1 : ((((EMACS_INT) 1 << ((sizeof (EMACS_INT) * 8) - 2)) - 1) * 2 + 1))))))); } extern _Bool face_change; typedef enum { UNKNOWN_BT = 0, STRONG_L, STRONG_R, WEAK_EN, WEAK_AN, WEAK_BN, NEUTRAL_B, STRONG_AL, LRE, LRO, RLE, RLO, PDF, LRI, RLI, FSI, PDI, WEAK_ES, WEAK_ET, WEAK_CS, WEAK_NSM, NEUTRAL_S, NEUTRAL_WS, NEUTRAL_ON } bidi_type_t; typedef enum { BIDI_BRACKET_NONE = 1, BIDI_BRACKET_OPEN, BIDI_BRACKET_CLOSE } bidi_bracket_type_t; typedef enum { NEUTRAL_DIR = 0, L2R, R2L } bidi_dir_t; struct bidi_saved_info { ptrdiff_t charpos; bidi_type_t type; bidi_type_t orig_type; }; struct bidi_stack { ptrdiff_t next_for_neutral_pos; unsigned next_for_neutral_type : 3; unsigned last_strong_type : 3; unsigned prev_for_neutral_type : 3; unsigned char level; unsigned char flags; }; struct bidi_string_data { Lisp_Object lstring; const unsigned char *s; ptrdiff_t schars; ptrdiff_t bufpos; bool_bf from_disp_str : 1; bool_bf unibyte : 1; }; struct bidi_it { ptrdiff_t bytepos; ptrdiff_t charpos; int ch; ptrdiff_t nchars; ptrdiff_t ch_len; bidi_type_t type; bidi_type_t type_after_wn; bidi_type_t orig_type; signed char resolved_level; signed char isolate_level; ptrdiff_t invalid_levels; ptrdiff_t invalid_isolates; struct bidi_saved_info prev; struct bidi_saved_info last_strong; struct bidi_saved_info next_for_neutral; struct bidi_saved_info prev_for_neutral; struct bidi_saved_info next_for_ws; ptrdiff_t bracket_pairing_pos; bidi_type_t bracket_enclosed_type; ptrdiff_t next_en_pos; bidi_type_t next_en_type; bidi_dir_t sos; int scan_dir; ptrdiff_t disp_pos; int disp_prop; int stack_idx; struct bidi_stack level_stack[125 +2+1]; struct bidi_string_data string; struct window *w; bidi_dir_t paragraph_dir; ptrdiff_t separator_limit; bool_bf first_elt : 1; bool_bf new_paragraph : 1; bool_bf frame_window_p : 1; }; struct draw_fringe_bitmap_params { int which; unsigned short *bits; int wd, h, dh; int x, y; int bx, nx, by, ny; bool_bf cursor_p : 1; bool_bf overlay_p : 1; struct face *face; }; enum display_element_type { IT_CHARACTER, IT_COMPOSITION, IT_GLYPHLESS, IT_IMAGE, IT_STRETCH, IT_EOB, IT_TRUNCATION, IT_CONTINUATION, IT_XWIDGET }; enum prop_idx { FONTIFIED_PROP_IDX, FACE_PROP_IDX, INVISIBLE_PROP_IDX, DISPLAY_PROP_IDX, COMPOSITION_PROP_IDX, OVERLAY_PROP_IDX, LAST_PROP_IDX }; enum line_wrap_method { TRUNCATE, WORD_WRAP, WINDOW_WRAP }; enum glyphless_display_method { GLYPHLESS_DISPLAY_THIN_SPACE, GLYPHLESS_DISPLAY_EMPTY_BOX, GLYPHLESS_DISPLAY_ACRONYM, GLYPHLESS_DISPLAY_HEX_CODE }; struct it_slice { Lisp_Object x; Lisp_Object y; Lisp_Object width; Lisp_Object height; }; enum it_method { GET_FROM_BUFFER = 0, GET_FROM_DISPLAY_VECTOR, GET_FROM_STRING, GET_FROM_C_STRING, GET_FROM_IMAGE, GET_FROM_STRETCH, GET_FROM_XWIDGET, NUM_IT_METHODS }; struct composition_it { ptrdiff_t stop_pos; ptrdiff_t id; int ch; EMACS_INT rule_idx; ptrdiff_t lookback; int nglyphs; _Bool reversed_p; ptrdiff_t charpos; int nchars, nbytes; int from, to; int width; }; struct it { Lisp_Object window; struct window *w; struct frame *f; enum it_method method; ptrdiff_t stop_charpos; ptrdiff_t prev_stop; ptrdiff_t base_level_stop; ptrdiff_t end_charpos; const unsigned char *s; ptrdiff_t string_nchars; ptrdiff_t redisplay_end_trigger_charpos; bool_bf multibyte_p : 1; bool_bf tab_line_p : 1; bool_bf header_line_p : 1; bool_bf string_from_display_prop_p : 1; bool_bf string_from_prefix_prop_p : 1; bool_bf from_disp_prop_p : 1; bool_bf ellipsis_p : 1; bool_bf avoid_cursor_p : 1; struct Lisp_Char_Table *dp; Lisp_Object *dpvec, *dpend; int dpvec_char_len; int dpvec_face_id; int saved_face_id; Lisp_Object ctl_chars[16]; struct display_pos start; struct display_pos current; ptrdiff_t n_overlay_strings; ptrdiff_t overlay_strings_charpos; Lisp_Object overlay_strings[16]; Lisp_Object string_overlays[16]; Lisp_Object string; Lisp_Object from_overlay; struct iterator_stack_entry { Lisp_Object string; int string_nchars; ptrdiff_t end_charpos; ptrdiff_t stop_charpos; ptrdiff_t prev_stop; ptrdiff_t base_level_stop; struct composition_it cmp_it; int face_id; union { struct { Lisp_Object object; struct it_slice slice; ptrdiff_t image_id; } image; struct { Lisp_Object object; } stretch; struct { Lisp_Object object; } xwidget; } u; struct text_pos position; struct display_pos current; Lisp_Object from_overlay; enum glyph_row_area area; enum it_method method; bidi_dir_t paragraph_embedding; bool_bf multibyte_p : 1; bool_bf string_from_display_prop_p : 1; bool_bf string_from_prefix_prop_p : 1; bool_bf display_ellipsis_p : 1; bool_bf avoid_cursor_p : 1; bool_bf bidi_p : 1; bool_bf from_disp_prop_p : 1; enum line_wrap_method line_wrap; short voffset; Lisp_Object space_width; Lisp_Object font_height; } stack[5]; int sp; ptrdiff_t selective; enum display_element_type what; int face_id; bool_bf selective_display_ellipsis_p : 1; bool_bf ctl_arrow_p : 1; bool_bf face_box_p : 1; bool_bf start_of_box_run_p : 1; bool_bf end_of_box_run_p : 1; bool_bf overlay_strings_at_end_processed_p : 1; bool_bf ignore_overlay_strings_at_pos_p : 1; bool_bf glyph_not_available_p : 1; bool_bf starts_in_middle_of_char_p : 1; bool_bf face_before_selective_p : 1; bool_bf constrain_row_ascent_descent_p : 1; bool_bf line_number_produced_p : 1; enum line_wrap_method line_wrap; int base_face_id; int c, len; struct composition_it cmp_it; int char_to_display; enum glyphless_display_method glyphless_method; ptrdiff_t image_id; struct xwidget *xwidget; struct it_slice slice; Lisp_Object space_width; short voffset; short tab_width; Lisp_Object font_height; Lisp_Object object; struct text_pos position; short truncation_pixel_width, continuation_pixel_width; int first_visible_x, last_visible_x; int last_visible_y; int extra_line_spacing; int max_extra_line_spacing; int override_ascent, override_descent, override_boff; struct glyph_row *glyph_row; enum glyph_row_area area; int nglyphs; int pixel_width; int ascent, descent, max_ascent, max_descent; int phys_ascent, phys_descent, max_phys_ascent, max_phys_descent; int current_x; int continuation_lines_width; struct text_pos eol_pos; int current_y; int first_vpos; int vpos; int hpos; ptrdiff_t lnum; ptrdiff_t lnum_bytepos; int lnum_width; int lnum_pixel_width; ptrdiff_t pt_lnum; int tab_offset; unsigned left_user_fringe_bitmap : 16; unsigned right_user_fringe_bitmap : 16; unsigned left_user_fringe_face_id : 20; unsigned right_user_fringe_face_id : 20; bool_bf bidi_p : 1; struct bidi_it bidi_it; bidi_dir_t paragraph_embedding; Lisp_Object min_width_property; int min_width_start; }; enum move_operation_enum { MOVE_TO_X = 0x01, MOVE_TO_Y = 0x02, MOVE_TO_VPOS = 0x04, MOVE_TO_POS = 0x08 }; typedef struct { int mouse_face_beg_row, mouse_face_beg_col, mouse_face_beg_x; int mouse_face_end_row, mouse_face_end_col, mouse_face_end_x; Lisp_Object mouse_face_window; int mouse_face_face_id; Lisp_Object mouse_face_overlay; struct frame *mouse_face_mouse_frame; int mouse_face_mouse_x, mouse_face_mouse_y; bool_bf mouse_face_past_end : 1; bool_bf mouse_face_defer : 1; bool_bf mouse_face_hidden : 1; } Mouse_HLInfo; static inline void reset_mouse_highlight (Mouse_HLInfo *hlinfo) { hlinfo->mouse_face_beg_row = hlinfo->mouse_face_beg_col = -1; hlinfo->mouse_face_end_row = hlinfo->mouse_face_end_col = -1; hlinfo->mouse_face_mouse_x = hlinfo->mouse_face_mouse_y = 0; hlinfo->mouse_face_beg_x = hlinfo->mouse_face_end_x = 0; hlinfo->mouse_face_face_id = DEFAULT_FACE_ID; hlinfo->mouse_face_mouse_frame = ((void *)0) ; hlinfo->mouse_face_window = builtin_lisp_symbol (0); hlinfo->mouse_face_overlay = builtin_lisp_symbol (0); hlinfo->mouse_face_past_end = 0 ; hlinfo->mouse_face_hidden = 0 ; hlinfo->mouse_face_defer = 0 ; } struct run { int desired_y, current_y; int desired_vpos, current_vpos; int height, nrows; }; typedef void (*frame_parm_handler) (struct frame *, Lisp_Object, Lisp_Object); struct redisplay_interface { frame_parm_handler *frame_parm_handlers; void (*produce_glyphs) (struct it *it); void (*write_glyphs) (struct window *w, struct glyph_row *row, struct glyph *string, enum glyph_row_area area, int len); void (*insert_glyphs) (struct window *w, struct glyph_row *row, struct glyph *start, enum glyph_row_area area, int len); void (*clear_end_of_line) (struct window *w, struct glyph_row *row, enum glyph_row_area area, int x); void (*scroll_run_hook) (struct window *w, struct run *run); void (*after_update_window_line_hook) (struct window *w, struct glyph_row *desired_row); void (*update_window_begin_hook) (struct window *w); void (*update_window_end_hook) (struct window *w, _Bool cursor_on_p, _Bool mouse_face_overwritten_p); void (*flush_display) (struct frame *f); void (*clear_window_mouse_face) (struct window *w); void (*get_glyph_overhangs) (struct glyph *glyph, struct frame *f, int *left, int *right); void (*fix_overlapping_area) (struct window *w, struct glyph_row *row, enum glyph_row_area area, int); void (*draw_fringe_bitmap) (struct window *w, struct glyph_row *row, struct draw_fringe_bitmap_params *p); void (*define_fringe_bitmap) (int which, unsigned short *bits, int h, int wd); void (*destroy_fringe_bitmap) (int which); void (*compute_glyph_string_overhangs) (struct glyph_string *s); void (*draw_glyph_string) (struct glyph_string *s); void (*define_frame_cursor) (struct frame *f, Emacs_Cursor cursor); void (*clear_frame_area) (struct frame *f, int x, int y, int width, int height); void (*clear_under_internal_border) (struct frame *f); void (*draw_window_cursor) (struct window *w, struct glyph_row *glyph_row, int x, int y, enum text_cursor_kinds cursor_type, int cursor_width, _Bool on_p, _Bool active_p); void (*draw_vertical_window_border) (struct window *w, int x, int y_0, int y_1); void (*draw_window_divider) (struct window *w, int x_0, int x_1, int y_0, int y_1); void (*shift_glyphs_for_insert) (struct frame *f, int x, int y, int width, int height, int shift_by); void (*show_hourglass) (struct frame *f); void (*hide_hourglass) (struct frame *f); void (*default_font_parameter) (struct frame *f, Lisp_Object parms); }; struct image { struct timespec timestamp; Emacs_Pixmap pixmap, mask; void *cr_data; XImage *ximg, *mask_img; unsigned long *colors; int ncolors; unsigned long background; unsigned long face_foreground, face_background; int face_font_size; char *face_font_family; bool_bf background_transparent : 1; bool_bf background_valid : 1, background_transparent_valid : 1; int width, height; int corners[4]; int ascent; Lisp_Object spec; Lisp_Object dependencies; int relief; int hmargin, vmargin; struct image_type const *type; _Bool load_failed_p; Lisp_Object lisp_data; EMACS_UINT hash; ptrdiff_t id; struct image *next, *prev; }; struct image_cache { struct image **buckets; struct image **images; ptrdiff_t size; ptrdiff_t used; ptrdiff_t refcount; }; enum tab_bar_item_idx { TAB_BAR_ITEM_KEY, TAB_BAR_ITEM_ENABLED_P, TAB_BAR_ITEM_SELECTED_P, TAB_BAR_ITEM_CAPTION, TAB_BAR_ITEM_BINDING, TAB_BAR_ITEM_HELP, TAB_BAR_ITEM_NSLOTS }; enum tool_bar_item_idx { TOOL_BAR_ITEM_KEY, TOOL_BAR_ITEM_ENABLED_P, TOOL_BAR_ITEM_SELECTED_P, TOOL_BAR_ITEM_CAPTION, TOOL_BAR_ITEM_IMAGES, TOOL_BAR_ITEM_BINDING, TOOL_BAR_ITEM_TYPE, TOOL_BAR_ITEM_HELP, TOOL_BAR_ITEM_RTL_IMAGE, TOOL_BAR_ITEM_LABEL, TOOL_BAR_ITEM_VERT_ONLY, TOOL_BAR_ITEM_NSLOTS }; enum tool_bar_item_image { TOOL_BAR_IMAGE_ENABLED_SELECTED, TOOL_BAR_IMAGE_ENABLED_DESELECTED, TOOL_BAR_IMAGE_DISABLED_SELECTED, TOOL_BAR_IMAGE_DISABLED_DESELECTED }; extern void bidi_init_it (ptrdiff_t, ptrdiff_t, _Bool , struct bidi_it *); extern void bidi_move_to_visually_next (struct bidi_it *); extern void bidi_paragraph_init (bidi_dir_t, struct bidi_it *, _Bool ); extern int bidi_mirror_char (int); extern void bidi_push_it (struct bidi_it *); extern void bidi_pop_it (struct bidi_it *); extern void *bidi_shelve_cache (void); extern void bidi_unshelve_cache (void *, _Bool ); extern ptrdiff_t bidi_find_first_overridden (struct bidi_it *); struct glyph_row *row_containing_pos (struct window *, ptrdiff_t, struct glyph_row *, struct glyph_row *, int); int line_bottom_y (struct it *); int default_line_pixel_height (struct window *); _Bool display_prop_intangible_p (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t); void resize_echo_area_exactly (void); _Bool resize_mini_window (struct window *, _Bool ); void set_vertical_scroll_bar (struct window *); void set_horizontal_scroll_bar (struct window *); int try_window (Lisp_Object, struct text_pos, int); void window_box (struct window *, enum glyph_row_area, int *, int *, int *, int *); int window_box_height (struct window *); int window_text_bottom_y (struct window *); int window_box_width (struct window *, enum glyph_row_area); int window_box_left (struct window *, enum glyph_row_area); int window_box_left_offset (struct window *, enum glyph_row_area); int window_box_right (struct window *, enum glyph_row_area); int estimate_mode_line_height (struct frame *, enum face_id); int move_it_to (struct it *, ptrdiff_t, int, int, int, int); void pixel_to_glyph_coords (struct frame *, int, int, int *, int *, XRectangle *, _Bool ); void remember_mouse_glyph (struct frame *, int, int, XRectangle *); void mark_window_display_accurate (Lisp_Object, _Bool ); void redisplay_preserve_echo_area (int); void init_iterator (struct it *, struct window *, ptrdiff_t, ptrdiff_t, struct glyph_row *, enum face_id); void init_iterator_to_row_start (struct it *, struct window *, struct glyph_row *); void start_display (struct it *, struct window *, struct text_pos); void move_it_vertically (struct it *, int); void move_it_vertically_backward (struct it *, int); void move_it_by_lines (struct it *, ptrdiff_t); void move_it_past_eol (struct it *); void move_it_in_display_line (struct it *it, ptrdiff_t to_charpos, int to_x, enum move_operation_enum op); int partial_line_height (struct it *it_origin); _Bool in_display_vector_p (struct it *); int frame_mode_line_height (struct frame *); extern _Bool redisplaying_p; extern _Bool help_echo_showing_p; extern Lisp_Object help_echo_string, help_echo_window; extern Lisp_Object help_echo_object, previous_help_echo_string; extern ptrdiff_t help_echo_pos; extern int last_tab_bar_item; extern int last_tool_bar_item; extern void reseat_at_previous_visible_line_start (struct it *); extern Lisp_Object lookup_glyphless_char_display (int, struct it *); extern ptrdiff_t compute_display_string_pos (struct text_pos *, struct bidi_string_data *, struct window *, _Bool , int *); extern ptrdiff_t compute_display_string_end (ptrdiff_t, struct bidi_string_data *); extern void produce_stretch_glyph (struct it *); extern int merge_glyphless_glyph_face (struct it *); extern void forget_escape_and_glyphless_faces (void); extern void get_font_ascent_descent (struct font *, int *, int *); extern void gui_get_glyph_overhangs (struct glyph *, struct frame *, int *, int *); extern struct font *font_for_underline_metrics (struct glyph_string *); extern void gui_produce_glyphs (struct it *); extern void gui_write_glyphs (struct window *, struct glyph_row *, struct glyph *, enum glyph_row_area, int); extern void gui_insert_glyphs (struct window *, struct glyph_row *, struct glyph *, enum glyph_row_area, int); extern void gui_clear_end_of_line (struct window *, struct glyph_row *, enum glyph_row_area, int); extern void gui_fix_overlapping_area (struct window *, struct glyph_row *, enum glyph_row_area, int); extern void draw_phys_cursor_glyph (struct window *, struct glyph_row *, enum draw_glyphs_face); extern void get_phys_cursor_geometry (struct window *, struct glyph_row *, struct glyph *, int *, int *, int *); extern void erase_phys_cursor (struct window *); extern void display_and_set_cursor (struct window *, _Bool , int, int, int, int); extern void gui_update_cursor (struct frame *, _Bool ); extern void gui_clear_cursor (struct window *); extern void gui_draw_vertical_border (struct window *w); extern void gui_draw_right_divider (struct window *w); extern int get_glyph_string_clip_rects (struct glyph_string *, XRectangle *, int); extern void get_glyph_string_clip_rect (struct glyph_string *, XRectangle *nr); extern Lisp_Object find_hot_spot (Lisp_Object, int, int); extern Lisp_Object handle_tab_bar_click (struct frame *, int, int, _Bool , int); extern void handle_tool_bar_click (struct frame *, int, int, _Bool , int); extern void handle_tool_bar_click_with_device (struct frame *, int, int, _Bool , int, Lisp_Object); extern void expose_frame (struct frame *, int, int, int, int); extern _Bool gui_intersect_rectangles (const Emacs_Rectangle *, const Emacs_Rectangle *, Emacs_Rectangle *); extern void gui_consider_frame_title (Lisp_Object); extern void note_mouse_highlight (struct frame *, int, int); extern void gui_clear_window_mouse_face (struct window *); extern void cancel_mouse_face (struct frame *); extern _Bool clear_mouse_face (Mouse_HLInfo *); extern _Bool cursor_in_mouse_face_p (struct window *w); extern void tty_draw_row_with_mouse_face (struct window *, struct glyph_row *, int, int, enum draw_glyphs_face); extern void display_tty_menu_item (const char *, int, int, int, int, _Bool ); int lookup_fringe_bitmap (Lisp_Object); void draw_fringe_bitmap (struct window *, struct glyph_row *, int); void draw_row_fringe_bitmaps (struct window *, struct glyph_row *); _Bool draw_window_fringes (struct window *, _Bool ); _Bool update_window_fringes (struct window *, _Bool ); void gui_init_fringe (struct redisplay_interface *); extern int max_used_fringe_bitmap; void gui_define_fringe_bitmap (struct frame *, int); extern unsigned row_hash (struct glyph_row *); extern _Bool buffer_flipping_blocked_p (void); extern ptrdiff_t image_bitmap_pixmap (struct frame *, ptrdiff_t); extern void image_reference_bitmap (struct frame *, ptrdiff_t); extern ptrdiff_t image_create_bitmap_from_data (struct frame *, char *, unsigned int, unsigned int); extern ptrdiff_t image_create_bitmap_from_file (struct frame *, Lisp_Object); extern void image_destroy_bitmap (struct frame *, ptrdiff_t); extern void image_destroy_all_bitmaps (Display_Info *); extern void x_create_bitmap_mask (struct frame *, ptrdiff_t); extern Lisp_Object image_find_image_file (Lisp_Object); struct image_cache *make_image_cache (void); void free_image_cache (struct frame *); void clear_image_caches (Lisp_Object); void mark_image_cache (struct image_cache *); _Bool valid_image_p (Lisp_Object); void prepare_image_for_display (struct frame *, struct image *); ptrdiff_t lookup_image (struct frame *, Lisp_Object, int); unsigned long image_background (struct image *, struct frame *, Emacs_Pix_Context img); int image_background_transparent (struct image *, struct frame *, Emacs_Pix_Context mask); int image_ascent (struct image *, struct face *, struct glyph_slice *); void get_tty_size (int, int *, int *); void request_sigio (void); void unrequest_sigio (void); _Bool tabs_safe_p (int); void init_baud_rate (int); void init_sigio (int); void unload_color (struct frame *, unsigned long); void x_free_colors (struct frame *, unsigned long *, int); void update_face_from_frame_parameter (struct frame *, Lisp_Object, Lisp_Object); extern _Bool tty_defined_color (struct frame *, const char *, Emacs_Color *, _Bool , _Bool ); _Bool parse_color_spec (const char *, unsigned short *, unsigned short *, unsigned short *); Lisp_Object tty_color_name (struct frame *, int); void clear_face_cache ( _Bool ); unsigned long load_color (struct frame *, struct face *, Lisp_Object, enum lface_attribute_index); char *choose_face_font (struct frame *, Lisp_Object *, Lisp_Object, int *); void prepare_face_for_display (struct frame *, struct face *); int lookup_named_face (struct window *, struct frame *, Lisp_Object, _Bool ); int lookup_basic_face (struct window *, struct frame *, int); int smaller_face (struct frame *, int, int); int face_with_height (struct frame *, int, int); int lookup_derived_face (struct window *, struct frame *, Lisp_Object, int, _Bool ); void init_frame_faces (struct frame *); void free_frame_faces (struct frame *); void recompute_basic_faces (struct frame *); int face_at_buffer_position (struct window *, ptrdiff_t, ptrdiff_t *, ptrdiff_t, _Bool , int, enum lface_attribute_index); int face_for_overlay_string (struct window *, ptrdiff_t, ptrdiff_t *, ptrdiff_t, _Bool , Lisp_Object, enum lface_attribute_index); int face_at_string_position (struct window *, Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t *, enum face_id, _Bool , enum lface_attribute_index); int merge_faces (struct window *, Lisp_Object, int, int); int compute_char_face (struct frame *, int, Lisp_Object); void free_all_realized_faces (Lisp_Object); extern char unspecified_fg[], unspecified_bg[]; void gamma_correct (struct frame *, XColor *); extern void start_hourglass (void); extern void cancel_hourglass (void); int popup_activated (void); extern Lisp_Object buffer_posn_from_coords (struct window *, int *, int *, struct display_pos *, Lisp_Object *, int *, int *, int *, int *); extern Lisp_Object mode_line_string (struct window *, enum window_part, int *, int *, ptrdiff_t *, Lisp_Object *, int *, int *, int *, int *); extern Lisp_Object marginal_area_string (struct window *, enum window_part, int *, int *, ptrdiff_t *, Lisp_Object *, int *, int *, int *, int *); extern void redraw_frame (struct frame *); extern _Bool update_frame (struct frame *, _Bool , _Bool ); extern void update_frame_with_menu (struct frame *, int, int); extern int update_mouse_position (struct frame *, int, int); extern void bitch_at_user (void); extern void adjust_frame_glyphs (struct frame *); void free_glyphs (struct frame *); void free_window_matrices (struct window *); void check_glyph_memory (void); void mirrored_line_dance (struct glyph_matrix *, int, int, int *, char *); void clear_glyph_matrix (struct glyph_matrix *); void clear_current_matrices (struct frame *f); void clear_desired_matrices (struct frame *); void shift_glyph_matrix (struct window *, struct glyph_matrix *, int, int, int); void rotate_matrix (struct glyph_matrix *, int, int, int); void increment_matrix_positions (struct glyph_matrix *, int, int, ptrdiff_t, ptrdiff_t); void blank_row (struct window *, struct glyph_row *, int); void clear_glyph_matrix_rows (struct glyph_matrix *, int, int); void clear_glyph_row (struct glyph_row *); void prepare_desired_row (struct window *, struct glyph_row *, _Bool ); void update_single_window (struct window *); extern void gui_update_window_begin (struct window *); extern void gui_update_window_end (struct window *, _Bool , _Bool ); void do_pending_window_change ( _Bool ); void change_frame_size (struct frame *, int, int, _Bool , _Bool , _Bool ); void init_display (void); void syms_of_display (void); extern void spec_glyph_lookup_face (struct window *, GLYPH *); extern void fill_up_frame_row_with_spaces (struct glyph_row *, int); extern void ring_bell (struct frame *); extern void update_begin (struct frame *); extern void update_end (struct frame *); extern void set_terminal_window (struct frame *, int); extern void cursor_to (struct frame *, int, int); extern void raw_cursor_to (struct frame *, int, int); extern void clear_to_end (struct frame *); extern void clear_frame (struct frame *); extern void clear_end_of_line (struct frame *, int); extern void write_glyphs (struct frame *, struct glyph *, int); extern void insert_glyphs (struct frame *, struct glyph *, int); extern void delete_glyphs (struct frame *, int); extern void ins_del_lines (struct frame *, int, int); extern struct terminal *init_initial_terminal (void); extern void tty_turn_off_insert (struct tty_display_info *); extern int string_cost (const char *); extern int per_line_cost (const char *); extern void calculate_costs (struct frame *); extern void produce_glyphs (struct it *); extern _Bool tty_capable_p (struct tty_display_info *, unsigned); extern void set_tty_color_mode (struct tty_display_info *, struct frame *); extern void create_tty_output (struct frame *); extern struct terminal *init_tty (const char *, const char *, _Bool ); extern void tty_append_glyph (struct it *); enum { SCROLL_INFINITY = 1000000 }; extern int scrolling_max_lines_saved (int, int, unsigned *, unsigned *, int *); extern void do_line_insertion_deletion_costs (struct frame *, const char *, const char *, const char *, const char *, const char *, const char *, int); void scrolling_1 (struct frame *, int, int, int, int *, int *, unsigned *, unsigned *, int); enum resource_types { RES_TYPE_NUMBER, RES_TYPE_FLOAT, RES_TYPE_BOOLEAN, RES_TYPE_STRING, RES_TYPE_SYMBOL, RES_TYPE_BOOLEAN_NUMBER }; extern Display_Info *check_x_display_info (Lisp_Object); extern Lisp_Object gui_display_get_arg (Display_Info *, Lisp_Object, Lisp_Object, const char *, const char *, enum resource_types); extern Lisp_Object gui_frame_get_and_record_arg (struct frame *, Lisp_Object, Lisp_Object, const char *, const char *, enum resource_types); extern Lisp_Object gui_default_parameter (struct frame *, Lisp_Object, Lisp_Object, Lisp_Object, const char *, const char *, enum resource_types); extern _Bool gui_mouse_grabbed (Display_Info *); extern void gui_redo_mouse_highlight (Display_Info *); enum composition_method { COMPOSITION_RELATIVE, COMPOSITION_WITH_RULE, COMPOSITION_WITH_ALTCHARS, COMPOSITION_WITH_RULE_ALTCHARS, COMPOSITION_NO }; static inline _Bool composition_registered_p (Lisp_Object prop) { return FIXNUMP (XCAR (prop)); } static inline _Bool COMPOSITION_ENCODE_RULE_VALID (int gref, int nref) { return 0 <= gref && gref < 12 && 0 <= nref && nref < 12; } struct composition { int glyph_len; short pixel_width, ascent, descent; short lbearing, rbearing; int width; enum composition_method method; ptrdiff_t hash_index; void *font; short *offsets; }; extern struct composition **composition_table; extern ptrdiff_t n_compositions; extern Lisp_Object composition_hash_table; extern ptrdiff_t get_composition_id (ptrdiff_t, ptrdiff_t, ptrdiff_t, Lisp_Object, Lisp_Object); extern _Bool find_composition (ptrdiff_t, ptrdiff_t, ptrdiff_t *, ptrdiff_t *, Lisp_Object *, Lisp_Object); extern void update_compositions (ptrdiff_t, ptrdiff_t, int); extern void make_composition_value_copy (Lisp_Object); extern void syms_of_composite (void); extern void compose_text (ptrdiff_t, ptrdiff_t, Lisp_Object, Lisp_Object, Lisp_Object); static inline enum composition_method composition_method (Lisp_Object prop) { if (composition_registered_p (prop)) return composition_table[XFIXNUM (XCAR (prop))]->method; else { Lisp_Object temp = XCDR (XCAR (prop)); return (NILP (temp) ? COMPOSITION_RELATIVE : FIXNUMP (temp) || STRINGP (temp) ? COMPOSITION_WITH_ALTCHARS : COMPOSITION_WITH_RULE_ALTCHARS); } } static inline _Bool composition_valid_p (ptrdiff_t start, ptrdiff_t end, Lisp_Object prop) { return (CONSP (prop) && (composition_registered_p (prop) ? (XFIXNUM (XCAR (prop)) >= 0 && XFIXNUM (XCAR (prop)) <= n_compositions && CONSP (XCDR (prop))) : (CONSP (XCAR (prop)) && (NILP (XCDR (XCAR (prop))) || STRINGP (XCDR (XCAR (prop))) || VECTORP (XCDR (XCAR (prop))) || FIXNUMP (XCDR (XCAR (prop))) || CONSP (XCDR (XCAR (prop)))))) && (composition_registered_p (prop) ? XFIXNUM (XCAR (XCDR (prop))) : XFIXNUM (XCAR (XCAR (prop)))) == end - start); } static inline Lisp_Object * lgstring_glyph_addr (Lisp_Object lgs, ptrdiff_t idx) { return aref_addr (lgs, idx + 2); } enum lglyph_indices { LGLYPH_IX_FROM, LGLYPH_IX_TO, LGLYPH_IX_CHAR, LGLYPH_IX_CODE, LGLYPH_IX_WIDTH, LGLYPH_IX_LBEARING, LGLYPH_IX_RBEARING, LGLYPH_IX_ASCENT, LGLYPH_IX_DESCENT, LGLYPH_IX_ADJUSTMENT, LGLYPH_SIZE }; extern Lisp_Object composition_gstring_put_cache (Lisp_Object, ptrdiff_t); extern Lisp_Object composition_gstring_from_id (ptrdiff_t); extern _Bool composition_gstring_p (Lisp_Object); extern int composition_gstring_width (Lisp_Object, ptrdiff_t, ptrdiff_t, struct font_metrics *); extern _Bool find_automatic_composition (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t *, ptrdiff_t *, Lisp_Object *, Lisp_Object); extern void composition_compute_stop_pos (struct composition_it *, ptrdiff_t, ptrdiff_t, ptrdiff_t, Lisp_Object); extern _Bool composition_reseat_it (struct composition_it *, ptrdiff_t, ptrdiff_t, ptrdiff_t, struct window *, signed char, struct face *, Lisp_Object); extern int composition_update_it (struct composition_it *, ptrdiff_t, ptrdiff_t, Lisp_Object); extern ptrdiff_t composition_adjust_point (ptrdiff_t, ptrdiff_t); extern Lisp_Object composition_gstring_lookup_cache (Lisp_Object); extern void composition_gstring_cache_clear_font (Lisp_Object); enum composition_state { COMPOSING_NO, COMPOSING_CHAR, COMPOSING_RULE, COMPOSING_COMPONENT_CHAR, COMPOSING_COMPONENT_RULE }; struct composition_status { enum composition_state state; enum composition_method method; _Bool old_form; int length; int nchars; int ncomps; int carryover[4 + 16 * 3 - 2 + 2 + 16 ]; }; struct iso_2022_spec { unsigned flags; int current_invocation[2]; int current_designation[4]; int ctext_extended_segment_len; bool_bf single_shifting : 1; bool_bf bol : 1; bool_bf embedded_utf_8 : 1; struct composition_status cmp_status; }; struct emacs_mule_spec { struct composition_status cmp_status; }; struct undecided_spec { int inhibit_nbd; int inhibit_ied; _Bool prefer_utf_8; }; enum utf_bom_type { utf_detect_bom, utf_without_bom, utf_with_bom }; enum utf_16_endian_type { utf_16_big_endian, utf_16_little_endian }; struct utf_16_spec { enum utf_bom_type bom; enum utf_16_endian_type endian; int surrogate; }; struct coding_detection_info { int checked; int found; int rejected; }; struct coding_system { ptrdiff_t id; unsigned common_flags : 14; unsigned mode : 5; bool_bf src_multibyte : 1; bool_bf dst_multibyte : 1; bool_bf chars_at_source : 1; bool_bf raw_destination : 1; bool_bf annotated : 1; unsigned eol_seen : 3; enum coding_result_code result : 3; int max_charset_id; union { struct iso_2022_spec iso_2022; struct ccl_spec *ccl; struct utf_16_spec utf_16; enum utf_bom_type utf_8_bom; struct emacs_mule_spec emacs_mule; struct undecided_spec undecided; } spec; unsigned char *safe_charsets; ptrdiff_t head_ascii; ptrdiff_t detected_utf8_bytes, detected_utf8_chars; ptrdiff_t produced, produced_char, consumed, consumed_char; ptrdiff_t src_pos, src_pos_byte, src_chars, src_bytes; Lisp_Object src_object; const unsigned char *source; ptrdiff_t dst_pos, dst_pos_byte, dst_bytes; Lisp_Object dst_object; unsigned char *destination; int *charbuf; int charbuf_size, charbuf_used; unsigned char carryover[64]; int carryover_bytes; int default_char; _Bool (*detector) (struct coding_system *, struct coding_detection_info *); void (*decoder) (struct coding_system *); _Bool (*encoder) (struct coding_system *); }; extern Lisp_Object code_conversion_save ( _Bool , _Bool ); extern _Bool encode_coding_utf_8 (struct coding_system *); extern _Bool utf8_string_p (Lisp_Object); extern void setup_coding_system (Lisp_Object, struct coding_system *); extern Lisp_Object coding_charset_list (struct coding_system *); extern Lisp_Object coding_system_charset_list (Lisp_Object); extern Lisp_Object code_convert_string (Lisp_Object, Lisp_Object, Lisp_Object, _Bool , _Bool , _Bool ); extern Lisp_Object code_convert_string_norecord (Lisp_Object, Lisp_Object, _Bool ); extern Lisp_Object encode_string_utf_8 (Lisp_Object, Lisp_Object, _Bool , Lisp_Object, Lisp_Object); extern Lisp_Object decode_string_utf_8 (Lisp_Object, const char *, ptrdiff_t, Lisp_Object, _Bool , Lisp_Object, Lisp_Object); extern Lisp_Object encode_file_name (Lisp_Object); extern Lisp_Object decode_file_name (Lisp_Object); extern Lisp_Object raw_text_coding_system (Lisp_Object); extern _Bool raw_text_coding_system_p (struct coding_system *); extern Lisp_Object coding_inherit_eol_type (Lisp_Object, Lisp_Object); extern Lisp_Object complement_process_encoding_system (Lisp_Object); extern Lisp_Object make_string_from_utf8 (const char *, ptrdiff_t); extern void decode_coding_gap (struct coding_system *, ptrdiff_t); extern void decode_coding_object (struct coding_system *, Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, Lisp_Object); extern void encode_coding_object (struct coding_system *, Lisp_Object, ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, Lisp_Object); static inline int surrogates_to_codepoint (int, int); static inline int surrogates_to_codepoint (int low, int high) { ((void) ( 0 && (0 <= low && low <= 0xFFFF))); ((void) ( 0 && (0 <= high && high <= 0xFFFF))); ((void) ( 0 && ((((low) & 0xFC00) == 0xDC00)))); ((void) ( 0 && ((((high) & 0xFC00) == 0xD800)))); return 0x10000 + (low - 0xDC00) + ((high - 0xD800) * 0x400); } static inline Lisp_Object build_string_from_utf8 (const char *str) { return make_string_from_utf8 (str, strlen (str)); } extern Lisp_Object preferred_coding_system (void); extern struct coding_system safe_terminal_coding; extern char emacs_mule_bytes[256]; extern volatile unsigned char fingerprint[32]; enum { TIMESPEC_HZ = 1000000000 }; enum { LOG10_TIMESPEC_HZ = 9 }; enum { TIMESPEC_RESOLUTION = TIMESPEC_HZ }; enum { LOG10_TIMESPEC_RESOLUTION = LOG10_TIMESPEC_HZ }; inline struct timespec make_timespec (time_t s, long int ns) { struct timespec r; r.tv_sec = s; r.tv_nsec = ns; return r; } inline int __attribute__ ((__pure__)) timespec_cmp (struct timespec a, struct timespec b) { return 2 * (((a.tv_sec) > (b.tv_sec)) - ((a.tv_sec) < (b.tv_sec))) + (((a.tv_nsec) > (b.tv_nsec)) - ((a.tv_nsec) < (b.tv_nsec))); } inline int __attribute__ ((__pure__)) timespec_sign (struct timespec a) { return (((a.tv_sec) > (0)) - ((a.tv_sec) < (0))) + (!a.tv_sec & !!a.tv_nsec); } struct timespec timespec_add (struct timespec, struct timespec) __attribute__ ((__const__)); struct timespec timespec_sub (struct timespec, struct timespec) __attribute__ ((__const__)); struct timespec dtotimespec (double) __attribute__ ((__const__)); inline double timespectod (struct timespec a) { return a.tv_sec + a.tv_nsec / 1e9; } long int gettime_res (void); struct timespec current_timespec (void); void gettime (struct timespec *) __attribute__ ((__nonnull__ (1) )) ; int settime (struct timespec const *) __attribute__ ((__nonnull__ (1) )) ; struct timezone { int tz_minuteswest; int tz_dsttime; }; extern int gettimeofday (struct timeval *__restrict __tv, void *__restrict __tz) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int settimeofday (const struct timeval *__tv, const struct timezone *__tz) __attribute__ ((__nothrow__ , __leaf__)); extern int adjtime (const struct timeval *__delta, struct timeval *__olddelta) __attribute__ ((__nothrow__ , __leaf__)); enum __itimer_which { ITIMER_REAL = 0, ITIMER_VIRTUAL = 1, ITIMER_PROF = 2 }; struct itimerval { struct timeval it_interval; struct timeval it_value; }; typedef enum __itimer_which __itimer_which_t; extern int getitimer (__itimer_which_t __which, struct itimerval *__value) __attribute__ ((__nothrow__ , __leaf__)); extern int setitimer (__itimer_which_t __which, const struct itimerval *__restrict __new, struct itimerval *__restrict __old) __attribute__ ((__nothrow__ , __leaf__)); extern int utimes (const char *__file, const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int lutimes (const char *__file, const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))); extern int futimes (int __fd, const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__)); extern int futimesat (int __fd, const char *__file, const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__)); extern int _gl_cxxalias_dummy ; extern int _gl_cxxalias_dummy; static inline struct timespec invalid_timespec (void) { return make_timespec (0, -1); } static inline _Bool timespec_valid_p (struct timespec t) { return t.tv_nsec >= 0; } extern void set_waiting_for_input (struct timespec *); enum { LO_TIME_BITS = 16 }; struct lisp_time { Lisp_Object ticks; Lisp_Object hz; }; extern struct timeval make_timeval (struct timespec) __attribute__ ((__const__)); extern Lisp_Object make_lisp_time (struct timespec); extern Lisp_Object timespec_to_lisp (struct timespec); extern _Bool list4_to_timespec (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, struct timespec *); extern struct timespec lisp_time_argument (Lisp_Object); extern double float_time (Lisp_Object); extern void init_timefns (void); extern void syms_of_timefns (void); struct glyph; enum scroll_bar_part { scroll_bar_nowhere, scroll_bar_above_handle, scroll_bar_handle, scroll_bar_below_handle, scroll_bar_up_arrow, scroll_bar_down_arrow, scroll_bar_to_top, scroll_bar_to_bottom, scroll_bar_end_scroll, scroll_bar_move_ratio, scroll_bar_before_handle, scroll_bar_horizontal_handle, scroll_bar_after_handle, scroll_bar_left_arrow, scroll_bar_right_arrow, scroll_bar_to_leftmost, scroll_bar_to_rightmost }; enum output_method { output_initial, output_termcap, output_x_window, output_msdos_raw, output_w32, output_ns, output_pgtk, output_haiku }; enum event_kind { NO_EVENT, ASCII_KEYSTROKE_EVENT, MULTIBYTE_CHAR_KEYSTROKE_EVENT, NON_ASCII_KEYSTROKE_EVENT, TIMER_EVENT, MOUSE_CLICK_EVENT, WHEEL_EVENT, HORIZ_WHEEL_EVENT, SCROLL_BAR_CLICK_EVENT, HORIZONTAL_SCROLL_BAR_CLICK_EVENT, SELECTION_REQUEST_EVENT, SELECTION_CLEAR_EVENT, DELETE_WINDOW_EVENT, MENU_BAR_EVENT, ICONIFY_EVENT, DEICONIFY_EVENT, MENU_BAR_ACTIVATE_EVENT, DRAG_N_DROP_EVENT, UNSUPPORTED_DROP_EVENT, USER_SIGNAL_EVENT, HELP_EVENT, TAB_BAR_EVENT, TOOL_BAR_EVENT, FOCUS_IN_EVENT, FOCUS_OUT_EVENT, MOVE_FRAME_EVENT, SELECT_WINDOW_EVENT, SAVE_SESSION_EVENT , DBUS_EVENT , THREAD_EVENT , CONFIG_CHANGED_EVENT , FILE_NOTIFY_EVENT , PREEDIT_TEXT_EVENT , TOUCH_END_EVENT , TOUCHSCREEN_UPDATE_EVENT , TOUCHSCREEN_BEGIN_EVENT , TOUCHSCREEN_END_EVENT , PINCH_EVENT , MONITORS_CHANGED_EVENT }; enum { EVENT_KIND_WIDTH = 16 }; struct input_event { enum event_kind kind : EVENT_KIND_WIDTH; enum scroll_bar_part part : 16; unsigned code; unsigned modifiers; Lisp_Object x, y; Time timestamp; Lisp_Object frame_or_window; Lisp_Object arg; Lisp_Object device; }; enum { up_modifier = 1, down_modifier = 2, drag_modifier = 4, click_modifier= 8, double_modifier= 16, triple_modifier= 32, alt_modifier = CHAR_ALT, super_modifier= CHAR_SUPER, hyper_modifier= CHAR_HYPER, shift_modifier= CHAR_SHIFT, ctrl_modifier = CHAR_CTL, meta_modifier = CHAR_META }; enum Gpm_Etype { GPM_MOVE=1, GPM_DRAG=2, GPM_DOWN=4, GPM_UP= 8, GPM_SINGLE=16, GPM_DOUBLE=32, GPM_TRIPLE=64, GPM_MFLAG=128, GPM_HARD=256, GPM_ENTER=512, GPM_LEAVE=1024 }; enum Gpm_Margin {GPM_TOP=1, GPM_BOT=2, GPM_LFT=4, GPM_RGT=8}; typedef struct Gpm_Event { unsigned char buttons, modifiers; unsigned short vc; short dx, dy, x, y; enum Gpm_Etype type; int clicks; enum Gpm_Margin margin; short wdx, wdy; } Gpm_Event; typedef int Gpm_Handler(Gpm_Event *event, void *clientdata); typedef struct Gpm_Connect { unsigned short eventMask, defaultMask; unsigned short minMod, maxMod; int pid; int vc; } Gpm_Connect; typedef struct Gpm_Roi { short xMin,xMax; short yMin,yMax; unsigned short minMod, maxMod; unsigned short eventMask; unsigned short owned; Gpm_Handler *handler; void *clientdata; struct Gpm_Roi *prev; struct Gpm_Roi *next; } Gpm_Roi; extern int gpm_flag, gpm_ctlfd, gpm_fd, gpm_hflag, gpm_morekeys; extern int gpm_zerobased; extern int gpm_visiblepointer; extern int gpm_mx, gpm_my; extern struct timeval gpm_timeout; extern unsigned char _gpm_buf[]; extern unsigned short * _gpm_arg; extern Gpm_Handler *gpm_handler; extern void *gpm_data; extern Gpm_Handler *gpm_roi_handler; extern void *gpm_roi_data; extern Gpm_Roi *gpm_roi; extern Gpm_Roi *gpm_current_roi; struct winsize { unsigned short int ws_row; unsigned short int ws_col; unsigned short int ws_xpixel; unsigned short int ws_ypixel; }; struct termio { unsigned short int c_iflag; unsigned short int c_oflag; unsigned short int c_cflag; unsigned short int c_lflag; unsigned char c_line; unsigned char c_cc[8]; }; extern int ioctl (int __fd, unsigned long int __request, ...) __attribute__ ((__nothrow__ , __leaf__)); extern int Gpm_Open(Gpm_Connect *, int); extern int Gpm_Close(void); extern int Gpm_GetEvent(Gpm_Event *); extern int Gpm_CharsQueued(void); extern int Gpm_Getc(FILE *); extern int Gpm_Repeat(int millisec); extern int Gpm_FitValuesM(int *x, int *y, int margin); extern int gpm_consolefd; Gpm_Handler Gpm_HandleRoi; Gpm_Roi *Gpm_PushRoi(int x, int y, int X, int Y, int mask, Gpm_Handler *fun, void *xtradata); Gpm_Roi * Gpm_PopRoi(Gpm_Roi *which); Gpm_Roi * Gpm_RaiseRoi(Gpm_Roi *which, Gpm_Roi *before); Gpm_Roi * Gpm_LowerRoi(Gpm_Roi *which, Gpm_Roi *after); extern int Gpm_Wgetch(); char *Gpm_GetLibVersion(int *where); char *Gpm_GetServerVersion(int *where); int Gpm_GetSnapshot(Gpm_Event *ePtr); char *Gpm_get_console( void ); int Gpm_x_high_y(int base, int pot_y); int Gpm_cnt_digits(int number); __attribute__((__format__(printf, 3, 4))) void gpm_oops(int line, const char *file, const char *text, ... ); __attribute__((__format__(printf, 4, 5))) void gpm_report(int line, const char *file, int stat, const char *text, ... ); extern int handle_one_term_event (struct tty_display_info *, Gpm_Event *); extern void term_mouse_moveto (int, int); extern struct tty_display_info *gpm_tty; struct terminal { union vectorlike_header header; Lisp_Object param_alist; Lisp_Object charset_list; Lisp_Object Vselection_alist; Lisp_Object glyph_code_table; struct terminal *next_terminal; int id; int reference_count; enum output_method type; char *name; struct kboard *kboard; struct image_cache *image_cache; union display_info { struct tty_display_info *tty; struct x_display_info *x; struct w32_display_info *w32; struct ns_display_info *ns; struct pgtk_display_info *pgtk; struct haiku_display_info *haiku; } display_info; struct coding_system *terminal_coding; struct coding_system *keyboard_coding; struct redisplay_interface *rif; void (*cursor_to_hook) (struct frame *f, int vpos, int hpos); void (*raw_cursor_to_hook) (struct frame *, int, int); void (*clear_to_end_hook) (struct frame *); void (*clear_frame_hook) (struct frame *); void (*clear_end_of_line_hook) (struct frame *, int); void (*ins_del_lines_hook) (struct frame *f, int, int); void (*insert_glyphs_hook) (struct frame *f, struct glyph *s, int n); void (*write_glyphs_hook) (struct frame *f, struct glyph *s, int n); void (*delete_glyphs_hook) (struct frame *, int); void (*ring_bell_hook) (struct frame *f); void (*toggle_invisible_pointer_hook) (struct frame *f, _Bool invisible); void (*reset_terminal_modes_hook) (struct terminal *); void (*set_terminal_modes_hook) (struct terminal *); void (*update_begin_hook) (struct frame *); void (*update_end_hook) (struct frame *); void (*set_terminal_window_hook) (struct frame *, int); _Bool (*defined_color_hook) (struct frame *f, const char *color_name, Emacs_Color *color_def, _Bool alloc, _Bool makeIndex); void (*query_frame_background_color) (struct frame *f, Emacs_Color *bgcolor); void (*query_colors) (struct frame *f, Emacs_Color *colors, int ncolors); void (*mouse_position_hook) (struct frame **f, int, Lisp_Object *bar_window, enum scroll_bar_part *part, Lisp_Object *x, Lisp_Object *y, Time *); Lisp_Object (*get_focus_frame) (struct frame *f); void (*focus_frame_hook) (struct frame *f, _Bool noactivate); void (*frame_rehighlight_hook) (struct frame *); void (*frame_raise_lower_hook) (struct frame *f, _Bool raise_flag); void (*frame_visible_invisible_hook) (struct frame *f, _Bool visible); void (*fullscreen_hook) (struct frame *f); void (*iconify_frame_hook) (struct frame *f); void (*set_window_size_hook) (struct frame *f, _Bool change_gravity, int width, int height); void (*set_frame_offset_hook) (struct frame *f, register int xoff, register int yoff, int change_gravity); void (*set_frame_alpha_hook) (struct frame *f); Lisp_Object (*set_new_font_hook) (struct frame *f, Lisp_Object font_object, int fontset); _Bool (*set_bitmap_icon_hook) (struct frame *f, Lisp_Object file); void (*implicit_set_name_hook) (struct frame *f, Lisp_Object arg, Lisp_Object oldval); Lisp_Object (*menu_show_hook) (struct frame *f, int x, int y, int menuflags, Lisp_Object title, const char **error_name); void (*activate_menubar_hook) (struct frame *f); Lisp_Object (*popup_dialog_hook) (struct frame *f, Lisp_Object header, Lisp_Object contents); void (*change_tab_bar_height_hook) (struct frame *f, int height); void (*change_tool_bar_height_hook) (struct frame *f, int height); void (*set_vertical_scroll_bar_hook) (struct window *window, int portion, int whole, int position); void (*set_horizontal_scroll_bar_hook) (struct window *window, int portion, int whole, int position); void (*set_scroll_bar_default_width_hook) (struct frame *frame); void (*set_scroll_bar_default_height_hook) (struct frame *frame); void (*condemn_scroll_bars_hook) (struct frame *frame); void (*redeem_scroll_bar_hook) (struct window *window); void (*judge_scroll_bars_hook) (struct frame *FRAME); int (*read_socket_hook) (struct terminal *terminal, struct input_event *hold_quit); void (*frame_up_to_date_hook) (struct frame *); void (*buffer_flipping_unblocked_hook) (struct frame *); const char * (*get_string_resource_hook) (void *rdb, const char *name, const char *class); void (*free_pixmap) (struct frame *f, Emacs_Pixmap pixmap); void (*delete_frame_hook) (struct frame *); void (*delete_terminal_hook) (struct terminal *); void (*toolkit_position_hook) (struct frame *, int, int, _Bool *, _Bool *); } __attribute__ ((aligned (8))); static inline _Bool TERMINALP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_TERMINAL); } static inline struct terminal * XTERMINAL (Lisp_Object a) { ((void) ( 0 && (TERMINALP (a)))); return ((struct terminal *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline void tset_charset_list (struct terminal *t, Lisp_Object val) { t->charset_list = val; } static inline void tset_selection_alist (struct terminal *t, Lisp_Object val) { t->Vselection_alist = val; } extern struct terminal *terminal_list; extern struct terminal *decode_live_terminal (Lisp_Object); extern struct terminal *decode_tty_terminal (Lisp_Object); extern struct terminal *get_named_terminal (const char *); extern struct terminal *create_terminal (enum output_method, struct redisplay_interface *); extern void delete_terminal (struct terminal *); extern void delete_terminal_internal (struct terminal *); extern Lisp_Object terminal_glyph_code (struct terminal *, int); extern struct terminal *initial_terminal; extern unsigned char *encode_terminal_code (struct glyph *, int, struct coding_system *); extern void close_gpm (int gpm_fd); struct cursor_pos { int x, y; int hpos, vpos; }; struct window { union vectorlike_header header; Lisp_Object frame; Lisp_Object next; Lisp_Object prev; Lisp_Object parent; Lisp_Object normal_lines; Lisp_Object normal_cols; Lisp_Object new_total; Lisp_Object new_normal; Lisp_Object new_pixel; Lisp_Object contents; Lisp_Object old_buffer; Lisp_Object start; Lisp_Object pointm; Lisp_Object old_pointm; Lisp_Object temslot; Lisp_Object vertical_scroll_bar; Lisp_Object vertical_scroll_bar_type; Lisp_Object horizontal_scroll_bar; Lisp_Object horizontal_scroll_bar_type; Lisp_Object display_table; Lisp_Object dedicated; Lisp_Object redisplay_end_trigger; Lisp_Object combination_limit; Lisp_Object window_parameters; Lisp_Object mode_line_help_echo; struct glyph_matrix *current_matrix; struct glyph_matrix *desired_matrix; Lisp_Object prev_buffers; Lisp_Object next_buffers; EMACS_INT use_time; EMACS_INT sequence_number; int change_stamp; int pixel_left; int pixel_top; int left_col; int top_line; int pixel_width; int pixel_height; int old_pixel_width; int old_pixel_height; int old_body_pixel_width; int old_body_pixel_height; int total_cols; int total_lines; ptrdiff_t hscroll; ptrdiff_t min_hscroll; ptrdiff_t hscroll_whole; modiff_count last_modified; modiff_count last_overlay_modified; ptrdiff_t last_point; ptrdiff_t base_line_number; ptrdiff_t base_line_pos; ptrdiff_t column_number_displayed; int nrows_scale_factor, ncols_scale_factor; struct cursor_pos cursor; struct cursor_pos phys_cursor; struct cursor_pos output_cursor; int last_cursor_vpos; enum text_cursor_kinds phys_cursor_type; int phys_cursor_width; int phys_cursor_ascent, phys_cursor_height; int left_fringe_width; int right_fringe_width; int left_margin_cols; int right_margin_cols; int scroll_bar_width; int scroll_bar_height; int mode_line_height; int header_line_height; int tab_line_height; ptrdiff_t window_end_pos; int window_end_vpos; bool_bf mini : 1; bool_bf horizontal : 1; bool_bf update_mode_line : 1; bool_bf last_had_star : 1; bool_bf start_at_line_beg : 1; bool_bf force_start : 1; bool_bf optional_new_start : 1; bool_bf phys_cursor_on_p : 1; bool_bf cursor_off_p : 1; bool_bf last_cursor_off_p : 1; bool_bf must_be_updated_p : 1; bool_bf pseudo_window_p : 1; bool_bf fringes_outside_margins : 1; bool_bf fringes_persistent : 1; bool_bf scroll_bars_persistent : 1; bool_bf window_end_valid : 1; bool_bf redisplay : 1; bool_bf suspend_auto_hscroll : 1; bool_bf preserve_vscroll_p : 1; int vscroll; ptrdiff_t window_end_bytepos; } __attribute__ ((aligned (8))); static inline _Bool WINDOWP (Lisp_Object a) { return PSEUDOVECTORP (a, PVEC_WINDOW); } static inline void CHECK_WINDOW (Lisp_Object x) { CHECK_TYPE (WINDOWP (x), builtin_lisp_symbol (1444), x); } static inline struct window * XWINDOW (Lisp_Object a) { ((void) ( 0 && (WINDOWP (a)))); return ((struct window *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline void wset_frame (struct window *w, Lisp_Object val) { w->frame = val; } static inline void wset_next (struct window *w, Lisp_Object val) { w->next = val; } static inline void wset_prev (struct window *w, Lisp_Object val) { w->prev = val; } static inline void wset_redisplay_end_trigger (struct window *w, Lisp_Object val) { w->redisplay_end_trigger = val; } static inline void wset_mode_line_help_echo (struct window *w, Lisp_Object val) { w->mode_line_help_echo = val; } static inline void wset_new_pixel (struct window *w, Lisp_Object val) { w->new_pixel = val; } static inline void wset_vertical_scroll_bar (struct window *w, Lisp_Object val) { w->vertical_scroll_bar = val; } static inline void wset_horizontal_scroll_bar (struct window *w, Lisp_Object val) { w->horizontal_scroll_bar = val; } static inline void wset_horizontal_scroll_bar_type (struct window *w, Lisp_Object val) { w->horizontal_scroll_bar_type = val; } static inline void wset_prev_buffers (struct window *w, Lisp_Object val) { w->prev_buffers = val; } static inline void wset_next_buffers (struct window *w, Lisp_Object val) { w->next_buffers = val; } extern Lisp_Object selected_window; extern EMACS_INT window_select_count; extern Lisp_Object minibuf_window; extern Lisp_Object minibuf_selected_window; extern Lisp_Object make_window (void); extern Lisp_Object window_from_coordinates (struct frame *, int, int, enum window_part *, _Bool , _Bool ); extern void resize_frame_windows (struct frame *, int, _Bool ); extern void restore_window_configuration (Lisp_Object); extern void delete_all_child_windows (Lisp_Object); extern void grow_mini_window (struct window *, int); extern void shrink_mini_window (struct window *); extern int window_relative_x_coord (struct window *, enum window_part, int); void run_window_change_functions (void); void set_window_buffer (Lisp_Object window, Lisp_Object buffer, _Bool run_hooks_p, _Bool keep_margins_p); extern Lisp_Object echo_area_window; extern int update_mode_lines; extern int windows_or_buffers_changed; extern void wset_redisplay (struct window *w); extern void fset_redisplay (struct frame *f); extern void bset_redisplay (struct buffer *b); extern void bset_update_mode_line (struct buffer *b); extern void wset_update_mode_line (struct window *w); extern void redisplay_other_windows (void); struct glyph *get_phys_cursor_glyph (struct window *w); extern Lisp_Object Vwindow_list; extern Lisp_Object window_list (void); extern Lisp_Object window_parameter (struct window *, Lisp_Object parameter); extern struct window *decode_live_window (Lisp_Object); extern struct window *decode_any_window (Lisp_Object); extern void mark_window_cursors_off (struct window *); extern _Bool window_wants_mode_line (struct window *); extern _Bool window_wants_header_line (struct window *); extern _Bool window_wants_tab_line (struct window *); extern int window_internal_height (struct window *); enum window_body_unit { WINDOW_BODY_IN_CANONICAL_CHARS, WINDOW_BODY_IN_PIXELS, WINDOW_BODY_IN_REMAPPED_CHARS }; extern int window_body_width (struct window *w, enum window_body_unit); enum margin_unit { MARGIN_IN_LINES, MARGIN_IN_PIXELS }; extern int window_scroll_margin (struct window *, enum margin_unit); extern void temp_output_buffer_show (Lisp_Object); extern void replace_buffer_in_windows (Lisp_Object); extern void replace_buffer_in_windows_safely (Lisp_Object); extern void wset_buffer (struct window *, Lisp_Object); extern _Bool window_outdated (struct window *); extern ptrdiff_t window_point (struct window *w); extern void init_window_once (void); extern void init_window (void); extern void syms_of_window (void); static inline void output_cursor_to (struct window *w, int vpos, int hpos, int y, int x) { ((void) ( 0 && (w))); w->output_cursor.hpos = hpos; w->output_cursor.vpos = vpos; w->output_cursor.x = x; w->output_cursor.y = y; } enum vertical_scroll_bar_type { vertical_scroll_bar_none, vertical_scroll_bar_left, vertical_scroll_bar_right }; enum fullscreen_type { FULLSCREEN_NONE, FULLSCREEN_WIDTH = 0x1, FULLSCREEN_HEIGHT = 0x2, FULLSCREEN_BOTH = 0x3, FULLSCREEN_MAXIMIZED = 0x4, }; enum z_group { z_group_none, z_group_above, z_group_below, z_group_above_suspended, }; enum internal_border_part { INTERNAL_BORDER_NONE, INTERNAL_BORDER_LEFT_EDGE, INTERNAL_BORDER_TOP_LEFT_CORNER, INTERNAL_BORDER_TOP_EDGE, INTERNAL_BORDER_TOP_RIGHT_CORNER, INTERNAL_BORDER_RIGHT_EDGE, INTERNAL_BORDER_BOTTOM_RIGHT_CORNER, INTERNAL_BORDER_BOTTOM_EDGE, INTERNAL_BORDER_BOTTOM_LEFT_CORNER, }; struct frame { union vectorlike_header header; Lisp_Object name; Lisp_Object icon_name; Lisp_Object title; Lisp_Object parent_frame; Lisp_Object last_mouse_device; Lisp_Object focus_frame; Lisp_Object root_window; Lisp_Object selected_window; Lisp_Object old_selected_window; Lisp_Object minibuffer_window; Lisp_Object param_alist; Lisp_Object scroll_bars; Lisp_Object condemned_scroll_bars; Lisp_Object menu_bar_items; Lisp_Object face_hash_table; Lisp_Object menu_bar_vector; Lisp_Object buffer_predicate; Lisp_Object buffer_list; Lisp_Object buried_buffer_list; Lisp_Object tab_bar_window; Lisp_Object desired_tab_bar_string; Lisp_Object current_tab_bar_string; Lisp_Object tool_bar_position; Lisp_Object font_data; Lisp_Object tab_bar_items; Lisp_Object tool_bar_items; struct face_cache *face_cache; int last_tab_bar_item; int menu_bar_items_used; struct glyph_pool *current_pool; struct glyph_pool *desired_pool; struct glyph_matrix *desired_matrix; struct glyph_matrix *current_matrix; bool_bf glyphs_initialized_p : 1; bool_bf resized_p : 1; bool_bf default_face_done_p : 1; bool_bf already_hscrolled_p : 1; bool_bf updated_p : 1; bool_bf minimize_tab_bar_window_p : 1; bool_bf external_tool_bar : 1; bool_bf fonts_changed : 1; bool_bf cursor_type_changed : 1; bool_bf redisplay : 1; bool_bf external_menu_bar : 1; unsigned visible : 2; bool_bf iconified : 1; bool_bf garbaged : 1; bool_bf wants_modeline : 1; bool_bf auto_raise : 1; bool_bf auto_lower : 1; bool_bf no_split : 1; bool_bf explicit_name : 1; bool_bf window_change : 1; bool_bf window_state_change : 1; bool_bf mouse_moved : 1; bool_bf pointer_invisible : 1; bool_bf frozen_window_starts : 1; enum output_method output_method : 3; bool_bf tooltip : 1; enum fullscreen_type want_fullscreen : 4; enum vertical_scroll_bar_type vertical_scroll_bar_type : 2; bool_bf horizontal_scroll_bars : 1; bool_bf undecorated : 1; bool_bf override_redirect : 1; bool_bf skip_taskbar : 1; bool_bf no_focus_on_map : 1; bool_bf no_accept_focus : 1; enum z_group z_group : 2; bool_bf no_special_glyphs : 1; bool_bf can_set_window_size : 1; bool_bf after_make_frame : 1; bool_bf tab_bar_redisplayed : 1; bool_bf tab_bar_resized : 1; bool_bf tool_bar_redisplayed : 1; bool_bf tool_bar_resized : 1; bool_bf inhibit_horizontal_resize : 1; bool_bf inhibit_vertical_resize : 1; bool_bf face_change : 1; bool_bf inhibit_clear_image_cache : 1; bool_bf new_size_p : 1; bool_bf was_invisible : 1; bool_bf select_mini_window_flag : 1; int change_stamp; ptrdiff_t number_of_windows; int tab_bar_lines; int tab_bar_height; int n_tab_bar_rows; int n_tab_bar_items; int tool_bar_lines; int tool_bar_height; int n_tool_bar_rows; int n_tool_bar_items; char *decode_mode_spec_buffer; int *insert_line_cost; int *delete_line_cost; int *insert_n_lines_cost; int *delete_n_lines_cost; int text_cols, text_lines; int text_width, text_height; int total_cols, total_lines; int pixel_width, pixel_height; int new_width, new_height; int left_pos, top_pos; int win_gravity; int size_hint_flags; int border_width; int child_frame_border_width; int internal_border_width; int right_divider_width, bottom_divider_width; int left_fringe_width, right_fringe_width; int fringe_cols; int menu_bar_lines; int menu_bar_height; int column_width; int line_height; struct terminal *terminal; union output_data { struct tty_output *tty; struct x_output *x; struct w32_output *w32; struct ns_output *ns; struct pgtk_output *pgtk; struct haiku_output *haiku; } output_data; struct font_driver_list *font_driver_list; int wait_event_type; enum text_cursor_kinds desired_cursor; int cursor_width; enum text_cursor_kinds blink_off_cursor; int blink_off_cursor_width; int config_scroll_bar_width; int config_scroll_bar_cols; int config_scroll_bar_height; int config_scroll_bar_lines; intmax_t cost_calculation_baud_rate; double alpha[2]; double alpha_background; double gamma; int extra_line_spacing; unsigned long background_pixel; unsigned long foreground_pixel; } __attribute__ ((aligned (8))); static inline void fset_buffer_list (struct frame *f, Lisp_Object val) { f->buffer_list = val; } static inline void fset_buried_buffer_list (struct frame *f, Lisp_Object val) { f->buried_buffer_list = val; } static inline void fset_condemned_scroll_bars (struct frame *f, Lisp_Object val) { f->condemned_scroll_bars = val; } static inline void fset_face_hash_table (struct frame *f, Lisp_Object val) { f->face_hash_table = val; } static inline void fset_parent_frame (struct frame *f, Lisp_Object val) { f->parent_frame = val; } static inline void fset_focus_frame (struct frame *f, Lisp_Object val) { f->focus_frame = val; } static inline void fset_icon_name (struct frame *f, Lisp_Object val) { f->icon_name = val; } static inline void fset_menu_bar_items (struct frame *f, Lisp_Object val) { f->menu_bar_items = val; } static inline void fset_menu_bar_vector (struct frame *f, Lisp_Object val) { f->menu_bar_vector = val; } static inline void fset_name (struct frame *f, Lisp_Object val) { f->name = val; } static inline void fset_param_alist (struct frame *f, Lisp_Object val) { f->param_alist = val; } static inline void fset_root_window (struct frame *f, Lisp_Object val) { f->root_window = val; } static inline void fset_scroll_bars (struct frame *f, Lisp_Object val) { f->scroll_bars = val; } static inline void fset_selected_window (struct frame *f, Lisp_Object val) { f->selected_window = val; } static inline void fset_old_selected_window (struct frame *f, Lisp_Object val) { f->old_selected_window = val; } static inline void fset_title (struct frame *f, Lisp_Object val) { f->title = val; } static inline void fset_tab_bar_items (struct frame *f, Lisp_Object val) { f->tab_bar_items = val; } static inline void fset_tab_bar_window (struct frame *f, Lisp_Object val) { f->tab_bar_window = val; } static inline void fset_current_tab_bar_string (struct frame *f, Lisp_Object val) { f->current_tab_bar_string = val; } static inline void fset_desired_tab_bar_string (struct frame *f, Lisp_Object val) { f->desired_tab_bar_string = val; } static inline void fset_tool_bar_items (struct frame *f, Lisp_Object val) { f->tool_bar_items = val; } static inline void fset_tool_bar_position (struct frame *f, Lisp_Object val) { f->tool_bar_position = val; } static inline double NUMVAL (Lisp_Object x) { return NUMBERP (x) ? XFLOATINT (x) : -1; } static inline double default_pixels_per_inch_x (void) { Lisp_Object v = (CONSP (globals.f_Vdisplay_pixels_per_inch) ? XCAR (globals.f_Vdisplay_pixels_per_inch) : globals.f_Vdisplay_pixels_per_inch); return NUMVAL (v) > 0 ? NUMVAL (v) : 72.0; } static inline double default_pixels_per_inch_y (void) { Lisp_Object v = (CONSP (globals.f_Vdisplay_pixels_per_inch) ? XCDR (globals.f_Vdisplay_pixels_per_inch) : globals.f_Vdisplay_pixels_per_inch); return NUMVAL (v) > 0 ? NUMVAL (v) : 72.0; } extern _Bool frame_garbaged; static inline void SET_FRAME_VISIBLE (struct frame *f, int v) { ((void) ( 0 && (0 <= v && v <= 2))); if (v) { if (v == 1 && f->visible != 1) redisplay_other_windows (); if ((f)->garbaged) frame_garbaged = 1 ; } f->visible = v; } static inline void SET_FRAME_ICONIFIED (struct frame *f, int i) { Lisp_Object frame; ((void) ( 0 && (0 <= (i) && (i) <= 1))); f->iconified = i; ((((frame) = make_lisp_ptr (f, Lisp_Vectorlike)), ((void) ( 0 && (((((union vectorlike_header *) ((char *) XLP (frame) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))) ->size) & (( (9223372036854775807L) - (9223372036854775807L) / 2) | PVEC_TYPE_MASK)) == (( (9223372036854775807L) - (9223372036854775807L) / 2) | (PVEC_FRAME << PSEUDOVECTOR_AREA_BITS))))))); if (((f)->output_method == output_x_window)) gui_consider_frame_title (frame); } extern Lisp_Object selected_frame; extern Lisp_Object old_selected_frame; extern int frame_default_tab_bar_height; extern struct frame * decode_window_system_frame (Lisp_Object); extern struct frame *decode_live_frame (Lisp_Object); extern struct frame *decode_any_frame (Lisp_Object); extern struct frame *make_initial_frame (void); extern struct frame *make_frame ( _Bool ); extern struct frame *make_minibuffer_frame (void); extern struct frame *make_frame_without_minibuffer (Lisp_Object, struct kboard *, Lisp_Object); extern _Bool display_available (void); static inline _Bool window_system_available (struct frame *f) { return f ? ((f)->output_method == output_x_window) || 0 : display_available (); } extern void check_window_system (struct frame *); extern void frame_make_pointer_invisible (struct frame *); extern void frame_make_pointer_visible (struct frame *); extern Lisp_Object delete_frame (Lisp_Object, Lisp_Object); extern _Bool frame_inhibit_resize (struct frame *, _Bool , Lisp_Object); extern void adjust_frame_size (struct frame *, int, int, int, _Bool , Lisp_Object); extern Lisp_Object mouse_position ( _Bool ); extern void frame_size_history_plain (struct frame *, Lisp_Object); extern void frame_size_history_extra (struct frame *, Lisp_Object, int, int, int, int, int, int); extern Lisp_Object Vframe_list; static inline int frame_dimension (int x) { return x; } static inline int FRAME_FRINGE_COLS (struct frame *f) { return frame_dimension (f->fringe_cols); } static inline int FRAME_LEFT_FRINGE_WIDTH (struct frame *f) { return frame_dimension (f->left_fringe_width); } static inline int FRAME_RIGHT_FRINGE_WIDTH (struct frame *f) { return frame_dimension (f->right_fringe_width); } static inline int FRAME_TOTAL_FRINGE_WIDTH (struct frame *f) { return FRAME_LEFT_FRINGE_WIDTH (f) + FRAME_RIGHT_FRINGE_WIDTH (f); } static inline int FRAME_CHILD_FRAME_BORDER_WIDTH (struct frame *f) { return frame_dimension (f->child_frame_border_width); } static inline int FRAME_INTERNAL_BORDER_WIDTH (struct frame *f) { return ((NILP ((f)->parent_frame) ? ((void *)0) : (((void) ( 0 && (FRAMEP ((f)->parent_frame)))), ((struct frame *) ((char *) XLP ((f)->parent_frame) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))))) ? (FRAME_CHILD_FRAME_BORDER_WIDTH(f) >= 0 ? FRAME_CHILD_FRAME_BORDER_WIDTH(f) : frame_dimension (f->internal_border_width)) : frame_dimension (f->internal_border_width)); } static inline int FRAME_RIGHT_DIVIDER_WIDTH (struct frame *f) { return frame_dimension (f->right_divider_width); } static inline int FRAME_BOTTOM_DIVIDER_WIDTH (struct frame *f) { return frame_dimension (f->bottom_divider_width); } static inline struct face * FACE_FROM_ID (struct frame *f, int id) { ((void) ( 0 && (0 <= id && id < (f)->face_cache->used))); return (f)->face_cache->faces_by_id[id]; } static inline struct face * FACE_FROM_ID_OR_NULL (struct frame *f, int id) { int used = (f)->face_cache->used; ((0 <= used) ? (void) 0 : __builtin_unreachable ()); return 0 <= id && id < used ? (f)->face_cache->faces_by_id[id] : ((void *)0) ; } static inline struct image * IMAGE_FROM_ID (struct frame *f, int id) { ((void) ( 0 && (0 <= id && id < ((f)->terminal->image_cache)->used))); return ((f)->terminal->image_cache)->images[id]; } static inline struct image * IMAGE_OPT_FROM_ID (struct frame *f, int id) { int used = ((f)->terminal->image_cache)->used; ((0 <= used) ? (void) 0 : __builtin_unreachable ()); return 0 <= id && id < used ? ((f)->terminal->image_cache)->images[id] : ((void *)0) ; } extern void gui_set_frame_parameters (struct frame *, Lisp_Object); extern void gui_set_fullscreen (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_line_spacing (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_screen_gamma (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_font (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_font_backend (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_left_fringe (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_right_fringe (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_border_width (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_right_divider_width (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_bottom_divider_width (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_visibility (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_autoraise (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_autolower (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_unsplittable (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_vertical_scroll_bars (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_horizontal_scroll_bars (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_scroll_bar_width (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_scroll_bar_height (struct frame *, Lisp_Object, Lisp_Object); extern long gui_figure_window_size (struct frame *, Lisp_Object, _Bool , _Bool ); extern void gui_set_alpha (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_alpha_background (struct frame *, Lisp_Object, Lisp_Object); extern void gui_set_no_special_glyphs (struct frame *, Lisp_Object, Lisp_Object); extern void validate_x_resource_name (void); extern Lisp_Object gui_display_get_resource (Display_Info *, Lisp_Object attribute, Lisp_Object class, Lisp_Object component, Lisp_Object subclass); extern void set_frame_menubar (struct frame *f, _Bool deep_p); extern void frame_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y); extern void free_frame_menubar (struct frame *); extern _Bool frame_ancestor_p (struct frame *af, struct frame *df); extern enum internal_border_part frame_internal_border_part (struct frame *f, int x, int y); extern void x_wm_set_icon_position (struct frame *, int, int); extern const char *x_get_resource_string (const char *, const char *); extern void x_sync (struct frame *); static inline void gui_set_bitmap_icon (struct frame *f) { Lisp_Object obj = assq_no_quit (builtin_lisp_symbol (740), f->param_alist); if (CONSP (obj) && !NILP (XCDR (obj)) && ((f)->terminal)->set_bitmap_icon_hook) ((f)->terminal)->set_bitmap_icon_hook (f, XCDR (obj)); } static inline void flush_frame (struct frame *f) { struct redisplay_interface *rif = ((f)->terminal->rif); if (rif && rif->flush_display) rif->flush_display (f); } struct MonitorInfo { Emacs_Rectangle geom, work; int mm_width, mm_height; char *name; }; extern void free_monitors (struct MonitorInfo *monitors, int n_monitors); extern Lisp_Object make_monitor_attribute_list (struct MonitorInfo *monitors, int n_monitors, int primary_monitor, Lisp_Object monitor_frames, const char *source); struct interval { ptrdiff_t total_length; ptrdiff_t position; struct interval *left; struct interval *right; union { struct interval *interval; Lisp_Object obj; } up; bool_bf up_obj : 1; bool_bf gcmarkbit : 1; bool_bf write_protect : 1; bool_bf visible : 1; bool_bf front_sticky : 1; bool_bf rear_sticky : 1; Lisp_Object plist; }; static inline void set_interval_object (INTERVAL i, Lisp_Object obj) { ((void) ( 0 && (BUFFERP (obj) || STRINGP (obj)))); i->up_obj = 1; i->up.obj = obj; } static inline void set_interval_parent (INTERVAL i, INTERVAL parent) { i->up_obj = 0 ; i->up.interval = parent; } static inline void set_interval_plist (INTERVAL i, Lisp_Object plist) { i->plist = plist; } extern INTERVAL make_interval (void) __attribute__ ((__returns_nonnull__)); extern INTERVAL create_root_interval (Lisp_Object); extern void copy_properties (INTERVAL, INTERVAL); extern _Bool intervals_equal (INTERVAL, INTERVAL); extern void traverse_intervals (INTERVAL, ptrdiff_t, void (*) (INTERVAL, Lisp_Object), Lisp_Object); extern void traverse_intervals_noorder (INTERVAL, void (*) (INTERVAL, void *), void *); extern INTERVAL split_interval_right (INTERVAL, ptrdiff_t) __attribute__ ((__returns_nonnull__)); extern INTERVAL split_interval_left (INTERVAL, ptrdiff_t) __attribute__ ((__returns_nonnull__)); extern INTERVAL find_interval (INTERVAL, ptrdiff_t); extern INTERVAL next_interval (INTERVAL); extern INTERVAL previous_interval (INTERVAL); extern INTERVAL merge_interval_left (INTERVAL); extern void offset_intervals (struct buffer *, ptrdiff_t, ptrdiff_t); extern void graft_intervals_into_buffer (INTERVAL, ptrdiff_t, ptrdiff_t, struct buffer *, _Bool ); extern void verify_interval_modification (struct buffer *, ptrdiff_t, ptrdiff_t); extern INTERVAL balance_intervals (INTERVAL); extern void copy_intervals_to_string (Lisp_Object, struct buffer *, ptrdiff_t, ptrdiff_t); extern INTERVAL copy_intervals (INTERVAL, ptrdiff_t, ptrdiff_t); extern _Bool compare_string_intervals (Lisp_Object, Lisp_Object); extern Lisp_Object textget (Lisp_Object, Lisp_Object); extern Lisp_Object lookup_char_property (Lisp_Object, Lisp_Object, _Bool ); extern void move_if_not_intangible (ptrdiff_t); extern _Bool get_property_and_range (ptrdiff_t, Lisp_Object, Lisp_Object *, ptrdiff_t *, ptrdiff_t *, Lisp_Object); extern Lisp_Object get_local_map (ptrdiff_t, struct buffer *, Lisp_Object); extern INTERVAL update_interval (INTERVAL, ptrdiff_t); extern void set_intervals_multibyte ( _Bool ); extern INTERVAL validate_interval_range (Lisp_Object, Lisp_Object *, Lisp_Object *, _Bool ); extern INTERVAL interval_of (ptrdiff_t, Lisp_Object); extern int invisible_prop (Lisp_Object, Lisp_Object); extern Lisp_Object copy_text_properties (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern Lisp_Object set_text_properties (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); extern void set_text_properties_1 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, INTERVAL); Lisp_Object text_property_list (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object); void add_text_properties_from_list (Lisp_Object, Lisp_Object, Lisp_Object); Lisp_Object extend_property_ranges (Lisp_Object, Lisp_Object, Lisp_Object); Lisp_Object get_char_property_and_overlay (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object *); extern int text_property_stickiness (Lisp_Object prop, Lisp_Object pos, Lisp_Object buffer); extern void syms_of_textprop (void); enum { PDUMPER_NO_OBJECT = -1 }; extern void dump_fingerprint (FILE *output, const char *label, unsigned char const fingerp[sizeof fingerprint]); extern void pdumper_remember_scalar_impl (void *data, ptrdiff_t nbytes); static inline void pdumper_remember_scalar (void *data, ptrdiff_t nbytes) { pdumper_remember_scalar_impl (data, nbytes); } extern void pdumper_remember_lv_ptr_raw_impl (void *ptr, enum Lisp_Type type); static inline void pdumper_remember_lv_ptr_raw (void *ptr, enum Lisp_Type type) { pdumper_remember_lv_ptr_raw_impl (ptr, type); } typedef void (*pdumper_hook)(void); extern void pdumper_do_now_and_after_load_impl (pdumper_hook hook); extern void pdumper_do_now_and_after_late_load_impl (pdumper_hook hook); static inline void pdumper_do_now_and_after_load (pdumper_hook hook) { pdumper_do_now_and_after_load_impl (hook); } static inline void pdumper_do_now_and_after_late_load (pdumper_hook hook) { pdumper_do_now_and_after_late_load_impl (hook); } enum pdumper_load_result { PDUMPER_LOAD_SUCCESS, PDUMPER_NOT_LOADED , PDUMPER_LOAD_FILE_NOT_FOUND, PDUMPER_LOAD_BAD_FILE_TYPE, PDUMPER_LOAD_FAILED_DUMP, PDUMPER_LOAD_OOM, PDUMPER_LOAD_VERSION_MISMATCH, PDUMPER_LOAD_ERROR }; int pdumper_load (const char *dump_filename, char *argv0); struct pdumper_loaded_dump { uintptr_t start; uintptr_t end; }; extern struct pdumper_loaded_dump dump_public; static inline __attribute__ ((__const__)) _Bool pdumper_object_p (const void *obj) { uintptr_t obj_addr = (uintptr_t) obj; return dump_public.start <= obj_addr && obj_addr < dump_public.end; } extern _Bool pdumper_cold_object_p_impl (const void *obj); static inline __attribute__ ((__const__)) _Bool pdumper_cold_object_p (const void *obj) { return pdumper_cold_object_p_impl (obj); } extern int pdumper_find_object_type_impl (const void *obj); static inline __attribute__ ((__const__)) int pdumper_find_object_type (const void *obj) { return pdumper_find_object_type_impl (obj); } static inline _Bool pdumper_valid_object_type_p (int type) { return 0 <= type; } static inline __attribute__ ((__const__)) _Bool pdumper_object_p_precise (const void *obj) { return pdumper_valid_object_type_p (pdumper_find_object_type (obj)); } extern _Bool pdumper_marked_p_impl (const void *obj); static inline _Bool pdumper_marked_p (const void *obj) { return pdumper_marked_p_impl (obj); } extern void pdumper_set_marked_impl (const void *obj); static inline void pdumper_set_marked (const void *obj) { pdumper_set_marked_impl (obj); } extern void pdumper_clear_marks_impl (void); static inline void pdumper_clear_marks (void) { pdumper_clear_marks_impl (); } extern void pdumper_record_wd (const char *); void init_pdumper_once (void); void syms_of_pdumper (void); extern FILE *emacs_fopen (char const *, char const *) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))); extern void errputc (int); extern void errwrite (void const *, ptrdiff_t); extern void close_output_streams (void); typedef unsigned long int mp_limb_t; typedef long int mp_limb_signed_t; typedef unsigned long int mp_bitcnt_t; typedef struct { int _mp_alloc; int _mp_size; mp_limb_t *_mp_d; } __mpz_struct; typedef __mpz_struct MP_INT; typedef __mpz_struct mpz_t[1]; typedef mp_limb_t * mp_ptr; typedef const mp_limb_t * mp_srcptr; typedef long int mp_size_t; typedef long int mp_exp_t; typedef struct { __mpz_struct _mp_num; __mpz_struct _mp_den; } __mpq_struct; typedef __mpq_struct MP_RAT; typedef __mpq_struct mpq_t[1]; typedef struct { int _mp_prec; int _mp_size; mp_exp_t _mp_exp; mp_limb_t *_mp_d; } __mpf_struct; typedef __mpf_struct mpf_t[1]; typedef enum { GMP_RAND_ALG_DEFAULT = 0, GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT } gmp_randalg_t; typedef struct { mpz_t _mp_seed; gmp_randalg_t _mp_alg; union { void *_mp_lc; } _mp_algdata; } __gmp_randstate_struct; typedef __gmp_randstate_struct gmp_randstate_t[1]; typedef const __mpz_struct *mpz_srcptr; typedef __mpz_struct *mpz_ptr; typedef const __mpf_struct *mpf_srcptr; typedef __mpf_struct *mpf_ptr; typedef const __mpq_struct *mpq_srcptr; typedef __mpq_struct *mpq_ptr; void __gmp_set_memory_functions (void *(*) (size_t), void *(*) (void *, size_t, size_t), void (*) (void *, size_t)) ; void __gmp_get_memory_functions (void *(**) (size_t), void *(**) (void *, size_t, size_t), void (**) (void *, size_t)) ; extern const int __gmp_bits_per_limb; extern int __gmp_errno; extern const char * const __gmp_version; void __gmp_randinit (gmp_randstate_t, gmp_randalg_t, ...); void __gmp_randinit_default (gmp_randstate_t); void __gmp_randinit_lc_2exp (gmp_randstate_t, mpz_srcptr, unsigned long int, mp_bitcnt_t); int __gmp_randinit_lc_2exp_size (gmp_randstate_t, mp_bitcnt_t); void __gmp_randinit_mt (gmp_randstate_t); void __gmp_randinit_set (gmp_randstate_t, const __gmp_randstate_struct *); void __gmp_randseed (gmp_randstate_t, mpz_srcptr); void __gmp_randseed_ui (gmp_randstate_t, unsigned long int); void __gmp_randclear (gmp_randstate_t); unsigned long __gmp_urandomb_ui (gmp_randstate_t, unsigned long); unsigned long __gmp_urandomm_ui (gmp_randstate_t, unsigned long); int __gmp_asprintf (char **, const char *, ...); int __gmp_fprintf (FILE *, const char *, ...); int __gmp_printf (const char *, ...); int __gmp_snprintf (char *, size_t, const char *, ...); int __gmp_sprintf (char *, const char *, ...); int __gmp_vasprintf (char **, const char *, va_list); int __gmp_vfprintf (FILE *, const char *, va_list); int __gmp_vprintf (const char *, va_list); int __gmp_vsnprintf (char *, size_t, const char *, va_list); int __gmp_vsprintf (char *, const char *, va_list); int __gmp_fscanf (FILE *, const char *, ...); int __gmp_scanf (const char *, ...); int __gmp_sscanf (const char *, const char *, ...); int __gmp_vfscanf (FILE *, const char *, va_list); int __gmp_vscanf (const char *, va_list); int __gmp_vsscanf (const char *, const char *, va_list); void *__gmpz_realloc (mpz_ptr, mp_size_t); void __gmpz_abs (mpz_ptr, mpz_srcptr); void __gmpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_array_init (mpz_ptr, mp_size_t, mp_size_t); void __gmpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int); void __gmpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); unsigned long int __gmpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); unsigned long int __gmpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); unsigned long int __gmpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); unsigned long int __gmpz_cdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__)); void __gmpz_clear (mpz_ptr); void __gmpz_clears (mpz_ptr, ...); void __gmpz_clrbit (mpz_ptr, mp_bitcnt_t); int __gmpz_cmp (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_cmp_d (mpz_srcptr, double) __attribute__ ((__pure__)); int __gmpz_cmp_si (mpz_srcptr, signed long int) __attribute__ ((__pure__)); int __gmpz_cmp_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__)); int __gmpz_cmpabs (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_cmpabs_d (mpz_srcptr, double) __attribute__ ((__pure__)); int __gmpz_cmpabs_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__)); void __gmpz_com (mpz_ptr, mpz_srcptr); void __gmpz_combit (mpz_ptr, mp_bitcnt_t); int __gmpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); int __gmpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __attribute__ ((__pure__)); void __gmpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long); int __gmpz_divisible_p (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_divisible_ui_p (mpz_srcptr, unsigned long) __attribute__ ((__pure__)); int __gmpz_divisible_2exp_p (mpz_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); void __gmpz_dump (mpz_srcptr); void *__gmpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr); void __gmpz_fac_ui (mpz_ptr, unsigned long int); void __gmpz_2fac_ui (mpz_ptr, unsigned long int); void __gmpz_mfac_uiui (mpz_ptr, unsigned long int, unsigned long int); void __gmpz_primorial_ui (mpz_ptr, unsigned long int); void __gmpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); unsigned long int __gmpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); unsigned long int __gmpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); unsigned long int __gmpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); unsigned long int __gmpz_fdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__)); void __gmpz_fib_ui (mpz_ptr, unsigned long int); void __gmpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int); int __gmpz_fits_sint_p (mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_fits_slong_p (mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_fits_sshort_p (mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_fits_uint_p (mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_fits_ulong_p (mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_fits_ushort_p (mpz_srcptr) __attribute__ ((__pure__)); void __gmpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr); unsigned long int __gmpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); double __gmpz_get_d (mpz_srcptr) __attribute__ ((__pure__)); double __gmpz_get_d_2exp (signed long int *, mpz_srcptr); long int __gmpz_get_si (mpz_srcptr) __attribute__ ((__pure__)); char *__gmpz_get_str (char *, int, mpz_srcptr); unsigned long int __gmpz_get_ui (mpz_srcptr) __attribute__ ((__pure__)); mp_limb_t __gmpz_getlimbn (mpz_srcptr, mp_size_t) __attribute__ ((__pure__)); mp_bitcnt_t __gmpz_hamdist (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__)); void __gmpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *); void __gmpz_init (mpz_ptr) ; void __gmpz_init2 (mpz_ptr, mp_bitcnt_t); void __gmpz_inits (mpz_ptr, ...) ; void __gmpz_init_set (mpz_ptr, mpz_srcptr); void __gmpz_init_set_d (mpz_ptr, double); void __gmpz_init_set_si (mpz_ptr, signed long int); int __gmpz_init_set_str (mpz_ptr, const char *, int); void __gmpz_init_set_ui (mpz_ptr, unsigned long int); size_t __gmpz_inp_raw (mpz_ptr, FILE *); size_t __gmpz_inp_str (mpz_ptr, FILE *, int); int __gmpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr); int __gmpz_jacobi (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_kronecker_si (mpz_srcptr, long) __attribute__ ((__pure__)); int __gmpz_kronecker_ui (mpz_srcptr, unsigned long) __attribute__ ((__pure__)); int __gmpz_si_kronecker (long, mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_ui_kronecker (unsigned long, mpz_srcptr) __attribute__ ((__pure__)); void __gmpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long); void __gmpz_lucnum_ui (mpz_ptr, unsigned long int); void __gmpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int); int __gmpz_millerrabin (mpz_srcptr, int) __attribute__ ((__pure__)); void __gmpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_mul_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); void __gmpz_mul_si (mpz_ptr, mpz_srcptr, long int); void __gmpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_neg (mpz_ptr, mpz_srcptr); void __gmpz_nextprime (mpz_ptr, mpz_srcptr); size_t __gmpz_out_raw (FILE *, mpz_srcptr); size_t __gmpz_out_str (FILE *, int, mpz_srcptr); int __gmpz_perfect_power_p (mpz_srcptr) __attribute__ ((__pure__)); int __gmpz_perfect_square_p (mpz_srcptr) __attribute__ ((__pure__)); mp_bitcnt_t __gmpz_popcount (mpz_srcptr) __attribute__ ((__pure__)); void __gmpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr); void __gmpz_powm_sec (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr); void __gmpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr); int __gmpz_probab_prime_p (mpz_srcptr, int) __attribute__ ((__pure__)); void __gmpz_random (mpz_ptr, mp_size_t); void __gmpz_random2 (mpz_ptr, mp_size_t); void __gmpz_realloc2 (mpz_ptr, mp_bitcnt_t); mp_bitcnt_t __gmpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr); int __gmpz_root (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_rootrem (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_rrandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t); mp_bitcnt_t __gmpz_scan0 (mpz_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); mp_bitcnt_t __gmpz_scan1 (mpz_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); void __gmpz_set (mpz_ptr, mpz_srcptr); void __gmpz_set_d (mpz_ptr, double); void __gmpz_set_f (mpz_ptr, mpf_srcptr); void __gmpz_set_q (mpz_ptr, mpq_srcptr); void __gmpz_set_si (mpz_ptr, signed long int); int __gmpz_set_str (mpz_ptr, const char *, int); void __gmpz_set_ui (mpz_ptr, unsigned long int); void __gmpz_setbit (mpz_ptr, mp_bitcnt_t); size_t __gmpz_size (mpz_srcptr) __attribute__ ((__pure__)); size_t __gmpz_sizeinbase (mpz_srcptr, int) __attribute__ ((__pure__)); void __gmpz_sqrt (mpz_ptr, mpz_srcptr); void __gmpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr); void __gmpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr); void __gmpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_swap (mpz_ptr, mpz_ptr) ; unsigned long int __gmpz_tdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__)); void __gmpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); unsigned long int __gmpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr); unsigned long int __gmpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int); void __gmpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr); void __gmpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t); unsigned long int __gmpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int); int __gmpz_tstbit (mpz_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); void __gmpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int); void __gmpz_urandomb (mpz_ptr, gmp_randstate_t, mp_bitcnt_t); void __gmpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_srcptr); void __gmpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr); mp_srcptr __gmpz_limbs_read (mpz_srcptr); mp_ptr __gmpz_limbs_write (mpz_ptr, mp_size_t); mp_ptr __gmpz_limbs_modify (mpz_ptr, mp_size_t); void __gmpz_limbs_finish (mpz_ptr, mp_size_t); mpz_srcptr __gmpz_roinit_n (mpz_ptr, mp_srcptr, mp_size_t); void __gmpq_abs (mpq_ptr, mpq_srcptr); void __gmpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr); void __gmpq_canonicalize (mpq_ptr); void __gmpq_clear (mpq_ptr); void __gmpq_clears (mpq_ptr, ...); int __gmpq_cmp (mpq_srcptr, mpq_srcptr) __attribute__ ((__pure__)); int __gmpq_cmp_si (mpq_srcptr, long, unsigned long) __attribute__ ((__pure__)); int __gmpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __attribute__ ((__pure__)); int __gmpq_cmp_z (mpq_srcptr, mpz_srcptr) __attribute__ ((__pure__)); void __gmpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr); void __gmpq_div_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t); int __gmpq_equal (mpq_srcptr, mpq_srcptr) __attribute__ ((__pure__)); void __gmpq_get_num (mpz_ptr, mpq_srcptr); void __gmpq_get_den (mpz_ptr, mpq_srcptr); double __gmpq_get_d (mpq_srcptr) __attribute__ ((__pure__)); char *__gmpq_get_str (char *, int, mpq_srcptr); void __gmpq_init (mpq_ptr); void __gmpq_inits (mpq_ptr, ...); size_t __gmpq_inp_str (mpq_ptr, FILE *, int); void __gmpq_inv (mpq_ptr, mpq_srcptr); void __gmpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr); void __gmpq_mul_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t); void __gmpq_neg (mpq_ptr, mpq_srcptr); size_t __gmpq_out_str (FILE *, int, mpq_srcptr); void __gmpq_set (mpq_ptr, mpq_srcptr); void __gmpq_set_d (mpq_ptr, double); void __gmpq_set_den (mpq_ptr, mpz_srcptr); void __gmpq_set_f (mpq_ptr, mpf_srcptr); void __gmpq_set_num (mpq_ptr, mpz_srcptr); void __gmpq_set_si (mpq_ptr, signed long int, unsigned long int); int __gmpq_set_str (mpq_ptr, const char *, int); void __gmpq_set_ui (mpq_ptr, unsigned long int, unsigned long int); void __gmpq_set_z (mpq_ptr, mpz_srcptr); void __gmpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr); void __gmpq_swap (mpq_ptr, mpq_ptr) ; void __gmpf_abs (mpf_ptr, mpf_srcptr); void __gmpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr); void __gmpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int); void __gmpf_ceil (mpf_ptr, mpf_srcptr); void __gmpf_clear (mpf_ptr); void __gmpf_clears (mpf_ptr, ...); int __gmpf_cmp (mpf_srcptr, mpf_srcptr) __attribute__ ((__pure__)); int __gmpf_cmp_z (mpf_srcptr, mpz_srcptr) __attribute__ ((__pure__)); int __gmpf_cmp_d (mpf_srcptr, double) __attribute__ ((__pure__)); int __gmpf_cmp_si (mpf_srcptr, signed long int) __attribute__ ((__pure__)); int __gmpf_cmp_ui (mpf_srcptr, unsigned long int) __attribute__ ((__pure__)); void __gmpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr); void __gmpf_div_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t); void __gmpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int); void __gmpf_dump (mpf_srcptr); int __gmpf_eq (mpf_srcptr, mpf_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); int __gmpf_fits_sint_p (mpf_srcptr) __attribute__ ((__pure__)); int __gmpf_fits_slong_p (mpf_srcptr) __attribute__ ((__pure__)); int __gmpf_fits_sshort_p (mpf_srcptr) __attribute__ ((__pure__)); int __gmpf_fits_uint_p (mpf_srcptr) __attribute__ ((__pure__)); int __gmpf_fits_ulong_p (mpf_srcptr) __attribute__ ((__pure__)); int __gmpf_fits_ushort_p (mpf_srcptr) __attribute__ ((__pure__)); void __gmpf_floor (mpf_ptr, mpf_srcptr); double __gmpf_get_d (mpf_srcptr) __attribute__ ((__pure__)); double __gmpf_get_d_2exp (signed long int *, mpf_srcptr); mp_bitcnt_t __gmpf_get_default_prec (void) __attribute__ ((__pure__)); mp_bitcnt_t __gmpf_get_prec (mpf_srcptr) __attribute__ ((__pure__)); long __gmpf_get_si (mpf_srcptr) __attribute__ ((__pure__)); char *__gmpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr); unsigned long __gmpf_get_ui (mpf_srcptr) __attribute__ ((__pure__)); void __gmpf_init (mpf_ptr); void __gmpf_init2 (mpf_ptr, mp_bitcnt_t); void __gmpf_inits (mpf_ptr, ...); void __gmpf_init_set (mpf_ptr, mpf_srcptr); void __gmpf_init_set_d (mpf_ptr, double); void __gmpf_init_set_si (mpf_ptr, signed long int); int __gmpf_init_set_str (mpf_ptr, const char *, int); void __gmpf_init_set_ui (mpf_ptr, unsigned long int); size_t __gmpf_inp_str (mpf_ptr, FILE *, int); int __gmpf_integer_p (mpf_srcptr) __attribute__ ((__pure__)); void __gmpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr); void __gmpf_mul_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t); void __gmpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int); void __gmpf_neg (mpf_ptr, mpf_srcptr); size_t __gmpf_out_str (FILE *, int, size_t, mpf_srcptr); void __gmpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int); void __gmpf_random2 (mpf_ptr, mp_size_t, mp_exp_t); void __gmpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr); void __gmpf_set (mpf_ptr, mpf_srcptr); void __gmpf_set_d (mpf_ptr, double); void __gmpf_set_default_prec (mp_bitcnt_t) ; void __gmpf_set_prec (mpf_ptr, mp_bitcnt_t); void __gmpf_set_prec_raw (mpf_ptr, mp_bitcnt_t) ; void __gmpf_set_q (mpf_ptr, mpq_srcptr); void __gmpf_set_si (mpf_ptr, signed long int); int __gmpf_set_str (mpf_ptr, const char *, int); void __gmpf_set_ui (mpf_ptr, unsigned long int); void __gmpf_set_z (mpf_ptr, mpz_srcptr); size_t __gmpf_size (mpf_srcptr) __attribute__ ((__pure__)); void __gmpf_sqrt (mpf_ptr, mpf_srcptr); void __gmpf_sqrt_ui (mpf_ptr, unsigned long int); void __gmpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr); void __gmpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int); void __gmpf_swap (mpf_ptr, mpf_ptr) ; void __gmpf_trunc (mpf_ptr, mpf_srcptr); void __gmpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr); void __gmpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr); void __gmpf_urandomb (mpf_t, gmp_randstate_t, mp_bitcnt_t); mp_limb_t __gmpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); mp_limb_t __gmpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) ; mp_limb_t __gmpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); mp_limb_t __gmpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); int __gmpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __attribute__ ((__pure__)); int __gmpn_zero_p (mp_srcptr, mp_size_t) __attribute__ ((__pure__)); void __gmpn_divexact_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); mp_limb_t __gmpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); mp_limb_t __gmpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t); mp_limb_t __gmpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t); mp_limb_t __gmpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr); mp_limb_t __gmpn_div_qr_1 (mp_ptr, mp_limb_t *, mp_srcptr, mp_size_t, mp_limb_t); mp_limb_t __gmpn_div_qr_2 (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr); mp_size_t __gmpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t); mp_limb_t __gmpn_gcd_11 (mp_limb_t, mp_limb_t) __attribute__ ((__pure__)); mp_limb_t __gmpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __attribute__ ((__pure__)); mp_limb_t __gmpn_gcdext_1 (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t); mp_size_t __gmpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t); size_t __gmpn_get_str (unsigned char *, int, mp_ptr, mp_size_t); mp_bitcnt_t __gmpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __attribute__ ((__pure__)); mp_limb_t __gmpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); mp_limb_t __gmpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __attribute__ ((__pure__)); mp_limb_t __gmpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); mp_limb_t __gmpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); void __gmpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); void __gmpn_sqr (mp_ptr, mp_srcptr, mp_size_t); mp_limb_t __gmpn_neg (mp_ptr, mp_srcptr, mp_size_t); void __gmpn_com (mp_ptr, mp_srcptr, mp_size_t); int __gmpn_perfect_square_p (mp_srcptr, mp_size_t) __attribute__ ((__pure__)); int __gmpn_perfect_power_p (mp_srcptr, mp_size_t) __attribute__ ((__pure__)); mp_bitcnt_t __gmpn_popcount (mp_srcptr, mp_size_t) __attribute__ ((__pure__)); mp_size_t __gmpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); mp_limb_t __gmpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __attribute__ ((__pure__)); void __gmpn_random (mp_ptr, mp_size_t); void __gmpn_random2 (mp_ptr, mp_size_t); mp_limb_t __gmpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int); mp_bitcnt_t __gmpn_scan0 (mp_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); mp_bitcnt_t __gmpn_scan1 (mp_srcptr, mp_bitcnt_t) __attribute__ ((__pure__)); mp_size_t __gmpn_set_str (mp_ptr, const unsigned char *, size_t, int); size_t __gmpn_sizeinbase (mp_srcptr, mp_size_t, int); mp_size_t __gmpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t); mp_limb_t __gmpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); mp_limb_t __gmpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) ; mp_limb_t __gmpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); mp_limb_t __gmpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t); void __gmpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t); void __gmpn_and_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); void __gmpn_andn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); void __gmpn_nand_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); void __gmpn_ior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); void __gmpn_iorn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); void __gmpn_nior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); void __gmpn_xor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); void __gmpn_xnor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); void __gmpn_copyi (mp_ptr, mp_srcptr, mp_size_t); void __gmpn_copyd (mp_ptr, mp_srcptr, mp_size_t); void __gmpn_zero (mp_ptr, mp_size_t); mp_limb_t __gmpn_cnd_add_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); mp_limb_t __gmpn_cnd_sub_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t); mp_limb_t __gmpn_sec_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); mp_size_t __gmpn_sec_add_1_itch (mp_size_t) __attribute__ ((__pure__)); mp_limb_t __gmpn_sec_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr); mp_size_t __gmpn_sec_sub_1_itch (mp_size_t) __attribute__ ((__pure__)); void __gmpn_cnd_swap (mp_limb_t, volatile mp_limb_t *, volatile mp_limb_t *, mp_size_t); void __gmpn_sec_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); mp_size_t __gmpn_sec_mul_itch (mp_size_t, mp_size_t) __attribute__ ((__pure__)); void __gmpn_sec_sqr (mp_ptr, mp_srcptr, mp_size_t, mp_ptr); mp_size_t __gmpn_sec_sqr_itch (mp_size_t) __attribute__ ((__pure__)); void __gmpn_sec_powm (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_bitcnt_t, mp_srcptr, mp_size_t, mp_ptr); mp_size_t __gmpn_sec_powm_itch (mp_size_t, mp_bitcnt_t, mp_size_t) __attribute__ ((__pure__)); void __gmpn_sec_tabselect (volatile mp_limb_t *, volatile const mp_limb_t *, mp_size_t, mp_size_t, mp_size_t); mp_limb_t __gmpn_sec_div_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); mp_size_t __gmpn_sec_div_qr_itch (mp_size_t, mp_size_t) __attribute__ ((__pure__)); void __gmpn_sec_div_r (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr); mp_size_t __gmpn_sec_div_r_itch (mp_size_t, mp_size_t) __attribute__ ((__pure__)); int __gmpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitcnt_t, mp_ptr); mp_size_t __gmpn_sec_invert_itch (mp_size_t) __attribute__ ((__pure__)); extern __inline__ __attribute__ ((__gnu_inline__)) void __gmpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) { if (__gmp_w != __gmp_u) __gmpz_set (__gmp_w, __gmp_u); __gmp_w->_mp_size = ((__gmp_w->_mp_size) >= 0 ? (__gmp_w->_mp_size) : -(__gmp_w->_mp_size)); } extern __inline__ __attribute__ ((__gnu_inline__)) int __gmpz_fits_uint_p (mpz_srcptr __gmp_z) { mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (0x7fffffff * 2U + 1U)));; } extern __inline__ __attribute__ ((__gnu_inline__)) int __gmpz_fits_ulong_p (mpz_srcptr __gmp_z) { mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (0x7fffffffffffffffL * 2UL + 1UL)));; } extern __inline__ __attribute__ ((__gnu_inline__)) int __gmpz_fits_ushort_p (mpz_srcptr __gmp_z) { mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (0x7fff * 2 + 1)));; } extern __inline__ __attribute__ ((__gnu_inline__)) unsigned long __gmpz_get_ui (mpz_srcptr __gmp_z) { mp_ptr __gmp_p = __gmp_z->_mp_d; mp_size_t __gmp_n = __gmp_z->_mp_size; mp_limb_t __gmp_l = __gmp_p[0]; return (__gmp_n != 0 ? __gmp_l : 0); } extern __inline__ __attribute__ ((__gnu_inline__)) mp_limb_t __gmpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) { mp_limb_t __gmp_result = 0; if (__builtin_expect ((__gmp_n >= 0 && __gmp_n < ((__gmp_z->_mp_size) >= 0 ? (__gmp_z->_mp_size) : -(__gmp_z->_mp_size))) != 0, 1)) __gmp_result = __gmp_z->_mp_d[__gmp_n]; return __gmp_result; } extern __inline__ __attribute__ ((__gnu_inline__)) void __gmpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u) { if (__gmp_w != __gmp_u) __gmpz_set (__gmp_w, __gmp_u); __gmp_w->_mp_size = - __gmp_w->_mp_size; } extern __inline__ __attribute__ ((__gnu_inline__)) int __gmpz_perfect_square_p (mpz_srcptr __gmp_a) { mp_size_t __gmp_asize; int __gmp_result; __gmp_asize = __gmp_a->_mp_size; __gmp_result = (__gmp_asize >= 0); if (__builtin_expect ((__gmp_asize > 0) != 0, 1)) __gmp_result = __gmpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize); return __gmp_result; } extern __inline__ __attribute__ ((__gnu_inline__)) mp_bitcnt_t __gmpz_popcount (mpz_srcptr __gmp_u) { mp_size_t __gmp_usize; mp_bitcnt_t __gmp_result; __gmp_usize = __gmp_u->_mp_size; __gmp_result = (__gmp_usize < 0 ? ~ ((mp_bitcnt_t) (0)) : ((mp_bitcnt_t) (0))); if (__builtin_expect ((__gmp_usize > 0) != 0, 1)) __gmp_result = __gmpn_popcount (__gmp_u->_mp_d, __gmp_usize); return __gmp_result; } extern __inline__ __attribute__ ((__gnu_inline__)) void __gmpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u) { __gmpz_tdiv_q (__gmp_w, (&((__gmp_u)->_mp_num)), (&((__gmp_u)->_mp_den))); } extern __inline__ __attribute__ ((__gnu_inline__)) size_t __gmpz_size (mpz_srcptr __gmp_z) { return ((__gmp_z->_mp_size) >= 0 ? (__gmp_z->_mp_size) : -(__gmp_z->_mp_size)); } extern __inline__ __attribute__ ((__gnu_inline__)) void __gmpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) { if (__gmp_w != __gmp_u) __gmpq_set (__gmp_w, __gmp_u); __gmp_w->_mp_num._mp_size = ((__gmp_w->_mp_num._mp_size) >= 0 ? (__gmp_w->_mp_num._mp_size) : -(__gmp_w->_mp_num._mp_size)); } extern __inline__ __attribute__ ((__gnu_inline__)) void __gmpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u) { if (__gmp_w != __gmp_u) __gmpq_set (__gmp_w, __gmp_u); __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size; } extern __inline__ __attribute__ ((__gnu_inline__)) mp_limb_t __gmpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) { mp_limb_t __gmp_c; do { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = (__gmp_ysize); if (__gmp_i != 0) { if (__gmpn_add_n (__gmp_wp, __gmp_xp, __gmp_yp, __gmp_i)) { do { if (__gmp_i >= (__gmp_xsize)) { (__gmp_c) = 1; goto __gmp_done; } __gmp_x = (__gmp_xp)[__gmp_i]; } while ((((__gmp_wp)[__gmp_i++] = (__gmp_x + 1) & ((~ ((mp_limb_t) (0))) >> 0)) == 0)); } } if ((__gmp_wp) != (__gmp_xp)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_xsize); __gmp_j++) (__gmp_wp)[__gmp_j] = (__gmp_xp)[__gmp_j]; } while (0); (__gmp_c) = 0; __gmp_done: ; } while (0); return __gmp_c; } extern __inline__ __attribute__ ((__gnu_inline__)) mp_limb_t __gmpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) { mp_limb_t __gmp_c; do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_r; __gmp_x = (__gmp_src)[0]; __gmp_r = __gmp_x + (__gmp_n); (__gmp_dst)[0] = __gmp_r; if (((__gmp_r) < ((__gmp_n)))) { (__gmp_c) = 1; for (__gmp_i = 1; __gmp_i < (__gmp_size);) { __gmp_x = (__gmp_src)[__gmp_i]; __gmp_r = __gmp_x + 1; (__gmp_dst)[__gmp_i] = __gmp_r; ++__gmp_i; if (!((__gmp_r) < (1))) { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; break; } } } else { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (1); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; } } while (0); return __gmp_c; } extern __inline__ __attribute__ ((__gnu_inline__)) int __gmpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) { int __gmp_result; do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_y; (__gmp_result) = 0; __gmp_i = (__gmp_size); while (--__gmp_i >= 0) { __gmp_x = (__gmp_xp)[__gmp_i]; __gmp_y = (__gmp_yp)[__gmp_i]; if (__gmp_x != __gmp_y) { (__gmp_result) = (__gmp_x > __gmp_y ? 1 : -1); break; } } } while (0); return __gmp_result; } extern __inline__ __attribute__ ((__gnu_inline__)) int __gmpn_zero_p (mp_srcptr __gmp_p, mp_size_t __gmp_n) { do { if (__gmp_p[--__gmp_n] != 0) return 0; } while (__gmp_n != 0); return 1; } extern __inline__ __attribute__ ((__gnu_inline__)) mp_limb_t __gmpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize) { mp_limb_t __gmp_c; do { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = (__gmp_ysize); if (__gmp_i != 0) { if (__gmpn_sub_n (__gmp_wp, __gmp_xp, __gmp_yp, __gmp_i)) { do { if (__gmp_i >= (__gmp_xsize)) { (__gmp_c) = 1; goto __gmp_done; } __gmp_x = (__gmp_xp)[__gmp_i]; } while ((((__gmp_wp)[__gmp_i++] = (__gmp_x - 1) & ((~ ((mp_limb_t) (0))) >> 0)), __gmp_x == 0)); } } if ((__gmp_wp) != (__gmp_xp)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_xsize); __gmp_j++) (__gmp_wp)[__gmp_j] = (__gmp_xp)[__gmp_j]; } while (0); (__gmp_c) = 0; __gmp_done: ; } while (0); return __gmp_c; } extern __inline__ __attribute__ ((__gnu_inline__)) mp_limb_t __gmpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) { mp_limb_t __gmp_c; do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_r; __gmp_x = (__gmp_src)[0]; __gmp_r = __gmp_x - (__gmp_n); (__gmp_dst)[0] = __gmp_r; if (((__gmp_x) < ((__gmp_n)))) { (__gmp_c) = 1; for (__gmp_i = 1; __gmp_i < (__gmp_size);) { __gmp_x = (__gmp_src)[__gmp_i]; __gmp_r = __gmp_x - 1; (__gmp_dst)[__gmp_i] = __gmp_r; ++__gmp_i; if (!((__gmp_x) < (1))) { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; break; } } } else { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (1); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; } } while (0); return __gmp_c; } extern __inline__ __attribute__ ((__gnu_inline__)) mp_limb_t __gmpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n) { while (*__gmp_up == 0) { *__gmp_rp = 0; if (!--__gmp_n) return 0; ++__gmp_up; ++__gmp_rp; } *__gmp_rp = (- *__gmp_up) & ((~ ((mp_limb_t) (0))) >> 0); if (--__gmp_n) __gmpn_com (++__gmp_rp, ++__gmp_up, __gmp_n); return 1; } enum { GMP_ERROR_NONE = 0, GMP_ERROR_UNSUPPORTED_ARGUMENT = 1, GMP_ERROR_DIVISION_BY_ZERO = 2, GMP_ERROR_SQRT_OF_NEGATIVE = 4, GMP_ERROR_INVALID_ARGUMENT = 8 }; struct Lisp_Bignum { union vectorlike_header header; mpz_t value; } __attribute__ ((aligned (8))); extern mpz_t mpz[5]; extern void init_bignum (void); extern Lisp_Object make_integer_mpz (void); extern _Bool mpz_to_intmax (mpz_t const, intmax_t *) __attribute__ ((__nonnull__ (1, 2))); extern _Bool mpz_to_uintmax (mpz_t const, uintmax_t *) __attribute__ ((__nonnull__ (1, 2))); extern void mpz_set_intmax_slow (mpz_t, intmax_t) __attribute__ ((__nonnull__ (1))); extern void mpz_set_uintmax_slow (mpz_t, uintmax_t) __attribute__ ((__nonnull__ (1))); extern void emacs_mpz_mul (mpz_t, mpz_t const, mpz_t const) __attribute__ ((__nonnull__ (1, 2, 3))); extern void emacs_mpz_mul_2exp (mpz_t, mpz_t const, EMACS_INT) __attribute__ ((__nonnull__ (1, 2))); extern void emacs_mpz_pow_ui (mpz_t, mpz_t const, unsigned long) __attribute__ ((__nonnull__ (1, 2))); extern double mpz_get_d_rounded (mpz_t const) __attribute__ ((__const__)); extern Lisp_Object get_random_bignum (struct Lisp_Bignum const *); static inline struct Lisp_Bignum * XBIGNUM (Lisp_Object a) { ((void) ( 0 && (BIGNUMP (a)))); return ((struct Lisp_Bignum *) ((char *) XLP (a) - ((Lisp_Word_tag) (Lisp_Vectorlike) << (((0x7fffffffffffffffL >> (3 - 1)) / 2 < (9223372036854775807L) ) ? 0 : VALBITS)))); } static inline void __attribute__ ((__nonnull__ (1))) mpz_set_intmax (mpz_t result, intmax_t v) { if ( (-0x7fffffffffffffffL - 1L) <= v && v <= 0x7fffffffffffffffL) __gmpz_set_si (result, v); else mpz_set_intmax_slow (result, v); } static inline void __attribute__ ((__nonnull__ (1))) mpz_set_uintmax (mpz_t result, uintmax_t v) { if (v <= (0x7fffffffffffffffL * 2UL + 1UL) ) __gmpz_set_ui (result, v); else mpz_set_uintmax_slow (result, v); } static inline mpz_t const * bignum_val (struct Lisp_Bignum const *i) { return &i->value; } static inline mpz_t const * xbignum_val (Lisp_Object i) { return bignum_val (XBIGNUM (i)); } static inline mpz_t const * bignum_integer (mpz_t *tmp, Lisp_Object i) { if (FIXNUMP (i)) { mpz_set_intmax (*tmp, XFIXNUM (i)); return (mpz_t const *) tmp; } return xbignum_val (i); } static inline void mpz_set_integer (mpz_t result, Lisp_Object i) { if (FIXNUMP (i)) mpz_set_intmax (result, XFIXNUM (i)); else __gmpz_set (result, *xbignum_val (i)); } _Static_assert (sizeof (ptrdiff_t) == sizeof (void *), "verify (" "sizeof (ptrdiff_t) == sizeof (void *)" ")"); _Static_assert (sizeof (intptr_t) == sizeof (ptrdiff_t), "verify (" "sizeof (intptr_t) == sizeof (ptrdiff_t)" ")"); _Static_assert (sizeof (void (*) (void)) == sizeof (void *), "verify (" "sizeof (void (*) (void)) == sizeof (void *)" ")"); _Static_assert (sizeof (ptrdiff_t) <= sizeof (Lisp_Object), "verify (" "sizeof (ptrdiff_t) <= sizeof (Lisp_Object)" ")"); _Static_assert (sizeof (ptrdiff_t) <= sizeof (EMACS_INT), "verify (" "sizeof (ptrdiff_t) <= sizeof (EMACS_INT)" ")"); _Static_assert (8 == 8, "verify (" "CHAR_BIT == 8" ")"); static size_t divide_round_up (size_t x, size_t y) { return (x + y - 1) / y; } static const char dump_magic[16] = { 'D', 'U', 'M', 'P', 'E', 'D', 'G', 'N', 'U', 'E', 'M', 'A', 'C', 'S' }; static pdumper_hook dump_hooks[24]; static int nr_dump_hooks = 0; static pdumper_hook dump_late_hooks[24]; static int nr_dump_late_hooks = 0; static struct { void *mem; int sz; } remembered_data[32]; static int nr_remembered_data = 0; typedef int_least32_t dump_off; enum { EMACS_INT_XDIGITS = (EMACS_INT_WIDTH + 3) / 4 }; static void __attribute__ ((__format__ (__printf__, 1, 2))) dump_trace (const char *fmt, ...) { if (0) { va_list args; __builtin_va_start( args , fmt ) ; vfprintf ( stderr , fmt, args); __builtin_va_end( args ) ; } } static ssize_t dump_read_all (int fd, void *buf, size_t bytes_to_read); static dump_off ptrdiff_t_to_dump_off (ptrdiff_t value) { ((void) ( 0 && ( (-2147483647-1) <= value))); ((void) ( 0 && (value <= (2147483647) ))); return (dump_off) value; } static int dump_get_max_page_size (void) { return 64 * 1024; } enum dump_reloc_type { RELOC_DUMP_TO_EMACS_PTR_RAW, RELOC_DUMP_TO_DUMP_PTR_RAW, RELOC_NATIVE_COMP_UNIT, RELOC_NATIVE_SUBR, RELOC_BIGNUM, RELOC_DUMP_TO_DUMP_LV, RELOC_DUMP_TO_EMACS_LV = RELOC_DUMP_TO_DUMP_LV + 8, }; enum emacs_reloc_type { RELOC_EMACS_COPY_FROM_DUMP, RELOC_EMACS_IMMEDIATE, RELOC_EMACS_DUMP_PTR_RAW, RELOC_EMACS_EMACS_PTR_RAW, RELOC_EMACS_DUMP_LV, RELOC_EMACS_EMACS_LV, }; enum { EMACS_RELOC_TYPE_BITS = 3, EMACS_RELOC_LENGTH_BITS = (sizeof (dump_off) * 8 - EMACS_RELOC_TYPE_BITS) }; struct emacs_reloc { enum emacs_reloc_type type : EMACS_RELOC_TYPE_BITS; dump_off length : EMACS_RELOC_LENGTH_BITS; dump_off emacs_offset; union { dump_off dump_offset; dump_off emacs_offset2; intmax_t immediate; } u; }; static void emacs_reloc_set_type (struct emacs_reloc *reloc, enum emacs_reloc_type type) { reloc->type = type; ((void) ( 0 && (reloc->type == type))); } struct dump_table_locator { dump_off offset; dump_off nr_entries; }; enum { DUMP_RELOC_TYPE_BITS = 5, DUMP_RELOC_ALIGNMENT_BITS = 2, DUMP_RELOCATION_ALIGNMENT = 1 << DUMP_RELOC_ALIGNMENT_BITS, DUMP_ALIGNMENT = ((8) > (DUMP_RELOCATION_ALIGNMENT) ? (8) : (DUMP_RELOCATION_ALIGNMENT)), DUMP_RELOC_OFFSET_BITS = sizeof (dump_off) * 8 - DUMP_RELOC_TYPE_BITS }; _Static_assert (RELOC_DUMP_TO_EMACS_LV + 8 < (1 << DUMP_RELOC_TYPE_BITS), "verify (" "RELOC_DUMP_TO_EMACS_LV + 8 < (1 << DUMP_RELOC_TYPE_BITS)" ")"); _Static_assert (DUMP_ALIGNMENT >= 8, "verify (" "DUMP_ALIGNMENT >= GCALIGNMENT" ")"); struct dump_reloc { unsigned int raw_offset : DUMP_RELOC_OFFSET_BITS; enum dump_reloc_type type : DUMP_RELOC_TYPE_BITS; }; _Static_assert (sizeof (struct dump_reloc) == sizeof (dump_off), "verify (" "sizeof (struct dump_reloc) == sizeof (dump_off)" ")"); static void dump_reloc_set_type (struct dump_reloc *reloc, enum dump_reloc_type type) { reloc->type = type; ((void) ( 0 && (reloc->type == type))); } static dump_off dump_reloc_get_offset (struct dump_reloc reloc) { return reloc.raw_offset << DUMP_RELOC_ALIGNMENT_BITS; } static void dump_reloc_set_offset (struct dump_reloc *reloc, dump_off offset) { ((void) ( 0 && (offset >= 0))); reloc->raw_offset = offset >> DUMP_RELOC_ALIGNMENT_BITS; if (dump_reloc_get_offset (*reloc) != offset) error ("dump relocation out of range"); } void dump_fingerprint (FILE *output, char const *label, unsigned char const xfingerprint[sizeof fingerprint]) { enum { hexbuf_size = 2 * sizeof fingerprint }; char hexbuf[hexbuf_size]; hexbuf_digest (hexbuf, xfingerprint, sizeof fingerprint); fprintf (output, "%s%s%.*s\n", label, *label ? ": " : "", hexbuf_size, hexbuf); } enum reloc_phase { EARLY_RELOCS, LATE_RELOCS, VERY_LATE_RELOCS, RELOC_NUM_PHASES }; struct dump_header { char magic[sizeof (dump_magic)]; unsigned char fingerprint[sizeof fingerprint]; struct dump_table_locator dump_relocs[RELOC_NUM_PHASES]; struct dump_table_locator object_starts; struct dump_table_locator emacs_relocs; dump_off discardable_start; dump_off cold_start; dump_off hash_list; }; struct dump_tailq { Lisp_Object head; Lisp_Object tail; intptr_t length; }; struct dump_queue { struct dump_tailq zero_weight_objects; struct dump_tailq one_weight_normal_objects; struct dump_tailq one_weight_strong_objects; struct dump_tailq fancy_weight_objects; Lisp_Object link_weights; Lisp_Object sequence_numbers; dump_off next_sequence_number; }; enum cold_op { COLD_OP_OBJECT, COLD_OP_STRING, COLD_OP_CHARSET, COLD_OP_BUFFER, COLD_OP_BIGNUM, COLD_OP_NATIVE_SUBR, }; struct dump_flags { bool_bf dump_object_contents : 1; bool_bf record_object_starts : 1; bool_bf pack_objects : 1; bool_bf assert_already_seen : 1; bool_bf defer_hash_tables : 1; bool_bf defer_symbols : 1; bool_bf defer_cold_objects : 1; bool_bf defer_copied_objects : 1; }; struct dump_context { struct dump_header header; void *buf; dump_off buf_size; dump_off max_offset; Lisp_Object old_purify_flag; Lisp_Object old_post_gc_hook; Lisp_Object old_process_environment; int fd; Lisp_Object dump_filename; dump_off offset; dump_off obj_offset; struct dump_flags flags; dump_off end_heap; Lisp_Object objects_dumped; Lisp_Object referrers; Lisp_Object current_referrer; _Bool have_current_referrer; struct dump_queue dump_queue; Lisp_Object deferred_hash_tables; Lisp_Object deferred_symbols; Lisp_Object fixups; Lisp_Object staticpro_table; Lisp_Object symbol_aux; Lisp_Object copied_queue; Lisp_Object cold_queue; Lisp_Object dump_relocs[RELOC_NUM_PHASES]; Lisp_Object object_starts; Lisp_Object emacs_relocs; Lisp_Object bignum_data; Lisp_Object hash_tables; dump_off number_hot_relocations; dump_off number_discardable_relocations; }; enum dump_object_special_offset { DUMP_OBJECT_IS_RUNTIME_MAGIC = -6, DUMP_OBJECT_ON_COPIED_QUEUE = -5, DUMP_OBJECT_ON_HASH_TABLE_QUEUE = -4, DUMP_OBJECT_ON_SYMBOL_QUEUE = -3, DUMP_OBJECT_ON_COLD_QUEUE = -2, DUMP_OBJECT_ON_NORMAL_QUEUE = -1, DUMP_OBJECT_NOT_SEEN = 0, }; struct link_weight { int value; }; static struct link_weight const WEIGHT_NONE = { .value = 0 }, WEIGHT_NORMAL = { .value = 1000 }, WEIGHT_STRONG = { .value = 1200 }; static void dump_grow_buffer (struct dump_context *ctx) { ctx->buf = xrealloc (ctx->buf, ctx->buf_size = (ctx->buf_size ? (ctx->buf_size * 2) : 8 * 1024 * 1024)); } static dump_off dump_object (struct dump_context *ctx, Lisp_Object object); static dump_off dump_object_for_offset (struct dump_context *ctx, Lisp_Object object); static Lisp_Object dump_push (Lisp_Object *where, Lisp_Object newelt) { *where = Fcons (newelt, *where); return newelt; } static Lisp_Object dump_pop (Lisp_Object *where) { Lisp_Object ret = XCAR (*where); *where = XCDR (*where); return ret; } static _Bool dump_tracking_referrers_p (struct dump_context *ctx) { return !NILP (ctx->referrers); } static void dump_set_have_current_referrer (struct dump_context *ctx, _Bool have) { } static _Bool dump_set_referrer (struct dump_context *ctx) { ((void) ( 0 && (!ctx->have_current_referrer))); dump_set_have_current_referrer (ctx, 1 ); return dump_tracking_referrers_p (ctx); } static void dump_clear_referrer (struct dump_context *ctx) { ((void) ( 0 && (ctx->have_current_referrer))); dump_set_have_current_referrer (ctx, 0 ); if (dump_tracking_referrers_p (ctx)) ctx->current_referrer = builtin_lisp_symbol (0); } static Lisp_Object dump_ptr_referrer (const char *label, void const *address) { char buf[128]; buf[0] = '\0'; sprintf (buf, "%s @ %p", label, address); return build_string (buf); } static void print_paths_to_root (struct dump_context *ctx, Lisp_Object object); static void dump_remember_cold_op (struct dump_context *ctx, enum cold_op op, Lisp_Object arg); static _Noreturn __attribute__ ((__cold__)) void error_unsupported_dump_object (struct dump_context *ctx, Lisp_Object object, const char *msg) { if (dump_tracking_referrers_p (ctx)) print_paths_to_root (ctx, object); error ("unsupported object type in dump: %s", msg); } static uintptr_t emacs_basis (void) { return (uintptr_t) &globals.f_Vpurify_flag; } static void * emacs_ptr_at (const ptrdiff_t offset) { return (void *) (emacs_basis () + offset); } static dump_off emacs_offset (const void *emacs_ptr) { ((void) ( 0 && (emacs_ptr != ((void *)0) ))); intptr_t emacs_ptr_value = (intptr_t) emacs_ptr; ptrdiff_t emacs_ptr_relative = emacs_ptr_value - (intptr_t) emacs_basis (); return ptrdiff_t_to_dump_off (emacs_ptr_relative); } static _Bool dump_builtin_symbol_p (Lisp_Object object) { return SYMBOLP (object) && c_symbol_p (XSYMBOL (object)); } static _Bool dump_object_self_representing_p (Lisp_Object object) { return FIXNUMP (object) || dump_builtin_symbol_p (object); } static intmax_t intmax_t_from_lisp (Lisp_Object value) { intmax_t n; _Bool ok = integer_to_intmax (value, &n); ((void) ( 0 && (ok))); return n; } static Lisp_Object intmax_t_to_lisp (intmax_t value) { return ((((1 ? 0 : (value)) - (1)) < 0) ? make_int (value) : make_uint (value)); } static dump_off dump_off_from_lisp (Lisp_Object value) { intmax_t n = intmax_t_from_lisp (value); ((void) ( 0 && ( (-2147483647-1) <= n && n <= (2147483647) ))); return n; } static Lisp_Object dump_off_to_lisp (dump_off value) { return ((((1 ? 0 : (value)) - (1)) < 0) ? make_int (value) : make_uint (value)); } static void dump_write (struct dump_context *ctx, const void *buf, dump_off nbyte) { ((void) ( 0 && (nbyte == 0 || buf != ((void *)0) ))); ((void) ( 0 && (ctx->obj_offset == 0))); ((void) ( 0 && (ctx->flags.dump_object_contents))); while (ctx->offset + nbyte > ctx->buf_size) dump_grow_buffer (ctx); memcpy ((char *)ctx->buf + ctx->offset, buf, nbyte); ctx->offset += nbyte; } static Lisp_Object make_eq_hash_table (void) { return (Fmake_hash_table) ((sizeof (((Lisp_Object []) {builtin_lisp_symbol (185), builtin_lisp_symbol (538)})) / sizeof (((Lisp_Object []) {builtin_lisp_symbol (185), builtin_lisp_symbol (538)}))[0]), ((Lisp_Object []) {builtin_lisp_symbol (185), builtin_lisp_symbol (538)})); } static void dump_tailq_init (struct dump_tailq *tailq) { tailq->head = tailq->tail = builtin_lisp_symbol (0); tailq->length = 0; } static intptr_t dump_tailq_length (const struct dump_tailq *tailq) { return tailq->length; } static void dump_tailq_prepend (struct dump_tailq *tailq, Lisp_Object value) { Lisp_Object link = Fcons (value, tailq->head); tailq->head = link; if (NILP (tailq->tail)) tailq->tail = link; tailq->length += 1; } static _Bool dump_tailq_empty_p (struct dump_tailq *tailq) { return NILP (tailq->head); } static Lisp_Object dump_tailq_peek (struct dump_tailq *tailq) { ((void) ( 0 && (!dump_tailq_empty_p (tailq)))); return XCAR (tailq->head); } static Lisp_Object dump_tailq_pop (struct dump_tailq *tailq) { ((void) ( 0 && (!dump_tailq_empty_p (tailq)))); ((void) ( 0 && (tailq->length > 0))); tailq->length -= 1; Lisp_Object value = XCAR (tailq->head); tailq->head = XCDR (tailq->head); if (NILP (tailq->head)) tailq->tail = builtin_lisp_symbol (0); return value; } static void dump_seek (struct dump_context *ctx, dump_off offset) { if (ctx->max_offset < ctx->offset) ctx->max_offset = ctx->offset; ((void) ( 0 && (ctx->obj_offset == 0))); ctx->offset = offset; } static void dump_write_zero (struct dump_context *ctx, dump_off nbytes) { while (nbytes > 0) { uintmax_t zero = 0; dump_off to_write = sizeof (zero); if (to_write > nbytes) to_write = nbytes; dump_write (ctx, &zero, to_write); nbytes -= to_write; } } static void dump_align_output (struct dump_context *ctx, int alignment) { if (ctx->offset % alignment != 0) dump_write_zero (ctx, alignment - (ctx->offset % alignment)); } static dump_off dump_object_start (struct dump_context *ctx, void *out, dump_off outsz) { ((void) ( 0 && (ctx->obj_offset == 0))); int alignment = ctx->flags.pack_objects ? 1 : DUMP_ALIGNMENT; if (ctx->flags.dump_object_contents) dump_align_output (ctx, alignment); ctx->obj_offset = ctx->offset; memset (out, 0, outsz); return ctx->offset; } static dump_off dump_object_finish (struct dump_context *ctx, const void *out, dump_off sz) { dump_off offset = ctx->obj_offset; ((void) ( 0 && (offset > 0))); ((void) ( 0 && (offset == ctx->offset))); ctx->obj_offset = 0; if (ctx->flags.dump_object_contents) dump_write (ctx, out, sz); return offset; } static dump_off dump_recall_object (struct dump_context *ctx, Lisp_Object object) { Lisp_Object dumped = ctx->objects_dumped; return dump_off_from_lisp (Fgethash (object, dumped, make_fixnum (DUMP_OBJECT_NOT_SEEN))); } static void dump_remember_object (struct dump_context *ctx, Lisp_Object object, dump_off offset) { Fputhash (object, dump_off_to_lisp (offset), ctx->objects_dumped); } static void dump_note_reachable (struct dump_context *ctx, Lisp_Object object) { ((void) ( 0 && (ctx->have_current_referrer))); if (!dump_tracking_referrers_p (ctx)) return; Lisp_Object referrer = ctx->current_referrer; Lisp_Object obj_referrers = Fgethash (object, ctx->referrers, builtin_lisp_symbol (0)); if (NILP (Fmemq (referrer, obj_referrers))) Fputhash (object, Fcons (referrer, obj_referrers), ctx->referrers); } static void * dump_object_emacs_ptr (Lisp_Object lv) { if (SUBRP (lv) && !SUBR_NATIVE_COMPILEDP (lv)) return XSUBR (lv); if (dump_builtin_symbol_p (lv)) return XSYMBOL (lv); if (XTYPE (lv) == Lisp_Vectorlike && PSEUDOVECTOR_TYPEP (&XVECTOR (lv)->header, PVEC_THREAD) && main_thread_p (XTHREAD (lv))) return XTHREAD (lv); return ((void *)0) ; } static void dump_queue_init (struct dump_queue *dump_queue) { dump_tailq_init (&dump_queue->zero_weight_objects); dump_tailq_init (&dump_queue->one_weight_normal_objects); dump_tailq_init (&dump_queue->one_weight_strong_objects); dump_tailq_init (&dump_queue->fancy_weight_objects); dump_queue->link_weights = make_eq_hash_table (); dump_queue->sequence_numbers = make_eq_hash_table (); dump_queue->next_sequence_number = 1; } static _Bool dump_queue_empty_p (struct dump_queue *dump_queue) { ptrdiff_t count = XHASH_TABLE (dump_queue->sequence_numbers)->count; _Bool is_empty = count == 0; ((void) ( 0 && (count == XFIXNAT (Fhash_table_count (dump_queue->link_weights))))); if (!is_empty) { ((void) ( 0 && (!dump_tailq_empty_p (&dump_queue->zero_weight_objects) || !dump_tailq_empty_p (&dump_queue->one_weight_normal_objects) || !dump_tailq_empty_p (&dump_queue->one_weight_strong_objects) || !dump_tailq_empty_p (&dump_queue->fancy_weight_objects)))) ; } else { } return is_empty; } static void dump_queue_push_weight (Lisp_Object *weight_list, dump_off basis, struct link_weight weight) { if (EQ (*weight_list, builtin_lisp_symbol (1))) *weight_list = builtin_lisp_symbol (0); dump_push (weight_list, Fcons (dump_off_to_lisp (basis), dump_off_to_lisp (weight.value))); } static void dump_queue_enqueue (struct dump_queue *dump_queue, Lisp_Object object, dump_off basis, struct link_weight weight) { Lisp_Object weights = Fgethash (object, dump_queue->link_weights, builtin_lisp_symbol (0)); Lisp_Object orig_weights = weights; _Bool use_single_queues = 1 ; if (NILP (weights)) { EMACS_UINT uobj = XLI (object); dump_trace ("new object %0*""l""x weight=%d\n", EMACS_INT_XDIGITS, uobj, weight.value); if (weight.value == WEIGHT_NONE.value) { ((void) ( 0 && (weight.value == 0))); dump_tailq_prepend (&dump_queue->zero_weight_objects, object); weights = builtin_lisp_symbol (1); } else if (!use_single_queues) { dump_tailq_prepend (&dump_queue->fancy_weight_objects, object); dump_queue_push_weight (&weights, basis, weight); } else if (weight.value == WEIGHT_NORMAL.value) { dump_tailq_prepend (&dump_queue->one_weight_normal_objects, object); dump_queue_push_weight (&weights, basis, weight); } else if (weight.value == WEIGHT_STRONG.value) { dump_tailq_prepend (&dump_queue->one_weight_strong_objects, object); dump_queue_push_weight (&weights, basis, weight); } else { emacs_abort (); } Fputhash (object, dump_off_to_lisp(dump_queue->next_sequence_number++), dump_queue->sequence_numbers); } else { if (weight.value != WEIGHT_NONE.value) { if (EQ (weights, builtin_lisp_symbol (1))) { weights = builtin_lisp_symbol (0); struct dump_tailq *tailq; if (!use_single_queues) tailq = &dump_queue->fancy_weight_objects; else if (weight.value == WEIGHT_NORMAL.value) tailq = &dump_queue->one_weight_normal_objects; else if (weight.value == WEIGHT_STRONG.value) tailq = &dump_queue->one_weight_strong_objects; else emacs_abort (); dump_tailq_prepend (tailq, object); } else if (use_single_queues && NILP (XCDR (weights))) dump_tailq_prepend (&dump_queue->fancy_weight_objects, object); dump_queue_push_weight (&weights, basis, weight); } } if (!BASE_EQ (weights, orig_weights)) Fputhash (object, weights, dump_queue->link_weights); } static float dump_calc_link_score (dump_off basis, dump_off link_basis, dump_off link_weight) { float distance = (float)(basis - link_basis); ((void) ( 0 && (distance >= 0))); float link_score = powf (distance, -0.2f); return powf (link_score, (float) link_weight / 1000.0f); } static float dump_queue_compute_score (struct dump_queue *dump_queue, Lisp_Object object, dump_off basis) { float score = 0; Lisp_Object object_link_weights = Fgethash (object, dump_queue->link_weights, builtin_lisp_symbol (0)); if (EQ (object_link_weights, builtin_lisp_symbol (1))) object_link_weights = builtin_lisp_symbol (0); while (!NILP (object_link_weights)) { Lisp_Object basis_weight_pair = dump_pop (&object_link_weights); dump_off link_basis = dump_off_from_lisp (XCAR (basis_weight_pair)); dump_off link_weight = dump_off_from_lisp (XCDR (basis_weight_pair)); score += dump_calc_link_score (basis, link_basis, link_weight); } return score; } static float dump_queue_scan_fancy (struct dump_queue *dump_queue, dump_off basis, Lisp_Object **out_highest_score_cons_ptr) { Lisp_Object *cons_ptr = &dump_queue->fancy_weight_objects.head; Lisp_Object *highest_score_cons_ptr = ((void *)0) ; float highest_score = - (__builtin_inff ()) ; _Bool first = 1 ; while (!NILP (*cons_ptr)) { Lisp_Object queued_object = XCAR (*cons_ptr); float score = dump_queue_compute_score (dump_queue, queued_object, basis); if (first || score >= highest_score) { highest_score_cons_ptr = cons_ptr; highest_score = score; if (first) first = 0 ; } cons_ptr = &XCONS (*cons_ptr)->u.s.u.cdr; } *out_highest_score_cons_ptr = highest_score_cons_ptr; return highest_score; } static dump_off dump_queue_sequence (struct dump_queue *dump_queue, Lisp_Object object) { Lisp_Object n = Fgethash (object, dump_queue->sequence_numbers, builtin_lisp_symbol (0)); return NILP (n) ? -1 : dump_off_from_lisp (n); } static void dump_queue_find_score_of_one_weight_queue (struct dump_queue *dump_queue, dump_off basis, struct dump_tailq *one_weight_queue, float *out_score, int *out_sequence) { do { if (dump_tailq_empty_p (one_weight_queue)) { *out_score = - (__builtin_inff ()) ; *out_sequence = 0; } else { Lisp_Object head = dump_tailq_peek (one_weight_queue); *out_sequence = dump_queue_sequence (dump_queue, head); if (*out_sequence < 0) dump_tailq_pop (one_weight_queue); else *out_score = dump_queue_compute_score (dump_queue, head, basis); } } while (*out_sequence < 0); } static Lisp_Object dump_queue_dequeue (struct dump_queue *dump_queue, dump_off basis) { ((void) ( 0 && (EQ (Fhash_table_count (dump_queue->sequence_numbers), Fhash_table_count (dump_queue->link_weights))))) ; ((void) ( 0 && (XFIXNUM (Fhash_table_count (dump_queue->sequence_numbers)) <= (dump_tailq_length (&dump_queue->fancy_weight_objects) + dump_tailq_length (&dump_queue->zero_weight_objects) + dump_tailq_length (&dump_queue->one_weight_normal_objects) + dump_tailq_length (&dump_queue->one_weight_strong_objects))))) ; dump_trace (("dump_queue_dequeue basis=%" "d" " fancy=%" "l" "d" " zero=%" "l" "d" " normal=%" "l" "d" " strong=%" "l" "d" " hash=%td\n"), basis, dump_tailq_length (&dump_queue->fancy_weight_objects), dump_tailq_length (&dump_queue->zero_weight_objects), dump_tailq_length (&dump_queue->one_weight_normal_objects), dump_tailq_length (&dump_queue->one_weight_strong_objects), XHASH_TABLE (dump_queue->link_weights)->count); static const int nr_candidates = 3; struct candidate { float score; dump_off sequence; } candidates[nr_candidates]; Lisp_Object *fancy_cons = ((void *)0) ; candidates[0].sequence = 0; do { if (candidates[0].sequence < 0) *fancy_cons = XCDR (*fancy_cons); candidates[0].score = dump_queue_scan_fancy (dump_queue, basis, &fancy_cons); candidates[0].sequence = candidates[0].score > - (__builtin_inff ()) ? dump_queue_sequence (dump_queue, XCAR (*fancy_cons)) : 0; } while (candidates[0].sequence < 0); dump_queue_find_score_of_one_weight_queue (dump_queue, basis, &dump_queue->one_weight_normal_objects, &candidates[1].score, &candidates[1].sequence); dump_queue_find_score_of_one_weight_queue (dump_queue, basis, &dump_queue->one_weight_strong_objects, &candidates[2].score, &candidates[2].sequence); int best = -1; for (int i = 0; i < nr_candidates; ++i) { ((void) ( 0 && (candidates[i].sequence >= 0))); if (candidates[i].score > - (__builtin_inff ()) && (best < 0 || candidates[i].score > candidates[best].score || (candidates[i].score == candidates[best].score && candidates[i].sequence < candidates[best].sequence))) best = i; } Lisp_Object result; const char *src; if (best < 0) { src = "zero"; result = dump_tailq_pop (&dump_queue->zero_weight_objects); } else if (best == 0) { src = "fancy"; result = dump_tailq_pop (&dump_queue->fancy_weight_objects); } else if (best == 1) { src = "normal"; result = dump_tailq_pop (&dump_queue->one_weight_normal_objects); } else if (best == 2) { src = "strong"; result = dump_tailq_pop (&dump_queue->one_weight_strong_objects); } else emacs_abort (); EMACS_UINT uresult = XLI (result); dump_trace (" result score=%f src=%s object=%0*""l""x\n", best < 0 ? -1.0 : (double) candidates[best].score, src, EMACS_INT_XDIGITS, uresult); { Lisp_Object weights = Fgethash (result, dump_queue->link_weights, builtin_lisp_symbol (0)); while (!NILP (weights) && CONSP (weights)) { Lisp_Object basis_weight_pair = dump_pop (&weights); dump_off link_basis = dump_off_from_lisp (XCAR (basis_weight_pair)); dump_off link_weight = dump_off_from_lisp (XCDR (basis_weight_pair)); dump_trace (" link_basis=%d distance=%d weight=%d contrib=%f\n", link_basis, basis - link_basis, link_weight, (double) dump_calc_link_score (basis, link_basis, link_weight)); } } Fremhash (result, dump_queue->link_weights); Fremhash (result, dump_queue->sequence_numbers); return result; } static _Bool dump_object_needs_dumping_p (Lisp_Object object) { return (!dump_object_self_representing_p (object) || dump_object_emacs_ptr (object)); } static void dump_enqueue_object (struct dump_context *ctx, Lisp_Object object, struct link_weight weight) { if (dump_object_needs_dumping_p (object)) { dump_off state = dump_recall_object (ctx, object); _Bool already_dumped_object = state > DUMP_OBJECT_NOT_SEEN; if (ctx->flags.assert_already_seen) ((void) ( 0 && (already_dumped_object))); if (!already_dumped_object) { if (state == DUMP_OBJECT_NOT_SEEN) { state = DUMP_OBJECT_ON_NORMAL_QUEUE; dump_remember_object (ctx, object, state); } if (state == DUMP_OBJECT_ON_NORMAL_QUEUE) dump_queue_enqueue (&ctx->dump_queue, object, ctx->offset, weight); } } dump_note_reachable (ctx, object); } static void print_paths_to_root_1 (struct dump_context *ctx, Lisp_Object object, int level) { Lisp_Object referrers = Fgethash (object, ctx->referrers, builtin_lisp_symbol (0)); while (!NILP (referrers)) { Lisp_Object referrer = XCAR (referrers); referrers = XCDR (referrers); Lisp_Object repr = Fprin1_to_string (referrer, builtin_lisp_symbol (0), builtin_lisp_symbol (0)); for (int i = 0; i < level; ++i) putc_unlocked (' ', stderr ); (__extension__ ((__builtin_constant_p ( 1 ) && __builtin_constant_p ( SBYTES (repr) ) && (size_t) ( 1 ) * (size_t) ( SBYTES (repr) ) <= 8 && (size_t) ( 1 ) != 0) ? ({ const char *__ptr = (const char *) ( SDATA (repr) ); FILE *__stream = (stderr); size_t __cnt; for (__cnt = (size_t) ( 1 ) * (size_t) ( SBYTES (repr) ); __cnt > 0; --__cnt) if (putc_unlocked (*__ptr++, __stream) == (-1)) break; ((size_t) ( 1 ) * (size_t) ( SBYTES (repr) ) - __cnt) / (size_t) ( 1 ); }) : (((__builtin_constant_p ( 1 ) && (size_t) ( 1 ) == 0) || (__builtin_constant_p ( SBYTES (repr) ) && (size_t) ( SBYTES (repr) ) == 0)) ? ((void) ( SDATA (repr) ), (void) (stderr), (void) ( 1 ), (void) ( SBYTES (repr) ), (size_t) 0) : fwrite_unlocked ( SDATA (repr) , 1 , SBYTES (repr) , stderr)))) ; putc_unlocked ('\n', stderr ); print_paths_to_root_1 (ctx, referrer, level + 1); } } static void print_paths_to_root (struct dump_context *ctx, Lisp_Object object) { print_paths_to_root_1 (ctx, object, 0); } static void dump_remember_cold_op (struct dump_context *ctx, enum cold_op op, Lisp_Object arg) { if (ctx->flags.dump_object_contents) dump_push (&ctx->cold_queue, Fcons (make_fixnum (op), arg)); } static void dump_reloc_dump_to_emacs_ptr_raw (struct dump_context *ctx, dump_off dump_offset) { if (ctx->flags.dump_object_contents) dump_push (&ctx->dump_relocs[EARLY_RELOCS], list2 (make_fixnum (RELOC_DUMP_TO_EMACS_PTR_RAW), dump_off_to_lisp (dump_offset))); } static void dump_reloc_dump_to_dump_lv (struct dump_context *ctx, dump_off dump_offset, enum Lisp_Type type) { if (!ctx->flags.dump_object_contents) return; int reloc_type; switch (type) { case Lisp_Symbol: case Lisp_String: case Lisp_Vectorlike: case Lisp_Cons: case Lisp_Float: reloc_type = RELOC_DUMP_TO_DUMP_LV + type; break; default: emacs_abort (); } dump_push (&ctx->dump_relocs[EARLY_RELOCS], list2 (make_fixnum (reloc_type), dump_off_to_lisp (dump_offset))); } static void dump_reloc_dump_to_dump_ptr_raw (struct dump_context *ctx, dump_off dump_offset) { if (ctx->flags.dump_object_contents) dump_push (&ctx->dump_relocs[EARLY_RELOCS], list2 (make_fixnum (RELOC_DUMP_TO_DUMP_PTR_RAW), dump_off_to_lisp (dump_offset))); } static void dump_reloc_dump_to_emacs_lv (struct dump_context *ctx, dump_off dump_offset, enum Lisp_Type type) { if (!ctx->flags.dump_object_contents) return; int reloc_type; switch (type) { case Lisp_String: case Lisp_Vectorlike: case Lisp_Cons: case Lisp_Float: reloc_type = RELOC_DUMP_TO_EMACS_LV + type; break; default: emacs_abort (); } dump_push (&ctx->dump_relocs[EARLY_RELOCS], list2 (make_fixnum (reloc_type), dump_off_to_lisp (dump_offset))); } static void dump_emacs_reloc_copy_from_dump (struct dump_context *ctx, dump_off dump_offset, void *emacs_ptr, dump_off size) { ((void) ( 0 && (size >= 0))); ((void) ( 0 && (size < (1 << EMACS_RELOC_LENGTH_BITS)))); if (!ctx->flags.dump_object_contents) return; if (size == 0) return; ((void) ( 0 && (dump_offset >= 0))); dump_push (&ctx->emacs_relocs, list4 (make_fixnum (RELOC_EMACS_COPY_FROM_DUMP), dump_off_to_lisp (emacs_offset (emacs_ptr)), dump_off_to_lisp (dump_offset), dump_off_to_lisp (size))); } static void dump_emacs_reloc_immediate (struct dump_context *ctx, const void *emacs_ptr, const void *value_ptr, dump_off size) { if (!ctx->flags.dump_object_contents) return; intmax_t value = 0; ((void) ( 0 && (size <= sizeof (value)))); memcpy (&value, value_ptr, size); dump_push (&ctx->emacs_relocs, list4 (make_fixnum (RELOC_EMACS_IMMEDIATE), dump_off_to_lisp (emacs_offset (emacs_ptr)), intmax_t_to_lisp (value), dump_off_to_lisp (size))); } static void dump_emacs_reloc_immediate_lv (struct dump_context *ctx, const Lisp_Object *emacs_ptr, Lisp_Object value) { dump_emacs_reloc_immediate ( ctx, emacs_ptr, &value, sizeof (value)); } static void dump_emacs_reloc_immediate_ptrdiff_t (struct dump_context *ctx, const ptrdiff_t *emacs_ptr, ptrdiff_t value) { dump_emacs_reloc_immediate ( ctx, emacs_ptr, &value, sizeof (value)); } static void dump_emacs_reloc_immediate_intmax_t (struct dump_context *ctx, const intmax_t *emacs_ptr, intmax_t value) { dump_emacs_reloc_immediate ( ctx, emacs_ptr, &value, sizeof (value)); } static void dump_emacs_reloc_immediate_int (struct dump_context *ctx, const int *emacs_ptr, int value) { dump_emacs_reloc_immediate ( ctx, emacs_ptr, &value, sizeof (value)); } static void dump_emacs_reloc_immediate_bool (struct dump_context *ctx, const _Bool *emacs_ptr, _Bool value) { dump_emacs_reloc_immediate ( ctx, emacs_ptr, &value, sizeof (value)); } static void dump_emacs_reloc_to_dump_ptr_raw (struct dump_context *ctx, const void *emacs_ptr, dump_off dump_offset) { if (!ctx->flags.dump_object_contents) return; dump_push (&ctx->emacs_relocs, list3 (make_fixnum (RELOC_EMACS_DUMP_PTR_RAW), dump_off_to_lisp (emacs_offset (emacs_ptr)), dump_off_to_lisp (dump_offset))); } static void dump_emacs_reloc_to_lv (struct dump_context *ctx, Lisp_Object const *emacs_ptr, Lisp_Object value) { if (dump_object_self_representing_p (value)) dump_emacs_reloc_immediate_lv (ctx, emacs_ptr, value); else { if (ctx->flags.dump_object_contents) dump_push (&ctx->emacs_relocs, list3 (make_fixnum (dump_object_emacs_ptr (value) ? RELOC_EMACS_EMACS_LV : RELOC_EMACS_DUMP_LV), dump_off_to_lisp (emacs_offset (emacs_ptr)), value)); dump_enqueue_object (ctx, value, WEIGHT_NONE); } } static void dump_emacs_reloc_to_emacs_ptr_raw (struct dump_context *ctx, void *emacs_ptr, void const *target_emacs_ptr) { if (!ctx->flags.dump_object_contents) return; dump_push (&ctx->emacs_relocs, list3 (make_fixnum (RELOC_EMACS_EMACS_PTR_RAW), dump_off_to_lisp (emacs_offset (emacs_ptr)), dump_off_to_lisp (emacs_offset (target_emacs_ptr)))); } enum dump_fixup_type { DUMP_FIXUP_LISP_OBJECT, DUMP_FIXUP_LISP_OBJECT_RAW, DUMP_FIXUP_PTR_DUMP_RAW, DUMP_FIXUP_BIGNUM_DATA, }; enum dump_lv_fixup_type { LV_FIXUP_LISP_OBJECT, LV_FIXUP_RAW_POINTER, }; static void dump_remember_fixup_lv (struct dump_context *ctx, dump_off dump_offset, Lisp_Object value, enum dump_lv_fixup_type fixup_subtype) { if (!ctx->flags.dump_object_contents) return; dump_push (&ctx->fixups, list3 (make_fixnum (fixup_subtype == LV_FIXUP_LISP_OBJECT ? DUMP_FIXUP_LISP_OBJECT : DUMP_FIXUP_LISP_OBJECT_RAW), dump_off_to_lisp (dump_offset), value)); } static void dump_remember_fixup_ptr_raw (struct dump_context *ctx, dump_off dump_offset, dump_off new_dump_offset) { if (!ctx->flags.dump_object_contents) return; ((void) ( 0 && (ctx->header.discardable_start == 0 || new_dump_offset < ctx->header.discardable_start || (ctx->header.cold_start != 0 && new_dump_offset >= ctx->header.cold_start)))) ; dump_push (&ctx->fixups, list3 (make_fixnum (DUMP_FIXUP_PTR_DUMP_RAW), dump_off_to_lisp (dump_offset), dump_off_to_lisp (new_dump_offset))); } static void dump_root_visitor (Lisp_Object const *root_ptr, enum gc_root_type type, void *data) { struct dump_context *ctx = data; Lisp_Object value = *root_ptr; if (type == GC_ROOT_C_SYMBOL) { ((void) ( 0 && (dump_builtin_symbol_p (value)))); if (dump_set_referrer (ctx)) ctx->current_referrer = build_string ("built-in symbol list"); dump_enqueue_object (ctx, value, WEIGHT_NONE); dump_clear_referrer (ctx); } else { if (type == GC_ROOT_STATICPRO) Fputhash (dump_off_to_lisp (emacs_offset (root_ptr)), builtin_lisp_symbol (1), ctx->staticpro_table); if (root_ptr != &globals.f_Vinternal_interpreter_environment) { if (dump_set_referrer (ctx)) ctx->current_referrer = dump_ptr_referrer ("emacs root", root_ptr); dump_emacs_reloc_to_lv (ctx, root_ptr, *root_ptr); dump_clear_referrer (ctx); } } } static void dump_roots (struct dump_context *ctx) { struct gc_root_visitor visitor = { .visit = dump_root_visitor, .data = ctx }; visit_static_gc_roots (visitor); } enum { PDUMPER_MAX_OBJECT_SIZE = 2048 }; static dump_off field_relpos (const void *in_start, const void *in_field) { ptrdiff_t in_start_val = (ptrdiff_t) in_start; ptrdiff_t in_field_val = (ptrdiff_t) in_field; ((void) ( 0 && (in_start_val <= in_field_val))); ptrdiff_t relpos = in_field_val - in_start_val; ((void) ( 0 && (relpos < PDUMPER_MAX_OBJECT_SIZE))); return (dump_off) relpos; } static void cpyptr (void *out, const void *in) { memcpy (out, in, sizeof (void *)); } static void dump_field_lv_or_rawptr (struct dump_context *ctx, void *out, const void *in_start, const void *in_field, const enum Lisp_Type *ptr_raw_type, struct link_weight weight) { ((void) ( 0 && (ctx->obj_offset > 0))); Lisp_Object value; dump_off relpos = field_relpos (in_start, in_field); void *out_field = (char *) out + relpos; _Bool is_ptr_raw = (ptr_raw_type != ((void *)0) ); if (!is_ptr_raw) { memcpy (&value, in_field, sizeof (value)); if (dump_object_self_representing_p (value)) { memcpy (out_field, &value, sizeof (value)); return; } } else { void *ptrval; cpyptr (&ptrval, in_field); if (ptrval == ((void *)0) ) return; switch (*ptr_raw_type) { case Lisp_Symbol: value = make_lisp_symbol (ptrval); break; case Lisp_String: case Lisp_Vectorlike: case Lisp_Cons: case Lisp_Float: value = make_lisp_ptr (ptrval, *ptr_raw_type); break; default: emacs_abort (); } } intptr_t out_value; dump_off out_field_offset = ctx->obj_offset + relpos; dump_off target_offset = dump_recall_object (ctx, value); enum { DANGEROUS = 0 }; if (DANGEROUS && target_offset > 0 && dump_object_emacs_ptr (value) == ((void *)0) ) { out_value = target_offset; if (is_ptr_raw) dump_reloc_dump_to_dump_ptr_raw (ctx, out_field_offset); else dump_reloc_dump_to_dump_lv (ctx, out_field_offset, XTYPE (value)); } else { out_value = (intptr_t) 0xDEADF00D; dump_remember_fixup_lv (ctx, out_field_offset, value, ( is_ptr_raw ? LV_FIXUP_RAW_POINTER : LV_FIXUP_LISP_OBJECT )); dump_enqueue_object (ctx, value, weight); } memcpy (out_field, &out_value, sizeof (out_value)); } static void dump_field_lv_rawptr (struct dump_context *ctx, void *out, const void *in_start, const void *in_field, enum Lisp_Type type, struct link_weight weight) { dump_field_lv_or_rawptr (ctx, out, in_start, in_field, &type, weight); } static void dump_field_lv (struct dump_context *ctx, void *out, const void *in_start, const Lisp_Object *in_field, struct link_weight weight) { dump_field_lv_or_rawptr (ctx, out, in_start, in_field, ((void *)0) , weight); } static void dump_field_fixup_later (struct dump_context *ctx, void *out, const void *in_start, const void *in_field) { (void) field_relpos (in_start, in_field); } static void dump_field_ptr_to_dump_offset (struct dump_context *ctx, void *out, const void *in_start, const void *in_field, dump_off target_dump_offset) { ((void) ( 0 && (ctx->obj_offset > 0))); if (!ctx->flags.dump_object_contents) return; dump_off relpos = field_relpos (in_start, in_field); dump_reloc_dump_to_dump_ptr_raw (ctx, ctx->obj_offset + relpos); intptr_t outval = target_dump_offset; memcpy ((char *) out + relpos, &outval, sizeof (outval)); } static void dump_field_emacs_ptr (struct dump_context *ctx, void *out, const void *in_start, const void *in_field) { ((void) ( 0 && (ctx->obj_offset > 0))); if (!ctx->flags.dump_object_contents) return; dump_off relpos = field_relpos (in_start, in_field); void *abs_emacs_ptr; cpyptr (&abs_emacs_ptr, in_field); intptr_t rel_emacs_ptr = 0; if (abs_emacs_ptr) { rel_emacs_ptr = emacs_offset ((void *)abs_emacs_ptr); dump_reloc_dump_to_emacs_ptr_raw (ctx, ctx->obj_offset + relpos); } cpyptr ((char *) out + relpos, &rel_emacs_ptr); } static void _dump_object_start_pseudovector (struct dump_context *ctx, union vectorlike_header *out_hdr, const union vectorlike_header *in_hdr) { ((void) ( 0 && (in_hdr->size & ( (9223372036854775807L) - (9223372036854775807L) / 2)))); ptrdiff_t vec_size = vectorlike_nbytes (in_hdr); dump_object_start (ctx, out_hdr, (dump_off) vec_size); *out_hdr = *in_hdr; } static dump_off finish_dump_pvec (struct dump_context *ctx, union vectorlike_header *out_hdr) { return dump_object_finish (ctx, out_hdr, vectorlike_nbytes (out_hdr)); } static void dump_pseudovector_lisp_fields (struct dump_context *ctx, union vectorlike_header *out_hdr, const union vectorlike_header *in_hdr) { const struct Lisp_Vector *in = (const struct Lisp_Vector *) in_hdr; struct Lisp_Vector *out = (struct Lisp_Vector *) out_hdr; ptrdiff_t size = in->header.size; ((void) ( 0 && (size & ( (9223372036854775807L) - (9223372036854775807L) / 2)))); size &= PSEUDOVECTOR_SIZE_MASK; for (ptrdiff_t i = 0; i < size; ++i) dump_field_lv (ctx, out, in, &in->contents[i], WEIGHT_STRONG); } static dump_off dump_cons (struct dump_context *ctx, const struct Lisp_Cons *cons) { struct Lisp_Cons out; dump_object_start (ctx, &out, sizeof (out)); dump_field_lv (ctx, &out, cons, &cons->u.s.car, WEIGHT_STRONG); dump_field_lv (ctx, &out, cons, &cons->u.s.u.cdr, WEIGHT_NORMAL); return dump_object_finish (ctx, &out, sizeof (out)); } static dump_off dump_interval_tree (struct dump_context *ctx, INTERVAL tree, dump_off parent_offset) { struct interval out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->total_length = (tree)->total_length); ((&out)->position = (tree)->position); if (tree->left) dump_field_fixup_later (ctx, &out, tree, &tree->left); if (tree->right) dump_field_fixup_later (ctx, &out, tree, &tree->right); if (!tree->up_obj) { ((void) ( 0 && (parent_offset != 0))); dump_field_ptr_to_dump_offset (ctx, &out, tree, &tree->up.interval, parent_offset); } else dump_field_lv (ctx, &out, tree, &tree->up.obj, WEIGHT_STRONG); ((&out)->up_obj = (tree)->up_obj); ((void) ( 0 && (tree->gcmarkbit == 0))); ((&out)->write_protect = (tree)->write_protect); ((&out)->visible = (tree)->visible); ((&out)->front_sticky = (tree)->front_sticky); ((&out)->rear_sticky = (tree)->rear_sticky); dump_field_lv (ctx, &out, tree, &tree->plist, WEIGHT_STRONG); dump_off offset = dump_object_finish (ctx, &out, sizeof (out)); if (tree->left) dump_remember_fixup_ptr_raw (ctx, offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct interval , left ) )), dump_interval_tree (ctx, tree->left, offset)); if (tree->right) dump_remember_fixup_ptr_raw (ctx, offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct interval , right ) )), dump_interval_tree (ctx, tree->right, offset)); return offset; } static dump_off dump_string (struct dump_context *ctx, const struct Lisp_String *string) { struct Lisp_String out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->u.s.size = (string)->u.s.size); ((&out)->u.s.size_byte = (string)->u.s.size_byte); if (string->u.s.intervals) dump_field_fixup_later (ctx, &out, string, &string->u.s.intervals); if (string->u.s.size_byte == -2) dump_field_emacs_ptr (ctx, &out, string, &string->u.s.data); else { dump_field_fixup_later (ctx, &out, string, &string->u.s.data); dump_remember_cold_op (ctx, COLD_OP_STRING, make_lisp_ptr ((void *) string, Lisp_String)); } dump_off offset = dump_object_finish (ctx, &out, sizeof (out)); if (string->u.s.intervals) dump_remember_fixup_ptr_raw (ctx, offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct Lisp_String , u.s.intervals ) )), dump_interval_tree (ctx, string->u.s.intervals, 0)); return offset; } static dump_off dump_marker (struct dump_context *ctx, const struct Lisp_Marker *marker) { const union vectorlike_header *_in_hdr = (&marker->header); struct Lisp_Marker *out = __builtin_alloca (vectorlike_nbytes (_in_hdr)); _dump_object_start_pseudovector (ctx, &out->header, _in_hdr); dump_pseudovector_lisp_fields (ctx, &out->header, &marker->header); ((out)->need_adjustment = (marker)->need_adjustment); ((out)->insertion_type = (marker)->insertion_type); if (marker->buffer) { dump_field_lv_rawptr (ctx, out, marker, &marker->buffer, Lisp_Vectorlike, WEIGHT_NORMAL); dump_field_lv_rawptr (ctx, out, marker, &marker->next, Lisp_Vectorlike, WEIGHT_STRONG); ((out)->charpos = (marker)->charpos); ((out)->bytepos = (marker)->bytepos); } return finish_dump_pvec (ctx, &out->header); } static dump_off dump_overlay (struct dump_context *ctx, const struct Lisp_Overlay *overlay) { const union vectorlike_header *_in_hdr = (&overlay->header); struct Lisp_Overlay *out = __builtin_alloca (vectorlike_nbytes (_in_hdr)); _dump_object_start_pseudovector (ctx, &out->header, _in_hdr); dump_pseudovector_lisp_fields (ctx, &out->header, &overlay->header); dump_field_lv_rawptr (ctx, out, overlay, &overlay->next, Lisp_Vectorlike, WEIGHT_STRONG); return finish_dump_pvec (ctx, &out->header); } static void dump_field_finalizer_ref (struct dump_context *ctx, void *out, const struct Lisp_Finalizer *finalizer, struct Lisp_Finalizer *const *field) { if (*field == &finalizers || *field == &doomed_finalizers) dump_field_emacs_ptr (ctx, out, finalizer, field); else dump_field_lv_rawptr (ctx, out, finalizer, field, Lisp_Vectorlike, WEIGHT_NORMAL); } static dump_off dump_finalizer (struct dump_context *ctx, const struct Lisp_Finalizer *finalizer) { const union vectorlike_header *_in_hdr = (&finalizer->header); struct Lisp_Finalizer *out = __builtin_alloca (vectorlike_nbytes (_in_hdr)); _dump_object_start_pseudovector (ctx, &out->header, _in_hdr); dump_field_lv (ctx, &out, finalizer, &finalizer->function, WEIGHT_NONE); dump_field_finalizer_ref (ctx, &out, finalizer, &finalizer->prev); dump_field_finalizer_ref (ctx, &out, finalizer, &finalizer->next); return finish_dump_pvec (ctx, &out->header); } struct bignum_reload_info { dump_off data_location; dump_off nlimbs; }; static dump_off dump_bignum (struct dump_context *ctx, Lisp_Object object) { const struct Lisp_Bignum *bignum = XBIGNUM (object); const union vectorlike_header *_in_hdr = (&bignum->header); struct Lisp_Bignum *out = __builtin_alloca (vectorlike_nbytes (_in_hdr)); _dump_object_start_pseudovector (ctx, &out->header, _in_hdr); _Static_assert (sizeof (out->value) >= sizeof (struct bignum_reload_info), "verify (" "sizeof (out->value) >= sizeof (struct bignum_reload_info)" ")"); dump_field_fixup_later (ctx, out, bignum, xbignum_val (object)); dump_off bignum_offset = finish_dump_pvec (ctx, &out->header); if (ctx->flags.dump_object_contents) { dump_remember_cold_op (ctx, COLD_OP_BIGNUM, object); dump_off value_offset = (bignum_offset + (dump_off) __builtin_offsetof ( struct Lisp_Bignum , value ) ); dump_push (&ctx->fixups, list3 (make_fixnum (DUMP_FIXUP_BIGNUM_DATA), dump_off_to_lisp (value_offset), object)); dump_push (&ctx->dump_relocs[EARLY_RELOCS], list2 (make_fixnum (RELOC_BIGNUM), dump_off_to_lisp (bignum_offset))); } return bignum_offset; } static dump_off dump_float (struct dump_context *ctx, const struct Lisp_Float *lfloat) { ((void) ( 0 && (ctx->header.cold_start))); struct Lisp_Float out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->u.data = (lfloat)->u.data); return dump_object_finish (ctx, &out, sizeof (out)); } static dump_off dump_fwd_int (struct dump_context *ctx, const struct Lisp_Intfwd *intfwd) { dump_emacs_reloc_immediate_intmax_t (ctx, intfwd->intvar, *intfwd->intvar); struct Lisp_Intfwd out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->type = (intfwd)->type); dump_field_emacs_ptr (ctx, &out, intfwd, &intfwd->intvar); return dump_object_finish (ctx, &out, sizeof (out)); } static dump_off dump_fwd_bool (struct dump_context *ctx, const struct Lisp_Boolfwd *boolfwd) { dump_emacs_reloc_immediate_bool (ctx, boolfwd->boolvar, *boolfwd->boolvar); struct Lisp_Boolfwd out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->type = (boolfwd)->type); dump_field_emacs_ptr (ctx, &out, boolfwd, &boolfwd->boolvar); return dump_object_finish (ctx, &out, sizeof (out)); } static dump_off dump_fwd_obj (struct dump_context *ctx, const struct Lisp_Objfwd *objfwd) { if (NILP (Fgethash (dump_off_to_lisp (emacs_offset (objfwd->objvar)), ctx->staticpro_table, builtin_lisp_symbol (0)))) dump_emacs_reloc_to_lv (ctx, objfwd->objvar, *objfwd->objvar); struct Lisp_Objfwd out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->type = (objfwd)->type); dump_field_emacs_ptr (ctx, &out, objfwd, &objfwd->objvar); return dump_object_finish (ctx, &out, sizeof (out)); } static dump_off dump_fwd_buffer_obj (struct dump_context *ctx, const struct Lisp_Buffer_Objfwd *buffer_objfwd) { struct Lisp_Buffer_Objfwd out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->type = (buffer_objfwd)->type); ((&out)->offset = (buffer_objfwd)->offset); dump_field_lv (ctx, &out, buffer_objfwd, &buffer_objfwd->predicate, WEIGHT_NORMAL); return dump_object_finish (ctx, &out, sizeof (out)); } static dump_off dump_fwd_kboard_obj (struct dump_context *ctx, const struct Lisp_Kboard_Objfwd *kboard_objfwd) { struct Lisp_Kboard_Objfwd out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->type = (kboard_objfwd)->type); ((&out)->offset = (kboard_objfwd)->offset); return dump_object_finish (ctx, &out, sizeof (out)); } static dump_off dump_fwd (struct dump_context *ctx, lispfwd fwd) { void const *p = fwd.fwdptr; dump_off offset; switch (XFWDTYPE (fwd)) { case Lisp_Fwd_Int: offset = dump_fwd_int (ctx, p); break; case Lisp_Fwd_Bool: offset = dump_fwd_bool (ctx, p); break; case Lisp_Fwd_Obj: offset = dump_fwd_obj (ctx, p); break; case Lisp_Fwd_Buffer_Obj: offset = dump_fwd_buffer_obj (ctx, p); break; case Lisp_Fwd_Kboard_Obj: offset = dump_fwd_kboard_obj (ctx, p); break; default: emacs_abort (); } return offset; } static dump_off dump_blv (struct dump_context *ctx, const struct Lisp_Buffer_Local_Value *blv) { struct Lisp_Buffer_Local_Value out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->local_if_set = (blv)->local_if_set); ((&out)->found = (blv)->found); if (blv->fwd.fwdptr) dump_field_fixup_later (ctx, &out, blv, &blv->fwd.fwdptr); dump_field_lv (ctx, &out, blv, &blv->where, WEIGHT_NORMAL); dump_field_lv (ctx, &out, blv, &blv->defcell, WEIGHT_STRONG); dump_field_lv (ctx, &out, blv, &blv->valcell, WEIGHT_STRONG); dump_off offset = dump_object_finish (ctx, &out, sizeof (out)); if (blv->fwd.fwdptr) dump_remember_fixup_ptr_raw (ctx, offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct Lisp_Buffer_Local_Value , fwd ) )), dump_fwd (ctx, blv->fwd)); return offset; } static dump_off dump_recall_symbol_aux (struct dump_context *ctx, Lisp_Object symbol) { Lisp_Object symbol_aux = ctx->symbol_aux; if (NILP (symbol_aux)) return 0; return dump_off_from_lisp (Fgethash (symbol, symbol_aux, make_fixnum (0))); } static void dump_remember_symbol_aux (struct dump_context *ctx, Lisp_Object symbol, dump_off offset) { Fputhash (symbol, dump_off_to_lisp (offset), ctx->symbol_aux); } static void dump_pre_dump_symbol (struct dump_context *ctx, struct Lisp_Symbol *symbol) { Lisp_Object symbol_lv = make_lisp_symbol (symbol); ((void) ( 0 && (!dump_recall_symbol_aux (ctx, symbol_lv)))); if (dump_set_referrer (ctx)) ctx->current_referrer = symbol_lv; switch (symbol->u.s.redirect) { case SYMBOL_LOCALIZED: dump_remember_symbol_aux (ctx, symbol_lv, dump_blv (ctx, symbol->u.s.val.blv)); break; case SYMBOL_FORWARDED: dump_remember_symbol_aux (ctx, symbol_lv, dump_fwd (ctx, symbol->u.s.val.fwd)); break; default: break; } dump_clear_referrer (ctx); } static dump_off dump_symbol (struct dump_context *ctx, Lisp_Object object, dump_off offset) { if (ctx->flags.defer_symbols) { if (offset != DUMP_OBJECT_ON_SYMBOL_QUEUE) { ((void) ( 0 && (offset == DUMP_OBJECT_ON_NORMAL_QUEUE || offset == DUMP_OBJECT_NOT_SEEN))) ; dump_clear_referrer (ctx); struct dump_flags old_flags = ctx->flags; ctx->flags.dump_object_contents = 0 ; ctx->flags.defer_symbols = 0 ; dump_object (ctx, object); ctx->flags = old_flags; if (dump_set_referrer (ctx)) ctx->current_referrer = object; offset = DUMP_OBJECT_ON_SYMBOL_QUEUE; dump_remember_object (ctx, object, offset); dump_push (&ctx->deferred_symbols, object); } return offset; } struct Lisp_Symbol *symbol = XSYMBOL (object); struct Lisp_Symbol out; dump_object_start (ctx, &out, sizeof (out)); ((void) ( 0 && (symbol->u.s.gcmarkbit == 0))); ((&out)->u.s.redirect = (symbol)->u.s.redirect); ((&out)->u.s.trapped_write = (symbol)->u.s.trapped_write); ((&out)->u.s.interned = (symbol)->u.s.interned); ((&out)->u.s.declared_special = (symbol)->u.s.declared_special); ((&out)->u.s.pinned = (symbol)->u.s.pinned); dump_field_lv (ctx, &out, symbol, &symbol->u.s.name, WEIGHT_STRONG); switch (symbol->u.s.redirect) { case SYMBOL_PLAINVAL: dump_field_lv (ctx, &out, symbol, &symbol->u.s.val.value, WEIGHT_NORMAL); break; case SYMBOL_VARALIAS: dump_field_lv_rawptr (ctx, &out, symbol, &symbol->u.s.val.alias, Lisp_Symbol, WEIGHT_NORMAL); break; case SYMBOL_LOCALIZED: dump_field_fixup_later (ctx, &out, symbol, &symbol->u.s.val.blv); break; case SYMBOL_FORWARDED: dump_field_fixup_later (ctx, &out, symbol, &symbol->u.s.val.fwd); break; default: emacs_abort (); } dump_field_lv (ctx, &out, symbol, &symbol->u.s.function, WEIGHT_NORMAL); dump_field_lv (ctx, &out, symbol, &symbol->u.s.plist, WEIGHT_NORMAL); dump_field_lv_rawptr (ctx, &out, symbol, &symbol->u.s.next, Lisp_Symbol, WEIGHT_STRONG); offset = dump_object_finish (ctx, &out, sizeof (out)); dump_off aux_offset; switch (symbol->u.s.redirect) { case SYMBOL_LOCALIZED: aux_offset = dump_recall_symbol_aux (ctx, make_lisp_symbol (symbol)); dump_remember_fixup_ptr_raw (ctx, offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct Lisp_Symbol , u.s.val.blv ) )), (aux_offset ? aux_offset : dump_blv (ctx, symbol->u.s.val.blv))); break; case SYMBOL_FORWARDED: aux_offset = dump_recall_symbol_aux (ctx, make_lisp_symbol (symbol)); dump_remember_fixup_ptr_raw (ctx, offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct Lisp_Symbol , u.s.val.fwd ) )), (aux_offset ? aux_offset : dump_fwd (ctx, symbol->u.s.val.fwd))); break; default: break; } return offset; } static dump_off dump_vectorlike_generic (struct dump_context *ctx, const union vectorlike_header *header) { const struct Lisp_Vector *v = (const struct Lisp_Vector *) header; ptrdiff_t size = header->size; enum pvec_type pvectype = PSEUDOVECTOR_TYPE (v); dump_off offset; if (size & ( (9223372036854775807L) - (9223372036854775807L) / 2)) { ((void) ( 0 && ((size & PSEUDOVECTOR_REST_MASK) >> PSEUDOVECTOR_REST_BITS <= (sizeof (Lisp_Object) < 8)))) ; size &= PSEUDOVECTOR_SIZE_MASK; } dump_align_output (ctx, DUMP_ALIGNMENT); dump_off prefix_start_offset = ctx->offset; dump_off skip; if (pvectype == PVEC_SUB_CHAR_TABLE) { const struct Lisp_Sub_Char_Table *sct = (const struct Lisp_Sub_Char_Table *) header; struct Lisp_Sub_Char_Table out; size_t sz = (char *)&out.min_char + sizeof (out.min_char) - (char *)&out; ((void) ( 0 && (sz < (2147483647) ))); dump_object_start (ctx, &out, (dump_off) sz); ((&out)->header.size = (sct)->header.size); ((&out)->depth = (sct)->depth); ((&out)->min_char = (sct)->min_char); offset = dump_object_finish (ctx, &out, (dump_off) sz); skip = SUB_CHAR_TABLE_OFFSET; } else { union vectorlike_header out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->size = (header)->size); offset = dump_object_finish (ctx, &out, sizeof (out)); skip = 0; } dump_off prefix_size = ctx->offset - prefix_start_offset; ((void) ( 0 && (prefix_size > 0))); dump_off skip_start = ptrdiff_t_to_dump_off ((char *) &v->contents[skip] - (char *) v); ((void) ( 0 && (skip_start >= prefix_size))); dump_write_zero (ctx, skip_start - prefix_size); struct dump_flags old_flags = ctx->flags; ctx->flags.pack_objects = 1 ; for (dump_off i = skip; i < size; ++i) { Lisp_Object out; const Lisp_Object *vslot = &v->contents[i]; ((void) ( 0 && (ctx->offset % sizeof (out) == 0))); dump_object_start (ctx, &out, sizeof (out)); dump_field_lv (ctx, &out, vslot, vslot, WEIGHT_STRONG); dump_object_finish (ctx, &out, sizeof (out)); } ctx->flags = old_flags; dump_align_output (ctx, DUMP_ALIGNMENT); return offset; } static Lisp_Object hash_table_contents (struct Lisp_Hash_Table *h) { if (h->test.hashfn == hashfn_user_defined) error ("cannot dump hash tables with user-defined tests"); ptrdiff_t size = HASH_TABLE_SIZE (h); Lisp_Object key_and_value = make_uninit_vector (2 * size); ptrdiff_t n = 0; for (ptrdiff_t i = 0; i < size; i++) if (!NILP (HASH_HASH (h, i))) { ASET (key_and_value, n++, HASH_KEY (h, i)); ASET (key_and_value, n++, HASH_VALUE (h, i)); } while (n < 2 * size) { ASET (key_and_value, n++, builtin_lisp_symbol (2)); ASET (key_and_value, n++, builtin_lisp_symbol (0)); } return key_and_value; } static dump_off dump_hash_table_list (struct dump_context *ctx) { if (!NILP (ctx->hash_tables)) return dump_object (ctx, (Fapply) ((sizeof (((Lisp_Object []) {builtin_lisp_symbol (1390), ctx->hash_tables})) / sizeof (((Lisp_Object []) {builtin_lisp_symbol (1390), ctx->hash_tables}))[0]), ((Lisp_Object []) {builtin_lisp_symbol (1390), ctx->hash_tables}))); else return 0; } static void hash_table_freeze (struct Lisp_Hash_Table *h) { ptrdiff_t npairs = ASIZE (h->key_and_value) / 2; h->key_and_value = hash_table_contents (h); h->next = h->hash = make_fixnum (npairs); h->index = make_fixnum (ASIZE (h->index)); h->next_free = (npairs == h->count ? -1 : h->count); } static void hash_table_thaw (Lisp_Object hash) { struct Lisp_Hash_Table *h = XHASH_TABLE (hash); h->hash = make_nil_vector (XFIXNUM (h->hash)); h->next = Fmake_vector (h->next, make_fixnum (-1)); h->index = Fmake_vector (h->index, make_fixnum (-1)); hash_table_rehash (hash); } static dump_off dump_hash_table (struct dump_context *ctx, Lisp_Object object, dump_off offset) { const struct Lisp_Hash_Table *hash_in = XHASH_TABLE (object); struct Lisp_Hash_Table hash_munged = *hash_in; struct Lisp_Hash_Table *hash = &hash_munged; hash_table_freeze (hash); dump_push (&ctx->hash_tables, object); const union vectorlike_header *_in_hdr = (&hash->header); struct Lisp_Hash_Table *out = __builtin_alloca (vectorlike_nbytes (_in_hdr)); _dump_object_start_pseudovector (ctx, &out->header, _in_hdr); dump_pseudovector_lisp_fields (ctx, &out->header, &hash->header); ((out)->count = (hash)->count); ((out)->next_free = (hash)->next_free); ((out)->purecopy = (hash)->purecopy); ((out)->mutable = (hash)->mutable); ((out)->rehash_threshold = (hash)->rehash_threshold); ((out)->rehash_size = (hash)->rehash_size); dump_field_lv (ctx, out, hash, &hash->key_and_value, WEIGHT_STRONG); dump_field_lv (ctx, out, hash, &hash->test.name, WEIGHT_STRONG); dump_field_lv (ctx, out, hash, &hash->test.user_hash_function, WEIGHT_STRONG); dump_field_lv (ctx, out, hash, &hash->test.user_cmp_function, WEIGHT_STRONG); dump_field_emacs_ptr (ctx, out, hash, &hash->test.cmpfn); dump_field_emacs_ptr (ctx, out, hash, &hash->test.hashfn); ((void) ( 0 && (hash->next_weak == ((void *)0) ))); return finish_dump_pvec (ctx, &out->header); } static dump_off dump_buffer (struct dump_context *ctx, const struct buffer *in_buffer) { struct buffer munged_buffer = *in_buffer; struct buffer *buffer = &munged_buffer; if (buffer->base_buffer == ((void *)0) ) buffer->window_count = 0; else ((void) ( 0 && (buffer->window_count == -1))); buffer->local_minor_modes_ = builtin_lisp_symbol (0); buffer->last_selected_window_ = builtin_lisp_symbol (0); buffer->display_count_ = make_fixnum (0); buffer->clip_changed = 0; buffer->last_window_start = -1; buffer->point_before_scroll_ = builtin_lisp_symbol (0); dump_off base_offset = 0; if (buffer->base_buffer) { ((void) ( 0 && (buffer->base_buffer->base_buffer == ((void *)0) ))); base_offset = dump_object_for_offset (ctx, make_lisp_ptr (buffer->base_buffer, Lisp_Vectorlike)); } ((void) ( 0 && ((base_offset == 0 && buffer->text == &in_buffer->own_text) || (base_offset > 0 && buffer->text != &in_buffer->own_text)))) ; const union vectorlike_header *_in_hdr = (&buffer->header); struct buffer *out = __builtin_alloca (vectorlike_nbytes (_in_hdr)); _dump_object_start_pseudovector (ctx, &out->header, _in_hdr); dump_pseudovector_lisp_fields (ctx, &out->header, &buffer->header); if (base_offset == 0) base_offset = ctx->obj_offset; ((void) ( 0 && (base_offset > 0))); if (buffer->base_buffer == ((void *)0) ) { ((void) ( 0 && (base_offset == ctx->obj_offset))); if (BUFFER_LIVE_P (buffer)) { dump_field_fixup_later (ctx, out, buffer, &buffer->own_text.beg); dump_remember_cold_op (ctx, COLD_OP_BUFFER, make_lisp_ptr ((void *) in_buffer, Lisp_Vectorlike)); } else ((void) ( 0 && (buffer->own_text.beg == ((void *)0) ))); ((out)->own_text.gpt = (buffer)->own_text.gpt); ((out)->own_text.z = (buffer)->own_text.z); ((out)->own_text.gpt_byte = (buffer)->own_text.gpt_byte); ((out)->own_text.z_byte = (buffer)->own_text.z_byte); ((out)->own_text.gap_size = (buffer)->own_text.gap_size); ((out)->own_text.modiff = (buffer)->own_text.modiff); ((out)->own_text.chars_modiff = (buffer)->own_text.chars_modiff); ((out)->own_text.save_modiff = (buffer)->own_text.save_modiff); ((out)->own_text.overlay_modiff = (buffer)->own_text.overlay_modiff); ((out)->own_text.compact = (buffer)->own_text.compact); ((out)->own_text.beg_unchanged = (buffer)->own_text.beg_unchanged); ((out)->own_text.end_unchanged = (buffer)->own_text.end_unchanged); ((out)->own_text.unchanged_modified = (buffer)->own_text.unchanged_modified); ((out)->own_text.overlay_unchanged_modified = (buffer)->own_text.overlay_unchanged_modified); if (buffer->own_text.intervals) dump_field_fixup_later (ctx, out, buffer, &buffer->own_text.intervals); dump_field_lv_rawptr (ctx, out, buffer, &buffer->own_text.markers, Lisp_Vectorlike, WEIGHT_NORMAL); ((out)->own_text.inhibit_shrinking = (buffer)->own_text.inhibit_shrinking); ((out)->own_text.redisplay = (buffer)->own_text.redisplay); } ((void) ( 0 && (ctx->obj_offset > 0))); dump_remember_fixup_ptr_raw (ctx, ctx->obj_offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct buffer , text ) )), base_offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct buffer , own_text ) ))); ((out)->pt = (buffer)->pt); ((out)->pt_byte = (buffer)->pt_byte); ((out)->begv = (buffer)->begv); ((out)->begv_byte = (buffer)->begv_byte); ((out)->zv = (buffer)->zv); ((out)->zv_byte = (buffer)->zv_byte); if (buffer->base_buffer) { ((void) ( 0 && (ctx->obj_offset != base_offset))); dump_field_ptr_to_dump_offset (ctx, out, buffer, &buffer->base_buffer, base_offset); } ((out)->indirections = (buffer)->indirections); ((out)->window_count = (buffer)->window_count); memcpy (out->local_flags, &buffer->local_flags, sizeof (out->local_flags)); ((out)->modtime = (buffer)->modtime); ((out)->modtime_size = (buffer)->modtime_size); ((out)->auto_save_modified = (buffer)->auto_save_modified); ((out)->display_error_modiff = (buffer)->display_error_modiff); ((out)->auto_save_failure_time = (buffer)->auto_save_failure_time); ((out)->last_window_start = (buffer)->last_window_start); out->newline_cache = ((void *)0) ; out->width_run_cache = ((void *)0) ; out->bidi_paragraph_cache = ((void *)0) ; ((out)->prevent_redisplay_optimizations_p = (buffer)->prevent_redisplay_optimizations_p); ((out)->clip_changed = (buffer)->clip_changed); ((out)->inhibit_buffer_hooks = (buffer)->inhibit_buffer_hooks); dump_field_lv_rawptr (ctx, out, buffer, &buffer->overlays_before, Lisp_Vectorlike, WEIGHT_NORMAL); dump_field_lv_rawptr (ctx, out, buffer, &buffer->overlays_after, Lisp_Vectorlike, WEIGHT_NORMAL); ((out)->overlay_center = (buffer)->overlay_center); dump_field_lv (ctx, out, buffer, &buffer->undo_list_, WEIGHT_STRONG); dump_off offset = finish_dump_pvec (ctx, &out->header); if (!buffer->base_buffer && buffer->own_text.intervals) dump_remember_fixup_ptr_raw (ctx, offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct buffer , own_text.intervals ) )), dump_interval_tree (ctx, buffer->own_text.intervals, 0)); return offset; } static dump_off dump_bool_vector (struct dump_context *ctx, const struct Lisp_Vector *v) { dump_align_output (ctx, DUMP_ALIGNMENT); ((void) ( 0 && (ctx->offset >= ctx->header.cold_start))); dump_off offset = ctx->offset; ptrdiff_t nbytes = vector_nbytes ((struct Lisp_Vector *) v); if (nbytes > (2147483647) ) error ("vector too large"); dump_write (ctx, v, ptrdiff_t_to_dump_off (nbytes)); return offset; } static dump_off dump_subr (struct dump_context *ctx, const struct Lisp_Subr *subr) { struct Lisp_Subr out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->header.size = (subr)->header.size); _Bool native_comp = 0 ; if (native_comp) out.function.a0 = ((void *)0) ; else dump_field_emacs_ptr (ctx, &out, subr, &subr->function.a0); ((&out)->min_args = (subr)->min_args); ((&out)->max_args = (subr)->max_args); if (native_comp) { dump_field_fixup_later (ctx, &out, subr, &subr->symbol_name); dump_remember_cold_op (ctx, COLD_OP_NATIVE_SUBR, make_lisp_ptr ((void *) subr, Lisp_Vectorlike)); dump_field_lv (ctx, &out, subr, &subr->intspec.native, WEIGHT_NORMAL); dump_field_lv (ctx, &out, subr, &subr->command_modes, WEIGHT_NORMAL); } else { dump_field_emacs_ptr (ctx, &out, subr, &subr->symbol_name); dump_field_emacs_ptr (ctx, &out, subr, &subr->intspec.string); dump_field_emacs_ptr (ctx, &out, subr, &subr->command_modes); } ((&out)->doc = (subr)->doc); dump_off subr_off = dump_object_finish (ctx, &out, sizeof (out)); if (native_comp && ctx->flags.dump_object_contents) dump_push (&ctx->dump_relocs[VERY_LATE_RELOCS], list2 (make_fixnum (RELOC_NATIVE_SUBR), dump_off_to_lisp (subr_off))); return subr_off; } static void fill_pseudovec (union vectorlike_header *header, Lisp_Object item) { struct Lisp_Vector *v = (struct Lisp_Vector *) header; ((void) ( 0 && (v->header.size & ( (9223372036854775807L) - (9223372036854775807L) / 2)))); ptrdiff_t size = v->header.size & PSEUDOVECTOR_SIZE_MASK; for (ptrdiff_t idx = 0; idx < size; idx++) v->contents[idx] = item; } static dump_off dump_nilled_pseudovec (struct dump_context *ctx, const union vectorlike_header *in) { const union vectorlike_header *_in_hdr = (in); struct Lisp_Vector *out = __builtin_alloca (vectorlike_nbytes (_in_hdr)); _dump_object_start_pseudovector (ctx, &out->header, _in_hdr); fill_pseudovec (&out->header, builtin_lisp_symbol (0)); return finish_dump_pvec (ctx, &out->header); } static dump_off dump_vectorlike (struct dump_context *ctx, Lisp_Object lv, dump_off offset) { const struct Lisp_Vector *v = XVECTOR (lv); switch (PSEUDOVECTOR_TYPE (v)) { case PVEC_FONT: if ((v->header.size & PSEUDOVECTOR_SIZE_MASK) != FONT_SPEC_MAX && (v->header.size & PSEUDOVECTOR_SIZE_MASK) != FONT_ENTITY_MAX) error_unsupported_dump_object(ctx, lv, "font"); [[__fallthrough__]]; case PVEC_NORMAL_VECTOR: case PVEC_COMPILED: case PVEC_CHAR_TABLE: case PVEC_SUB_CHAR_TABLE: case PVEC_RECORD: offset = dump_vectorlike_generic (ctx, &v->header); break; case PVEC_BOOL_VECTOR: offset = dump_bool_vector(ctx, v); break; case PVEC_HASH_TABLE: offset = dump_hash_table (ctx, lv, offset); break; case PVEC_BUFFER: offset = dump_buffer (ctx, XBUFFER (lv)); break; case PVEC_SUBR: offset = dump_subr (ctx, XSUBR (lv)); break; case PVEC_FRAME: case PVEC_WINDOW: case PVEC_PROCESS: case PVEC_TERMINAL: offset = dump_nilled_pseudovec (ctx, &v->header); break; case PVEC_MARKER: offset = dump_marker (ctx, XMARKER (lv)); break; case PVEC_OVERLAY: offset = dump_overlay (ctx, XOVERLAY (lv)); break; case PVEC_FINALIZER: offset = dump_finalizer (ctx, XFINALIZER (lv)); break; case PVEC_BIGNUM: offset = dump_bignum (ctx, lv); break; case PVEC_WINDOW_CONFIGURATION: error_unsupported_dump_object (ctx, lv, "window configuration"); case PVEC_OTHER: error_unsupported_dump_object (ctx, lv, "other?!"); case PVEC_XWIDGET: error_unsupported_dump_object (ctx, lv, "xwidget"); case PVEC_XWIDGET_VIEW: error_unsupported_dump_object (ctx, lv, "xwidget view"); case PVEC_MISC_PTR: case PVEC_USER_PTR: error_unsupported_dump_object (ctx, lv, "smuggled pointers"); case PVEC_THREAD: if (main_thread_p (v)) { ((void) ( 0 && (dump_object_emacs_ptr (lv)))); return DUMP_OBJECT_IS_RUNTIME_MAGIC; } error_unsupported_dump_object (ctx, lv, "thread"); case PVEC_MUTEX: error_unsupported_dump_object (ctx, lv, "mutex"); case PVEC_CONDVAR: error_unsupported_dump_object (ctx, lv, "condvar"); case PVEC_SQLITE: error_unsupported_dump_object (ctx, lv, "sqlite"); case PVEC_MODULE_FUNCTION: error_unsupported_dump_object (ctx, lv, "module function"); case PVEC_SYMBOL_WITH_POS: error_unsupported_dump_object (ctx, lv, "symbol with pos"); default: error_unsupported_dump_object(ctx, lv, "weird pseudovector"); } return offset; } static dump_off dump_object (struct dump_context *ctx, Lisp_Object object) { ((void) ( 0 && (!EQ (object, dead_object ())))); dump_off offset = dump_recall_object (ctx, object); if (offset > 0) return offset; _Bool cold = BOOL_VECTOR_P (object) || FLOATP (object); if (cold && ctx->flags.defer_cold_objects) { if (offset != DUMP_OBJECT_ON_COLD_QUEUE) { ((void) ( 0 && (offset == DUMP_OBJECT_ON_NORMAL_QUEUE || offset == DUMP_OBJECT_NOT_SEEN))) ; offset = DUMP_OBJECT_ON_COLD_QUEUE; dump_remember_object (ctx, object, offset); dump_remember_cold_op (ctx, COLD_OP_OBJECT, object); } return offset; } void *obj_in_emacs = dump_object_emacs_ptr (object); if (obj_in_emacs && ctx->flags.defer_copied_objects) { if (offset != DUMP_OBJECT_ON_COPIED_QUEUE) { ((void) ( 0 && (offset == DUMP_OBJECT_ON_NORMAL_QUEUE || offset == DUMP_OBJECT_NOT_SEEN))) ; struct dump_flags old_flags = ctx->flags; ctx->flags.dump_object_contents = 0 ; ctx->flags.defer_copied_objects = 0 ; dump_object (ctx, object); ctx->flags = old_flags; offset = DUMP_OBJECT_ON_COPIED_QUEUE; dump_remember_object (ctx, object, offset); dump_push (&ctx->copied_queue, object); } return offset; } if (dump_set_referrer (ctx)) ctx->current_referrer = object; switch (XTYPE (object)) { case Lisp_String: offset = dump_string (ctx, XSTRING (object)); break; case Lisp_Vectorlike: offset = dump_vectorlike (ctx, object, offset); break; case Lisp_Symbol: offset = dump_symbol (ctx, object, offset); break; case Lisp_Cons: offset = dump_cons (ctx, XCONS (object)); break; case Lisp_Float: offset = dump_float (ctx, XFLOAT (object)); break; case Lisp_Int0: case Lisp_Int1: ((void) ( 0 && ("should not be dumping int: is self-representing" && 0))); abort (); default: emacs_abort (); } dump_clear_referrer (ctx); if (ctx->flags.dump_object_contents && offset > DUMP_OBJECT_NOT_SEEN) { ((void) ( 0 && (offset % DUMP_ALIGNMENT == 0))); dump_remember_object (ctx, object, offset); if (ctx->flags.record_object_starts) { ((void) ( 0 && (!ctx->flags.pack_objects))); dump_push (&ctx->object_starts, list2 (dump_off_to_lisp (XTYPE (object)), dump_off_to_lisp (offset))); } } return offset; } static dump_off dump_object_for_offset (struct dump_context *ctx, Lisp_Object object) { dump_off offset = dump_object (ctx, object); ((void) ( 0 && (offset > 0))); return offset; } static dump_off dump_charset (struct dump_context *ctx, int cs_i) { dump_align_output (ctx, _Alignof (struct charset)); const struct charset *cs = charset_table + cs_i; struct charset out; dump_object_start (ctx, &out, sizeof (out)); ((&out)->id = (cs)->id); ((&out)->hash_index = (cs)->hash_index); ((&out)->dimension = (cs)->dimension); memcpy (out.code_space, &cs->code_space, sizeof (cs->code_space)); if (cs_i < charset_table_used && cs->code_space_mask) dump_field_fixup_later (ctx, &out, cs, &cs->code_space_mask); ((&out)->code_linear_p = (cs)->code_linear_p); ((&out)->iso_chars_96 = (cs)->iso_chars_96); ((&out)->ascii_compatible_p = (cs)->ascii_compatible_p); ((&out)->supplementary_p = (cs)->supplementary_p); ((&out)->compact_codes_p = (cs)->compact_codes_p); ((&out)->unified_p = (cs)->unified_p); ((&out)->iso_final = (cs)->iso_final); ((&out)->iso_revision = (cs)->iso_revision); ((&out)->emacs_mule_id = (cs)->emacs_mule_id); ((&out)->method = (cs)->method); ((&out)->min_code = (cs)->min_code); ((&out)->max_code = (cs)->max_code); ((&out)->char_index_offset = (cs)->char_index_offset); ((&out)->min_char = (cs)->min_char); ((&out)->max_char = (cs)->max_char); ((&out)->invalid_code = (cs)->invalid_code); memcpy (out.fast_map, &cs->fast_map, sizeof (cs->fast_map)); ((&out)->code_offset = (cs)->code_offset); dump_off offset = dump_object_finish (ctx, &out, sizeof (out)); if (cs_i < charset_table_used && cs->code_space_mask) dump_remember_cold_op (ctx, COLD_OP_CHARSET, Fcons (dump_off_to_lisp (cs_i), dump_off_to_lisp (offset))); return offset; } static dump_off dump_charset_table (struct dump_context *ctx) { struct dump_flags old_flags = ctx->flags; ctx->flags.pack_objects = 1 ; dump_align_output (ctx, DUMP_ALIGNMENT); dump_off offset = ctx->offset; for (int i = 0; i < charset_table_size; ++i) dump_charset (ctx, i); dump_emacs_reloc_to_dump_ptr_raw (ctx, &charset_table, offset); ctx->flags = old_flags; return offset; } static void dump_finalizer_list_head_ptr (struct dump_context *ctx, struct Lisp_Finalizer **ptr) { struct Lisp_Finalizer *value = *ptr; if (value != &finalizers && value != &doomed_finalizers) dump_emacs_reloc_to_dump_ptr_raw (ctx, ptr, dump_object_for_offset (ctx, make_lisp_ptr (value, Lisp_Vectorlike))); } static void dump_metadata_for_pdumper (struct dump_context *ctx) { for (int i = 0; i < nr_dump_hooks; ++i) dump_emacs_reloc_to_emacs_ptr_raw (ctx, &dump_hooks[i], (void const *) dump_hooks[i]); dump_emacs_reloc_immediate_int (ctx, &nr_dump_hooks, nr_dump_hooks); for (int i = 0; i < nr_dump_late_hooks; ++i) dump_emacs_reloc_to_emacs_ptr_raw (ctx, &dump_late_hooks[i], (void const *) dump_late_hooks[i]); dump_emacs_reloc_immediate_int (ctx, &nr_dump_late_hooks, nr_dump_late_hooks); for (int i = 0; i < nr_remembered_data; ++i) { dump_emacs_reloc_to_emacs_ptr_raw (ctx, &remembered_data[i].mem, remembered_data[i].mem); dump_emacs_reloc_immediate_int (ctx, &remembered_data[i].sz, remembered_data[i].sz); } dump_emacs_reloc_immediate_int (ctx, &nr_remembered_data, nr_remembered_data); } static void dump_sort_copied_objects (struct dump_context *ctx) { ctx->copied_queue = Fsort (Fnreverse (ctx->copied_queue), builtin_lisp_symbol (515)); } static void dump_hot_parts_of_discardable_objects (struct dump_context *ctx) { Lisp_Object copied_queue = ctx->copied_queue; while (!NILP (copied_queue)) { Lisp_Object copied = dump_pop (&copied_queue); if (SYMBOLP (copied)) { ((void) ( 0 && (dump_builtin_symbol_p (copied)))); dump_pre_dump_symbol (ctx, XSYMBOL (copied)); } } } static void dump_drain_copied_objects (struct dump_context *ctx) { Lisp_Object copied_queue = ctx->copied_queue; ctx->copied_queue = builtin_lisp_symbol (0); struct dump_flags old_flags = ctx->flags; ctx->flags.assert_already_seen = 1 ; ctx->flags.defer_copied_objects = 0 ; ctx->flags.record_object_starts = 0 ; while (!NILP (copied_queue)) { Lisp_Object copied = dump_pop (&copied_queue); void *optr = dump_object_emacs_ptr (copied); ((void) ( 0 && (optr != ((void *)0) ))); dump_off start_offset = dump_object (ctx, copied); if (start_offset != DUMP_OBJECT_IS_RUNTIME_MAGIC) { dump_off size = ctx->offset - start_offset; dump_emacs_reloc_copy_from_dump (ctx, start_offset, optr, size); } } ctx->flags = old_flags; } static void dump_cold_string (struct dump_context *ctx, Lisp_Object string) { dump_off string_offset = dump_recall_object (ctx, string); ((void) ( 0 && (string_offset > 0))); if (SBYTES (string) > (2147483647) - 1) error ("string too large"); dump_off total_size = ptrdiff_t_to_dump_off (SBYTES (string) + 1); ((void) ( 0 && (total_size > 0))); dump_remember_fixup_ptr_raw (ctx, string_offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct Lisp_String , u.s.data ) )), ctx->offset); dump_write (ctx, XSTRING (string)->u.s.data, total_size); } static void dump_cold_charset (struct dump_context *ctx, Lisp_Object data) { int cs_i = XFIXNUM (XCAR (data)); dump_off cs_dump_offset = dump_off_from_lisp (XCDR (data)); dump_remember_fixup_ptr_raw (ctx, cs_dump_offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct charset , code_space_mask ) )), ctx->offset); struct charset *cs = charset_table + cs_i; dump_write (ctx, cs->code_space_mask, 256); } static void dump_cold_buffer (struct dump_context *ctx, Lisp_Object data) { dump_off buffer_offset = dump_recall_object (ctx, data); ((void) ( 0 && (buffer_offset > 0))); struct buffer *b = XBUFFER (data); ((void) ( 0 && (b->text == &b->own_text))); memset (BUF_GPT_ADDR (b), 0, ((b)->text->gap_size)); ptrdiff_t nbytes = ((b)->text->z_byte) - BUF_BEG_BYTE (b) + ((b)->text->gap_size) + 1; if (nbytes > (2147483647) ) error ("buffer too large"); dump_remember_fixup_ptr_raw (ctx, buffer_offset + (ptrdiff_t_to_dump_off ( __builtin_offsetof ( struct buffer , own_text.beg ) )), ctx->offset); dump_write (ctx, b->own_text.beg, ptrdiff_t_to_dump_off (nbytes)); } static void dump_cold_bignum (struct dump_context *ctx, Lisp_Object object) { mpz_t const *n = xbignum_val (object); size_t sz_nlimbs = __gmpz_size (*n); ((void) ( 0 && (sz_nlimbs < (2147483647) ))); dump_align_output (ctx, _Alignof (mp_limb_t)); dump_off nlimbs = (dump_off) sz_nlimbs; Lisp_Object descriptor = list2 (dump_off_to_lisp (ctx->offset), dump_off_to_lisp ( (( *n )->_mp_size < 0 ? -1 : ( *n )->_mp_size > 0) < 0 ? -nlimbs : nlimbs)); Fputhash (object, descriptor, ctx->bignum_data); for (mp_size_t i = 0; i < nlimbs; ++i) { mp_limb_t limb = __gmpz_getlimbn (*n, i); dump_write (ctx, &limb, sizeof (limb)); } } static void dump_drain_cold_data (struct dump_context *ctx) { Lisp_Object cold_queue = Fnreverse (ctx->cold_queue); ctx->cold_queue = builtin_lisp_symbol (0); struct dump_flags old_flags = ctx->flags; ctx->flags.assert_already_seen = 1 ; ctx->flags.defer_cold_objects = 0 ; while (!NILP (cold_queue)) { Lisp_Object item = dump_pop (&cold_queue); enum cold_op op = (enum cold_op) XFIXNUM (XCAR (item)); Lisp_Object data = XCDR (item); switch (op) { case COLD_OP_STRING: dump_cold_string (ctx, data); break; case COLD_OP_CHARSET: dump_cold_charset (ctx, data); break; case COLD_OP_BUFFER: dump_cold_buffer (ctx, data); break; case COLD_OP_OBJECT: ((void) ( 0 && (dump_queue_empty_p (&ctx->dump_queue)))); ((void) ( 0 && (ctx->flags.dump_object_contents))); dump_object (ctx, data); ((void) ( 0 && (dump_queue_empty_p (&ctx->dump_queue)))); break; case COLD_OP_BIGNUM: dump_cold_bignum (ctx, data); break; default: emacs_abort (); } } ctx->flags = old_flags; } static void read_ptr_raw_and_lv (const void *mem, enum Lisp_Type type, void **out_ptr, Lisp_Object *out_lv) { memcpy (out_ptr, mem, sizeof (*out_ptr)); if (*out_ptr != ((void *)0) ) { switch (type) { case Lisp_Symbol: *out_lv = make_lisp_symbol (*out_ptr); break; case Lisp_String: case Lisp_Vectorlike: case Lisp_Cons: case Lisp_Float: *out_lv = make_lisp_ptr (*out_ptr, type); break; default: emacs_abort (); } } } static void dump_drain_user_remembered_data_hot (struct dump_context *ctx) { for (int i = 0; i < nr_remembered_data; ++i) { void *mem = remembered_data[i].mem; int sz = remembered_data[i].sz; if (sz <= 0) { enum Lisp_Type type = -sz; void *value; Lisp_Object lv; read_ptr_raw_and_lv (mem, type, &value, &lv); if (value != ((void *)0) ) { if (dump_set_referrer (ctx)) ctx->current_referrer = dump_ptr_referrer ("user data", mem); dump_enqueue_object (ctx, lv, WEIGHT_NONE); dump_clear_referrer (ctx); } } } } static void dump_drain_user_remembered_data_cold (struct dump_context *ctx) { for (int i = 0; i < nr_remembered_data; ++i) { void *mem = remembered_data[i].mem; int sz = remembered_data[i].sz; if (sz > 0) { if (sz <= sizeof (intmax_t)) dump_emacs_reloc_immediate (ctx, mem, mem, sz); else { dump_emacs_reloc_copy_from_dump (ctx, ctx->offset, mem, sz); dump_write (ctx, mem, sz); } } else { void *value; Lisp_Object lv; enum Lisp_Type type = -sz; read_ptr_raw_and_lv (mem, type, &value, &lv); if (value == ((void *)0) ) dump_emacs_reloc_immediate_ptrdiff_t (ctx, mem, 0); else { if (dump_object_emacs_ptr (lv) != ((void *)0) ) { dump_emacs_reloc_to_emacs_ptr_raw (ctx, mem, dump_object_emacs_ptr (lv)); } else { ((void) ( 0 && (!dump_object_self_representing_p (lv)))); dump_off dump_offset = dump_recall_object (ctx, lv); if (dump_offset <= 0) error ("raw-pointer object not dumped?!"); dump_emacs_reloc_to_dump_ptr_raw (ctx, mem, dump_offset); } } } } } static void dump_unwind_cleanup (void *data) { struct dump_context *ctx = data; if (ctx->fd >= 0) emacs_close (ctx->fd); globals.f_Vpurify_flag = ctx->old_purify_flag; globals.f_Vpost_gc_hook = ctx->old_post_gc_hook; globals.f_Vprocess_environment = ctx->old_process_environment; } static void dump_check_dump_off (struct dump_context *ctx, dump_off dump_offset) { ((void) ( 0 && (dump_offset > 0))); ((void) ( 0 && (!ctx || dump_offset < ctx->end_heap))); } static void dump_check_emacs_off (dump_off emacs_off) { ((void) ( 0 && (labs (emacs_off) <= 60 * 1024 * 1024))); } static struct dump_reloc dump_decode_dump_reloc (Lisp_Object lreloc) { struct dump_reloc reloc; dump_reloc_set_type (&reloc, (enum dump_reloc_type) XFIXNUM (dump_pop (&lreloc))); ((void) ( 0 && (reloc.type <= RELOC_DUMP_TO_EMACS_LV + Lisp_Float))); dump_reloc_set_offset (&reloc, dump_off_from_lisp (dump_pop (&lreloc))); ((void) ( 0 && (NILP (lreloc)))); return reloc; } static void dump_emit_dump_reloc (struct dump_context *ctx, Lisp_Object lreloc) { ((void) ( 0 && (ctx->flags.pack_objects))); struct dump_reloc reloc; dump_object_start (ctx, &reloc, sizeof (reloc)); reloc = dump_decode_dump_reloc (lreloc); dump_check_dump_off (ctx, dump_reloc_get_offset (reloc)); dump_object_finish (ctx, &reloc, sizeof (reloc)); if (dump_reloc_get_offset (reloc) < ctx->header.discardable_start) ctx->number_hot_relocations += 1; else ctx->number_discardable_relocations += 1; } static struct emacs_reloc decode_emacs_reloc (struct dump_context *ctx, Lisp_Object lreloc) { struct emacs_reloc reloc = {0}; int type = XFIXNUM (dump_pop (&lreloc)); reloc.emacs_offset = dump_off_from_lisp (dump_pop (&lreloc)); dump_check_emacs_off (reloc.emacs_offset); switch (type) { case RELOC_EMACS_COPY_FROM_DUMP: { emacs_reloc_set_type (&reloc, type); reloc.u.dump_offset = dump_off_from_lisp (dump_pop (&lreloc)); dump_check_dump_off (ctx, reloc.u.dump_offset); dump_off length = dump_off_from_lisp (dump_pop (&lreloc)); reloc.length = length; if (reloc.length != length) error ("relocation copy length too large"); } break; case RELOC_EMACS_IMMEDIATE: { emacs_reloc_set_type (&reloc, type); intmax_t value = intmax_t_from_lisp (dump_pop (&lreloc)); dump_off size = dump_off_from_lisp (dump_pop (&lreloc)); reloc.u.immediate = value; reloc.length = size; ((void) ( 0 && (reloc.length == size))); } break; case RELOC_EMACS_EMACS_PTR_RAW: emacs_reloc_set_type (&reloc, type); reloc.u.emacs_offset2 = dump_off_from_lisp (dump_pop (&lreloc)); dump_check_emacs_off (reloc.u.emacs_offset2); break; case RELOC_EMACS_DUMP_PTR_RAW: emacs_reloc_set_type (&reloc, type); reloc.u.dump_offset = dump_off_from_lisp (dump_pop (&lreloc)); dump_check_dump_off (ctx, reloc.u.dump_offset); break; case RELOC_EMACS_DUMP_LV: case RELOC_EMACS_EMACS_LV: { emacs_reloc_set_type (&reloc, type); Lisp_Object target_value = dump_pop (&lreloc); ((void) ( 0 && (!dump_object_self_representing_p (target_value)))); int tag_type = XTYPE (target_value); reloc.length = tag_type; ((void) ( 0 && (reloc.length == tag_type))); if (type == RELOC_EMACS_EMACS_LV) { void *obj_in_emacs = dump_object_emacs_ptr (target_value); ((void) ( 0 && (obj_in_emacs))); reloc.u.emacs_offset2 = emacs_offset (obj_in_emacs); } else { ((ctx) ? (void) 0 : __builtin_unreachable ()); ((void) ( 0 && (!dump_object_emacs_ptr (target_value)))); reloc.u.dump_offset = dump_recall_object (ctx, target_value); if (reloc.u.dump_offset <= 0) { Lisp_Object repr = Fprin1_to_string (target_value, builtin_lisp_symbol (0), builtin_lisp_symbol (0)); error ("relocation target was not dumped: %s", SDATA (repr)); } dump_check_dump_off (ctx, reloc.u.dump_offset); } } break; default: ((!"not reached") ? (void) 0 : __builtin_unreachable ()); } ((void) ( 0 && (NILP (lreloc)))); return reloc; } static void dump_emit_emacs_reloc (struct dump_context *ctx, Lisp_Object lreloc) { ((void) ( 0 && (ctx->flags.pack_objects))); struct emacs_reloc reloc; dump_object_start (ctx, &reloc, sizeof (reloc)); reloc = decode_emacs_reloc (ctx, lreloc); dump_object_finish (ctx, &reloc, sizeof (reloc)); } static Lisp_Object dump_merge_emacs_relocs (Lisp_Object lreloc_a, Lisp_Object lreloc_b) { if (XFIXNUM (XCAR (lreloc_a)) != RELOC_EMACS_COPY_FROM_DUMP || XFIXNUM (XCAR (lreloc_b)) != RELOC_EMACS_COPY_FROM_DUMP) return builtin_lisp_symbol (0); struct emacs_reloc reloc_a = decode_emacs_reloc ( ((void *)0) , lreloc_a); struct emacs_reloc reloc_b = decode_emacs_reloc ( ((void *)0) , lreloc_b); ((void) ( 0 && (reloc_a.type == RELOC_EMACS_COPY_FROM_DUMP))); ((void) ( 0 && (reloc_b.type == RELOC_EMACS_COPY_FROM_DUMP))); if (reloc_a.emacs_offset + reloc_a.length != reloc_b.emacs_offset) return builtin_lisp_symbol (0); if (reloc_a.u.dump_offset + reloc_a.length != reloc_b.u.dump_offset) return builtin_lisp_symbol (0); dump_off new_length = reloc_a.length + reloc_b.length; reloc_a.length = new_length; if (reloc_a.length != new_length) return builtin_lisp_symbol (0); return list4 (make_fixnum (RELOC_EMACS_COPY_FROM_DUMP), dump_off_to_lisp (reloc_a.emacs_offset), dump_off_to_lisp (reloc_a.u.dump_offset), dump_off_to_lisp (reloc_a.length)); } typedef void (*drain_reloc_handler) (struct dump_context *, Lisp_Object); typedef Lisp_Object (*drain_reloc_merger) (Lisp_Object a, Lisp_Object b); static void drain_reloc_list (struct dump_context *ctx, drain_reloc_handler handler, drain_reloc_merger merger, Lisp_Object *reloc_list, struct dump_table_locator *out_locator) { struct dump_flags old_flags = ctx->flags; ctx->flags.pack_objects = 1 ; Lisp_Object relocs = Fsort (Fnreverse (*reloc_list), builtin_lisp_symbol (514)); *reloc_list = builtin_lisp_symbol (0); dump_align_output (ctx, (( _Alignof (struct dump_reloc)) > ( _Alignof (struct emacs_reloc)) ? ( _Alignof (struct dump_reloc)) : ( _Alignof (struct emacs_reloc))) ); struct dump_table_locator locator = {0}; locator.offset = ctx->offset; for (; !NILP (relocs); locator.nr_entries += 1) { Lisp_Object reloc = dump_pop (&relocs); Lisp_Object merged; while (merger != ((void *)0) && !NILP (relocs) && (merged = merger (reloc, XCAR (relocs)), !NILP (merged))) { reloc = merged; relocs = XCDR (relocs); } handler (ctx, reloc); } *out_locator = locator; ctx->flags = old_flags; } static void dump_do_fixup (struct dump_context *ctx, Lisp_Object fixup, Lisp_Object prev_fixup) { enum dump_fixup_type type = (enum dump_fixup_type) XFIXNUM (dump_pop (&fixup)); dump_off dump_fixup_offset = dump_off_from_lisp (dump_pop (&fixup)); Lisp_Object arg = dump_pop (&fixup); ((void) ( 0 && (NILP (fixup)))); dump_seek (ctx, dump_fixup_offset); intptr_t dump_value; _Bool do_write = 1 ; switch (type) { case DUMP_FIXUP_LISP_OBJECT: case DUMP_FIXUP_LISP_OBJECT_RAW: if (SUBRP (arg) && !SUBR_NATIVE_COMPILEDP (arg)) { dump_value = emacs_offset (XSUBR (arg)); if (type == DUMP_FIXUP_LISP_OBJECT) dump_reloc_dump_to_emacs_lv (ctx, ctx->offset, XTYPE (arg)); else dump_reloc_dump_to_emacs_ptr_raw (ctx, ctx->offset); } else if (dump_builtin_symbol_p (arg)) { ((void) ( 0 && (dump_object_self_representing_p (arg)))); if (type == DUMP_FIXUP_LISP_OBJECT) { do_write = 0 ; dump_write (ctx, &arg, sizeof (arg)); } else { dump_value = emacs_offset (XSYMBOL (arg)); dump_reloc_dump_to_emacs_ptr_raw (ctx, ctx->offset); } } else { ((void) ( 0 && (dump_object_emacs_ptr (arg) == ((void *)0) ))); dump_value = dump_recall_object (ctx, arg); if (dump_value <= 0) error ("fixup object not dumped"); if (type == DUMP_FIXUP_LISP_OBJECT) dump_reloc_dump_to_dump_lv (ctx, ctx->offset, XTYPE (arg)); else dump_reloc_dump_to_dump_ptr_raw (ctx, ctx->offset); } break; case DUMP_FIXUP_PTR_DUMP_RAW: dump_value = dump_off_from_lisp (arg); dump_reloc_dump_to_dump_ptr_raw (ctx, ctx->offset); break; case DUMP_FIXUP_BIGNUM_DATA: { ((void) ( 0 && (BIGNUMP (arg)))); arg = Fgethash (arg, ctx->bignum_data, builtin_lisp_symbol (0)); if (NILP (arg)) error ("bignum not dumped"); struct bignum_reload_info reload_info = { 0 }; reload_info.data_location = dump_off_from_lisp (dump_pop (&arg)); reload_info.nlimbs = dump_off_from_lisp (dump_pop (&arg)); ((void) ( 0 && (NILP (arg)))); dump_write (ctx, &reload_info, sizeof (reload_info)); do_write = 0 ; break; } default: emacs_abort (); } if (do_write) dump_write (ctx, &dump_value, sizeof (dump_value)); } static void dump_do_fixups (struct dump_context *ctx) { dump_off saved_offset = ctx->offset; Lisp_Object fixups = Fsort (Fnreverse (ctx->fixups), builtin_lisp_symbol (514)); Lisp_Object prev_fixup = builtin_lisp_symbol (0); ctx->fixups = builtin_lisp_symbol (0); while (!NILP (fixups)) { Lisp_Object fixup = dump_pop (&fixups); dump_do_fixup (ctx, fixup, prev_fixup); prev_fixup = fixup; } dump_seek (ctx, saved_offset); } static void dump_drain_normal_queue (struct dump_context *ctx) { while (!dump_queue_empty_p (&ctx->dump_queue)) dump_object (ctx, dump_queue_dequeue (&ctx->dump_queue, ctx->offset)); } static void dump_drain_deferred_hash_tables (struct dump_context *ctx) { struct dump_flags old_flags = ctx->flags; ctx->flags.defer_hash_tables = 0 ; Lisp_Object deferred_hash_tables = Fnreverse (ctx->deferred_hash_tables); ctx->deferred_hash_tables = builtin_lisp_symbol (0); while (!NILP (deferred_hash_tables)) dump_object (ctx, dump_pop (&deferred_hash_tables)); ctx->flags = old_flags; } static void dump_drain_deferred_symbols (struct dump_context *ctx) { struct dump_flags old_flags = ctx->flags; ctx->flags.defer_symbols = 0 ; Lisp_Object deferred_symbols = Fnreverse (ctx->deferred_symbols); ctx->deferred_symbols = builtin_lisp_symbol (0); while (!NILP (deferred_symbols)) dump_object (ctx, dump_pop (&deferred_symbols)); ctx->flags = old_flags; } __attribute__((section (".subrs"))) static union Aligned_Lisp_Subr Sdump_emacs_portable = {{{ PVEC_SUBR << PSEUDOVECTOR_AREA_BITS }, { .a2 = Fdump_emacs_portable }, 1, 2, "dump-emacs-portable", {0}, 0}}; Lisp_Object Fdump_emacs_portable (Lisp_Object filename, Lisp_Object track_referrers) { ((void) ( 0 && (initialized))); if (! noninteractive) error ("Dumping Emacs currently works only in batch mode. " "If you'd like it to work interactively, please consider " "contributing a patch to Emacs."); if (will_dump_with_unexec_p ()) error ("This Emacs instance was started under the assumption " "that it would be dumped with unexec, not the portable " "dumper. Dumping with the portable dumper may produce " "unexpected results."); if (!main_thread_p (current_thread)) error ("This function can be called only in the main thread"); if (!NILP (XCDR (Fall_threads ()))) error ("No other Lisp threads can be running when this function is called"); do { number_finalizers_run = 0; garbage_collect (); } while (number_finalizers_run); specpdl_ref count = SPECPDL_INDEX (); Lisp_Object symbol = intern ("command-line-processed"); specbind (symbol, builtin_lisp_symbol (0)); CHECK_STRING (filename); filename = Fexpand_file_name (filename, builtin_lisp_symbol (0)); filename = encode_file_name (filename); struct dump_context ctx_buf = {0}; struct dump_context *ctx = &ctx_buf; ctx->fd = -1; ctx->objects_dumped = make_eq_hash_table (); dump_queue_init (&ctx->dump_queue); ctx->deferred_hash_tables = builtin_lisp_symbol (0); ctx->deferred_symbols = builtin_lisp_symbol (0); ctx->fixups = builtin_lisp_symbol (0); ctx->staticpro_table = Fmake_hash_table (0, ((void *)0) ); ctx->symbol_aux = builtin_lisp_symbol (0); ctx->copied_queue = builtin_lisp_symbol (0); ctx->cold_queue = builtin_lisp_symbol (0); for (int i = 0; i < RELOC_NUM_PHASES; ++i) ctx->dump_relocs[i] = builtin_lisp_symbol (0); ctx->object_starts = builtin_lisp_symbol (0); ctx->emacs_relocs = builtin_lisp_symbol (0); ctx->bignum_data = make_eq_hash_table (); ctx->flags.dump_object_contents = 1 ; ctx->flags.record_object_starts = 1 ; ctx->flags.defer_hash_tables = 1 ; ctx->flags.defer_cold_objects = 1 ; ctx->flags.defer_copied_objects = 1 ; ctx->current_referrer = builtin_lisp_symbol (0); if (!NILP (track_referrers)) ctx->referrers = make_eq_hash_table (); ctx->dump_filename = filename; record_unwind_protect_ptr (dump_unwind_cleanup, ctx); block_input (); ctx->old_purify_flag = globals.f_Vpurify_flag; globals.f_Vpurify_flag = builtin_lisp_symbol (0); ctx->old_post_gc_hook = globals.f_Vpost_gc_hook; globals.f_Vpost_gc_hook = builtin_lisp_symbol (0); ctx->old_process_environment = globals.f_Vprocess_environment; globals.f_Vprocess_environment = builtin_lisp_symbol (0); ctx->fd = emacs_open (SSDATA (filename), 02 | 01000 | 0100 , 0666); if (ctx->fd < 0) report_file_error ("Opening dump output", filename); _Static_assert (sizeof (ctx->header.magic) == sizeof (dump_magic), "verify (" "sizeof (ctx->header.magic) == sizeof (dump_magic)" ")"); memcpy (&ctx->header.magic, dump_magic, sizeof (dump_magic)); ctx->header.magic[0] = '!'; _Static_assert (sizeof (fingerprint) == sizeof (ctx->header.fingerprint), "verify (" "sizeof (fingerprint) == sizeof (ctx->header.fingerprint)" ")"); for (int i = 0; i < sizeof fingerprint; i++) ctx->header.fingerprint[i] = fingerprint[i]; const dump_off header_start = ctx->offset; dump_fingerprint ( stderr , "Dumping fingerprint", ctx->header.fingerprint); dump_write (ctx, &ctx->header, sizeof (ctx->header)); const dump_off header_end = ctx->offset; const dump_off hot_start = ctx->offset; dump_roots (ctx); dump_charset_table (ctx); dump_finalizer_list_head_ptr (ctx, &finalizers.prev); dump_finalizer_list_head_ptr (ctx, &finalizers.next); dump_finalizer_list_head_ptr (ctx, &doomed_finalizers.prev); dump_finalizer_list_head_ptr (ctx, &doomed_finalizers.next); dump_drain_user_remembered_data_hot (ctx); dump_metadata_for_pdumper (ctx); for (int i = 0; i < staticidx; ++i) dump_emacs_reloc_to_emacs_ptr_raw (ctx, &staticvec[i], staticvec[i]); dump_emacs_reloc_immediate_int (ctx, &staticidx, staticidx); do { dump_drain_deferred_hash_tables (ctx); dump_drain_deferred_symbols (ctx); dump_drain_normal_queue (ctx); } while (!dump_queue_empty_p (&ctx->dump_queue) || !NILP (ctx->deferred_hash_tables) || !NILP (ctx->deferred_symbols)); ctx->header.hash_list = ctx->offset; dump_hash_table_list (ctx); do { dump_drain_deferred_hash_tables (ctx); dump_drain_deferred_symbols (ctx); dump_drain_normal_queue (ctx); } while (!dump_queue_empty_p (&ctx->dump_queue) || !NILP (ctx->deferred_hash_tables) || !NILP (ctx->deferred_symbols)); dump_sort_copied_objects (ctx); ctx->symbol_aux = make_eq_hash_table (); dump_hot_parts_of_discardable_objects (ctx); const dump_off hot_end = ctx->offset; ctx->header.discardable_start = hot_end; dump_drain_copied_objects (ctx); ((void) ( 0 && (dump_queue_empty_p (&ctx->dump_queue)))); dump_off discardable_end = ctx->offset; dump_align_output (ctx, dump_get_max_page_size ()); ctx->header.cold_start = ctx->offset; dump_drain_cold_data (ctx); dump_drain_user_remembered_data_cold (ctx); ctx->end_heap = ctx->offset; dump_do_fixups (ctx); drain_reloc_merger emacs_reloc_merger = ((void *)0) ; for (int i = 0; i < RELOC_NUM_PHASES; ++i) drain_reloc_list (ctx, dump_emit_dump_reloc, emacs_reloc_merger, &ctx->dump_relocs[i], &ctx->header.dump_relocs[i]); dump_off number_hot_relocations = ctx->number_hot_relocations; ctx->number_hot_relocations = 0; dump_off number_discardable_relocations = ctx->number_discardable_relocations; ctx->number_discardable_relocations = 0; drain_reloc_list (ctx, dump_emit_dump_reloc, emacs_reloc_merger, &ctx->object_starts, &ctx->header.object_starts); drain_reloc_list (ctx, dump_emit_emacs_reloc, dump_merge_emacs_relocs, &ctx->emacs_relocs, &ctx->header.emacs_relocs); const dump_off cold_end = ctx->offset; ((void) ( 0 && (dump_queue_empty_p (&ctx->dump_queue)))); ((void) ( 0 && (NILP (ctx->copied_queue)))); ((void) ( 0 && (NILP (ctx->cold_queue)))); ((void) ( 0 && (NILP (ctx->deferred_symbols)))); ((void) ( 0 && (NILP (ctx->deferred_hash_tables)))); ((void) ( 0 && (NILP (ctx->fixups)))); for (int i = 0; i < RELOC_NUM_PHASES; ++i) ((void) ( 0 && (NILP (ctx->dump_relocs[i])))); ((void) ( 0 && (NILP (ctx->emacs_relocs)))); ctx->header.magic[0] = dump_magic[0]; dump_seek (ctx, 0); dump_write (ctx, &ctx->header, sizeof (ctx->header)); if (emacs_write (ctx->fd, ctx->buf, ctx->max_offset) < ctx->max_offset) report_file_error ("Could not write to dump file", ctx->dump_filename); xfree (ctx->buf); ctx->buf = ((void *)0) ; ctx->buf_size = 0; ctx->max_offset = 0; dump_off header_bytes = header_end - header_start, hot_bytes = hot_end - hot_start, discardable_bytes = discardable_end - ctx->header.discardable_start, cold_bytes = cold_end - ctx->header.cold_start; fprintf ( stderr , ("Dump complete\n" "Byte counts: header=%" "d" " hot=%" "d" " discardable=%" "d" " cold=%" "d" "\n" "Reloc counts: hot=%" "d" " discardable=%" "d" "\n"), header_bytes, hot_bytes, discardable_bytes, cold_bytes, number_hot_relocations, number_discardable_relocations); unblock_input (); return unbind_to (count, builtin_lisp_symbol (0)); } __attribute__((section (".subrs"))) static union Aligned_Lisp_Subr Sdump_emacs_portable__sort_predicate = {{{ PVEC_SUBR << PSEUDOVECTOR_AREA_BITS }, { .a2 = Fdump_emacs_portable__sort_predicate }, 2, 2, "dump-emacs-portable--sort-predicate", {0}, 0}}; Lisp_Object Fdump_emacs_portable__sort_predicate (Lisp_Object a, Lisp_Object b) { dump_off a_offset = dump_off_from_lisp (XCAR (XCDR (a))); dump_off b_offset = dump_off_from_lisp (XCAR (XCDR (b))); return a_offset < b_offset ? builtin_lisp_symbol (1) : builtin_lisp_symbol (0); } __attribute__((section (".subrs"))) static union Aligned_Lisp_Subr Sdump_emacs_portable__sort_predicate_copied = {{{ PVEC_SUBR << PSEUDOVECTOR_AREA_BITS }, { .a2 = Fdump_emacs_portable__sort_predicate_copied }, 2, 2, "dump-emacs-portable--sort-predicate-copied", {0}, 0}}; Lisp_Object Fdump_emacs_portable__sort_predicate_copied (Lisp_Object a, Lisp_Object b) { ((void) ( 0 && (dump_object_emacs_ptr (a)))); ((void) ( 0 && (dump_object_emacs_ptr (b)))); return dump_object_emacs_ptr (a) < dump_object_emacs_ptr (b) ? builtin_lisp_symbol (1) : builtin_lisp_symbol (0); } void pdumper_do_now_and_after_load_impl (pdumper_hook hook) { if (nr_dump_hooks == (sizeof (dump_hooks) / sizeof (dump_hooks)[0])) fatal ("out of dump hooks: make dump_hooks[] bigger"); dump_hooks[nr_dump_hooks++] = hook; hook (); } void pdumper_do_now_and_after_late_load_impl (pdumper_hook hook) { if (nr_dump_late_hooks == (sizeof (dump_late_hooks) / sizeof (dump_late_hooks)[0])) fatal ("out of dump hooks: make dump_late_hooks[] bigger"); dump_late_hooks[nr_dump_late_hooks++] = hook; hook (); } static void pdumper_remember_user_data_1 (void *mem, int nbytes) { if (nr_remembered_data == (sizeof (remembered_data) / sizeof (remembered_data)[0])) fatal ("out of remembered data slots: make remembered_data[] bigger"); remembered_data[nr_remembered_data].mem = mem; remembered_data[nr_remembered_data].sz = nbytes; nr_remembered_data += 1; } void pdumper_remember_scalar_impl (void *mem, ptrdiff_t nbytes) { ((void) ( 0 && (0 <= nbytes && nbytes <= 0x7fffffff))); if (nbytes > 0) pdumper_remember_user_data_1 (mem, (int) nbytes); } void pdumper_remember_lv_ptr_raw_impl (void *ptr, enum Lisp_Type type) { pdumper_remember_user_data_1 (ptr, -type); } enum dump_memory_protection { DUMP_MEMORY_ACCESS_NONE = 1, DUMP_MEMORY_ACCESS_READ = 2, DUMP_MEMORY_ACCESS_READWRITE = 3, }; static void * dump_anonymous_allocate_posix (void *base, size_t size, enum dump_memory_protection protection) { void *ret; int mem_prot; switch (protection) { case DUMP_MEMORY_ACCESS_NONE: mem_prot = 0x0 ; break; case DUMP_MEMORY_ACCESS_READ: mem_prot = 0x1 ; break; case DUMP_MEMORY_ACCESS_READWRITE: mem_prot = 0x1 | 0x2 ; break; default: emacs_abort (); } int mem_flags = 0x02 | 0x20 ; if (mem_prot != 0x0 ) mem_flags |= 0x08000 ; if (base) mem_flags |= 0x10 ; _Bool retry; do { retry = 0 ; ret = mmap (base, size, mem_prot, mem_flags, -1, 0); if (ret == ((void *) -1) && (*__errno_location ()) == 22 && (mem_flags & 0x08000 )) { mem_flags &= ~ 0x08000 ; retry = 1 ; } } while (retry); if (ret == ((void *) -1) ) ret = ((void *)0) ; return ret; } static void * dump_anonymous_allocate (void *base, const size_t size, enum dump_memory_protection protection) { return dump_anonymous_allocate_posix (base, size, protection); } static void dump_anonymous_release (void *addr, size_t size) { ((void) ( 0 && (size >= 0))); if (munmap (addr, size) < 0) emacs_abort (); } static void * dump_map_file_posix (void *base, int fd, off_t offset, size_t size, enum dump_memory_protection protection) { void *ret; int mem_prot; int mem_flags; switch (protection) { case DUMP_MEMORY_ACCESS_NONE: mem_prot = 0x0 ; mem_flags = 0x01 ; break; case DUMP_MEMORY_ACCESS_READ: mem_prot = 0x1 ; mem_flags = 0x01 ; break; case DUMP_MEMORY_ACCESS_READWRITE: mem_prot = 0x1 | 0x2 ; mem_flags = 0x02 ; break; default: emacs_abort (); } if (base) mem_flags |= 0x10 ; ret = mmap (base, size, mem_prot, mem_flags, fd, offset); if (ret == ((void *) -1) ) ret = ((void *)0) ; return ret; } static void * dump_map_file (void *base, int fd, off_t offset, size_t size, enum dump_memory_protection protection) { return dump_map_file_posix (base, fd, offset, size, protection); } static void dump_unmap_file (void *addr, size_t size) { ((void) ( 0 && (size >= 0))); if (munmap (addr, size) < 0) emacs_abort (); } struct dump_memory_map_spec { int fd; size_t size; off_t offset; enum dump_memory_protection protection; }; struct dump_memory_map { struct dump_memory_map_spec spec; void *mapping; void (*release) (struct dump_memory_map *); void *private; }; static void dump_discard_mem (void *mem, size_t size) { (void) posix_madvise (mem, size, 4 ); (void) mprotect (mem, size, 0x0 ); } static void dump_mmap_discard_contents (struct dump_memory_map *map) { if (map->mapping) dump_discard_mem (map->mapping, map->spec.size); } static void dump_mmap_reset (struct dump_memory_map *map) { map->mapping = ((void *)0) ; map->release = ((void *)0) ; map->private = ((void *)0) ; } static void dump_mmap_release (struct dump_memory_map *map) { if (map->release) map->release (map); dump_mmap_reset (map); } struct dump_memory_map_heap_control_block { int refcount; void *mem; }; static void dump_mm_heap_cb_release (struct dump_memory_map_heap_control_block *cb) { ((void) ( 0 && (cb->refcount > 0))); if (--cb->refcount == 0) { free (cb->mem); free (cb); } } static void dump_mmap_release_heap (struct dump_memory_map *map) { dump_mm_heap_cb_release (map->private); } static _Bool dump_mmap_contiguous_heap (struct dump_memory_map *maps, int nr_maps, size_t total_size) { _Bool ret = 0 ; struct dump_memory_map_heap_control_block *cb = calloc (1, sizeof (*cb)); if (!cb) goto out; __lsan_ignore_object (cb); cb->refcount = 1; cb->mem = malloc (total_size); if (!cb->mem) goto out; char *mem = cb->mem; for (int i = 0; i < nr_maps; ++i) { struct dump_memory_map *map = &maps[i]; const struct dump_memory_map_spec spec = map->spec; if (!spec.size) continue; map->mapping = mem; mem += spec.size; map->release = dump_mmap_release_heap; map->private = cb; cb->refcount += 1; if (spec.fd < 0) memset (map->mapping, 0, spec.size); else { if (lseek (spec.fd, spec.offset, 0 ) < 0) goto out; ssize_t nb = dump_read_all (spec.fd, map->mapping, spec.size); if (nb >= 0 && nb != spec.size) (*__errno_location ()) = 5 ; if (nb != spec.size) goto out; } } ret = 1 ; out: dump_mm_heap_cb_release (cb); if (!ret) for (int i = 0; i < nr_maps; ++i) dump_mmap_release (&maps[i]); return ret; } static void dump_mmap_release_vm (struct dump_memory_map *map) { if (map->spec.fd < 0) dump_anonymous_release (map->mapping, map->spec.size); else dump_unmap_file (map->mapping, map->spec.size); } static _Bool needs_mmap_retry_p (void) { return 0 ; } static _Bool dump_mmap_contiguous_vm (struct dump_memory_map *maps, int nr_maps, size_t total_size) { _Bool ret = 0 ; void *resv = ((void *)0) ; _Bool retry = 0 ; const _Bool need_retry = needs_mmap_retry_p (); do { if (retry) { ((void) ( 0 && (need_retry))); retry = 0 ; for (int i = 0; i < nr_maps; ++i) dump_mmap_release (&maps[i]); } ((void) ( 0 && (resv == ((void *)0) ))); resv = dump_anonymous_allocate ( ((void *)0) , total_size, DUMP_MEMORY_ACCESS_NONE); if (!resv) goto out; char *mem = resv; if (need_retry) { dump_anonymous_release (resv, total_size); resv = ((void *)0) ; } for (int i = 0; i < nr_maps; ++i) { struct dump_memory_map *map = &maps[i]; const struct dump_memory_map_spec spec = map->spec; if (!spec.size) continue; if (spec.fd < 0) map->mapping = dump_anonymous_allocate (mem, spec.size, spec.protection); else map->mapping = dump_map_file (mem, spec.fd, spec.offset, spec.size, spec.protection); mem += spec.size; if (need_retry && map->mapping == ((void *)0) && ( (*__errno_location ()) == 16 )) { retry = 1 ; continue; } if (map->mapping == ((void *)0) ) goto out; map->release = dump_mmap_release_vm; } } while (retry); ret = 1 ; resv = ((void *)0) ; out: if (resv) dump_anonymous_release (resv, total_size); if (!ret) { for (int i = 0; i < nr_maps; ++i) { if (need_retry) dump_mmap_reset (&maps[i]); else dump_mmap_release (&maps[i]); } } return ret; } static _Bool dump_mmap_contiguous (struct dump_memory_map *maps, int nr_maps) { if (!nr_maps) return 1 ; size_t total_size = 0; int worst_case_page_size = dump_get_max_page_size (); for (int i = 0; i < nr_maps; ++i) { ((void) ( 0 && (maps[i].mapping == ((void *)0) ))); ((void) ( 0 && (maps[i].release == ((void *)0) ))); ((void) ( 0 && (maps[i].private == ((void *)0) ))); if (i != nr_maps - 1) ((void) ( 0 && (maps[i].spec.size % worst_case_page_size == 0))); total_size += maps[i].spec.size; } return (1 ? dump_mmap_contiguous_vm : dump_mmap_contiguous_heap) (maps, nr_maps, total_size); } typedef uint_fast32_t dump_bitset_word; struct dump_bitset { dump_bitset_word *__restrict__ bits; ptrdiff_t number_words; }; static _Bool dump_bitsets_init (struct dump_bitset bitset[2], size_t number_bits) { int xword_size = sizeof (bitset[0].bits[0]); int bits_per_word = xword_size * 8; ptrdiff_t words_needed = divide_round_up (number_bits, bits_per_word); dump_bitset_word *bits = calloc (words_needed, 2 * xword_size); if (!bits) return 0 ; bitset[0].bits = bits; bitset[0].number_words = bitset[1].number_words = words_needed; bitset[1].bits = memset (bits + words_needed, (0x7f * 2 + 1) , words_needed * xword_size); return 1 ; } static dump_bitset_word * dump_bitset__bit_slot (const struct dump_bitset *bitset, size_t bit_number) { int xword_size = sizeof (bitset->bits[0]); int bits_per_word = xword_size * 8; ptrdiff_t word_number = bit_number / bits_per_word; ((void) ( 0 && (word_number < bitset->number_words))); return &bitset->bits[word_number]; } static _Bool dump_bitset_bit_set_p (const struct dump_bitset *bitset, size_t bit_number) { unsigned xword_size = sizeof (bitset->bits[0]); unsigned bits_per_word = xword_size * 8; dump_bitset_word bit = 1; bit <<= bit_number % bits_per_word; return *dump_bitset__bit_slot (bitset, bit_number) & bit; } static void dump_bitset__set_bit_value (struct dump_bitset *bitset, size_t bit_number, _Bool bit_is_set) { int xword_size = sizeof (bitset->bits[0]); int bits_per_word = xword_size * 8; dump_bitset_word *slot = dump_bitset__bit_slot (bitset, bit_number); dump_bitset_word bit = 1; bit <<= bit_number % bits_per_word; if (bit_is_set) *slot = *slot | bit; else *slot = *slot & ~bit; } static void dump_bitset_set_bit (struct dump_bitset *bitset, size_t bit_number) { dump_bitset__set_bit_value (bitset, bit_number, 1 ); } static void dump_bitset_clear (struct dump_bitset *bitset) { if (bitset->number_words) memset (bitset->bits, 0, bitset->number_words * sizeof bitset->bits[0]); } struct pdumper_loaded_dump_private { struct dump_header header; struct dump_bitset mark_bits, last_mark_bits; double load_time; char *dump_filename; }; struct pdumper_loaded_dump dump_public; static struct pdumper_loaded_dump_private dump_private; static void * dump_ptr (uintptr_t dump_base, dump_off offset) { ((void) ( 0 && (dump_base == dump_public.start))); ((void) ( 0 && (0 <= offset))); ((void) ( 0 && (dump_public.start + offset < dump_public.end))); return (char *)dump_base + offset; } static uintptr_t dump_read_word_from_dump (uintptr_t dump_base, dump_off offset) { uintptr_t value; memcpy (&value, dump_ptr (dump_base, offset), sizeof (value)); return value; } static void dump_write_word_to_dump (uintptr_t dump_base, dump_off offset, uintptr_t value) { memcpy (dump_ptr (dump_base, offset), &value, sizeof (value)); } static void dump_write_lv_to_dump (uintptr_t dump_base, dump_off offset, Lisp_Object value) { memcpy (dump_ptr (dump_base, offset), &value, sizeof (value)); } static const struct dump_reloc * dump_find_relocation (const struct dump_table_locator *const table, const dump_off key) { const struct dump_reloc *const relocs = dump_ptr (dump_public.start, table->offset); const struct dump_reloc *found = ((void *)0) ; ptrdiff_t idx_left = 0; ptrdiff_t idx_right = table->nr_entries; ((void) ( 0 && (key >= 0))); while (idx_left < idx_right) { const ptrdiff_t idx_mid = idx_left + (idx_right - idx_left) / 2; const struct dump_reloc *mid = &relocs[idx_mid]; if (key > dump_reloc_get_offset (*mid)) idx_left = idx_mid + 1; else { found = mid; idx_right = idx_mid; if (idx_right <= idx_left || key > dump_reloc_get_offset (relocs[idx_right - 1])) break; } } return found; } static _Bool dump_loaded_p (void) { return dump_public.start != 0; } _Bool pdumper_cold_object_p_impl (const void *obj) { ((void) ( 0 && (pdumper_object_p (obj)))); ((void) ( 0 && (pdumper_object_p_precise (obj)))); dump_off offset = ptrdiff_t_to_dump_off ((uintptr_t) obj - dump_public.start); return offset >= dump_private.header.cold_start; } int pdumper_find_object_type_impl (const void *obj) { ((void) ( 0 && (pdumper_object_p (obj)))); dump_off offset = ptrdiff_t_to_dump_off ((uintptr_t) obj - dump_public.start); if (offset % DUMP_ALIGNMENT != 0) return PDUMPER_NO_OBJECT; ptrdiff_t bitno = offset / DUMP_ALIGNMENT; if (offset < dump_private.header.discardable_start && !dump_bitset_bit_set_p (&dump_private.last_mark_bits, bitno)) return PDUMPER_NO_OBJECT; const struct dump_reloc *reloc = dump_find_relocation (&dump_private.header.object_starts, offset); return (reloc != ((void *)0) && dump_reloc_get_offset (*reloc) == offset) ? reloc->type : PDUMPER_NO_OBJECT; } _Bool pdumper_marked_p_impl (const void *obj) { ((void) ( 0 && (pdumper_object_p (obj)))); ptrdiff_t offset = (uintptr_t) obj - dump_public.start; ((void) ( 0 && (offset % DUMP_ALIGNMENT == 0))); ((void) ( 0 && (offset < dump_private.header.cold_start))); ((void) ( 0 && (offset < dump_private.header.discardable_start))); ptrdiff_t bitno = offset / DUMP_ALIGNMENT; return dump_bitset_bit_set_p (&dump_private.mark_bits, bitno); } void pdumper_set_marked_impl (const void *obj) { ((void) ( 0 && (pdumper_object_p (obj)))); ptrdiff_t offset = (uintptr_t) obj - dump_public.start; ((void) ( 0 && (offset % DUMP_ALIGNMENT == 0))); ((void) ( 0 && (offset < dump_private.header.cold_start))); ((void) ( 0 && (offset < dump_private.header.discardable_start))); ptrdiff_t bitno = offset / DUMP_ALIGNMENT; ((void) ( 0 && (dump_bitset_bit_set_p (&dump_private.last_mark_bits, bitno)))); dump_bitset_set_bit (&dump_private.mark_bits, bitno); } void pdumper_clear_marks_impl (void) { dump_bitset_word *swap = dump_private.last_mark_bits.bits; dump_private.last_mark_bits.bits = dump_private.mark_bits.bits; dump_private.mark_bits.bits = swap; dump_bitset_clear (&dump_private.mark_bits); } static ssize_t dump_read_all (int fd, void *buf, size_t bytes_to_read) { size_t bytes_read = 0; while (bytes_read < bytes_to_read) { int max_rw_count = 0x7fffffff >> 18 << 18; int chunk_to_read = ((bytes_to_read - bytes_read) < (max_rw_count) ? (bytes_to_read - bytes_read) : (max_rw_count)); ssize_t chunk = read (fd, (char *) buf + bytes_read, chunk_to_read); if (chunk < 0) return chunk; if (chunk == 0) break; bytes_read += chunk; } return bytes_read; } static int dump_reloc_size (const struct dump_reloc reloc) { if (sizeof (Lisp_Object) == sizeof (void *)) return sizeof (Lisp_Object); if (reloc.type == RELOC_DUMP_TO_EMACS_PTR_RAW || reloc.type == RELOC_DUMP_TO_DUMP_PTR_RAW) return sizeof (void *); return sizeof (Lisp_Object); } static Lisp_Object dump_make_lv_from_reloc (const uintptr_t dump_base, const struct dump_reloc reloc) { const dump_off reloc_offset = dump_reloc_get_offset (reloc); uintptr_t value = dump_read_word_from_dump (dump_base, reloc_offset); enum Lisp_Type lisp_type; if (RELOC_DUMP_TO_DUMP_LV <= reloc.type && reloc.type < RELOC_DUMP_TO_EMACS_LV) { lisp_type = reloc.type - RELOC_DUMP_TO_DUMP_LV; value += dump_base; ((void) ( 0 && (pdumper_object_p ((void *) value)))); } else { ((void) ( 0 && (RELOC_DUMP_TO_EMACS_LV <= reloc.type))); ((void) ( 0 && (reloc.type < RELOC_DUMP_TO_EMACS_LV + 8))); lisp_type = reloc.type - RELOC_DUMP_TO_EMACS_LV; value += emacs_basis (); } ((void) ( 0 && (lisp_type != Lisp_Int0 && lisp_type != Lisp_Int1))); Lisp_Object lv; if (lisp_type == Lisp_Symbol) lv = make_lisp_symbol ((void *) value); else lv = make_lisp_ptr ((void *) value, lisp_type); return lv; } static inline void dump_do_dump_relocation (const uintptr_t dump_base, const struct dump_reloc reloc) { const dump_off reloc_offset = dump_reloc_get_offset (reloc); ((void) ( 0 && (reloc_offset < dump_private.header.cold_start))); switch (reloc.type) { case RELOC_DUMP_TO_EMACS_PTR_RAW: { uintptr_t value = dump_read_word_from_dump (dump_base, reloc_offset); ((void) ( 0 && (dump_reloc_size (reloc) == sizeof (value)))); value += emacs_basis (); dump_write_word_to_dump (dump_base, reloc_offset, value); break; } case RELOC_DUMP_TO_DUMP_PTR_RAW: { uintptr_t value = dump_read_word_from_dump (dump_base, reloc_offset); ((void) ( 0 && (dump_reloc_size (reloc) == sizeof (value)))); value += dump_base; dump_write_word_to_dump (dump_base, reloc_offset, value); break; } case RELOC_BIGNUM: { struct Lisp_Bignum *bignum = dump_ptr (dump_base, reloc_offset); struct bignum_reload_info reload_info; _Static_assert (sizeof (reload_info) <= sizeof (*bignum_val (bignum)), "verify (" "sizeof (reload_info) <= sizeof (*bignum_val (bignum))" ")"); memcpy (&reload_info, bignum_val (bignum), sizeof (reload_info)); const mp_limb_t *limbs = dump_ptr (dump_base, reload_info.data_location); __gmpz_roinit_n (bignum->value, limbs, reload_info.nlimbs); break; } default: { Lisp_Object lv = dump_make_lv_from_reloc (dump_base, reloc); ((void) ( 0 && (dump_reloc_size (reloc) == sizeof (lv)))); dump_write_lv_to_dump (dump_base, reloc_offset, lv); break; } } } static void dump_do_all_dump_reloc_for_phase (const struct dump_header *const header, const uintptr_t dump_base, const enum reloc_phase phase) { struct dump_reloc *r = dump_ptr (dump_base, header->dump_relocs[phase].offset); dump_off nr_entries = header->dump_relocs[phase].nr_entries; for (dump_off i = 0; i < nr_entries; ++i) dump_do_dump_relocation (dump_base, r[i]); } static void dump_do_emacs_relocation (const uintptr_t dump_base, const struct emacs_reloc reloc) { ptrdiff_t pval; Lisp_Object lv; switch (reloc.type) { case RELOC_EMACS_COPY_FROM_DUMP: ((reloc.length > 0) ? (void) 0 : __builtin_unreachable ()); memcpy (emacs_ptr_at (reloc.emacs_offset), dump_ptr (dump_base, reloc.u.dump_offset), reloc.length); break; case RELOC_EMACS_IMMEDIATE: ((reloc.length > 0) ? (void) 0 : __builtin_unreachable ()); ((reloc.length <= sizeof (reloc.u.immediate)) ? (void) 0 : __builtin_unreachable ()); memcpy (emacs_ptr_at (reloc.emacs_offset), &reloc.u.immediate, reloc.length); break; case RELOC_EMACS_DUMP_PTR_RAW: pval = reloc.u.dump_offset + dump_base; memcpy (emacs_ptr_at (reloc.emacs_offset), &pval, sizeof (pval)); break; case RELOC_EMACS_EMACS_PTR_RAW: pval = reloc.u.emacs_offset2 + emacs_basis (); memcpy (emacs_ptr_at (reloc.emacs_offset), &pval, sizeof (pval)); break; case RELOC_EMACS_DUMP_LV: case RELOC_EMACS_EMACS_LV: { ((reloc.length <= Lisp_Float) ? (void) 0 : __builtin_unreachable ()); void *obj_ptr = reloc.type == RELOC_EMACS_DUMP_LV ? dump_ptr (dump_base, reloc.u.dump_offset) : emacs_ptr_at (reloc.u.emacs_offset2); if (reloc.length == Lisp_Symbol) lv = make_lisp_symbol (obj_ptr); else lv = make_lisp_ptr (obj_ptr, reloc.length); memcpy (emacs_ptr_at (reloc.emacs_offset), &lv, sizeof (lv)); break; } default: fatal ("unrecognied relocation type %d", (int) reloc.type); } } static void dump_do_all_emacs_relocations (const struct dump_header *const header, const uintptr_t dump_base) { const dump_off nr_entries = header->emacs_relocs.nr_entries; struct emacs_reloc *r = dump_ptr (dump_base, header->emacs_relocs.offset); for (dump_off i = 0; i < nr_entries; ++i) dump_do_emacs_relocation (dump_base, r[i]); } enum dump_section { DS_HOT, DS_DISCARDABLE, DS_COLD, NUMBER_DUMP_SECTIONS, }; static Lisp_Object *pdumper_hashes = &zero_vector; int pdumper_load (const char *dump_filename, char *argv0) { intptr_t dump_size; struct stat stat; uintptr_t dump_base; int dump_page_size; dump_off adj_discardable_start; struct dump_bitset mark_bits[2]; size_t mark_bits_needed; struct dump_header header_buf = { 0 }; struct dump_header *header = &header_buf; struct dump_memory_map sections[NUMBER_DUMP_SECTIONS] = { 0 }; const struct timespec start_time = current_timespec (); char *dump_filename_copy; ((void) ( 0 && (!initialized))); ((void) ( 0 && (!dump_loaded_p ()))); int err; int dump_fd = emacs_open_noquit (dump_filename, 00 , 0); if (dump_fd < 0) { err = ( (*__errno_location ()) == 2 || (*__errno_location ()) == 20 ? PDUMPER_LOAD_FILE_NOT_FOUND : PDUMPER_LOAD_ERROR + (*__errno_location ()) ); goto out; } err = PDUMPER_LOAD_FILE_NOT_FOUND; if (fstat (dump_fd, &stat) < 0) goto out; err = PDUMPER_LOAD_BAD_FILE_TYPE; if (stat.st_size > (9223372036854775807L) ) goto out; dump_size = (intptr_t) stat.st_size; err = PDUMPER_LOAD_BAD_FILE_TYPE; if (dump_size < sizeof (*header)) goto out; err = PDUMPER_LOAD_BAD_FILE_TYPE; if (dump_read_all (dump_fd, header, sizeof (*header)) < sizeof (*header)) goto out; if (memcmp (header->magic, dump_magic, sizeof (dump_magic)) != 0) { if (header->magic[0] == '!' && (header->magic[0] = dump_magic[0], memcmp (header->magic, dump_magic, sizeof (dump_magic)) == 0)) { err = PDUMPER_LOAD_FAILED_DUMP; goto out; } err = PDUMPER_LOAD_BAD_FILE_TYPE; goto out; } err = PDUMPER_LOAD_VERSION_MISMATCH; _Static_assert (sizeof (header->fingerprint) == sizeof (fingerprint), "verify (" "sizeof (header->fingerprint) == sizeof (fingerprint)" ")"); unsigned char desired[sizeof fingerprint]; for (int i = 0; i < sizeof fingerprint; i++) desired[i] = fingerprint[i]; if (memcmp (header->fingerprint, desired, sizeof desired) != 0) { dump_fingerprint ( stderr , "desired fingerprint", desired); dump_fingerprint ( stderr , "found fingerprint", header->fingerprint); goto out; } dump_filename_copy = xstrdup (dump_filename); err = PDUMPER_LOAD_OOM; adj_discardable_start = header->discardable_start; dump_page_size = dump_get_max_page_size (); adj_discardable_start = ((((dump_page_size) & ((dump_page_size) - 1)) == 0) ? ((dump_page_size) - 1 + (adj_discardable_start)) & ~ ((dump_page_size) - 1) : ((dump_page_size) - 1 + (adj_discardable_start)) - ((dump_page_size) - 1 + (adj_discardable_start)) % (dump_page_size)); ((void) ( 0 && (adj_discardable_start % dump_page_size == 0))); ((void) ( 0 && (adj_discardable_start <= header->cold_start))); sections[DS_HOT].spec = (struct dump_memory_map_spec) { .fd = dump_fd, .size = adj_discardable_start, .offset = 0, .protection = DUMP_MEMORY_ACCESS_READWRITE, }; sections[DS_DISCARDABLE].spec = (struct dump_memory_map_spec) { .fd = dump_fd, .size = header->cold_start - adj_discardable_start, .offset = adj_discardable_start, .protection = DUMP_MEMORY_ACCESS_READWRITE, }; sections[DS_COLD].spec = (struct dump_memory_map_spec) { .fd = dump_fd, .size = dump_size - header->cold_start, .offset = header->cold_start, .protection = DUMP_MEMORY_ACCESS_READWRITE, }; if (!dump_mmap_contiguous (sections, (sizeof (sections) / sizeof (sections)[0]))) goto out; err = PDUMPER_LOAD_ERROR; mark_bits_needed = divide_round_up (header->discardable_start, DUMP_ALIGNMENT); if (!dump_bitsets_init (mark_bits, mark_bits_needed)) goto out; err = PDUMPER_LOAD_SUCCESS; dump_base = (uintptr_t) sections[DS_HOT].mapping; gflags.dumped_with_pdumper_ = 1 ; dump_private.header = *header; dump_private.mark_bits = mark_bits[0]; dump_private.last_mark_bits = mark_bits[1]; dump_public.start = dump_base; dump_public.end = dump_public.start + dump_size; dump_do_all_dump_reloc_for_phase (header, dump_base, EARLY_RELOCS); dump_do_all_emacs_relocations (header, dump_base); dump_mmap_discard_contents (§ions[DS_DISCARDABLE]); for (int i = 0; i < (sizeof (sections) / sizeof (sections)[0]); ++i) dump_mmap_reset (§ions[i]); Lisp_Object hashes = zero_vector; if (header->hash_list) { struct Lisp_Vector *hash_tables = (struct Lisp_Vector *) (dump_base + header->hash_list); hashes = make_lisp_ptr (hash_tables, Lisp_Vectorlike); } pdumper_hashes = &hashes; for (int i = 0; i < nr_dump_hooks; ++i) dump_hooks[i] (); (void) argv0; dump_do_all_dump_reloc_for_phase (header, dump_base, LATE_RELOCS); dump_do_all_dump_reloc_for_phase (header, dump_base, VERY_LATE_RELOCS); for (int i = 0; i < nr_dump_late_hooks; ++i) dump_late_hooks[i] (); initialized = 1 ; struct timespec load_timespec = timespec_sub (current_timespec (), start_time); dump_private.load_time = timespectod (load_timespec); dump_private.dump_filename = dump_filename_copy; out: for (int i = 0; i < (sizeof (sections) / sizeof (sections)[0]); ++i) dump_mmap_release (§ions[i]); if (dump_fd >= 0) emacs_close (dump_fd); return err; } void pdumper_record_wd (const char *wd) { if (wd && !file_name_absolute_p (dump_private.dump_filename)) { char *dfn = xmalloc (strlen (wd) + 1 + strlen (dump_private.dump_filename) + 1); splice_dir_file (dfn, wd, dump_private.dump_filename); xfree (dump_private.dump_filename); dump_private.dump_filename = dfn; } } __attribute__((section (".subrs"))) static union Aligned_Lisp_Subr Spdumper_stats = {{{ PVEC_SUBR << PSEUDOVECTOR_AREA_BITS }, { .a0 = Fpdumper_stats }, 0, 0, "pdumper-stats", {0}, 0}}; Lisp_Object Fpdumper_stats (void) { if (!dumped_with_pdumper_p ()) return builtin_lisp_symbol (0); Lisp_Object dump_fn; dump_fn = decode_file_name (build_unibyte_string (dump_private.dump_filename)); dump_fn = Fexpand_file_name (dump_fn, builtin_lisp_symbol (0)); return list3 (Fcons (builtin_lisp_symbol (517), builtin_lisp_symbol (1)), Fcons (builtin_lisp_symbol (877), make_float (dump_private.load_time)), Fcons (builtin_lisp_symbol (516), dump_fn)); } static void thaw_hash_tables (void) { Lisp_Object hash_tables = *pdumper_hashes; for (ptrdiff_t i = 0; i < ASIZE (hash_tables); i++) hash_table_thaw (AREF (hash_tables, i)); } void init_pdumper_once (void) { pdumper_do_now_and_after_load (thaw_hash_tables); } void syms_of_pdumper (void) { defsubr (&Sdump_emacs_portable); defsubr (&Sdump_emacs_portable__sort_predicate); defsubr (&Sdump_emacs_portable__sort_predicate_copied); ; ; ; ; ; ; defsubr (&Spdumper_stats); }
Become a Patron
Sponsor on GitHub
Donate via PayPal
Source on GitHub
Mailing list
Installed libraries
Wiki
Report an issue
How it works
Contact the author
CE on Mastodon
About the author
Statistics
Changelog
Version tree