
Jeff Garland <jeff@crystalclearsoftware.com> writes:
joaquin@tid.es wrote:
Jeff Garland escribió:
Emil Mieilica wrote:
Hello, Done. Hope it will be useful to everybody who uses this great library.
Can you attach this patch to the ticket so it doesn't get lost?
Just a technical comment on the suggested patch. Is it really wise / legal to replicate the Windows API declarations in Boost.
Isn't that exactly what other libs such as WINE do? See
Yeah, I guess they would have to since they are an emulation of the Win32 api. AFAIK we've never taken this approach in Boost so I think we should talk thru if it's acceptable before putting it in. If it is acceptable, I guess the other question might be if it belongs in config instead of an individual library.
boost/detail/lwm_win32_cs.hpp does this for CRITICAL_SECTION, and boost/thread/win32/thread_primitives.hpp does this for some APIs. In both cases the structures and APIs are redeclared in a nested namespace in boost, so as not to clash with the declarations in the global namespace should someone include <windows.h> outside the boost headers. I've attached the patch I've been using locally. The "filetime.hpp" goes in boost/date_time. Anthony -- Anthony Williams | Just Software Solutions Ltd Custom Software Development | http://www.justsoftwaresolutions.co.uk Registered in England, Company Number 5478976. Registered Office: 15 Carrallack Mews, St Just, Cornwall, TR19 7UL #ifndef BOOST_DATE_TIME_FILETIME_HPP #define BOOST_DATE_TIME_FILETIME_HPP // (C) Copyright 2008 Anthony Williams // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifdef BOOST_HAS_FTIME #ifdef BOOST_USE_WINDOWS_H #include <windows.h> namespace boost { namespace detail { namespace win32 { typedef FILETIME file_time; typedef SYSTEMTIME system_time; using ::GetSystemTime; using ::GetSystemTimeAsFileTime; using ::FileTimeToLocalFileTime; using ::SystemTimeToFileTime; } } } #else namespace boost { namespace detail { namespace win32 { extern "C" { struct file_time { unsigned long dwLowDateTime; unsigned long dwHighDateTime; }; struct system_time { unsigned short wYear; unsigned short wMonth; unsigned short wDayOfWeek; unsigned short wDay; unsigned short wHour; unsigned short wMinute; unsigned short wSecond; unsigned short wMilliseconds; }; __declspec(dllimport) void __stdcall GetSystemTimeAsFileTime(file_time*); __declspec(dllimport) int __stdcall FileTimeToLocalFileTime(const file_time*,file_time*); __declspec(dllimport) void __stdcall GetSystemTime(system_time*); __declspec(dllimport) int __stdcall SystemTimeToFileTime(const system_time*,file_time*); } } } } #endif #endif #endif