LibreOffice Module store (master) 1
stordata.hxx
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#pragma once
21
22#include <sal/config.h>
23
24#include <memory>
25
26#include <sal/types.h>
27#include <rtl/string.h>
28
29#include <store/types.h>
30#include "storbase.hxx"
31#include <string.h>
32
33namespace store
34{
35
36class OStorePageBIOS;
37
38constexpr sal_uInt32 STORE_MAGIC_DATAPAGE(0x94190310);
39
41{
42 typedef PageData base;
44
46
50
53 static const sal_uInt32 theTypeId = STORE_MAGIC_DATAPAGE;
54
57 static const size_t theSize = 0;
58 static const sal_uInt16 thePageSize = base::theSize + self::theSize;
59 static_assert(STORE_MINIMUM_PAGESIZE >= self::thePageSize, "got to be at least equal in size");
60
63 static sal_uInt16 capacity (const D& rDescr) // @see inode::ChunkDescriptor
64 {
65 return static_cast<sal_uInt16>(store::ntohs(rDescr.m_nSize) - self::thePageSize);
66 }
67 sal_uInt16 capacity() const
68 {
70 }
71
74 explicit OStoreDataPageData (sal_uInt16 nPageSize)
75 : base (nPageSize)
76 {
79 if (capacity()) memset (m_pData, 0, capacity());
80 }
81
84 void guard() const { (void) this; /* loplugin:staticmethods */ }
85
89 (void) this; // loplugin:staticmethods
90 return store_E_None;
91 }
92};
93
95{
98
99public:
102 explicit OStoreDataPageObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
103 : OStorePageObject (rxPage)
104 {}
105
108 virtual storeError guard (sal_uInt32 nAddr) override;
109 virtual storeError verify (sal_uInt32 nAddr) const override;
110};
111
112constexpr sal_uInt32 STORE_MAGIC_INDIRECTPAGE(0x89191107);
113
115{
116 typedef PageData base;
118
121
125 sal_uInt32 m_pData[1];
126
129 static const sal_uInt32 theTypeId = STORE_MAGIC_INDIRECTPAGE;
130
133 static const size_t theSize = sizeof(G);
134 static const sal_uInt16 thePageSize = base::theSize + self::theSize;
135 static_assert(STORE_MINIMUM_PAGESIZE >= self::thePageSize, "got to be at least equal in size");
136
139 static sal_uInt16 capacity (const D& rDescr)
140 {
141 return static_cast<sal_uInt16>(store::ntohs(rDescr.m_nSize) - self::thePageSize);
142 }
143 sal_uInt16 capacity() const
144 {
146 }
147
150 static sal_uInt16 capacityCount (const D& rDescr) // @see DirectoryPageObject::scope()
151 {
152 return sal_uInt16(capacity(rDescr) / sizeof(sal_uInt32));
153 }
154 sal_uInt16 capacityCount() const
155 {
156 return sal_uInt16(capacity() / sizeof(sal_uInt32));
157 }
158
161 explicit OStoreIndirectionPageData (sal_uInt16 nPageSize)
162 : base (nPageSize)
163 {
167 memset (m_pData, STORE_PAGE_NULL, capacity());
168 }
169
172 void guard()
173 {
174 sal_uInt32 nCRC32 = rtl_crc32 (0, &m_aGuard.m_nMagic, sizeof(sal_uInt32));
175 nCRC32 = rtl_crc32 (nCRC32, m_pData, capacity());
177 }
178
182 {
183 sal_uInt32 nCRC32 = rtl_crc32 (0, &m_aGuard.m_nMagic, sizeof(sal_uInt32));
184 nCRC32 = rtl_crc32 (nCRC32, m_pData, capacity());
185 if (m_aGuard.m_nCRC32 != store::htonl(nCRC32))
187 else
188 return store_E_None;
189 }
190};
191
193{
196
197public:
200 explicit OStoreIndirectionPageObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
201 : OStorePageObject (rxPage)
202 {}
203
207 sal_uInt32 nAddr,
208 OStorePageBIOS & rBIOS);
209
210 virtual storeError guard (sal_uInt32 nAddr) override;
211 virtual storeError verify (sal_uInt32 nAddr) const override;
212
216 sal_uInt16 nSingle,
218 OStorePageBIOS &rBIOS) const;
219
221 sal_uInt16 nDouble,
222 sal_uInt16 nSingle,
224 OStorePageBIOS &rBIOS) const;
225
227 sal_uInt16 nTriple,
228 sal_uInt16 nDouble,
229 sal_uInt16 nSingle,
231 OStorePageBIOS &rBIOS) const;
232
236 sal_uInt16 nSingle,
238 OStorePageBIOS &rBIOS);
239
241 sal_uInt16 nDouble,
242 sal_uInt16 nSingle,
244 OStorePageBIOS &rBIOS);
245
247 sal_uInt16 nTriple,
248 sal_uInt16 nDouble,
249 sal_uInt16 nSingle,
251 OStorePageBIOS &rBIOS);
252
256 sal_uInt16 nSingle,
257 OStorePageBIOS &rBIOS);
258
260 sal_uInt16 nDouble,
261 sal_uInt16 nSingle,
262 OStorePageBIOS &rBIOS);
263
265 sal_uInt16 nTriple,
266 sal_uInt16 nDouble,
267 sal_uInt16 nSingle,
268 OStorePageBIOS &rBIOS);
269};
270
272{
275
280 sal_uInt32 m_nAttrib = 0;
282
285 static const size_t theSize = sizeof(G) + sizeof(K) + sizeof(sal_uInt32) + sizeof(char[STORE_MAXIMUM_NAMESIZE]);
286
290
293 void guard()
294 {
295 sal_uInt32 nCRC32 = rtl_crc32 (0, &m_aGuard.m_nMagic, sizeof(sal_uInt32));
296 nCRC32 = rtl_crc32 (nCRC32, &m_aKey, static_cast<sal_uInt32>(theSize - sizeof(G)));
298 }
299
303 {
304 sal_uInt32 nCRC32 = rtl_crc32 (0, &m_aGuard.m_nMagic, sizeof(sal_uInt32));
305 nCRC32 = rtl_crc32 (nCRC32, &m_aKey, static_cast<sal_uInt32>(theSize - sizeof(G)));
306 if (m_aGuard.m_nCRC32 != store::htonl(nCRC32))
308 else
309 return store_E_None;
310 }
311};
312
313#define STORE_LIMIT_DATAPAGE_DIRECT 16
314#define STORE_LIMIT_DATAPAGE_SINGLE 8
315#define STORE_LIMIT_DATAPAGE_DOUBLE 1
316#define STORE_LIMIT_DATAPAGE_TRIPLE 1
317
319{
321
325 {
328 sal_uInt16 m_nIndex0;
329 sal_uInt16 m_nIndex1;
330 sal_uInt16 m_nIndex2;
331 sal_uInt16 m_nIndex3;
332
336 : m_nIndex0 (sal_uInt16(~0)),
337 m_nIndex1 (sal_uInt16(~0)),
338 m_nIndex2 (sal_uInt16(~0)),
339 m_nIndex3 (sal_uInt16(~0))
340 {}
341 };
342
346 {
353
357 {
358 memset(m_pDirect, STORE_PAGE_NULL, sizeof(m_pDirect));
359 memset(m_pSingle, STORE_PAGE_NULL, sizeof(m_pSingle));
360 memset(m_pDouble, STORE_PAGE_NULL, sizeof(m_pDouble));
361 memset(m_pTriple, STORE_PAGE_NULL, sizeof(m_pTriple));
362 }
363
367 {
368 initialize();
369 }
370 };
371
376 sal_uInt32 m_nDataLen;
377
380 static const size_t theSize = sizeof(G) + sizeof(LinkTable) + sizeof(sal_uInt32);
381
385 : m_aGuard(), m_aTable(), m_nDataLen (0)
386 {}
387
390 void guard()
391 {
392 sal_uInt32 nCRC32 = rtl_crc32 (0, &m_aGuard.m_nMagic, sizeof(sal_uInt32));
393 nCRC32 = rtl_crc32 (nCRC32, &m_aTable, static_cast<sal_uInt32>(theSize - sizeof(G)));
395 }
396
400 {
401 sal_uInt32 nCRC32 = rtl_crc32 (0, &m_aGuard.m_nMagic, sizeof(sal_uInt32));
402 nCRC32 = rtl_crc32 (nCRC32, &m_aTable, static_cast<sal_uInt32>(theSize - sizeof(G)));
403 if (m_aGuard.m_nCRC32 != store::htonl(nCRC32))
405 else
406 return store_E_None;
407 }
408
411 static const sal_uInt16 directCount = sal_uInt16(STORE_LIMIT_DATAPAGE_DIRECT);
412
413 sal_uInt32 directLink (sal_uInt16 nIndex) const
414 {
415 if (nIndex < directCount)
417 else
418 return STORE_PAGE_NULL;
419 }
420 void directLink (sal_uInt16 nIndex, sal_uInt32 nAddr)
421 {
422 if (nIndex < directCount)
424 }
425
428 static const sal_uInt16 singleCount = sal_uInt16(STORE_LIMIT_DATAPAGE_SINGLE);
429
430 sal_uInt32 singleLink (sal_uInt16 nIndex) const
431 {
432 if (nIndex < singleCount)
434 else
435 return STORE_PAGE_NULL;
436 }
437 void singleLink (sal_uInt16 nIndex, sal_uInt32 nAddr)
438 {
439 if (nIndex < singleCount)
441 }
442
445 static const sal_uInt16 doubleCount = sal_uInt16(STORE_LIMIT_DATAPAGE_DOUBLE);
446
447 sal_uInt32 doubleLink (sal_uInt16 nIndex) const
448 {
449 if (nIndex < doubleCount)
451 else
452 return STORE_PAGE_NULL;
453 }
454 void doubleLink (sal_uInt16 nIndex, sal_uInt32 nAddr)
455 {
456 if (nIndex < doubleCount)
458 }
459
462 static const sal_uInt16 tripleCount = sal_uInt16(STORE_LIMIT_DATAPAGE_TRIPLE);
463
464 sal_uInt32 tripleLink (sal_uInt16 nIndex) const
465 {
466 if (nIndex < tripleCount)
468 else
469 return STORE_PAGE_NULL;
470 }
471 void tripleLink (sal_uInt16 nIndex, sal_uInt32 nAddr)
472 {
473 if (nIndex < tripleCount)
475 }
476};
477
478#define STORE_MAGIC_DIRECTORYPAGE sal_uInt32(0x62190120)
479
481{
482 typedef PageData base;
484
488
494
497 static const sal_uInt32 theTypeId = STORE_MAGIC_DIRECTORYPAGE;
498
502 static const sal_uInt16 thePageSize = base::theSize + self::theSize;
503 static_assert(STORE_MINIMUM_PAGESIZE >= self::thePageSize, "got to be at least equal in size");
504
507 sal_uInt16 capacity() const
508 {
509 return static_cast<sal_uInt16>(store::ntohs(base::m_aDescr.m_nSize) - self::thePageSize);
510 }
511
514 explicit OStoreDirectoryPageData (sal_uInt16 nPageSize)
515 : base (nPageSize), m_aNameBlock(), m_aDataBlock()
516 {
519 memset (m_pData, 0, capacity());
520 }
521
524 void guard()
525 {
528 }
529
533 {
534 storeError eErrCode = m_aNameBlock.verify();
535 if (eErrCode == store_E_None)
536 eErrCode = m_aDataBlock.verify();
537 return eErrCode;
538 }
539
543 {
546 sal_uInt32 m_nPage;
547 sal_uInt16 m_nOffset;
548 sal_uInt16 m_nLength;
549
552 ChunkDescriptor (sal_uInt32 nPosition, sal_uInt16 nCapacity)
553 : m_nPage(nPosition / nCapacity),
554 m_nOffset(static_cast<sal_uInt16>((nPosition % nCapacity) & 0xffff)),
555 m_nLength(nCapacity - m_nOffset)
556 {
557 }
558 };
559
563 {
572 };
573
576 ChunkScope scope (sal_uInt32 nPosition) const
577 {
578 sal_uInt32 nCapacity = capacity();
579 if (nPosition < nCapacity)
580 return SCOPE_INTERNAL;
581 else
582 return SCOPE_EXTERNAL;
583 }
584};
585
587{
591
593
594public:
597 explicit OStoreDirectoryPageObject (std::shared_ptr<PageData> const & rxPage = std::shared_ptr<PageData>())
598 : OStorePageObject (rxPage)
599 {}
600
603 virtual storeError guard (sal_uInt32 nAddr) override;
604 virtual storeError verify (sal_uInt32 nAddr) const override;
605
608 sal_uInt32 attrib() const
609 {
610 return store::ntohl(PAGE().m_aNameBlock.m_nAttrib);
611 }
612 void attrib (sal_uInt32 nAttrib)
613 {
615 touch();
616 }
617
620 void key (OStorePageKey const & rKey)
621 {
622 PAGE().m_aNameBlock.m_aKey = rKey;
623 touch();
624 }
625
628 sal_uInt32 path() const
629 {
630 page const & rPage = PAGE();
631 const char * pszName = rPage.m_aNameBlock.m_pData;
632 sal_uInt32 nPath = store::ntohl(rPage.m_aNameBlock.m_aKey.m_nHigh);
633 return rtl_crc32 (nPath, pszName, rtl_str_getLength(pszName));
634 }
635
638 sal_uInt32 dataLength() const
639 {
640 return store::ntohl(PAGE().m_aDataBlock.m_nDataLen);
641 }
642 void dataLength (sal_uInt32 nLength)
643 {
645 touch();
646 }
647
650 sal_uInt32 directLink (sal_uInt16 nIndex) const
651 {
653 }
654 void directLink (sal_uInt16 nIndex, sal_uInt32 nAddr)
655 {
657 touch();
658 }
659
662 sal_uInt32 singleLink (sal_uInt16 nIndex) const
663 {
665 }
666 void singleLink (sal_uInt16 nIndex, sal_uInt32 nAddr)
667 {
669 touch();
670 }
671
674 sal_uInt32 doubleLink (sal_uInt16 nIndex) const
675 {
677 }
678 void doubleLink (sal_uInt16 nIndex, sal_uInt32 nAddr)
679 {
681 touch();
682 }
683
686 sal_uInt32 tripleLink (sal_uInt16 nIndex) const
687 {
689 }
690 void tripleLink (sal_uInt16 nIndex, sal_uInt32 nAddr)
691 {
693 touch();
694 }
695
699 sal_uInt32 nPage,
701 OStorePageBIOS &rBIOS) const;
702
706 sal_uInt32 nPage,
708 OStorePageBIOS &rBIOS);
709
713 sal_uInt32 nPage,
714 OStorePageBIOS &rBIOS);
715
716private:
720 {
721 page * pImpl = static_cast<page*>(m_xPage.get());
722 OSL_PRECOND(pImpl != nullptr, "OStoreDirectoryPageObject::PAGE(): Null pointer");
723 return (*pImpl);
724 }
725 page const & PAGE() const
726 {
727 page const * pImpl = static_cast<page const *>(m_xPage.get());
728 OSL_PRECOND(pImpl != nullptr, "OStoreDirectoryPageObject::PAGE(): Null pointer");
729 return (*pImpl);
730 }
731
735 sal_uInt32 nPage,
736 page::DataBlock::LinkDescriptor &rDescr) const;
737
741 page::ChunkScope eScope,
742 sal_uInt16 nRemain,
743 OStorePageBIOS &rBIOS);
744};
745
746} // namespace store
747
748/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
OStoreDataPageObject(std::shared_ptr< PageData > const &rxPage=std::shared_ptr< PageData >())
Construction.
Definition: stordata.hxx:102
OStoreDataPageData page
Definition: stordata.hxx:97
virtual storeError guard(sal_uInt32 nAddr) override
External representation.
Definition: stordata.cxx:31
OStorePageObject base
Definition: stordata.hxx:96
virtual storeError verify(sal_uInt32 nAddr) const override
Definition: stordata.cxx:36
page::ChunkScope scope(sal_uInt32 nPage, page::DataBlock::LinkDescriptor &rDescr) const
scope (external data page; private).
Definition: stordata.cxx:544
void directLink(sal_uInt16 nIndex, sal_uInt32 nAddr)
Definition: stordata.hxx:654
virtual storeError guard(sal_uInt32 nAddr) override
External representation.
Definition: stordata.cxx:533
storeError write(sal_uInt32 nPage, OStoreDataPageObject &rData, OStorePageBIOS &rBIOS)
write (external data page).
Definition: stordata.cxx:750
sal_uInt32 singleLink(sal_uInt16 nIndex) const
single indirect.
Definition: stordata.hxx:662
OStoreDirectoryPageObject(std::shared_ptr< PageData > const &rxPage=std::shared_ptr< PageData >())
Construction.
Definition: stordata.hxx:597
void doubleLink(sal_uInt16 nIndex, sal_uInt32 nAddr)
Definition: stordata.hxx:678
OStorePageDescriptor D
Definition: stordata.hxx:592
page & PAGE()
Representation.
Definition: stordata.hxx:719
page const & PAGE() const
Definition: stordata.hxx:725
virtual storeError verify(sal_uInt32 nAddr) const override
Definition: stordata.cxx:538
sal_uInt32 attrib() const
attrib.
Definition: stordata.hxx:608
void key(OStorePageKey const &rKey)
key.
Definition: stordata.hxx:620
sal_uInt32 path() const
path.
Definition: stordata.hxx:628
OStoreIndirectionPageData indirect
Definition: stordata.hxx:590
storeError read(sal_uInt32 nPage, OStoreDataPageObject &rData, OStorePageBIOS &rBIOS) const
read (external data page).
Definition: stordata.cxx:677
void attrib(sal_uInt32 nAttrib)
Definition: stordata.hxx:612
void dataLength(sal_uInt32 nLength)
Definition: stordata.hxx:642
sal_uInt32 tripleLink(sal_uInt16 nIndex) const
triple indirect.
Definition: stordata.hxx:686
sal_uInt32 directLink(sal_uInt16 nIndex) const
direct.
Definition: stordata.hxx:650
sal_uInt32 dataLength() const
dataLength.
Definition: stordata.hxx:638
OStoreDirectoryPageData page
Definition: stordata.hxx:589
void singleLink(sal_uInt16 nIndex, sal_uInt32 nAddr)
Definition: stordata.hxx:666
storeError truncate(sal_uInt32 nPage, OStorePageBIOS &rBIOS)
truncate (external data page).
Definition: stordata.cxx:834
void tripleLink(sal_uInt16 nIndex, sal_uInt32 nAddr)
Definition: stordata.hxx:690
sal_uInt32 doubleLink(sal_uInt16 nIndex) const
double indirect.
Definition: stordata.hxx:674
storeError truncate(sal_uInt16 nSingle, OStorePageBIOS &rBIOS)
truncate (indirect data page).
Definition: stordata.cxx:382
virtual storeError guard(sal_uInt32 nAddr) override
Definition: stordata.cxx:173
virtual storeError verify(sal_uInt32 nAddr) const override
Definition: stordata.cxx:178
storeError loadOrCreate(sal_uInt32 nAddr, OStorePageBIOS &rBIOS)
External representation.
Definition: stordata.cxx:153
storeError read(sal_uInt16 nSingle, OStoreDataPageObject &rData, OStorePageBIOS &rBIOS) const
read (indirect data page).
Definition: stordata.cxx:183
OStoreIndirectionPageData page
Definition: stordata.hxx:195
OStoreIndirectionPageObject(std::shared_ptr< PageData > const &rxPage=std::shared_ptr< PageData >())
Construction.
Definition: stordata.hxx:200
storeError write(sal_uInt16 nSingle, OStoreDataPageObject &rData, OStorePageBIOS &rBIOS)
write (indirect data page).
Definition: stordata.cxx:273
std::shared_ptr< PageData > m_xPage
Representation.
Definition: storbase.hxx:546
sal_Int32 nIndex
sal_uInt32 m_nSize
Definition: lockbyte.cxx:275
Old OStorePageCache implementation.
Definition: lockbyte.cxx:133
sal_uInt32 htonl(sal_uInt32 h)
Definition: storbase.hxx:69
constexpr sal_uInt32 STORE_MAGIC_DATAPAGE(0x94190310)
sal_uInt16 ntohs(sal_uInt16 n)
Definition: storbase.hxx:67
sal_uInt32 ntohl(sal_uInt32 n)
Definition: storbase.hxx:70
sal_uInt16 htons(sal_uInt16 h)
Definition: storbase.hxx:66
constexpr sal_uInt32 STORE_MAGIC_INDIRECTPAGE(0x89191107)
#define STORE_PAGE_NULL
Definition: storbase.hxx:114
#define STORE_LIMIT_DATAPAGE_DIRECT
Definition: stordata.hxx:313
#define STORE_LIMIT_DATAPAGE_SINGLE
Definition: stordata.hxx:314
#define STORE_LIMIT_DATAPAGE_DOUBLE
Definition: stordata.hxx:315
#define STORE_LIMIT_DATAPAGE_TRIPLE
Definition: stordata.hxx:316
#define STORE_MAGIC_DIRECTORYPAGE
Definition: stordata.hxx:478
OStoreDataPageData self
Definition: stordata.hxx:43
OStoreDataPageData(sal_uInt16 nPageSize)
Construction.
Definition: stordata.hxx:74
static const sal_uInt16 thePageSize
Definition: stordata.hxx:58
sal_uInt8 m_pData[1]
Representation.
Definition: stordata.hxx:49
sal_uInt16 capacity() const
Definition: stordata.hxx:67
static const sal_uInt32 theTypeId
type.
Definition: stordata.hxx:53
OStorePageDescriptor D
Definition: stordata.hxx:45
static const size_t theSize
size.
Definition: stordata.hxx:57
void guard() const
guard (external representation).
Definition: stordata.hxx:84
static sal_uInt16 capacity(const D &rDescr)
capacity.
Definition: stordata.hxx:63
storeError verify() const
verify (external representation).
Definition: stordata.hxx:88
sal_uInt32 m_pTriple[STORE_LIMIT_DATAPAGE_TRIPLE]
Definition: stordata.hxx:352
sal_uInt32 m_pSingle[STORE_LIMIT_DATAPAGE_SINGLE]
Definition: stordata.hxx:350
sal_uInt32 m_pDirect[STORE_LIMIT_DATAPAGE_DIRECT]
Representation.
Definition: stordata.hxx:349
sal_uInt32 m_pDouble[STORE_LIMIT_DATAPAGE_DOUBLE]
Definition: stordata.hxx:351
static const sal_uInt16 singleCount
single.
Definition: stordata.hxx:428
void doubleLink(sal_uInt16 nIndex, sal_uInt32 nAddr)
Definition: stordata.hxx:454
static const sal_uInt16 directCount
direct.
Definition: stordata.hxx:411
void singleLink(sal_uInt16 nIndex, sal_uInt32 nAddr)
Definition: stordata.hxx:437
void directLink(sal_uInt16 nIndex, sal_uInt32 nAddr)
Definition: stordata.hxx:420
void guard()
guard (external representation).
Definition: stordata.hxx:390
OStoreDirectoryDataBlock()
Construction.
Definition: stordata.hxx:384
sal_uInt32 doubleLink(sal_uInt16 nIndex) const
Definition: stordata.hxx:447
void tripleLink(sal_uInt16 nIndex, sal_uInt32 nAddr)
Definition: stordata.hxx:471
static const sal_uInt16 tripleCount
triple.
Definition: stordata.hxx:462
storeError verify() const
verify (external representation).
Definition: stordata.hxx:399
sal_uInt32 directLink(sal_uInt16 nIndex) const
Definition: stordata.hxx:413
static const sal_uInt16 doubleCount
double.
Definition: stordata.hxx:445
static const size_t theSize
size.
Definition: stordata.hxx:380
sal_uInt32 tripleLink(sal_uInt16 nIndex) const
Definition: stordata.hxx:464
sal_uInt32 singleLink(sal_uInt16 nIndex) const
Definition: stordata.hxx:430
ChunkDescriptor(sal_uInt32 nPosition, sal_uInt16 nCapacity)
Construction.
Definition: stordata.hxx:552
static const size_t theSize
size.
Definition: stordata.hxx:501
static const sal_uInt16 thePageSize
Definition: stordata.hxx:502
void guard()
guard (external representation).
Definition: stordata.hxx:524
OStoreDirectoryDataBlock DataBlock
Definition: stordata.hxx:487
sal_uInt16 capacity() const
capacity.
Definition: stordata.hxx:507
OStorePageNameBlock NameBlock
Definition: stordata.hxx:486
OStoreDirectoryPageData self
Definition: stordata.hxx:483
storeError verify() const
verify (external representation).
Definition: stordata.hxx:532
NameBlock m_aNameBlock
Representation.
Definition: stordata.hxx:491
OStorePageDescriptor D
Definition: stordata.hxx:485
ChunkScope scope(sal_uInt32 nPosition) const
scope (internal).
Definition: stordata.hxx:576
OStoreDirectoryPageData(sal_uInt16 nPageSize)
Construction.
Definition: stordata.hxx:514
static const sal_uInt32 theTypeId
type.
Definition: stordata.hxx:497
static const sal_uInt32 theTypeId
type.
Definition: stordata.hxx:129
OStorePageDescriptor D
Definition: stordata.hxx:120
OStoreIndirectionPageData self
Definition: stordata.hxx:117
void guard()
guard (external representation).
Definition: stordata.hxx:172
sal_uInt16 capacityCount() const
Definition: stordata.hxx:154
static const size_t theSize
size.
Definition: stordata.hxx:133
sal_uInt16 capacity() const
Definition: stordata.hxx:143
storeError verify() const
verify (external representation).
Definition: stordata.hxx:181
static sal_uInt16 capacity(const D &rDescr)
capacity.
Definition: stordata.hxx:139
static sal_uInt16 capacityCount(const D &rDescr)
capacityCount.
Definition: stordata.hxx:150
static const sal_uInt16 thePageSize
Definition: stordata.hxx:134
OStoreIndirectionPageData(sal_uInt16 nPageSize)
Construction.
Definition: stordata.hxx:161
sal_uInt32 m_nMagic
Representation.
Definition: storbase.hxx:77
storeError verify() const
verify (external representation).
Definition: stordata.hxx:302
void guard()
guard (external representation).
Definition: stordata.hxx:293
OStorePageNameBlock()=default
Construction.
static const size_t theSize
size.
Definition: stordata.hxx:285
G m_aGuard
Representation.
Definition: stordata.hxx:278
char m_pData[STORE_MAXIMUM_NAMESIZE]
Definition: stordata.hxx:281
G m_aGuard
Representation.
Definition: storbase.hxx:243
static const size_t theSize
theSize.
Definition: storbase.hxx:250
constexpr sal_uInt16 STORE_MINIMUM_PAGESIZE
PageSize (enforced) limits.
Definition: types.h:37
unsigned char sal_uInt8
storeError
Error Code enumeration.
Definition: types.h:73
@ store_E_None
Definition: types.h:74
@ store_E_InvalidChecksum
Definition: types.h:83
constexpr auto STORE_MAXIMUM_NAMESIZE
NameSize (enforced) limit.
Definition: types.h:45
sal_Int32 nLength