HDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
GABC_IItem.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) COPYRIGHTYEAR
3
* Side Effects Software Inc. All rights reserved.
4
*
5
* Redistribution and use of Houdini Development Kit samples in source and
6
* binary forms, with or without modification, are permitted provided that the
7
* following conditions are met:
8
* 1. Redistributions of source code must retain the above copyright notice,
9
* this list of conditions and the following disclaimer.
10
* 2. The name of Side Effects Software may not be used to endorse or
11
* promote products derived from this software without specific prior
12
* written permission.
13
*
14
* THIS SOFTWARE IS PROVIDED BY SIDE EFFECTS SOFTWARE `AS IS' AND ANY EXPRESS
15
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
17
* NO EVENT SHALL SIDE EFFECTS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
18
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
20
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
23
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
*
25
*----------------------------------------------------------------------------
26
*/
27
28
#ifndef __GABC_IItem__
29
#define __GABC_IItem__
30
31
#include "
GABC_API.h
"
32
#include "
GABC_Types.h
"
33
#include <
UT/UT_IntrusivePtr.h
>
34
#include <
UT/UT_String.h
>
35
36
namespace
GABC_NAMESPACE
37
{
38
/// Objects stored in GABC_IArchives
39
///
40
/// Since IArchives keep references to objects, holding onto a reference will
41
/// prevent the archive from closing. When we try to close an archive (i.e. so
42
/// that we can write over it), we can't have any references dangling. The
43
/// GABC_IArchive maintains a set of all the items and can force them to purge
44
/// their data.
45
class
GABC_API
GABC_IItem
46
{
47
public
:
48
GABC_IItem
(
const
GABC_IArchivePtr
&arch=NULL);
49
GABC_IItem
(
const
GABC_IItem
&
src
);
50
virtual
~
GABC_IItem
();
51
52
GABC_IItem
&
operator=
(
const
GABC_IItem
&src)
53
{
54
setArchive(src.myArchive);
55
return
*
this
;
56
}
57
58
/// Purge any references to objects in the Alembic archive. Once the
59
/// object is purged, it should be considered to be an invalid object. The
60
/// object does not have to re-resolve itself.
61
/// @warning The purge() method should not alter the base class archive.
62
virtual
void
purge() = 0;
63
64
/// @{
65
/// Access the archive
66
const
GABC_IArchivePtr
&
archive
()
const
{
return
myArchive; }
67
void
setArchive(
const
GABC_IArchivePtr
&
a
);
68
/// @}
69
70
private
:
71
GABC_IArchivePtr
myArchive;
72
};
73
}
74
75
#endif
GABC_NAMESPACE::GABC_IItem::archive
const GABC_IArchivePtr & archive() const
Definition:
GABC_IItem.h:66
a
GLboolean GLboolean GLboolean GLboolean a
Definition:
glcorearb.h:1222
GABC_API.h
GABC_NAMESPACE
#define GABC_NAMESPACE
Definition:
GABC_API.h:42
UT_String.h
UT_IntrusivePtr< GABC_IArchive >
GABC_Types.h
GABC_NAMESPACE::GABC_IItem::operator=
GABC_IItem & operator=(const GABC_IItem &src)
Definition:
GABC_IItem.h:52
GABC_API
#define GABC_API
Definition:
GABC_API.h:37
UT_IntrusivePtr.h
GABC_NAMESPACE::GABC_IItem
Definition:
GABC_IItem.h:45
src
GLenum src
Definition:
glcorearb.h:1793
GABC
GABC_IItem.h
Generated on Sat Dec 7 2024 02:43:13 for HDK by
1.8.6