14 #ifndef VIRTUALFILEMOUNTANDROIDASSET_H
15 #define VIRTUALFILEMOUNTANDROIDASSET_H
25 #include <android/asset_manager.h>
30 class EXPCL_PANDA_EXPRESS VirtualFileMountAndroidAsset :
public VirtualFileMount {
32 INLINE VirtualFileMountAndroidAsset(AAssetManager *mgr,
const std::string &apk_path);
33 virtual ~VirtualFileMountAndroidAsset();
36 int get_fd(
const Filename &file, off_t *start, off_t *end)
const;
38 virtual bool has_file(
const Filename &file)
const;
39 virtual bool is_directory(
const Filename &file)
const;
40 virtual bool is_regular_file(
const Filename &file)
const;
43 vector_uchar &result)
const;
45 virtual std::istream *open_read_file(
const Filename &file)
const;
46 virtual std::streamsize get_file_size(
const Filename &file, std::istream *stream)
const;
47 virtual std::streamsize get_file_size(
const Filename &file)
const;
48 virtual time_t get_timestamp(
const Filename &file)
const;
51 virtual bool scan_directory(vector_string &contents,
55 AAssetManager *_asset_mgr;
56 std::string _apk_path;
58 class AssetStream :
public std::istream {
60 INLINE AssetStream(AAsset *asset);
61 virtual ~AssetStream();
64 class AssetStreamBuf :
public std::streambuf {
66 AssetStreamBuf(AAsset *asset);
67 virtual ~AssetStreamBuf();
69 virtual std::streampos seekoff(std::streamoff off, ios_seekdir dir, ios_openmode which);
70 virtual std::streampos seekpos(std::streampos pos, ios_openmode which);
73 virtual int underflow();
79 friend class VirtualFileMountAndroidAsset;
84 return get_class_type();
86 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
90 static void init_type() {
91 VirtualFileMount::init_type();
93 VirtualFileMount::get_class_type());