Hi there,
FYI, I've just pushed a whole bunch of changes to the master branch in
order to implemented shared strings in Calc's document storage. I'll
skip the implementation details, but the punch line is that the document
cell storage now stores svl::SharedString as the string cell values
instead of the previous straight OUString. svl::SharedString stores two
ref-counted string storages (rtl_uString*), one for the normal string,
and one for the case-ignored string. They are all normalized as they
are entered into the cell storage, so you can use the pointer values for
quick string equality check, both in case sensitive and case insensitive
manners.
One thing to note is that the strings are normalized per ScDocument
instance, and each ScDocument stores svl::SharedStringPool to store the
master string objects. As such, be extra careful when copying string
values from one document instance to another, since you'll now have to
re-normalize those copied strings when they are entered into another
document instance.
Also, I'll probably continue making changes around this area, so please
be on the lookout for further changes in case you are working in the
vicinity of Calc core.
Thanks,
Kohei
--
Kohei Yoshida, LibreOffice hacker, Collabora Productivity
http://www.collabora.com/projects/libreoffice-welcome
Context
- svl::SharedString is stored in Calc core instead of OUString · Kohei Yoshida
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.