libspatialindex API Reference
(git-trunk)
Buffer.h
Go to the documentation of this file.
1
/******************************************************************************
2
* Project: libspatialindex - A C++ library for spatial indexing
3
* Author: Marios Hadjieleftheriou, mhadji@gmail.com
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
~
Buffer
()
override
;
49
50
void
flush()
override
;
51
void
loadByteArray(
const
id_type
page, uint32_t& len, uint8_t** data)
override
;
52
void
storeByteArray(
id_type
& page,
const
uint32_t len,
const
uint8_t*
const
data)
override
;
53
void
deleteByteArray(
const
id_type
page)
override
;
54
55
void
clear()
override
;
56
uint64_t getHits()
override
;
57
58
protected
:
59
class
Entry
60
{
61
public
:
62
Entry
(uint32_t l,
const
uint8_t*
const
d) : m_pData(nullptr), m_length(l), m_bDirty(false)
63
{
64
m_pData =
new
uint8_t[m_length];
65
memcpy(m_pData, d, m_length);
66
}
67
68
~Entry
() {
delete
[] m_pData; }
69
70
uint8_t*
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:157
SpatialIndex::StorageManager::Buffer::Entry
Definition:
Buffer.h:60
SpatialIndex::StorageManager::Buffer::Entry::Entry
Entry(uint32_t l, const uint8_t *const d)
Definition:
Buffer.h:62
SpatialIndex::StorageManager::Buffer::Entry::m_pData
uint8_t * m_pData
Definition:
Buffer.h:70
SpatialIndex::StorageManager::Buffer::Entry::m_length
uint32_t m_length
Definition:
Buffer.h:71
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::m_pStorageManager
IStorageManager * m_pStorageManager
Definition:
Buffer.h:80
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::addEntry
virtual void addEntry(id_type page, Entry *pEntry)=0
SpatialIndex::StorageManager::Buffer::removeEntry
virtual void removeEntry()=0
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::IBuffer
Definition:
SpatialIndex.h:223
Tools::PropertySet
Definition:
Tools.h:302
SpatialIndex::StorageManager
Definition:
CustomStorage.h:36
SpatialIndex
Definition:
Ball.h:35
SpatialIndex::id_type
int64_t id_type
Definition:
SpatialIndex.h:41
src
storagemanager
Buffer.h
Generated on Wed May 15 2024 14:34:36 for libspatialindex API Reference by
1.9.1