15 #ifndef VIRTUALFILEMOUNTANDROIDASSET_H 16 #define VIRTUALFILEMOUNTANDROIDASSET_H 20 #include "pandabase.h" 22 #include "virtualFileMount.h" 23 #include "multifile.h" 24 #include "pointerTo.h" 26 #include <android/asset_manager.h> 33 class EXPCL_PANDAEXPRESS VirtualFileMountAndroidAsset :
public VirtualFileMount {
35 INLINE VirtualFileMountAndroidAsset(AAssetManager *mgr,
const string &apk_path);
36 virtual ~VirtualFileMountAndroidAsset();
39 int get_fd(
const Filename &file, off_t *start, off_t *end)
const;
41 virtual bool has_file(
const Filename &file)
const;
42 virtual bool is_directory(
const Filename &file)
const;
43 virtual bool is_regular_file(
const Filename &file)
const;
48 virtual istream *open_read_file(
const Filename &file)
const;
49 virtual streamsize get_file_size(
const Filename &file, istream *stream)
const;
50 virtual streamsize get_file_size(
const Filename &file)
const;
51 virtual time_t get_timestamp(
const Filename &file)
const;
54 virtual bool scan_directory(vector_string &contents,
58 AAssetManager *_asset_mgr;
61 class AssetStream :
public istream {
63 INLINE AssetStream(AAsset *asset);
64 virtual ~AssetStream();
67 class AssetStreamBuf :
public streambuf {
69 AssetStreamBuf(AAsset *asset);
70 virtual ~AssetStreamBuf();
72 virtual streampos seekoff(streamoff off, ios_seekdir dir, ios_openmode which);
73 virtual streampos seekpos(streampos pos, ios_openmode which);
76 virtual int underflow();
82 friend class VirtualFileMountAndroidAsset;
87 return get_class_type();
89 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
93 static void init_type() {
94 VirtualFileMount::init_type();
95 register_type(_type_handle,
"VirtualFileMountAndroidAsset",
96 VirtualFileMount::get_class_type());
103 #include "virtualFileMountAndroidAsset.I" virtual bool read_file(const Filename &file, bool do_uncompress, pvector< unsigned char > &result) const
Fills up the indicated pvector with the contents of the file, if it is a regular file.
The name of a file, such as a texture file or an Egg file.
virtual bool get_system_info(const Filename &file, SubfileInfo &info)
Populates the SubfileInfo structure with the data representing where the file actually resides on dis...
The abstract base class for a mount definition used within a VirtualFileSystem.
This class records a particular byte sub-range within an existing file on disk.
TypeHandle is the identifier used to differentiate C++ class types.