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

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

+ Inheritance diagram for ArAsset:

Public Member Functions

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

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 47 of file asset_v1.h.

Member Function Documentation

virtual AR_API std::shared_ptr<const char> GetBuffer ( )
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.

virtual AR_API std::pair<FILE*, size_t> GetFileUnsafe ( )
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.

virtual AR_API size_t GetSize ( )
pure virtual

Returns size of the asset.

Implemented in ArFilesystemAsset.

virtual AR_API size_t Read ( void *  buffer,
size_t  count,
size_t  offset 
)
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.


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