Alembic
1.8.11
Toggle main menu visibility
Loading...
Searching...
No Matches
ArImpl.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_AbcCoreHDF5_ArImpl_h
38
#define Alembic_AbcCoreHDF5_ArImpl_h
39
40
#include <Alembic/AbcCoreHDF5/Foundation.h>
41
#include <Alembic/AbcCoreHDF5/HDF5Hierarchy.h>
42
43
namespace
Alembic
{
44
namespace
AbcCoreHDF5 {
45
namespace
ALEMBIC_VERSION_NS {
46
47
//-*****************************************************************************
48
class
OrData
;
49
50
//-*****************************************************************************
51
class
ArImpl
52
:
public
AbcA::ArchiveReader
53
,
public
Alembic::Util::enable_shared_from_this<ArImpl>
54
{
55
private
:
56
friend
class
ReadArchive;
57
58
ArImpl(
const
std::string &iFileName,
59
AbcA::ReadArraySampleCachePtr iCache,
60
const
bool
iCacheHierarchy );
61
62
public
:
63
virtual
~ArImpl();
64
65
//-*************************************************************************
66
// ABSTRACT FUNCTIONS
67
//-*************************************************************************
68
virtual
const
std::string &
getName
()
const
;
69
70
virtual
const
AbcA::MetaData &
getMetaData
()
const
;
71
72
virtual
AbcA::ObjectReaderPtr
getTop
();
73
74
virtual
AbcA::TimeSamplingPtr
getTimeSampling
( uint32_t iIndex );
75
76
virtual
AbcA::ArchiveReaderPtr
asArchivePtr
();
77
78
virtual
AbcA::ReadArraySampleCachePtr
getReadArraySampleCachePtr
()
79
{
80
return
m_readArraySampleCache;
81
}
82
84
virtual
void
85
setReadArraySampleCachePtr
( AbcA::ReadArraySampleCachePtr iPtr )
86
{
87
m_readArraySampleCache = iPtr;
88
}
89
90
virtual
AbcA::index_t
getMaxNumSamplesForTimeSamplingIndex
(
91
uint32_t iIndex );
92
93
virtual
uint32_t
getNumTimeSamplings
()
94
{
95
return
m_timeSamples.size();
96
}
97
98
virtual
int32_t
getArchiveVersion
()
99
{
100
return
m_archiveVersion;
101
}
102
103
private
:
104
std::string m_fileName;
105
hid_t m_file;
106
107
Alembic::Util::weak_ptr< AbcA::ObjectReader > m_top;
108
Alembic::Util::shared_ptr < OrData > m_data;
109
ObjectHeaderPtr m_header;
110
Alembic::Util::mutex
m_orlock;
111
112
int32_t m_archiveVersion;
113
114
std::vector < AbcA::TimeSamplingPtr > m_timeSamples;
115
std::vector < AbcA::index_t > m_maxSamples;
116
117
AbcA::ReadArraySampleCachePtr m_readArraySampleCache;
118
119
HDF5Hierarchy
m_H5H;
120
};
121
122
}
// End namespace ALEMBIC_VERSION_NS
123
124
using namespace
ALEMBIC_VERSION_NS;
125
126
}
// End namespace AbcCoreHDF5
127
}
// End namespace Alembic
128
129
#endif
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::getTop
virtual AbcA::ObjectReaderPtr getTop()
Definition
ArImpl.cpp:148
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::getMaxNumSamplesForTimeSamplingIndex
virtual AbcA::index_t getMaxNumSamplesForTimeSamplingIndex(uint32_t iIndex)
Definition
ArImpl.cpp:179
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::getMetaData
virtual const AbcA::MetaData & getMetaData() const
Definition
ArImpl.cpp:142
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::getNumTimeSamplings
virtual uint32_t getNumTimeSamplings()
Definition
ArImpl.h:93
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::setReadArraySampleCachePtr
virtual void setReadArraySampleCachePtr(AbcA::ReadArraySampleCachePtr iPtr)
THIS METHOD IS NOT MULTITHREAD SAFE.
Definition
ArImpl.h:85
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::asArchivePtr
virtual AbcA::ArchiveReaderPtr asArchivePtr()
Definition
ArImpl.cpp:173
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::getName
virtual const std::string & getName() const
Definition
ArImpl.cpp:136
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::getTimeSampling
virtual AbcA::TimeSamplingPtr getTimeSampling(uint32_t iIndex)
Returns the TimeSampling at a given index.
Definition
ArImpl.cpp:164
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::getArchiveVersion
virtual int32_t getArchiveVersion()
Definition
ArImpl.h:98
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::ArImpl::getReadArraySampleCachePtr
virtual AbcA::ReadArraySampleCachePtr getReadArraySampleCachePtr()
Definition
ArImpl.h:78
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::HDF5Hierarchy
Definition
HDF5Hierarchy.h:73
Alembic::AbcCoreHDF5::ALEMBIC_VERSION_NS::OrData
Definition
OrData.h:54
Alembic::Util::ALEMBIC_VERSION_NS::mutex
Definition
Foundation.h:176
Alembic
Alembic namespace ...
Definition
ArchiveInfo.cpp:39
AbcCoreHDF5
ArImpl.h
Generated by
1.18.0