diff options
author | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
---|---|---|
committer | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
commit | 554fd8c5195424bdbcabf5de30fdc183aba391bd (patch) | |
tree | 976dc5ab7fddf506dadce60ae936f43f58787092 /libjava/include/win32.h | |
download | cbb-gcc-4.6.4-15d2061ac0796199866debe9ac87130894b0cdd3.tar.bz2 cbb-gcc-4.6.4-15d2061ac0796199866debe9ac87130894b0cdd3.tar.xz |
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig;
imported gcc-4.6.4 source tree from verified upstream tarball.
downloading a git-generated archive based on the 'upstream' tag
should provide you with a source tree that is binary identical
to the one extracted from the above tarball.
if you have obtained the source via the command 'git clone',
however, do note that line-endings of files in your working
directory might differ from line-endings of the respective
files in the upstream repository.
Diffstat (limited to 'libjava/include/win32.h')
-rw-r--r-- | libjava/include/win32.h | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/libjava/include/win32.h b/libjava/include/win32.h new file mode 100644 index 000000000..48989fe3d --- /dev/null +++ b/libjava/include/win32.h @@ -0,0 +1,188 @@ +// win32.h -- Helper functions for Microsoft-flavored OSs. + +/* Copyright (C) 2002, 2003, 2006 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +#ifndef __JV_WIN32_H__ +#define __JV_WIN32_H__ + +// Enable UNICODE support? + +#ifdef MINGW_LIBGCJ_UNICODE +#define UNICODE +#define _UNICODE +#endif // MINGW_LIBGCJ_UNICODE + +#include <tchar.h> + +// Includes +#define WIN32_LEAN_AND_MEAN +// Force Winsock 2 interface. +#include <winsock2.h> +#include <windows.h> +#undef WIN32_LEAN_AND_MEAN +#undef STRICT + +#include <ws2tcpip.h> +#include <gcj/cni.h> +#include <jvm.h> +#include <java/util/Properties.h> + +#include <io.h> + +/* Begin UNICODE Support Classes and Functions */ + +/* Helper class which creates a temporary, null-terminated, + wide-character C string. */ +class _Jv_Win32TempString +{ +public: + _Jv_Win32TempString(jstring jstr); + ~_Jv_Win32TempString(); + +// Accessors + operator LPCTSTR() const + { + return buf_; + } + LPCTSTR buf() const + { + return buf_; + } + LPTSTR buf() + { + return buf_; + } + +private: + TCHAR stackbuf_[500]; + LPTSTR buf_; +}; + +// Mimics the JV_TEMP_STRING_UTF macro in jvm.h +#define JV_TEMP_STRING_WIN32(x,y) _Jv_Win32TempString x(y); + +// Creates a jstring from a LPCTSTR +extern jstring _Jv_Win32NewString (LPCTSTR pcsz); + +/* End UNICODE Helpers */ + +// Prefix and suffix for shared libraries. +#define _Jv_platform_solib_prefix "" +#define _Jv_platform_solib_suffix ".dll" + +// Name of the Process implementation. +#define _Jv_platform_process ::java::lang::Win32Process + +// Separator for file name components. +#define _Jv_platform_file_separator ((jchar) '\\') +// Separator for path components. +#define _Jv_platform_path_separator ((jchar) ';') + +// List of names for `JNI_OnLoad'. On Win32, JNI_OnLoad is an +// "stdcall" function taking two pointers (8 bytes) as arguments. It +// could also have been exported as "JNI_OnLoad@8" (MinGW) or +// "_JNI_OnLoad@8" (MSVC). +#define _Jv_platform_onload_names \ + { "JNI_OnLoad", "JNI_OnLoad@8", "_JNI_OnLoad@8", NULL } + +// Type of libffi ABI used by JNICALL methods. NOTE: This must agree +// with the JNICALL definition in jni.h +#define _Jv_platform_ffi_abi FFI_STDCALL + +/* Useful helper classes and methods. */ + +/* A C++ wrapper around a WSAEVENT which closes the event + in its destructor. If dwSelFlags is non-zero, we also + issue an WSAEventSelect on the socket descriptor with + the given flags; this is undone by a corresponding call + to WSAEventSelect(fd, 0, 0) in our destructor. */ +class WSAEventWrapper +{ +public: + // Default constructor. Call init() after this. + WSAEventWrapper(); + WSAEventWrapper(int fd, DWORD dwSelFlags); + ~WSAEventWrapper(); + + // Used for two-step initialization after calling + // default constructor. + void init(int fd, DWORD dwSelFlags); + + int getFD() + { + return m_fd; + } + + WSAEVENT getEventHandle() + { + return m_hEvent; + } + +private: + WSAEVENT m_hEvent; + int m_fd; + DWORD m_dwSelFlags; +}; + +// Error string text. The int argument is compatible +// with both int WSAGetLastError() and DWORD GetLastError() +// I tried avoiding having to pass the error explicitly, but +// it didn't work this was invoked with say +// throw new SomeException(_Jv_WinStrError()). +extern jstring +_Jv_WinStrError (LPCTSTR lpszPrologue, int nErrorCode); + +extern jstring +_Jv_WinStrError (int nErrorCode); + +extern void +_Jv_ThrowIOException (DWORD dwErrorCode); + +extern void +_Jv_ThrowIOException (); + +extern void +_Jv_ThrowSocketException (DWORD dwErrorCode); + +extern void +_Jv_ThrowSocketException (); + +// Platform implementation +extern void _Jv_platform_initialize (void); +extern void _Jv_platform_initProperties (java::util::Properties*); +extern jlong _Jv_platform_gettimeofday (); +extern jlong _Jv_platform_nanotime (); +extern int _Jv_pipe (int filedes[2]); + +extern void +_Jv_platform_close_on_exec (HANDLE h); + +#ifdef JV_HASH_SYNCHRONIZATION +/* Suspends the execution of the current thread for the specified + number of microseconds. Tries to emulate the behaviour of usleep() + on UNIX and provides a granularity of 1 millisecond. */ +inline void +_Jv_platform_usleep (unsigned long usecs) +{ + if (usecs > 0UL) + { + unsigned long millis = ((usecs + 999UL) / 1000UL); + Sleep (millis); + } +} +#endif /* JV_HASH_SYNCHRONIZATION */ + +// Forward declaration. See java-stack.h for definition. +struct _Jv_AddrInfo; + +// Given an address, determine the executable or shared object that defines +// it and the nearest named symbol. +extern int _Jv_platform_dladdr (void *addr, _Jv_AddrInfo *info); + +#endif /* __JV_WIN32_H__ */ |