mirror of
https://github.com/openRuyi-Project/gcc.git
synced 2026-09-07 06:22:00 +00:00
D front-end changes: - Import dmd v2.112.0-beta.1. D runtime changes: - Import druntime v2.112.0-beta.1. - Added 64-bit `mul' and `udivmod' overloads to `core.int128'. Phobos changes: - Added `lazyCache' to `std.algorithm.iteration'. - Added `writeText', `writeWText', and `writeDText' to `std.conv'. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 1017635a96. * dmd/VERSION: Bump version to v2.112.0-beta.1. * decl.cc (DeclVisitor::finish_vtable): Update for new front-end interface. (DeclVisitor::visit): Likewise. * typeinfo.cc (TypeInfoVisitor::visit): Likewise. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime 1017635a96. * libdruntime/Makefile.am (DRUNTIME_DSOURCES_LINUX): Add core/sys/linux/sys/syscall.d, core/sys/linux/syscall.d. * libdruntime/Makefile.in: Regenerate. * src/MERGE: Merge upstream phobos 5a142da0a. * src/Makefile.am (PHOBOS_DSOURCES): Remove std/internal/windows/bcrypt.d. * src/Makefile.in: Regenerate. gcc/testsuite/ChangeLog: * gdc.dg/asm1.d: Adjust test.
142 lines
4.5 KiB
D
142 lines
4.5 KiB
D
/**
|
|
* Windows API header module
|
|
*
|
|
* Translated from MinGW API for MS-Windows 3.12
|
|
*
|
|
* Authors: Stewart Gordon
|
|
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
|
|
* Source: $(DRUNTIMESRC core/sys/windows/_basetsd.d)
|
|
*/
|
|
module core.sys.windows.basetsd;
|
|
version (Windows):
|
|
|
|
// [SnakE 2009-02-23] Moved HANDLE definition here from winnt.d to avoid
|
|
// 'forwatd template reference' to CPtr from winnt.d caused by a circular
|
|
// import.
|
|
alias HANDLE = void*;
|
|
|
|
alias HANDLE* PHANDLE, LPHANDLE;
|
|
|
|
// helper for aligned structs
|
|
// alignVal 0 means the default align.
|
|
// _alignSpec as parameter does not pollute namespace.
|
|
package mixin template AlignedStr(int alignVal, string name, string memberlist,
|
|
string _alignSpec = !alignVal ? "align" : "align("~alignVal.stringof~")" )
|
|
{
|
|
mixin( _alignSpec ~ " struct " ~ name ~" { " ~ _alignSpec ~":"~ memberlist~" }" );
|
|
}
|
|
|
|
version (CoreUnittest) {
|
|
private mixin AlignedStr!(16, "_Test_Aligned_Str", q{char a; char b;});
|
|
private mixin AlignedStr!(0, "_Test_NoAligned_Str", q{char a; char b;});
|
|
}
|
|
|
|
version (Win64) {
|
|
alias long __int3264;
|
|
enum ulong ADDRESS_TAG_BIT = 0x40000000000;
|
|
|
|
alias long INT_PTR, LONG_PTR;
|
|
alias long* PINT_PTR, PLONG_PTR;
|
|
alias ulong UINT_PTR, ULONG_PTR, HANDLE_PTR;
|
|
alias ulong* PUINT_PTR, PULONG_PTR;
|
|
alias int HALF_PTR;
|
|
alias int* PHALF_PTR;
|
|
alias uint UHALF_PTR;
|
|
alias uint* PUHALF_PTR;
|
|
|
|
uint HandleToULong()(void* h) { return(cast(uint) cast(ULONG_PTR) h); }
|
|
int HandleToLong()(void* h) { return(cast(int) cast(LONG_PTR) h); }
|
|
void* ULongToHandle()(uint h) { return(cast(void*) cast(UINT_PTR) h); }
|
|
void* LongToHandle()(int h) { return(cast(void*) cast(INT_PTR) h); }
|
|
uint PtrToUlong()(void* p) { return(cast(uint) cast(ULONG_PTR) p); }
|
|
uint PtrToUint()(void* p) { return(cast(uint) cast(UINT_PTR) p); }
|
|
ushort PtrToUshort()(void* p) { return(cast(ushort) cast(uint) cast(ULONG_PTR) p); }
|
|
int PtrToLong()(void* p) { return(cast(int) cast(LONG_PTR) p); }
|
|
int PtrToInt()(void* p) { return(cast(int) cast(INT_PTR) p); }
|
|
short PtrToShort()(void* p) { return(cast(short) cast(int) cast(LONG_PTR) p); }
|
|
void* IntToPtr()(int i) { return(cast(void*) cast(INT_PTR) i); }
|
|
void* UIntToPtr()(uint ui) { return(cast(void*) cast(UINT_PTR) ui); }
|
|
void* LongToPtr()(int l) { return(cast(void*) cast(LONG_PTR) l); }
|
|
void* ULongToPtr()(uint ul) { return(cast(void*) cast(ULONG_PTR) ul); }
|
|
|
|
} else {
|
|
alias int __int3264;
|
|
enum uint ADDRESS_TAG_BIT = 0x80000000;
|
|
|
|
alias int INT_PTR, LONG_PTR;
|
|
alias int* PINT_PTR, PLONG_PTR;
|
|
alias uint UINT_PTR, ULONG_PTR, HANDLE_PTR;
|
|
alias uint* PUINT_PTR, PULONG_PTR;
|
|
alias short HALF_PTR;
|
|
alias short* PHALF_PTR;
|
|
alias ushort UHALF_PTR;
|
|
alias ushort* PUHALF_PTR;
|
|
|
|
uint HandleToUlong()(HANDLE h) { return cast(uint) h; }
|
|
int HandleToLong()(HANDLE h) { return cast(int) h; }
|
|
HANDLE LongToHandle()(LONG_PTR h) { return cast(HANDLE)h; }
|
|
uint PtrToUlong(const(void)* p) { return cast(uint) p; }
|
|
uint PtrToUint(const(void)* p) { return cast(uint) p; }
|
|
int PtrToInt(const(void)* p) { return cast(int) p; }
|
|
ushort PtrToUshort(const(void)* p) { return cast(ushort) p; }
|
|
short PtrToShort(const(void)* p) { return cast(short) p; }
|
|
void* IntToPtr()(int i) { return cast(void*) i; }
|
|
void* UIntToPtr()(uint ui) { return cast(void*) ui; }
|
|
alias IntToPtr LongToPtr;
|
|
alias UIntToPtr ULongToPtr;
|
|
}
|
|
|
|
alias UIntToPtr UintToPtr, UlongToPtr;
|
|
|
|
enum : UINT_PTR {
|
|
MAXUINT_PTR = UINT_PTR.max
|
|
}
|
|
|
|
enum : INT_PTR {
|
|
MAXINT_PTR = INT_PTR.max,
|
|
MININT_PTR = INT_PTR.min
|
|
}
|
|
|
|
enum : ULONG_PTR {
|
|
MAXULONG_PTR = ULONG_PTR.max
|
|
}
|
|
|
|
enum : LONG_PTR {
|
|
MAXLONG_PTR = LONG_PTR.max,
|
|
MINLONG_PTR = LONG_PTR.min
|
|
}
|
|
|
|
enum : UHALF_PTR {
|
|
MAXUHALF_PTR = UHALF_PTR.max
|
|
}
|
|
|
|
enum : HALF_PTR {
|
|
MAXHALF_PTR = HALF_PTR.max,
|
|
MINHALF_PTR = HALF_PTR.min
|
|
}
|
|
|
|
alias byte INT8;
|
|
alias byte* PINT8;
|
|
alias ubyte UINT8;
|
|
alias ubyte* PUINT8;
|
|
|
|
alias short INT16;
|
|
alias short* PINT16;
|
|
alias ushort UINT16;
|
|
alias ushort* PUINT16;
|
|
|
|
alias int LONG32, INT32;
|
|
alias int* PLONG32, PINT32;
|
|
alias uint ULONG32, DWORD32, UINT32;
|
|
alias uint* PULONG32, PDWORD32, PUINT32;
|
|
|
|
alias ULONG_PTR SIZE_T, DWORD_PTR;
|
|
alias ULONG_PTR* PSIZE_T, PDWORD_PTR;
|
|
alias LONG_PTR SSIZE_T;
|
|
alias LONG_PTR* PSSIZE_T;
|
|
|
|
alias long LONG64, INT64;
|
|
alias long* PLONG64, PINT64;
|
|
alias ulong ULONG64, DWORD64, UINT64;
|
|
alias ulong* PULONG64, PDWORD64, PUINT64;
|