]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://factorcode.org/git/factor
authorJoe Groff <arcata@gmail.com>
Tue, 22 Apr 2008 03:18:10 +0000 (20:18 -0700)
committerJoe Groff <arcata@gmail.com>
Tue, 22 Apr 2008 03:18:10 +0000 (20:18 -0700)
Conflicts:

extra/windows/ole32/ole32.factor

1  2 
extra/windows/ole32/ole32.factor
extra/windows/shell32/shell32.factor

index 3be442514c82927d529942e1502f39e6a59eb79b,6e06830130151574a21abd830e25e97e68d0f553..ae3dafbc9f6b5b879489d587784ccec1ff05372d
@@@ -1,13 -1,19 +1,13 @@@
- USING: alien alien.syntax alien.c-types math kernel sequences\r
windows windows.kernel32 windows.types combinators.lib ;\r
+ USING: alien alien.syntax alien.c-types alien.strings math\r
kernel sequences windows windows.types combinators.lib ;\r
  IN: windows.ole32\r
  \r
  LIBRARY: ole32\r
  \r
 -C-STRUCT: GUID\r
 -    { "DWORD" "part1" }\r
 -    { "DWORD" "part2" }\r
 -    { "DWORD" "part3" }\r
 -    { "DWORD" "part4" } ;\r
 -\r
 -TYPEDEF: void* REFGUID\r
 +TYPEDEF: GUID* REFGUID\r
  TYPEDEF: void* LPUNKNOWN\r
- TYPEDEF: ushort* LPOLESTR\r
- TYPEDEF: ushort* LPCOLESTR\r
+ TYPEDEF: wchar_t* LPOLESTR\r
+ TYPEDEF: wchar_t* LPCOLESTR\r
  \r
  TYPEDEF: REFGUID REFIID\r
  TYPEDEF: REFGUID REFCLSID\r
@@@ -19,7 -25,6 +19,7 @@@ FUNCTION: HRESULT CLSIDFromString ( LPO
  \r
  : S_OK 0 ; inline\r
  : S_FALSE 1 ; inline\r
 +: E_NOINTERFACE HEX: 80004002 ; inline\r
  : E_FAIL HEX: 80004005 ; inline\r
  : E_INVALIDARG HEX: 80070057 ; inline\r
  \r
  : DD_DEFDRAGDELAY 200 ; inline\r
  : DD_DEFDRAGMINDIST 2 ; inline\r
  \r
 -: ole32-error ( n -- )\r
 -    dup S_OK = [\r
 +: CF_TEXT             1 ; inline\r
 +: CF_BITMAP           2 ; inline\r
 +: CF_METAFILEPICT     3 ; inline\r
 +: CF_SYLK             4 ; inline\r
 +: CF_DIF              5 ; inline\r
 +: CF_TIFF             6 ; inline\r
 +: CF_OEMTEXT          7 ; inline\r
 +: CF_DIB              8 ; inline\r
 +: CF_PALETTE          9 ; inline\r
 +: CF_PENDATA          10 ; inline\r
 +: CF_RIFF             11 ; inline\r
 +: CF_WAVE             12 ; inline\r
 +: CF_UNICODETEXT      13 ; inline\r
 +: CF_ENHMETAFILE      14 ; inline\r
 +: CF_HDROP            15 ; inline\r
 +: CF_LOCALE           16 ; inline\r
 +: CF_MAX              17 ; inline\r
 +\r
 +: CF_OWNERDISPLAY     HEX: 0080 ; inline\r
 +: CF_DSPTEXT          HEX: 0081 ; inline\r
 +: CF_DSPBITMAP        HEX: 0082 ; inline\r
 +: CF_DSPMETAFILEPICT  HEX: 0083 ; inline\r
 +: CF_DSPENHMETAFILE   HEX: 008E ; inline\r
 +\r
 +: DVASPECT_CONTENT    1 ; inline\r
 +: DVASPECT_THUMBNAIL  2 ; inline\r
 +: DVASPECT_ICON       4 ; inline\r
 +: DVASPECT_DOCPRINT   8 ; inline\r
 +\r
 +: TYMED_HGLOBAL  1 ; inline\r
 +: TYMED_FILE     2 ; inline\r
 +: TYMED_ISTREAM  4 ; inline\r
 +: TYMED_ISTORAGE 8 ; inline\r
 +: TYMED_GDI      16 ; inline\r
 +: TYMED_MFPICT   32 ; inline\r
 +: TYMED_ENHMF    64 ; inline\r
 +: TYMED_NULL     0 ; inline\r
 +\r
 +C-STRUCT: DVTARGETDEVICE\r
 +    { "DWORD" "tdSize" }\r
 +    { "WORD" "tdDriverNameOffset" }\r
 +    { "WORD" "tdDeviceNameOffset" }\r
 +    { "WORD" "tdPortNameOffset" }\r
 +    { "WORD" "tdExtDevmodeOffset" }\r
 +    { "BYTE[1]" "tdData" } ;\r
 +\r
 +TYPEDEF: WORD CLIPFORMAT\r
 +TYPEDEF: POINT POINTL\r
 +\r
 +C-STRUCT: FORMATETC\r
 +    { "CLIPFORMAT" "cfFormat" }\r
 +    { "DVTARGETDEVICE*" "ptd" }\r
 +    { "DWORD" "dwAspect" }\r
 +    { "LONG" "lindex" }\r
 +    { "DWORD" "tymed" } ;\r
 +TYPEDEF: FORMATETC* LPFORMATETC\r
 +\r
 +C-STRUCT: STGMEDIUM\r
 +    { "DWORD" "tymed" }\r
 +    { "void*" "data" }\r
 +    { "LPUNKNOWN" "punkForRelease" } ;\r
 +TYPEDEF: STGMEDIUM* LPSTGMEDIUM\r
 +\r
 +: COINIT_MULTITHREADED     0 ; inline\r
 +: COINIT_APARTMENTTHREADED 2 ; inline\r
 +: COINIT_DISABLE_OLE1DDE   4 ; inline\r
 +: COINIT_SPEED_OVER_MEMORY 8 ; inline\r
 +\r
 +FUNCTION: HRESULT OleInitialize ( void* reserved ) ;\r
 +FUNCTION: HRESULT CoInitializeEx ( void* reserved, DWORD dwCoInit ) ;\r
 +\r
 +FUNCTION: HRESULT RegisterDragDrop ( HWND hWnd, IDropTarget* pDropTarget ) ;\r
 +FUNCTION: HRESULT RevokeDragDrop ( HWND hWnd ) ;\r
 +FUNCTION: void ReleaseStgMedium ( LPSTGMEDIUM pmedium ) ;\r
 +\r
 +: succeeded? ( hresult -- ? )\r
 +    0 HEX: 7FFFFFFF between? ;\r
 +\r
 +: ole32-error ( hresult -- )\r
 +    dup succeeded? [\r
          drop\r
      ] [ (win32-error-string) throw ] if ;\r
  \r
 +: ole-initialize ( -- )\r
 +    f OleInitialize ole32-error ;\r
 +\r
  : guid= ( a b -- ? )\r
      IsEqualGUID c-bool> ;\r
  \r
      "{01234567-89ab-cdef-0123-456789abcdef}" length ; inline\r
  \r
  : string>guid ( string -- guid )\r
-     string>u16-alien "GUID" <c-object> [ CLSIDFromString ole32-error ] keep ;\r
+     utf16n string>alien "GUID" <c-object> [ CLSIDFromString ole32-error ] keep ;\r
  : guid>string ( guid -- string )\r
      GUID-STRING-LENGTH 1+ [ "ushort" <c-array> ] keep\r
-     [ StringFromGUID2 drop ] { 2 } multikeep alien>u16-string ;\r
+     [ StringFromGUID2 drop ] { 2 } multikeep utf16n alien>string ;\r
  \r
index a5bed9daed6d8097b7a719fa14f2d23c5b713591,a9035eeeafb0a895c5a65e3af6e76d896b6f1a4a..b071bee72a4898c8b452e4e6ae0c627974c49e78
@@@ -1,6 -1,6 +1,6 @@@
- USING: alien alien.c-types alien.syntax combinators
+ USING: alien alien.c-types alien.strings alien.syntax combinators
  kernel windows windows.user32 windows.ole32
- windows.com windows.com.syntax ;
+ windows.com windows.com.syntax io.files ;
  IN: windows.shell32
  
  : CSIDL_DESKTOP HEX: 00 ; inline
@@@ -83,7 -83,7 +83,7 @@@ FUNCTION: HINSTANCE ShellExecuteW ( HWN
  : ShellExecute ShellExecuteW ; inline
  
  : open-in-explorer ( dir -- )
-     f "open" rot f f SW_SHOWNORMAL ShellExecute drop ;
+     f "open" rot (normalize-path) f f SW_SHOWNORMAL ShellExecute drop ;
  
  : shell32-error ( n -- )
      ole32-error ; inline
@@@ -91,7 -91,7 +91,7 @@@
  : shell32-directory ( n -- str )
      f swap f SHGFP_TYPE_DEFAULT
      MAX_UNICODE_PATH "ushort" <c-array>
-     [ SHGetFolderPath shell32-error ] keep alien>u16-string ;
+     [ SHGetFolderPath shell32-error ] keep utf16n alien>string ;
  
  : desktop ( -- str )
      CSIDL_DESKTOPDIRECTORY shell32-directory ;
@@@ -167,15 -167,6 +167,15 @@@ TYPEDEF: DWORD SHGDN
  
  TYPEDEF: ULONG SFGAOF
  
 +C-STRUCT: DROPFILES
 +    { "DWORD" "pFiles" }
 +    { "POINT" "pt" }
 +    { "BOOL" "fNC" }
 +    { "BOOL" "fWide" } ;
 +TYPEDEF: DROPFILES* LPDROPFILES
 +TYPEDEF: DROPFILES* LPCDROPFILES
 +TYPEDEF: HANDLE HDROP
 +
  C-STRUCT: SHITEMID
      { "USHORT" "cb" }
      { "BYTE[1]" "abID" } ;
@@@ -219,6 -210,5 +219,6 @@@ COM-INTERFACE: IShellFolder IUnknown {0
  
  FUNCTION: HRESULT SHGetDesktopFolder ( IShellFolder** ppshf ) ;
  
 -FUNCTION: HRESULT StrRetToBufW ( STRRET *pstr, PCUITEMID_CHILD pidl, LPWSTR pszBuf, UINT cchBuf ) ;
 -: StrRetToBuf StrRetToBufW ; inline
 +FUNCTION: UINT DragQueryFileW ( HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch ) ;
 +: DragQueryFile DragQueryFileW ; inline
 +