xbmc
xbmc
cores
VideoPlayer
DVDResource.h
1
/*
2
* Copyright (C) 2005-2018 Team Kodi
3
* This file is part of Kodi - https://kodi.tv
4
*
5
* SPDX-License-Identifier: GPL-2.0-or-later
6
* See LICENSES/README.md for more information.
7
*/
8
9
#pragma once
10
11
#include <assert.h>
12
#include <atomic>
13
14
template
<
typename
T>
struct
IDVDResourceCounted
15
{
16
IDVDResourceCounted
() : m_refs(1) {}
17
virtual
~
IDVDResourceCounted
() =
default
;
18
19
IDVDResourceCounted
(
const
IDVDResourceCounted
&) =
delete
;
20
IDVDResourceCounted
&operator=(
const
IDVDResourceCounted
&) =
delete
;
21
22
virtual
T* Acquire()
23
{
24
++m_refs;
25
return
static_cast<
T*
>
(
this
);
26
}
27
28
virtual
long
Release()
29
{
30
long
count = --m_refs;
31
assert(count >= 0);
32
if
(count == 0)
33
delete
static_cast<
T*
>
(
this
);
34
return
count;
35
}
36
std::atomic<long> m_refs;
37
};
IDVDResourceCounted
Definition:
DVDResource.h:14
Generated by
1.8.13