LibreOffice Module sc (master) 1
patterncache.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include <patterncache.hxx>
21
23 : nXfId(-1)
24 , nNumFmtId(-1)
25 , pPattern(nullptr)
26{
27}
28
30 : nNextPos(0)
31{
32}
33
34ScPatternAttr* ScPatternCache::query(sal_Int32 nXfId, sal_Int32 nNumFmtId) const
35{
36 for (const auto& entry : maEntries)
37 {
38 if (entry.nXfId == nXfId && entry.nNumFmtId == nNumFmtId)
39 return entry.pPattern;
40 }
41
42 return nullptr;
43}
44
45void ScPatternCache::add(sal_Int32 nXfId, sal_Int32 nNumFmtId, ScPatternAttr* pPattern)
46{
47 Entry& rEntry = maEntries[nNextPos];
49 rEntry.nXfId = nXfId;
50 rEntry.nNumFmtId = nNumFmtId;
51 rEntry.pPattern = pPattern;
52}
ScPatternAttr * query(sal_Int32 nXfId, sal_Int32 nNumFmtId) const
Entry maEntries[nPatternCacheSize]
void add(sal_Int32 nXfId, sal_Int32 nNumFmtId, ScPatternAttr *pPattern)
sal_Int32 nNextPos
constexpr sal_Int32 nPatternCacheSize
ScPatternAttr * pPattern