Get rid of SV_DECL_VARARR, SV_DECL_VARARR_PLAIN, SV_DECL_VARARR_SORT ....
Background: Similar to the above DECLARE_LIST macro, these macros were created before the STL became available. We need to rid our code base of these pesky macros once and for all. See svl/inc/svl/svarray.hxx for the definitions of these macros and svstdarr.hxx for declarations of the arrays.
In short, the following data types are defined via these macros:
SvBytes - Done (Nigel Hawkins)
SvBools - Done (Nigel Hawkins)
SvLongs - Done (Nigel Hawkins)
SvlongsSort - Done (Nigel Hawkins)
SvULongs
SvULongsSort - Done (Nigel Hawkins)
SvShorts - Done (Nigel Hawkins)
SvUShorts
SvUShortsSort - Done (Nigel Hawkins)
SvXub_StrLens - This is now just a typedef for std::deque<xub_StrLen>
SvXub_StrLensSort - Done (Unused?)
SvStrings
SvStringsDtor
SvStringsSort
SvStringsSortDtor
SvStringsISort
SvStringsISortDtor
SvByteStrings
SvByteStringsDtor
SvByteStringsSort
SvByteStringsSortDtor
SvByteStringsISort
SvByteStringsISortDtor
Note that some of these data structures appear to store pointers (the string versions, possibly others) and some manage the life cycle of stored elements. The xxxDtor versions certainly do this. Other versions should be checked (look for calling delete on the stored pointers before the pointers get removed). So, do take extra care not to leak memory when replacing them with new data structures. Replacing them with boost's ptr_container family may be a good strategy.
The following macros are used in pair:
SV_DECL_PTRARR_SORT and SV_IMPL_OP_PTRARR_SORT
SV_DECL_PTRARR_DEL and SV_IMPL_PTRARR
and they are used A LOT! Let's remove them. For the most part, they are used as simple arrays that manage stored instances, so replacing them with boost's ptr_vector may be a good strategy. If the elements need to be sorted, we could use ptr_set or ptr_map.
There is also a copy of these macros and definitions inside binfilter. See
binfilter/inc/bf_svtools/svarray.hxx
binfilter/inc/bf_svtools/svstdarr.hxx
binfilter/bf_svtools/source/memtools/svt_svarray.cxx
for details. These should probably be ignored as binfilter is a snapshot of a very old build and is only used to open old staroffice files. If you do feel like fixing these, you may need to check if these differ from the svl versions.
Skills: building, simple C++, care in re-factoring