Openholo
v5.0
Open Source Digital Holographic Library
Base.h
Go to the documentation of this file.
1
/*M///////////////////////////////////////////////////////////////////////////////////////
2
//
3
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4
//
5
// By downloading, copying, installing or using the software you agree to this license.
6
// If you do not agree to this license, do not download, install, copy or use the software.
7
//
8
//
9
// License Agreement
10
// For Open Source Digital Holographic Library
11
//
12
// Openholo library is free software;
13
// you can redistribute it and/or modify it under the terms of the BSD 2-Clause license.
14
//
15
// Copyright (C) 2017-2024, Korea Electronics Technology Institute. All rights reserved.
16
// E-mail : contact.openholo@gmail.com
17
// Web : http://www.openholo.org
18
//
19
// Redistribution and use in source and binary forms, with or without modification,
20
// are permitted provided that the following conditions are met:
21
//
22
// 1. Redistribution's of source code must retain the above copyright notice,
23
// this list of conditions and the following disclaimer.
24
//
25
// 2. Redistribution's in binary form must reproduce the above copyright notice,
26
// this list of conditions and the following disclaimer in the documentation
27
// and/or other materials provided with the distribution.
28
//
29
// This software is provided by the copyright holders and contributors "as is" and
30
// any express or implied warranties, including, but not limited to, the implied
31
// warranties of merchantability and fitness for a particular purpose are disclaimed.
32
// In no event shall the copyright holder or contributors be liable for any direct,
33
// indirect, incidental, special, exemplary, or consequential damages
34
// (including, but not limited to, procurement of substitute goods or services;
35
// loss of use, data, or profits; or business interruption) however caused
36
// and on any theory of liability, whether in contract, strict liability,
37
// or tort (including negligence or otherwise) arising in any way out of
38
// the use of this software, even if advised of the possibility of such damage.
39
//
40
// This software contains opensource software released under GNU Generic Public License,
41
// NVDIA Software License Agreement, or CUDA supplement to Software License Agreement.
42
// Check whether software you use contains licensed software.
43
//
44
//M*/
45
46
#ifndef __Base_h
47
#define __Base_h
48
49
#ifdef OPH_EXPORT
50
#ifdef _WIN32
51
#define OPH_DLL __declspec(dllexport)
52
#else
53
#define OPH_DLL __attribute__((visibility("default")))
54
#endif
55
#else
56
#ifdef _WIN32
57
#define OPH_DLL __declspec(dllimport)
58
#else
59
#define OPH_DLL
60
#endif
61
#endif
62
63
class
OPH_DLL
Base
{
64
public
:
69
inline
explicit
Base
(
void
) : refCnt(0) {}
70
protected
:
74
inline
virtual
~Base
(
void
) {}
75
76
protected
:
77
unsigned
long
refCnt
;
78
79
public
:
83
inline
unsigned
long
addRef
(
void
) {
return
++refCnt; }
84
88
inline
unsigned
long
release
(
void
) {
89
if
(!refCnt) {
90
ophFree();
91
delete
this
;
92
return
0;
93
}
94
return
refCnt--;
95
}
96
97
protected
:
102
virtual
void
ophFree(
void
) = 0;
103
};
104
105
#endif // !__Base_h
Base
Definition:
Base.h:63
OPH_DLL
#define OPH_DLL
Definition:
Base.h:59
Base::addRef
unsigned long addRef(void)
If referenced this(Base's child, not abstract class) instance, must call this method.
Definition:
Base.h:83
Base::~Base
virtual ~Base(void)
Destructor.
Definition:
Base.h:74
Base::release
unsigned long release(void)
Call release() when reference is finished.
Definition:
Base.h:88
Base::Base
Base(void)
Constructor.
Definition:
Base.h:69
Base::refCnt
unsigned long refCnt
Definition:
Base.h:77
Openholo
Openholo
src
Base.h
Generated by
1.8.14