Files
libreoffice/editeng/source/misc/SvXMLAutoCorrectTokenHandler.cxx
Daniel Sikeler 2b442c1df4 fdo#80403: TokenHandler impl. FastTokenHandlerBase
getTokenFromUTF8: calls getTokenDirect
getTokenDirect: uses perfect hash

New makefile creates perfect hash table with perl-script gentoken.pl.
I found the script on https://wiki.openoffice.org/wiki/XFastTokenHandler and made some changes.
XMLTokens are defined in tokens.txt

Change-Id: Id04134a896ee082e2d0ba55a715fede19ff04928
Reviewed-on: https://gerrit.libreoffice.org/12335
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
2014-11-11 09:36:52 +00:00

47 lines
1.5 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <SvXMLAutoCorrectTokenHandler.hxx>
#include <xmloff/xmltoken.hxx>
#include <com/sun/star/xml/sax/FastToken.hpp>
#include <tokens.cxx>
using namespace ::css::uno;
using namespace ::xmloff::token;
SvXMLAutoCorrectTokenHandler::SvXMLAutoCorrectTokenHandler()
{
}
SvXMLAutoCorrectTokenHandler::~SvXMLAutoCorrectTokenHandler()
{
}
sal_Int32 SAL_CALL SvXMLAutoCorrectTokenHandler::getTokenFromUTF8( const Sequence< sal_Int8 >& Identifier )
throw (::css::uno::RuntimeException, std::exception)
{
return getTokenDirect( reinterpret_cast< const char* >( Identifier.getConstArray() ), Identifier.getLength() );
}
Sequence< sal_Int8 > SAL_CALL SvXMLAutoCorrectTokenHandler::getUTF8Identifier( sal_Int32 )
throw (::css::uno::RuntimeException, std::exception)
{
return Sequence< sal_Int8 >();
}
sal_Int32 SvXMLAutoCorrectTokenHandler::getTokenDirect( const char *pTag, sal_Int32 nLength ) const
{
if( !nLength )
nLength = strlen( pTag );
const struct xmltoken* pToken = Perfect_Hash::in_word_set( pTag, nLength );
return pToken ? pToken->nToken : XML_TOKEN_INVALID;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */