A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
UseTemporaryAllocationBlock.h
Go to the documentation of this file.
1
/*****************************************************************************
2
* *
3
* Copyright 2018 Rice University *
4
* *
5
* Licensed under the Apache License, Version 2.0 (the "License"); *
6
* you may not use this file except in compliance with the License. *
7
* You may obtain a copy of the License at *
8
* *
9
* http://www.apache.org/licenses/LICENSE-2.0 *
10
* *
11
* Unless required by applicable law or agreed to in writing, software *
12
* distributed under the License is distributed on an "AS IS" BASIS, *
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
14
* See the License for the specific language governing permissions and *
15
* limitations under the License. *
16
* *
17
*****************************************************************************/
18
19
#ifndef USE_TEMP_ALLOCATION_BLOCK_H
20
#define USE_TEMP_ALLOCATION_BLOCK_H
21
22
#include "
Allocator.h
"
23
#include "
InterfaceFunctions.h
"
24
#include <memory>
25
26
namespace
pdb {
27
28
class
UseTemporaryAllocationBlock
;
29
typedef
std::shared_ptr<UseTemporaryAllocationBlock>
UseTemporaryAllocationBlockPtr
;
30
31
class
UseTemporaryAllocationBlock
{
32
33
AllocatorState
oldInfo
;
34
35
public
:
36
explicit
UseTemporaryAllocationBlock
(
void
* memory,
size_t
size) {
37
oldInfo
=
getAllocator
().
temporarilyUseBlockForAllocations
(memory, size);
38
}
39
40
explicit
UseTemporaryAllocationBlock
(
size_t
size) {
41
oldInfo
=
getAllocator
().
temporarilyUseBlockForAllocations
(size);
42
}
43
44
~UseTemporaryAllocationBlock
() {
45
getAllocator
().
restoreAllocationBlock
(
oldInfo
);
46
}
47
48
// forbidden, to avoid double frees
49
UseTemporaryAllocationBlock
(
const
UseTemporaryAllocationBlock
&) =
delete
;
50
UseTemporaryAllocationBlock
&
operator=
(
const
UseTemporaryAllocationBlock
&) =
delete
;
51
};
52
}
53
54
#endif
Allocator.h
pdb::MultiPolicyAllocator::temporarilyUseBlockForAllocations
AllocatorState temporarilyUseBlockForAllocations(void *putMeHere, size_t numBytesAvailable)
Definition:
Allocator.cc:793
pdb::getAllocator
Allocator & getAllocator()
Definition:
Allocator.cc:943
pdb::MultiPolicyAllocator::restoreAllocationBlock
void restoreAllocationBlock(AllocatorState &restoreMe)
Definition:
Allocator.cc:846
pdb::UseTemporaryAllocationBlock::~UseTemporaryAllocationBlock
~UseTemporaryAllocationBlock()
Definition:
UseTemporaryAllocationBlock.h:44
pdb::UseTemporaryAllocationBlock::UseTemporaryAllocationBlock
UseTemporaryAllocationBlock(size_t size)
Definition:
UseTemporaryAllocationBlock.h:40
pdb::AllocatorState
Definition:
Allocator.h:95
pdb::UseTemporaryAllocationBlock::operator=
UseTemporaryAllocationBlock & operator=(const UseTemporaryAllocationBlock &)=delete
pdb::UseTemporaryAllocationBlock::UseTemporaryAllocationBlock
UseTemporaryAllocationBlock(void *memory, size_t size)
Definition:
UseTemporaryAllocationBlock.h:36
pdb::UseTemporaryAllocationBlockPtr
std::shared_ptr< UseTemporaryAllocationBlock > UseTemporaryAllocationBlockPtr
Definition:
UseTemporaryAllocationBlock.h:28
pdb::UseTemporaryAllocationBlock
Definition:
UseTemporaryAllocationBlock.h:31
pdb::UseTemporaryAllocationBlock::oldInfo
AllocatorState oldInfo
Definition:
UseTemporaryAllocationBlock.h:33
InterfaceFunctions.h
plinycompute
pdb
src
objectModel
headers
UseTemporaryAllocationBlock.h
Generated on Mon Jun 18 2018 18:10:36 by
1.8.6