/* -*- 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/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
struct NDXHeader
{
sal_uInt32 db_rootpage; /* Rootpage position */
sal_uInt32 db_pagecount; /* Page count */
sal_uInt8 db_free[4]; /* Reserved */
sal_uInt16 db_keylen; /* Key length */
sal_uInt16 db_maxkeys; /* Maximum number of keys per page */
sal_uInt16 db_keytype; /* Type of key: 0 = Text
1 = Numerical */
sal_uInt16 db_keyrec; /* Length of an index record
RecordNumber + keylen */
sal_uInt8 db_free1[3]; /* Reserved */
sal_uInt8 db_unique; /* Unique */ char db_name[488]; /* index_name (field name) */
};
private:
std::unique_ptr<SvStream> m_pFileStream; // Stream to read/write the index
NDXHeader m_aHeader = {};
std::vector<ONDXPage*>
m_aCollector; // Pool of obsolete pages
ONDXPagePtr m_aRoot, // Root of the B+ tree
m_aCurLeaf; // Current leaf
sal_uInt16 m_nCurNode; // Position of the current node
sal_uInt32 m_nPageCount,
m_nRootPage;
ODbaseTable* m_pTable; bool m_bUseCollector : 1; // Use the Garbage Collector
OUString getCompletePath() const; void closeImpl(); // Closes and kills the index file and throws an error void impl_killFileAndthrowError_throw(TranslateId pErrorId, const OUString& _sFile); protected: virtual ~ODbaseIndex() override; public:
ODbaseIndex(ODbaseTable* _pTable);
ODbaseIndex(ODbaseTable* _pTable,const NDXHeader& _aHeader,const OUString& Name);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.