On 01/26/2012 12:40 PM, Keith McRae wrote:
I've removed all the operator>>/<< from SvStream and replaced with
Read/Write[sal_type] functions.
Great.
While fixing up the references I noticed the template'd functions below:
template<typename prefix>
rtl::OString read_lenPrefixed_uInt8s_ToOString(SvStream& rStrm)
[...]
template<typename prefix> sal_Size
write_lenPrefixed_uInt8s_FromOString(SvStream& rStrm,
const rtl::OString &rStr)
[...]
So I have a dilemma which I would appreciate advice on. In no particular
order of preference here are my ideas:
a) Specialize the templates and call the appropriate
Read/Write[sal_type] functions.
b) Change SvStream to have overloaded Read/WriteNumber functions of all
the sal_ types.
c) Add the above mentioned functions along with the Read/Write[sal_type]
functions to SvStream.
Given that these are almost exclusively called with <sal_uInt16>, I
would simply un-template'ize the functions, substituting sal_uInt16 for
prefix.
For instantiations with prefix != sal_uInt16, I count four uses of
read_lenPrefixed_uInt8s_ToOString<sal_uInt8>, two of
read_lenPrefixed_uInt8s_ToOUString<sal_uInt8>, and one use of
read_lenPrefixed_uInt8s_ToOString<sal_uInt32>. All of them are reads,
for which the functions in question are rather trivial, anyway. I would
just explicitly outline them at the call sites (or, if there are
multiple calls from a single .cxx, add a local helper function).
Stephan
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.