OpenVolumeMesh
Toggle main menu visibility
Loading...
Searching...
No Matches
BaseProperty.hh
1
/*===========================================================================*\
2
* *
3
* OpenVolumeMesh *
4
* Copyright (C) 2011 by Computer Graphics Group, RWTH Aachen *
5
* www.openvolumemesh.org *
6
* *
7
*---------------------------------------------------------------------------*
8
* This file is part of OpenVolumeMesh. *
9
* *
10
* OpenVolumeMesh is free software: you can redistribute it and/or modify *
11
* it under the terms of the GNU Lesser General Public License as *
12
* published by the Free Software Foundation, either version 3 of *
13
* the License, or (at your option) any later version with the *
14
* following exceptions: *
15
* *
16
* If other files instantiate templates or use macros *
17
* or inline functions from this file, or you compile this file and *
18
* link it with other files to produce an executable, this file does *
19
* not by itself cause the resulting executable to be covered by the *
20
* GNU Lesser General Public License. This exception does not however *
21
* invalidate any other reasons why the executable file might be *
22
* covered by the GNU Lesser General Public License. *
23
* *
24
* OpenVolumeMesh is distributed in the hope that it will be useful, *
25
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
26
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
27
* GNU Lesser General Public License for more details. *
28
* *
29
* You should have received a copy of the GNU LesserGeneral Public *
30
* License along with OpenVolumeMesh. If not, *
31
* see <http://www.gnu.org/licenses/>. *
32
* *
33
\*===========================================================================*/
34
35
/*===========================================================================*\
36
* *
37
* $Revision$ *
38
* $Date$ *
39
* $LastChangedBy$ *
40
* *
41
\*===========================================================================*/
42
43
#ifndef BASEPROPERTY_HH_
44
#define BASEPROPERTY_HH_
45
46
#include <string>
47
48
#include "OpenVolumeMeshHandle.hh"
49
50
namespace
OpenVolumeMesh {
51
52
class
ResourceManager
;
53
54
class
BaseProperty {
55
public
:
56
friend
class
ResourceManager;
57
58
BaseProperty(ResourceManager& _resMan) : resMan_(_resMan), lock_(
false
) {}
59
60
BaseProperty(
const
BaseProperty& _cpy) : resMan_(_cpy.resMan_), lock_(_cpy.lock_) {}
61
62
BaseProperty& operator=(
const
BaseProperty& _cpy);
63
64
virtual
~BaseProperty() {}
65
66
virtual
const
std::string& name()
const
= 0;
67
68
virtual
void
delete_element(
size_t
_idx) = 0;
69
70
virtual
void
swap_elements(
size_t
_idx0,
size_t
_idx1) = 0;
71
72
virtual
void
serialize(std::ostream& _ostr)
const
= 0;
73
74
virtual
void
deserialize(std::istream& _istr) = 0;
75
76
virtual
OpenVolumeMeshHandle
handle()
const
= 0;
77
78
virtual
bool
persistent()
const
= 0;
79
80
virtual
bool
anonymous()
const
= 0;
81
82
virtual
const
std::string entityType()
const
= 0;
83
84
virtual
const
std::string typeNameWrapper()
const
= 0;
85
86
protected
:
87
88
virtual
void
delete_multiple_entries(
const
std::vector<bool>& _tags) = 0;
89
90
virtual
void
resize(
unsigned
int
/*_size*/
) = 0;
91
92
virtual
void
set_handle(
const
OpenVolumeMeshHandle
&
/*_handle*/
) = 0;
93
94
void
lock() { lock_ =
true
; }
95
96
void
unlock() { lock_ =
false
; }
97
98
bool
locked()
const
{
return
lock_; }
99
100
ResourceManager& resMan_;
101
102
bool
lock_;
103
};
104
105
}
// Namespace OpenVolumeMesh
106
107
#endif
/* BASEPROPERTY_HH_ */
OpenVolumeMesh::OpenVolumeMeshHandle
Definition
OpenVolumeMeshHandle.hh:55
OpenVolumeMesh::ResourceManager
Definition
ResourceManager.hh:76
Project
OpenVolumeMesh
, Computer Graphics Group Aachen,
RWTH Aachen