VirtualFluids
0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
MbSmartPtrBase.cpp
Go to the documentation of this file.
1
//=======================================================================================
2
// ____ ____ __ ______ __________ __ __ __ __
3
// \ \ | | | | | _ \ |___ ___| | | | | / \ | |
4
// \ \ | | | | | |_) | | | | | | | / \ | |
5
// \ \ | | | | | _ / | | | | | | / /\ \ | |
6
// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____
7
// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______|
8
// \ \ | | ________________________________________________________________
9
// \ \ | | | ______________________________________________________________|
10
// \ \| | | | __ __ __ __ ______ _______
11
// \ | | |_____ | | | | | | | | | _ \ / _____)
12
// \ | | _____| | | | | | | | | | | \ \ \_______
13
// \ | | | | |_____ | \_/ | | | | |_/ / _____ |
14
// \ _____| |__| |________| \_______/ |__| |______/ (_______/
15
//
16
// This file is part of VirtualFluids. VirtualFluids is free software: you can
17
// redistribute it and/or modify it under the terms of the GNU General Public
18
// License as published by the Free Software Foundation, either version 3 of
19
// the License, or (at your option) any later version.
20
//
21
// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
22
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24
// for more details.
25
//
26
// SPDX-License-Identifier: GPL-3.0-or-later
27
// SPDX-FileCopyrightText: Copyright © VirtualFluids Project contributors, see AUTHORS.md in root folder
28
//
33
//=======================================================================================
34
#include <
basics/memory/MbSmartPtrBase.h
>
35
36
using namespace
std;
37
38
bool
MbSmartPtrBase::addRef
(
void
*ptr)
39
{
40
MbSmartPtrBaseMap::getInstance()->getMap()[ptr]++;
41
return
true
;
42
}
43
//-------------------------------------------------
44
bool
MbSmartPtrBase::releaseRef
(
void
*ptr)
45
{
46
map<void *, int>
&
ptrMap
= MbSmartPtrBaseMap::getInstance()->getMap();
47
map<void *, int>::iterator
pos
=
ptrMap
.find(ptr);
48
49
if
(
pos
!=
ptrMap
.end()) {
50
pos
->second--;
51
52
if
(
pos
->second == 0) {
53
ptrMap
.erase(
pos
);
54
return
true
;
55
}
56
}
57
return
false
;
58
}
59
//-------------------------------------------------
60
bool
MbSmartPtrBase::removeFromGC
(
void
*ptr)
const
61
{
62
if
(MbSmartPtrBaseMap::getInstance()->getMap().
erase
(ptr))
63
return
true
;
64
return
false
;
65
}
66
//-------------------------------------------------
67
int
MbSmartPtrBase::ref_count
(
void
*ptr)
const
68
{
69
map<void *, int>
&
ptrMap
= MbSmartPtrBaseMap::getInstance()->getMap();
70
map<void *, int>::iterator
pos
=
ptrMap
.find(ptr);
71
72
if
(
pos
!=
ptrMap
.end())
73
return
pos
->second;
74
else
75
return
0;
76
}
77
MbSmartPtrBase.h
SPtr
std::shared_ptr< T > SPtr
Definition
PointerDefinitions.h:39
MbSmartPtrBase::releaseRef
bool releaseRef(void *p)
Definition
MbSmartPtrBase.cpp:44
MbSmartPtrBase::ref_count
int ref_count(void *ptr) const
Definition
MbSmartPtrBase.cpp:67
MbSmartPtrBase::addRef
bool addRef(void *p)
Definition
MbSmartPtrBase.cpp:38
MbSmartPtrBase::removeFromGC
bool removeFromGC(void *ptr) const
Definition
MbSmartPtrBase.cpp:60
src
basics
memory
MbSmartPtrBase.cpp
Generated on Sat Sep 12 2026 02:03:19 for VirtualFluids by
1.9.8