All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ArAsset Class Referenceabstract

Interface for accessing the contents of an asset. More...

#include <asset.h>

+ Inheritance diagram for ArAsset:

Public Member Functions

 ArAsset (const ArAsset &)=delete
 
ArAssetoperator= (const ArAsset &)=delete
 
virtual AR_API size_t GetSize () const =0
 Returns size of the asset.
 
virtual AR_API std::shared_ptr< const char > GetBuffer () const =0
 Returns a pointer to a buffer with the contents of the asset, with size given by GetSize().
 
virtual AR_API size_t Read (void *buffer, size_t count, size_t offset) const =0
 Read count bytes at offset from the beginning of the asset into buffer.
 
virtual AR_API std::pair< FILE *, size_t > GetFileUnsafe () const =0
 Returns a read-only FILE* handle and offset for this asset if available, or (nullptr, 0) otherwise.
 
virtual AR_API std::shared_ptr< ArAssetGetDetachedAsset () const
 Returns an ArAsset with the contents of this asset detached from from this asset's serialized data.
 

Detailed Description

Interface for accessing the contents of an asset.

See also
ArResolver::OpenAsset for how to retrieve instances of this object.

Definition at line 27 of file asset.h.

Member Function Documentation

◆ GetBuffer()

virtual AR_API std::shared_ptr< const char > GetBuffer ( ) const
pure virtual

Returns a pointer to a buffer with the contents of the asset, with size given by GetSize().

Returns an invalid std::shared_ptr if the contents could not be retrieved.

The data in the returned buffer must remain valid while there are outstanding copies of the returned std::shared_ptr. Note that the deleter stored in the std::shared_ptr may contain additional data needed to maintain the buffer's validity.

Implemented in ArFilesystemAsset, and ArInMemoryAsset.

◆ GetDetachedAsset()

virtual AR_API std::shared_ptr< ArAsset > GetDetachedAsset ( ) const
virtual

Returns an ArAsset with the contents of this asset detached from from this asset's serialized data.

External changes to the serialized data must not have any effect on the ArAsset returned by this function.

The default implementation returns a new instance of an ArInMemoryAsset that reads the entire contents of this asset into a heap-allocated buffer.

Reimplemented in ArInMemoryAsset.

◆ GetFileUnsafe()

virtual AR_API std::pair< FILE *, size_t > GetFileUnsafe ( ) const
pure virtual

Returns a read-only FILE* handle and offset for this asset if available, or (nullptr, 0) otherwise.

The returned handle must remain valid for the lifetime of this ArAsset object. The returned offset is the offset from the beginning of the FILE* where the asset's contents begins.

This function is marked unsafe because the handle may wind up being used in multiple threads depending on the underlying resolver implementation. For instance, a resolver may cache and return ArAsset objects with the same FILE* to multiple threads.

Clients MUST NOT use this handle with functions that cannot be called concurrently on the same file descriptor, e.g. read, fread, fseek, etc. See ArchPRead for a function that can be used to read data from this handle safely.

Implemented in ArFilesystemAsset, and ArInMemoryAsset.

◆ GetSize()

virtual AR_API size_t GetSize ( ) const
pure virtual

Returns size of the asset.

Implemented in ArFilesystemAsset, and ArInMemoryAsset.

◆ Read()

virtual AR_API size_t Read ( void *  buffer,
size_t  count,
size_t  offset 
) const
pure virtual

Read count bytes at offset from the beginning of the asset into buffer.

Returns number of bytes read, or 0 on error.

Implementers should range-check calls and return zero for out-of-bounds reads.

Implemented in ArFilesystemAsset, and ArInMemoryAsset.


The documentation for this class was generated from the following file: