H3D API
2.4.1
include
H3D
Instantiate.h
Go to the documentation of this file.
1
// Copyright 2004-2019, SenseGraphics AB
3
//
4
// This file is part of H3D API.
5
//
6
// H3D API is free software; you can redistribute it and/or modify
7
// it under the terms of the GNU General Public License as published by
8
// the Free Software Foundation; either version 2 of the License, or
9
// (at your option) any later version.
10
//
11
// H3D API is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
// GNU General Public License for more details.
15
//
16
// You should have received a copy of the GNU General Public License
17
// along with H3D API; if not, write to the Free Software
18
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
//
20
// A commercial license is also available. Please contact us at
21
// www.sensegraphics.com for more information.
22
//
23
//
26
//
28
#ifndef __INSTANTIATE_H__
29
#define __INSTANTIATE_H__
30
31
namespace
H3D
{
32
// Inst guarantees an instance of the class T if one
33
// isn't already given to the constructor. Used to
34
// ensure that Fields are initialised in the right
35
// constructor in the Nodes.
36
template
<
class
T >
37
struct
Inst {
38
Inst( T *_ptr ) : ptr( _ptr ? _ptr : new T ) {}
39
operator
T*() {
return
ptr; }
40
template
<
class
S >
41
operator
Inst< S >()
const
throw() {
42
return
Inst< S >( ptr );
43
}
44
private
:
45
T *ptr;
46
};
47
}
48
49
#endif
H3D
H3D API namespace.
Definition:
Anchor.h:38
Generated on Wed Sep 6 2023 10:29:38 for H3D API by
1.9.1