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.
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to