mirror of
https://github.com/openRuyi-Project/gcc.git
synced 2026-09-08 15:01:39 +00:00
D front-end changes:
- Import dmd v2.101.0-beta.1.
- Add predefined version `D_Optimized' when compiling with `-O'.
- Shortened method syntax (DIP1043) is now enabled by default.
- Array literals assigned to `scope' array variables are now
allocated on the stack.
- Implement `@system' variables (DIP1035), available behind the
preview feature flag `-fpreview=systemvariables'.
D runtime changes:
- Import druntime v2.101.0-beta.1.
Phobos changes:
- Import phobos v2.101.0-beta.1.
- Added `std.typecons.SafeRefCounted', that can be used in `@safe'
code with `-fpreview=dip1000'.
gcc/d/ChangeLog:
* d-attribs.cc (apply_user_attributes): Update for new front-end
interface.
* d-builtins.cc (d_init_versions): Predefine `D_Optimized' with
compiling with optimizations enabled.
* d-lang.cc (d_handle_option): Update for new front-end interface.
Handle new option `-fpreview=systemvariables'.
* dmd/MERGE: Merge upstream dmd e4f8919591.
* dmd/VERSION: Bump version to v2.101.0-beta.1.
* expr.cc (ExprVisitor::visit (AssignExp *)): Treat construction of
static arrays from a call expression as a simple assignment.
(ExprVisitor::visit (ArrayLiteralExp *)): Handle array literals with
`scope' storage.
* gdc.texi: Update documentation of `-fpreview=' options.
* lang.opt (fpreview=shortenedmethods): Remove.
(fpreview=systemvariables): New option.
libphobos/ChangeLog:
* libdruntime/MERGE: Merge upstream druntime e4f8919591.
* src/MERGE: Merge upstream phobos 3ad507b51.
gcc/testsuite/ChangeLog:
* gdc.dg/simd19630.d: Move tests with errors to ...
* gdc.dg/simd19630b.d: ... here. New test.
* gdc.dg/simd19630c.d: New test.
* gdc.dg/simd_ctfe.d: Removed.
* gdc.dg/simd18867.d: New test.
* gdc.dg/simd19788.d: New test.
* gdc.dg/simd21469.d: New test.
* gdc.dg/simd21672.d: New test.
* gdc.dg/simd23077.d: New test.
* gdc.dg/simd23084.d: New test.
* gdc.dg/simd23085.d: New test.
* gdc.dg/torture/simd19632.d: New test.
* gdc.dg/torture/simd20041.d: New test.
* gdc.dg/torture/simd21673.d: New test.
* gdc.dg/torture/simd21676.d: New test.
* gdc.dg/torture/simd22438.d: New test.
* gdc.dg/torture/simd23009.d: New test.
* gdc.dg/torture/simd23077.d: New test.
* gdc.dg/torture/simd8.d: New test.
* gdc.dg/torture/simd9.d: New test.
* gdc.dg/torture/simd_prefetch.d: New test.
105 lines
2.7 KiB
D
105 lines
2.7 KiB
D
module core.sys.windows.com;
|
|
version (Windows):
|
|
|
|
pragma(lib,"uuid");
|
|
|
|
import core.atomic;
|
|
import core.sys.windows.windef /+: HRESULT, LONG, ULONG+/;
|
|
//import std.string;
|
|
|
|
public import core.sys.windows.basetyps : GUID, IID, CLSID;
|
|
|
|
public import core.sys.windows.objbase :
|
|
CLSCTX_INPROC, CLSCTX_ALL, CLSCTX_SERVER,
|
|
COINIT,
|
|
CoBuildVersion, StringFromGUID2,
|
|
CoInitialize, CoInitializeEx, CoUninitialize, CoGetCurrentProcess,
|
|
CoCreateInstance,
|
|
CoFreeLibrary, CoFreeAllLibraries, CoFreeUnusedLibraries;
|
|
|
|
public import core.sys.windows.ole2ver : rmm, rup;
|
|
|
|
public import core.sys.windows.unknwn : IUnknown, IClassFactory;
|
|
|
|
public import core.sys.windows.winerror :
|
|
S_OK,
|
|
S_FALSE,
|
|
NOERROR,
|
|
E_NOTIMPL,
|
|
E_NOINTERFACE,
|
|
E_POINTER,
|
|
E_ABORT,
|
|
E_FAIL,
|
|
E_HANDLE,
|
|
CLASS_E_NOAGGREGATION,
|
|
E_OUTOFMEMORY,
|
|
E_INVALIDARG,
|
|
E_UNEXPECTED,
|
|
RPC_E_CHANGED_MODE;
|
|
|
|
public import core.sys.windows.wtypes :
|
|
CLSCTX, OLECHAR, LPOLESTR, LPCOLESTR;
|
|
|
|
alias CLSCTX_INPROC_SERVER = CLSCTX.CLSCTX_INPROC_SERVER ;
|
|
alias CLSCTX_INPROC_HANDLER = CLSCTX.CLSCTX_INPROC_HANDLER ;
|
|
alias CLSCTX_LOCAL_SERVER = CLSCTX.CLSCTX_LOCAL_SERVER ;
|
|
alias CLSCTX_INPROC_SERVER16 = CLSCTX.CLSCTX_INPROC_SERVER16 ;
|
|
alias CLSCTX_REMOTE_SERVER = CLSCTX.CLSCTX_REMOTE_SERVER ;
|
|
alias CLSCTX_INPROC_HANDLER16 = CLSCTX.CLSCTX_INPROC_HANDLER16 ;
|
|
alias CLSCTX_INPROC_SERVERX86 = CLSCTX.CLSCTX_INPROC_SERVERX86 ;
|
|
alias CLSCTX_INPROC_HANDLERX86 = CLSCTX.CLSCTX_INPROC_HANDLERX86;
|
|
|
|
alias COINIT_APARTMENTTHREADED = COINIT.COINIT_APARTMENTTHREADED;
|
|
alias COINIT_MULTITHREADED = COINIT.COINIT_MULTITHREADED ;
|
|
alias COINIT_DISABLE_OLE1DDE = COINIT.COINIT_DISABLE_OLE1DDE ;
|
|
alias COINIT_SPEED_OVER_MEMORY = COINIT.COINIT_SPEED_OVER_MEMORY;
|
|
|
|
public import core.sys.windows.uuid;
|
|
|
|
extern (Windows)
|
|
{
|
|
|
|
class ComObject : IUnknown
|
|
{
|
|
extern (Windows):
|
|
HRESULT QueryInterface(const(IID)* riid, void** ppv)
|
|
{
|
|
if (*riid == IID_IUnknown)
|
|
{
|
|
*ppv = cast(void*)cast(IUnknown)this;
|
|
AddRef();
|
|
return S_OK;
|
|
}
|
|
else
|
|
{ *ppv = null;
|
|
return E_NOINTERFACE;
|
|
}
|
|
}
|
|
|
|
ULONG AddRef()
|
|
{
|
|
return atomicOp!"+="(*cast(shared)&count, 1);
|
|
}
|
|
|
|
ULONG Release()
|
|
{
|
|
LONG lRef = atomicOp!"-="(*cast(shared)&count, 1);
|
|
if (lRef == 0)
|
|
{
|
|
// free object
|
|
|
|
// If we delete this object, then the postinvariant called upon
|
|
// return from Release() will fail.
|
|
// Just let the GC reap it.
|
|
//delete this;
|
|
|
|
return 0;
|
|
}
|
|
return cast(ULONG)lRef;
|
|
}
|
|
|
|
LONG count = 0; // object reference count
|
|
}
|
|
|
|
}
|