QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
Buffer.h
Go to the documentation of this file.
1
/******************************************************************************
2
* Project: libspatialindex - A C++ library for spatial indexing
3
* Author: Marios Hadjieleftheriou,
[email protected]
4
******************************************************************************
5
* Copyright (c) 2002, Marios Hadjieleftheriou
6
*
7
* All rights reserved.
8
*
9
* Permission is hereby granted, free of charge, to any person obtaining a
10
* copy of this software and associated documentation files (the "Software"),
11
* to deal in the Software without restriction, including without limitation
12
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
13
* and/or sell copies of the Software, and to permit persons to whom the
14
* Software is furnished to do so, subject to the following conditions:
15
*
16
* The above copyright notice and this permission notice shall be included
17
* in all copies or substantial portions of the Software.
18
*
19
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25
* DEALINGS IN THE SOFTWARE.
26
******************************************************************************/
27
28
#pragma once
29
30
#include <cstring>
31
32
using namespace
SpatialIndex
;
33
using namespace
SpatialIndex::StorageManager
;
34
35
namespace
SpatialIndex
36
{
37
namespace
StorageManager
38
{
39
class
Buffer
:
public
IBuffer
40
{
41
public
:
42
Buffer
(
IStorageManager
& sm,
Tools::PropertySet
& ps);
43
// String Value Description
44
// ----------------------------------------------
45
// Capacity VT_ULONG Buffer maximum capacity.
46
// WriteThrough VT_BOOL Enable or disable write through policy.
47
48
virtual
~Buffer
();
49
50
virtual
void
flush
();
51
virtual
void
loadByteArray
(
const
id_type
page, uint32_t& len,
byte
** data);
52
virtual
void
storeByteArray
(
id_type
& page,
const
uint32_t len,
const
byte
*
const
data);
53
virtual
void
deleteByteArray
(
const
id_type
page);
54
55
virtual
void
clear
();
56
virtual
uint64_t
getHits
();
57
58
protected
:
59
class
Entry
60
{
61
public
:
62
Entry
(uint32_t l,
const
byte
*
const
d) :
m_pData
(0),
m_length
(l),
m_bDirty
(
false
)
63
{
64
m_pData
=
new
byte
[
m_length
];
65
memcpy(
m_pData
, d,
m_length
);
66
}
67
68
~Entry
() {
delete
[]
m_pData
; }
69
70
byte
*
m_pData
;
71
uint32_t
m_length
;
72
bool
m_bDirty
;
73
};
// Entry
74
75
virtual
void
addEntry
(
id_type
page,
Entry
* pEntry) = 0;
76
virtual
void
removeEntry
() = 0;
77
78
uint32_t
m_capacity
;
79
bool
m_bWriteThrough
;
80
IStorageManager
*
m_pStorageManager
;
81
std::map<id_type, Entry*>
m_buffer
;
82
uint64_t
m_u64Hits
;
83
};
// Buffer
84
}
85
}
SpatialIndex::IStorageManager
Definition
SpatialIndex.h:156
SpatialIndex::StorageManager::Buffer::Entry
Definition
Buffer.h:60
SpatialIndex::StorageManager::Buffer::Entry::Entry
Entry(uint32_t l, const byte *const d)
Definition
Buffer.h:62
SpatialIndex::StorageManager::Buffer::Entry::m_length
uint32_t m_length
Definition
Buffer.h:71
SpatialIndex::StorageManager::Buffer::Entry::m_pData
byte * m_pData
Definition
Buffer.h:70
SpatialIndex::StorageManager::Buffer::Entry::m_bDirty
bool m_bDirty
Definition
Buffer.h:72
SpatialIndex::StorageManager::Buffer::Entry::~Entry
~Entry()
Definition
Buffer.h:68
SpatialIndex::StorageManager::Buffer
Definition
Buffer.h:40
SpatialIndex::StorageManager::Buffer::Buffer
Buffer(IStorageManager &sm, Tools::PropertySet &ps)
SpatialIndex::StorageManager::Buffer::m_pStorageManager
IStorageManager * m_pStorageManager
Definition
Buffer.h:80
SpatialIndex::StorageManager::Buffer::getHits
virtual uint64_t getHits()
SpatialIndex::StorageManager::Buffer::flush
virtual void flush()
SpatialIndex::StorageManager::Buffer::loadByteArray
virtual void loadByteArray(const id_type page, uint32_t &len, byte **data)
SpatialIndex::StorageManager::Buffer::m_u64Hits
uint64_t m_u64Hits
Definition
Buffer.h:82
SpatialIndex::StorageManager::Buffer::m_capacity
uint32_t m_capacity
Definition
Buffer.h:78
SpatialIndex::StorageManager::Buffer::deleteByteArray
virtual void deleteByteArray(const id_type page)
SpatialIndex::StorageManager::Buffer::addEntry
virtual void addEntry(id_type page, Entry *pEntry)=0
SpatialIndex::StorageManager::Buffer::storeByteArray
virtual void storeByteArray(id_type &page, const uint32_t len, const byte *const data)
SpatialIndex::StorageManager::Buffer::removeEntry
virtual void removeEntry()=0
SpatialIndex::StorageManager::Buffer::clear
virtual void clear()
SpatialIndex::StorageManager::Buffer::m_bWriteThrough
bool m_bWriteThrough
Definition
Buffer.h:79
SpatialIndex::StorageManager::Buffer::m_buffer
std::map< id_type, Entry * > m_buffer
Definition
Buffer.h:81
SpatialIndex::StorageManager::Buffer::~Buffer
virtual ~Buffer()
SpatialIndex::StorageManager::IBuffer
Definition
SpatialIndex.h:220
Tools::PropertySet
Definition
Tools.h:308
SpatialIndex::StorageManager
Definition
CustomStorage.h:36
SpatialIndex
Definition
CustomStorage.h:34
SpatialIndex::id_type
int64_t id_type
Definition
SpatialIndex.h:43
false
#define false
Definition
opennurbs_system.h:252
src
3rdparty
legacy
spatialindexnavel
src
storagemanager
Buffer.h
Generated on Fri Jul 18 2025 09:41:50 for QCAD by
1.10.0