Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


I'm able to build master on Mac OS X again. Fredrich's patches caused some fall out.

First off, Fredrich can on line tonight  (my time) and uploaded the last of his patches to upgrade 
Boost from 1.39.0 to 1.44.0. This my have fixed a few issues. I've done the following fixes:

1. We had about 4 locations where the #include <unordered_map> was guarded by INCLUDED_HASH_MAP. 
The issue here was that upordered_map already has it's own internal guards and we still use it to 
guard <hash_map> in about 4 locations. In one case, this was causing a compiler error since the 
guard got defined when hash_map was included and thus unordered_map wasn't. I fixed all locations 
just to be safe.

2. We had some forward declare issues with ::std::vector<>. I just did a #include <vector> in the 
files affected and this fixed the issues. Now that boost has been upgraded, we may be able to 
remove these #includes. I haven't done any research to see if these can be removed.

3. The upgraded boost referenced /boost/range/algorithm/equal.hxx; however, this wasn't delivered 
before. I added the lines to the d.lst file to make sure the range/algorithm directory is delivered.

4. The old hash_map code was doing a two pass process for loading the map in several locations. In 
pass 1, the data was loaded into a temporary <list> in sorted order. In pass 2, they used 
hash_map.resize( list.size ) pre-allocated enough memory to store the entire list and then the 
contents of the list where added to the hash_map. The issue here is that unordered_map doesn't have 
a resize() method so we can no longer do this micro-optimization. In all cases the code was 
modified to just remove the call to resize(). It would be good to have someone go back and find all 
the locations where this two step process is used and  see if we can speedup/simplify the code by 
using a container that will do the sorting for us. The following programs use this pattern (there 
are more out there):

vcl/source/gdi/configsettings.cxx
vcl/unx/headless/svptext.cxx

5. The class T2TypeClassMap was defined twice, once as a unordered_map and once as a hash_map 
(unodevtools/inc/unodevtools/typemanager.hxx); I changed the 2nd definition to an unordered_map.

Overall, Fredrich didn't break too much and I don't think we need to revert any of his work.

Joe P.

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.