/* SPDX-License-Identifier: GPL-2.0-or-later * Copyright 2016 Kévin Dietrich. All rights reserved. */ #pragma once /** \file * \ingroup balembic */ #include #include #include struct Main; namespace blender::io::alembic { /* Wrappers around input and output archives. The goal is to be able to use * streams so that unicode paths work on Windows (T49112), and to make sure that * the stream objects remain valid as long as the archives are open. */ class ArchiveReader { Alembic::Abc::IArchive m_archive; std::ifstream m_infile; std::vector m_streams; std::vector m_readers; ArchiveReader(const std::vector &readers); ArchiveReader(struct Main *bmain, const char *filename); public: static ArchiveReader *get(struct Main *bmain, const std::vector &filenames); ~ArchiveReader(); bool valid() const; Alembic::Abc::IObject getTop(); }; } // namespace blender::io::alembic