Mercurial > projects > dwt2
view org.eclipse.swt.win32.win32.x86/src/org/eclipse/swt/internal/ole/win32/extras.d @ 120:536e43f63c81
Comprehensive update for Win32/Linux32 dmd-2.053/dmd-1.068+Tango-r5661
===D2===
* added [Try]Immutable/Const/Shared templates to work with differenses in D1/D2 instead of version statements
used these templates to work with strict type storage rules of dmd-2.053
* com.ibm.icu now also compilable with D2, but not tested yet
* small fixes
Snippet288 - shared data is in TLS
===Phobos===
* fixed critical bugs in Phobos implemention
completely incorrect segfault prone fromStringz (Linux's port ruthless killer)
terrible, incorrect StringBuffer realization (StyledText killer)
* fixed small bugs as well
Snippet72 - misprint in the snippet
* implemented missed functionality for Phobos
ByteArrayOutputStream implemented (image loading available)
formatting correctly works for all DWT's cases
As a result, folowing snippets now works with Phobos (Snippet### - what is fixed):
Snippet24, 42, 111, 115, 130, 235, 276 - bad string formatting
Snippet48, 282 - crash on image loading
Snippet163, 189, 211, 213, 217, 218, 222 - crash on copy/cut in StyledText
Snippet244 - hang-up
===Tango===
* few changes for the latest Tango trunc-r5661
* few small performance improvments
===General===
* implMissing-s for only one version changed to implMissingInTango/InPhobos
* incorrect calls to Format in toString-s fixed
* fixed loading \uXXXX characters in ResourceBundle
* added good UTF-8 support for StyledText, TextLayout (Win32) and friends
UTF functions revised and tested. It is now in java.nonstandard.*Utf modules
StyledText and TextLayout (Win32) modules revised for UTF-8 support
* removed small diferences in most identical files in *.swt.* folders
*.swt.internal.image, *.swt.events and *.swt.custom are identical in Win32/Linux32
now 179 of 576 (~31%) files in *.swt.* folders are fully identical
* Win32: snippets now have right subsystem, pretty icons and native system style controls
* small fixes in snippets
Snippet44 - it's not Snippet44
Snippet212 - functions work with different images and offsets arrays
Win32: Snippet282 - crash on close if the button has an image
Snippet293 - setGrayed is commented
and others
Win32: As a result, folowing snippets now works
Snippet68 - color doesn't change
Snippet163, 189, 211, 213, 217, 218, 222 - UTF-8 issues (see above)
Snippet193 - no tabel headers
author | Denis Shelomovskij <verylonglogin.reg@gmail.com> |
---|---|
date | Sat, 09 Jul 2011 15:50:20 +0300 |
parents | 0ecb2b338560 |
children |
line wrap: on
line source
module org.eclipse.swt.internal.ole.win32.extras; // // extra bits form here and there to bring the com alias inline with MS // to ease the porting. // //public import std.c.windows.com; //public import std.c.windows.windows; import org.eclipse.swt.internal.win32.WINTYPES; import org.eclipse.swt.internal.ole.win32.COMTYPES; import java.lang.util; enum { rmm = 23, // OLE 2 version number info rup = 639, } enum : int { S_OK = 0, S_FALSE = 0x00000001, NOERROR = 0, E_NOTIMPL = cast(int)0x80004001, E_NOINTERFACE = cast(int)0x80004002, E_POINTER = cast(int)0x80004003, E_ABORT = cast(int)0x80004004, E_FAIL = cast(int)0x80004005, E_HANDLE = cast(int)0x80070006, CLASS_E_NOAGGREGATION = cast(int)0x80040110, E_OUTOFMEMORY = cast(int)0x8007000E, E_INVALIDARG = cast(int)0x80070057, E_UNEXPECTED = cast(int)0x8000FFFF, } enum { CLSCTX_INPROC_SERVER = 0x1, CLSCTX_INPROC_HANDLER = 0x2, CLSCTX_LOCAL_SERVER = 0x4, CLSCTX_INPROC_SERVER16 = 0x8, CLSCTX_REMOTE_SERVER = 0x10, CLSCTX_INPROC_HANDLER16 = 0x20, CLSCTX_INPROC_SERVERX86 = 0x40, CLSCTX_INPROC_HANDLERX86 = 0x80, CLSCTX_INPROC = (CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER), CLSCTX_ALL = (CLSCTX_INPROC_SERVER| CLSCTX_INPROC_HANDLER| CLSCTX_LOCAL_SERVER), CLSCTX_SERVER = (CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER), } version(Tango){ //alias GUID IID; } alias GUID CLSID; extern (C) { extern IID IID_IUnknown; extern IID IID_IClassFactory; extern IID IID_IMarshal; extern IID IID_IMallocSpy; extern IID IID_IStdMarshalInfo; extern IID IID_IExternalConnection; extern IID IID_IMultiQI; extern IID IID_IEnumUnknown; extern IID IID_IBindCtx; extern IID IID_IEnumMoniker; extern IID IID_IRunnableObject; extern IID IID_IRunningObjectTable; extern IID IID_IPersist; extern IID IID_IPersistStream; extern IID IID_IMoniker; extern IID IID_IROTData; extern IID IID_IEnumString; extern IID IID_ISequentialStream; extern IID IID_IStream; extern IID IID_IEnumSTATSTG; extern IID IID_IStorage; extern IID IID_IPersistFile; extern IID IID_IPersistStorage; extern IID IID_ILockBytes; extern IID IID_IEnumFORMATETC; extern IID IID_IEnumSTATDATA; extern IID IID_IRootStorage; extern IID IID_IAdviseSink; extern IID IID_IAdviseSink2; extern IID IID_IDataObject; extern IID IID_IDataAdviseHolder; extern IID IID_IMessageFilter; extern IID IID_IRpcChannelBuffer; extern IID IID_IRpcProxyBuffer; extern IID IID_IRpcStubBuffer; extern IID IID_IPSFactoryBuffer; extern IID IID_IPropertyStorage; extern IID IID_IPropertySetStorage; extern IID IID_IEnumSTATPROPSTG; extern IID IID_IEnumSTATPROPSETSTG; extern IID IID_IFillLockBytes; extern IID IID_IProgressNotify; extern IID IID_ILayoutStorage; extern IID GUID_NULL; extern IID IID_IRpcChannel; extern IID IID_IRpcStub; extern IID IID_IStubManager; extern IID IID_IRpcProxy; extern IID IID_IProxyManager; extern IID IID_IPSFactory; extern IID IID_IInternalMoniker; extern IID IID_IDfReserved1; extern IID IID_IDfReserved2; extern IID IID_IDfReserved3; extern IID IID_IStub; extern IID IID_IProxy; extern IID IID_IEnumGeneric; extern IID IID_IEnumHolder; extern IID IID_IEnumCallback; extern IID IID_IOleManager; extern IID IID_IOlePresObj; extern IID IID_IDebug; extern IID IID_IDebugStream; extern IID IID_StdOle; extern IID IID_ICreateTypeInfo; extern IID IID_ICreateTypeInfo2; extern IID IID_ICreateTypeLib; extern IID IID_ICreateTypeLib2; extern IID IID_IDispatch; extern IID IID_IEnumVARIANT; extern IID IID_ITypeComp; extern IID IID_ITypeInfo; extern IID IID_ITypeInfo2; extern IID IID_ITypeLib; extern IID IID_ITypeLib2; extern IID IID_ITypeChangeEvents; extern IID IID_IErrorInfo; extern IID IID_ICreateErrorInfo; extern IID IID_ISupportErrorInfo; extern IID IID_IOleAdviseHolder; extern IID IID_IOleCache; extern IID IID_IOleCache2; extern IID IID_IOleCacheControl; extern IID IID_IParseDisplayName; extern IID IID_IOleContainer; extern IID IID_IOleClientSite; extern IID IID_IOleObject; extern IID IID_IOleWindow; extern IID IID_IOleLink; extern IID IID_IOleItemContainer; extern IID IID_IOleInPlaceUIWindow; extern IID IID_IOleInPlaceActiveObject; extern IID IID_IOleInPlaceFrame; extern IID IID_IOleInPlaceObject; extern IID IID_IOleInPlaceSite; extern IID IID_IContinue; extern IID IID_IViewObject; extern IID IID_IViewObject2; extern IID IID_IDropSource; extern IID IID_IDropTarget; extern IID IID_IEnumOLEVERB; } alias TryConst!(IID) *REFCIID; extern (Windows) export { DWORD CoBuildVersion(); int StringFromGUID2(GUID *rguid, LPOLESTR lpsz, int cbMax); /* init/uninit */ HRESULT CoInitialize(LPVOID pvReserved); void CoUninitialize(); DWORD CoGetCurrentProcess(); HRESULT CoCreateInstance(CLSID *rclsid, IUnknown UnkOuter, DWORD dwClsContext, IID* riid, void* ppv); //HINSTANCE CoLoadLibrary(LPOLESTR lpszLibName, BOOL bAutoFree); void CoFreeLibrary(HINSTANCE hInst); void CoFreeAllLibraries(); void CoFreeUnusedLibraries(); interface IUnknown { HRESULT QueryInterface(REFCIID riid, void** pvObject); ULONG AddRef(); ULONG Release(); } interface IClassFactory : IUnknown { HRESULT CreateInstance(IUnknown UnkOuter, IID* riid, void** pvObject); HRESULT LockServer(BOOL fLock); } } alias IUnknown LPUNKNOWN; alias IClassFactory LPCLASSFACTORY; //alias LPRECT LPCRECT; /* D has no consts */ struct COAUTHINFO{} //alias DWORD LCID; alias PDWORD PLCID; //typedef GUID CLSID; //alias CLSID * LPCLSID; alias GUID *REFGUID; alias TryConst!(GUID) *REFCGUID; //alias IID *REFIID; alias CLSID *REFCLSID; //typedef FMTID *REFFMTID; union __MIDL_IWinTypes_0001 { DWORD dwValue; wchar *pwszName; } struct userCLIPFORMAT { long fContext; __MIDL_IWinTypes_0001 u; } alias userCLIPFORMAT *wireCLIPFORMAT; alias WORD CLIPFORMAT; alias void * HMETAFILEPICT; // typeless hack alias void * wireHGLOBAL; alias void * wireHBITMAP; alias void * wireHPALETTE; alias void * wireHENHMETAFILE; alias void * wireHMETAFILE; alias void * wireHMETAFILEPICT; struct BYTE_BLOB { ULONG clSize; byte[1] abData; } alias BYTE_BLOB *UP_BYTE_BLOB; struct WORD_BLOB { ULONG clSize; ushort[1] asData; } alias WORD_BLOB *UP_WORD_BLOB; struct DWORD_BLOB { ULONG clSize; ULONG[1] alData; } alias DWORD_BLOB *UP_DWORD_BLOB; alias ushort VARTYPE; alias short VARIANT_BOOL; // all the st enum READYSTATE { READYSTATE_UNINITIALIZED = 0, READYSTATE_LOADING = 1, READYSTATE_LOADED = 2, READYSTATE_INTERACTIVE = 3, READYSTATE_COMPLETE = 4 } alias HANDLE HTASK;