28 #ifndef __GABC_IArchive__
29 #define __GABC_IArchive__
43 #if ALEMBIC_LIBRARY_VERSION >= 10200
49 #define GABC_ALEMBIC_THREADSAFE
67 bool valid()
const {
return myArchive.valid(); }
73 const std::vector<std::string> &
filenames()
const {
return myFileNames; }
81 bool isOgawa()
const {
return myIsOgawa; }
88 void reopenStream(
int num_ogawa_streams = -1);
105 if (!myRefCount.add(-1))
117 int num_ogawa_streams = -1);
123 static std::string filenamesToString(
const std::vector<std::string> &filenames);
127 void openArchive(
const std::vector<std::string> &paths,
int num_streams);
128 void closeAndDelete();
130 UT_Lock &getLock()
const {
return *theLock; }
134 int num_streams = -1);
144 int num_streams = -1);
148 std::vector<std::string> myFileNames;
150 struct gabc_streamentry
153 : myReader(nullptr), myStreamBuf(nullptr), myStream(nullptr) {}
160 gabc_istream *myReader;
161 gabc_streambuf *myStreamBuf;
162 std::istream *myStream;
171 static inline void intrusive_ptr_add_ref(GABC_IArchive *i) { i->incref(); }
172 static inline void intrusive_ptr_release(GABC_IArchive *i) { i->decref(); }
190 : myLock(&(arch.getLock()))
196 : myLock(arch ? &(arch->getLock()) : NULL)
206 void unlock() { myLock->unlock(); myLock = NULL; }
211 #if defined(GABC_ALEMBIC_THREADSAFE)
FS_IStreamDeviceBuffer gabc_streambuf
GABC_AutoFakeLock(const GABC_IArchivePtr &)
GLsizei const GLchar *const * string
GLsizei const GLchar *const * path
bios::stream_buffer< FS_IStreamDevice > FS_IStreamDeviceBuffer
GABC_AutoLock(const GABC_IArchivePtr &arch)
bool valid() const
Test validity.
const std::vector< std::string > & filenames() const
Access the filename.
const IArchive & archive() const
Access to the underlying archive.
GABC_AutoLock(const GABC_IArchive &arch)
const std::string & error() const
Error (set on creation)
GABC_AutoFakeLock(const GABC_IArchive &)
that also have some descendant prim *whose name begins with which in turn has a child named baz where *the predicate and *a name There is also one special expression reference