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 
IArchive(const std::string & iFileName,std::size_t iNumStreams,bool iUseMMap)42 IArchive::IArchive(const std::string & iFileName,
43                    std::size_t iNumStreams,
44                    bool iUseMMap) :
45     mStreams(new IStreams(iFileName, iNumStreams, iUseMMap))
46 {
47     init();
48 }
49 
IArchive(const std::vector<std::istream * > & iStreams)50 IArchive::IArchive(const std::vector< std::istream * > & iStreams) :
51     mStreams(new IStreams(iStreams))
52 {
53     init();
54 }
55 
init()56 void IArchive::init()
57 {
58     if (mStreams->isValid())
59     {
60         Alembic::Util::uint64_t pos = 0;
61         mStreams->read(0, 8, 8, &pos);
62         mGroup.reset(new IGroup(mStreams, pos, false, 0));
63     }
64 }
65 
~IArchive()66 IArchive::~IArchive()
67 {
68 }
69 
isValid() const70 bool IArchive::isValid() const
71 {
72     return mStreams->isValid();
73 }
74 
isFrozen() const75 bool IArchive::isFrozen() const
76 {
77     return mStreams->isFrozen();
78 }
79 
getVersion() const80 Alembic::Util::uint16_t IArchive::getVersion() const
81 {
82     return mStreams->getVersion();
83 }
84 
getGroup() const85 IGroupPtr IArchive::getGroup() const
86 {
87     return mGroup;
88 }
89 
90 } // End namespace ALEMBIC_VERSION_NS
91 } // End namespace Ogawa
92 } // End namespace Alembic
93