Alembic
1.8.11
Toggle main menu visibility
Loading...
Searching...
No Matches
OObject.h
1
//-*****************************************************************************
2
//
3
// Copyright (c) 2009-2013,
4
// Sony Pictures Imageworks, Inc. and
5
// Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd.
6
//
7
// All rights reserved.
8
//
9
// Redistribution and use in source and binary forms, with or without
10
// modification, are permitted provided that the following conditions are
11
// met:
12
// * Redistributions of source code must retain the above copyright
13
// notice, this list of conditions and the following disclaimer.
14
// * Redistributions in binary form must reproduce the above
15
// copyright notice, this list of conditions and the following disclaimer
16
// in the documentation and/or other materials provided with the
17
// distribution.
18
// * Neither the name of Sony Pictures Imageworks, nor
19
// Industrial Light & Magic nor the names of their contributors may be used
20
// to endorse or promote products derived from this software without specific
21
// prior written permission.
22
//
23
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
//
35
//-*****************************************************************************
36
37
#ifndef Alembic_Abc_OObject_h
38
#define Alembic_Abc_OObject_h
39
40
#include <Alembic/Util/Export.h>
41
#include <Alembic/Abc/Foundation.h>
42
#include <Alembic/Abc/Base.h>
43
#include <Alembic/Abc/Argument.h>
44
#include <Alembic/Abc/OArchive.h>
45
46
namespace
Alembic
{
47
namespace
Abc {
48
namespace
ALEMBIC_VERSION_NS {
49
50
class
OCompoundProperty
;
51
52
//-*****************************************************************************
53
class
ALEMBIC_EXPORT
OObject
:
public
Base
54
{
55
public
:
59
typedef
OObject
this_type
;
60
typedef
OObject
operator_bool_base_type;
61
62
//-*************************************************************************
63
// CONSTRUCTION, DESTRUCTION, ASSIGNMENT
64
//-*************************************************************************
65
68
OObject
() {}
69
74
OObject
(
OObject
iParentObject,
75
const
std::string &iName,
76
77
const
Argument
&iArg0 =
Argument
(),
78
const
Argument
&iArg1 =
Argument
(),
79
const
Argument
&iArg2 =
Argument
() );
80
84
OObject
( AbcA::ObjectWriterPtr iPtr,
85
const
Argument
&iArg0 =
Argument
(),
86
const
Argument
&iArg1 =
Argument
(),
87
const
Argument
&iArg2 =
Argument
() )
88
: m_object( iPtr )
89
{
90
// Set the error handling policy
91
getErrorHandler().setPolicy(
92
GetErrorHandlerPolicy( iPtr, iArg0, iArg1, iArg2 ) );
93
}
94
95
// Deprecated in favor of the constructor above
96
OObject
( AbcA::ObjectWriterPtr iPtr,
97
WrapExistingFlag
/* iFlag */
,
98
const
Argument
&iArg0 =
Argument
(),
99
const
Argument
&iArg1 =
Argument
(),
100
const
Argument
&iArg2 =
Argument
() )
101
: m_object( iPtr )
102
{
103
// Set the error handling policy
104
getErrorHandler().setPolicy(
105
GetErrorHandlerPolicy( iPtr, iArg0, iArg1, iArg2 ) );
106
}
107
111
OObject
(
OArchive
& iArchive,
112
const
Argument
&iArg0 =
Argument
(),
113
const
Argument
&iArg1 =
Argument
(),
114
const
Argument
&iArg2 =
Argument
() )
115
{
116
init( iArchive, iArg0, iArg1, iArg2 );
117
}
118
119
// deprecated in favor of the constructor above
120
OObject
(
OArchive
& iArchive,
121
TopFlag
/* iTop */
,
122
const
Argument
&iArg0 =
Argument
(),
123
const
Argument
&iArg1 =
Argument
(),
124
const
Argument
&iArg2 =
Argument
() )
125
{
126
init( iArchive, iArg0, iArg1, iArg2 );
127
}
128
131
134
virtual
~OObject
();
135
136
//-*************************************************************************
137
// OBJECT WRITER FUNCTIONALITY
138
//-*************************************************************************
139
142
const
AbcA::ObjectHeader & getHeader()
const
;
143
146
const
std::string &
getName
()
const
147
{
return
getHeader
().getName(); }
148
151
const
std::string &
getFullName
()
const
152
{
return
getHeader
().getFullName(); }
153
156
const
AbcA::MetaData &
getMetaData
()
const
157
{
return
getHeader
().getMetaData(); }
158
161
OArchive
getArchive();
162
166
OObject
getParent();
167
171
size_t
getNumChildren();
172
175
const
AbcA::ObjectHeader & getChildHeader(
size_t
i );
176
179
const
AbcA::ObjectHeader * getChildHeader(
const
std::string &iName );
180
183
OCompoundProperty
getProperties();
184
185
//-*************************************************************************
186
// ADVANCED TOOLS
187
// Unless you really know why you need to be using these next few
188
// functions, they're probably best left alone. These functions attempt
189
// to find a pointer to an existing writer, instead of creating a new one.
190
//-*************************************************************************
191
196
OObject
getChild(
size_t
iChildIndex );
197
202
OObject
getChild(
const
std::string &iChildName );
203
205
// PROXY METHODS
206
// An OObject can refer to another OObject. When read in, this instance
207
// will be represented by the target source hierarchy and its children.
209
bool
addChildInstance(
OObject
iTarget,
const
std::string& iName );
210
211
//-*************************************************************************
212
// ABC BASE MECHANISMS
213
// These functions are used by Abc to deal with errors, rewrapping,
214
// and so on.
215
//-*************************************************************************
216
220
AbcA::ObjectWriterPtr
getPtr
() {
return
m_object; }
221
const
AbcA::ObjectWriterPtr getPtr()
const
{
return
m_object; }
222
225
void
reset
() { m_object.reset(); Base::reset(); }
226
229
bool
valid
()
const
230
{
231
return
( Base::valid() && m_object );
232
}
233
236
ALEMBIC_OPERATOR_BOOL
(
valid
() );
237
238
private
:
239
240
void
init(
OArchive
& iArchive,
241
const
Argument
&iArg0,
242
const
Argument
&iArg1,
243
const
Argument
&iArg2 );
244
245
void
init( AbcA::ObjectWriterPtr iParentObject,
246
const
std::string &iName,
247
ErrorHandler::Policy iParentPolicy,
248
249
const
Argument
&iArg0,
250
const
Argument
&iArg1,
251
const
Argument
&iARg2 );
252
253
protected
:
254
AbcA::ObjectWriterPtr m_object;
255
};
256
257
}
// End namespace ALEMBIC_VERSION_NS
258
259
using namespace
ALEMBIC_VERSION_NS;
260
261
}
// End namespace Abc
262
}
// End namespace Alembic
263
264
#endif
Alembic::Abc::ALEMBIC_VERSION_NS::Argument
Definition
Argument.h:120
Alembic::Abc::ALEMBIC_VERSION_NS::OArchive
Definition
OArchive.h:53
Alembic::Abc::ALEMBIC_VERSION_NS::OCompoundProperty
Definition
OCompoundProperty.h:53
Alembic::Abc::ALEMBIC_VERSION_NS::OObject
Definition
OObject.h:54
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::OObject
OObject()
Definition
OObject.h:68
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::OObject
OObject(OArchive &iArchive, const Argument &iArg0=Argument(), const Argument &iArg1=Argument(), const Argument &iArg2=Argument())
Definition
OObject.h:111
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::ALEMBIC_OPERATOR_BOOL
ALEMBIC_OPERATOR_BOOL(valid())
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::getName
const std::string & getName() const
Definition
OObject.h:146
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::getPtr
AbcA::ObjectWriterPtr getPtr()
Definition
OObject.h:220
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::getHeader
const AbcA::ObjectHeader & getHeader() const
Definition
OObject.cpp:78
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::getMetaData
const AbcA::MetaData & getMetaData() const
Definition
OObject.h:156
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::reset
void reset()
Definition
OObject.h:225
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::this_type
OObject this_type
Definition
OObject.h:59
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::valid
bool valid() const
Definition
OObject.h:229
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::OObject
OObject(AbcA::ObjectWriterPtr iPtr, const Argument &iArg0=Argument(), const Argument &iArg1=Argument(), const Argument &iArg2=Argument())
Definition
OObject.h:84
Alembic::Abc::ALEMBIC_VERSION_NS::OObject::getFullName
const std::string & getFullName() const
Definition
OObject.h:151
Alembic
Alembic namespace ...
Definition
ArchiveInfo.cpp:39
Abc
OObject.h
Generated by
1.18.0