Subject: Re: [boost] [system][chrono] header-only libs
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2011-01-02 12:24:38


----- Original Message -----
From: "vicente.botet" <vicente.botet_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Sunday, October 17, 2010 10:37 PM
Subject: Re: [boost] [system][chrono] header-only libs

>
> ----- Original Message -----
> From: "Marsh Ray" <marsh_at_[hidden]>
> To: <boost_at_[hidden]>
> Cc: "Anthony Williams" <anthony.ajw_at_[hidden]>
> Sent: Friday, October 15, 2010 12:07 AM
> Subject: Re: [boost] [system][chrono] header-only libs
>
>
>>
>> On 10/14/2010 01:53 AM, Anthony Williams wrote:
>>> "vicente.botet"<vicente.botet_at_[hidden]> writes:
>>>> As there are quite a lot of files that includes some parts of
>>>> <windows.h> some of them include the same declarations. I was
>>>> wondering if we can not add a boost/detail/windows.hpp> file that will
>>>> declare whatever is needed in Boost. Is this a good or a bad idea?
>>>
>>> I think that's a bad idea, as lots of libraries will need to touch it,
>>> and it will end up getting big and bloated like<windows.h>. A
>>> boost/details/windows directory with a lot of special-purpose files
>>> would be better.
>>
>> If it gets too big you can split it into separate files later. I
>> wouldn't worry about it unless it starts to become a problem.
>
> Hi,
>
> I have started to define some files that allows to build Boost.Chrono and Boost.System without including <windows.h> file.
>
> basic_types.hpp // contain the basic types
> error_handling.hpp // error handling related
> time.hpp // time related
> process.hpp // process related
> thread.hpp // thread related
>
> The file name follows the naming of the main sections in http://msdn.microsoft.com/en-us/library/ee663300%28v=VS.85%29.aspx
>
> The user need to define BOOST_USE_WINDOWS_H if s/he prefers to use the <windows.h> file.
>
> These files should be modified and surely add new ones in order to provide everything the Boost lib needs.
>
> You can see them in the sandbox http://svn.boost.org/svn/boost/sandbox/chrono/boost/detail/win/
>
> I have started to write some test that checks if the layout is the same (see
> http://svn.boost.org/svn/boost/sandbox/chrono/libs/chrono/test/win32_test.cpp). Where these kind of test should be placed?
>
> Anthony please, could you help me to fix this
>
> // @FIXME Which condition must be tested
> // #if !defined(_M_IX86)
> typedef __int64 LONGLONG_;
> // #else
> // typedef double LONGLONG_;
> // #endif
>
> If I uncomment the commented lines, I get an run time error in my machine AMD Athlon 62x2 Dual.
>
> I have reached to make Boost.System and Boost.Chrono header_only libs. The user needs to define BOOST_SYSTEM_INLINED and BOOST_CHRONO_INLINED respectively, but maybe a better name could be BOOST_SYSTEM_HEADER_ONLY and BOOST_CHRONO_HEADER_ONLY.
>
> You can see them in the sandbox http://svn.boost.org/svn/boost/sandbox/chrono/boost/system/
> and http://svn.boost.org/svn/boost/sandbox/chrono/libs/system/
>
<snip>
> With this little change every thing works now. I guess it is too late to merge these changes on the release branch, but at least the chage in the cygwin condition should be worth.
>
> Anyway, please let me know if this is the correct way to go and if this windows files could be incorporated in Boost.
>
> Best,
> Vicente

Beman,

I would like to know if you are yet interesteed on the header only version for Boost.System.

Best,
Vicente