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


Hello all

I've removed all the operator>>/<< from SvStream and replaced with
Read/Write[sal_type] functions. While fixing up the references I noticed
the template'd functions below:

template<typename prefix>
rtl::OString read_lenPrefixed_uInt8s_ToOString(SvStream& rStrm)
{
    prefix nUnits = 0;
    rStrm >> nUnits;
    return read_uInt8s_ToOString(rStrm, nUnits);
}

and the corresponding write function:

template<typename prefix> sal_Size
write_lenPrefixed_uInt8s_FromOString(SvStream& rStrm,
    const rtl::OString &rStr)
{
    SAL_WARN_IF(rStr.getLength() > std::numeric_limits<prefix>::max(),
        "tools.stream",
        "string too long for prefix count to fit in output type");

    sal_Size nWritten = 0;
    prefix nUnits = std::min<sal_Size>(rStr.getLength(),
std::numeric_limits<prefix>::max());
    rStrm << nUnits;
    if (rStrm.good())
    {
        nWritten += sizeof(prefix);
        nWritten += rStrm.Write(rStr.getStr(), nUnits);
    }
    return nWritten;
}

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.

Thanks in advance
Keith

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.