Coverage Report

Created: 2023-09-25 06:10

/src/alembic/lib/Alembic/Ogawa/IArchive.cpp
Line
Count
Source (jump to first uncovered line)
1
//-*****************************************************************************
2
//
3
// Copyright (c) 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 Industrial Light & Magic nor the names of
19
// its contributors may be used to endorse or promote products derived
20
// from this software without specific prior written permission.
21
//
22
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
//
34
//-*****************************************************************************
35
36
#include <Alembic/Ogawa/IArchive.h>
37
38
namespace Alembic {
39
namespace Ogawa {
40
namespace ALEMBIC_VERSION_NS {
41
42
IArchive::IArchive(const std::string & iFileName,
43
                   std::size_t iNumStreams,
44
                   bool iUseMMap) :
45
    mStreams(new IStreams(iFileName, iNumStreams, iUseMMap))
46
277
{
47
277
    init();
48
277
}
49
50
IArchive::IArchive(const std::vector< std::istream * > & iStreams) :
51
    mStreams(new IStreams(iStreams))
52
0
{
53
0
    init();
54
0
}
55
56
void IArchive::init()
57
277
{
58
277
    if (mStreams->isValid())
59
272
    {
60
272
        Alembic::Util::uint64_t pos = 0;
61
272
        mStreams->read(0, 8, 8, &pos);
62
272
        mGroup.reset(new IGroup(mStreams, pos, false, 0));
63
272
    }
64
277
}
65
66
IArchive::~IArchive()
67
276
{
68
276
}
69
70
bool IArchive::isValid() const
71
276
{
72
276
    return mStreams->isValid();
73
276
}
74
75
bool IArchive::isFrozen() const
76
271
{
77
271
    return mStreams->isFrozen();
78
271
}
79
80
Alembic::Util::uint16_t IArchive::getVersion() const
81
0
{
82
0
    return mStreams->getVersion();
83
0
}
84
85
IGroupPtr IArchive::getGroup() const
86
271
{
87
271
    return mGroup;
88
271
}
89
90
} // End namespace ALEMBIC_VERSION_NS
91
} // End namespace Ogawa
92
} // End namespace Alembic