Daniele Bartolini 10 tahun lalu
induk
melakukan
623d202000

+ 0 - 99
src/core/filesystem/apk_file.cpp

@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2012-2016 Daniele Bartolini and individual contributors.
- * License: https://github.com/taylor001/crown/blob/master/LICENSE
- */
-
-#include "config.h"
-
-#if CROWN_PLATFORM_ANDROID
-
-#include "apk_file.h"
-#include "error.h"
-#include "macros.h"
-#include <stdio.h> // SEEK_SET, ...
-#include <android/asset_manager.h>
-
-namespace crown
-{
-ApkFile::ApkFile(AAssetManager* asset_manager)
-	: _asset_manager(asset_manager)
-	, _asset(NULL)
-{
-}
-
-ApkFile::~ApkFile()
-{
-	close();
-}
-
-void ApkFile::open(const char* path, FileOpenMode::Enum /*mode*/)
-{
-	_asset = AAssetManager_open(_asset_manager, path, AASSET_MODE_RANDOM);
-	CE_ASSERT(_asset != NULL, "AAssetManager_open: failed to open %s", path);
-}
-
-void ApkFile::close()
-{
-	if (_asset)
-	{
-		AAsset_close(_asset);
-		_asset = NULL;
-	}
-}
-
-u32 ApkFile::size()
-{
-	return AAsset_getLength(_asset);
-}
-
-u32 ApkFile::position()
-{
-	return u32(AAsset_getLength(_asset) - AAsset_getRemainingLength(_asset));
-}
-
-bool ApkFile::end_of_file()
-{
-	return AAsset_getRemainingLength(_asset) == 0;
-}
-
-void ApkFile::seek(u32 position)
-{
-	off_t seek_result = AAsset_seek(_asset, (off_t)position, SEEK_SET);
-	CE_ASSERT(seek_result != (off_t)-1, "AAsset_seek: error");
-	CE_UNUSED(seek_result);
-}
-
-void ApkFile::seek_to_end()
-{
-	off_t seek_result = AAsset_seek(_asset, 0, SEEK_END);
-	CE_ASSERT(seek_result != (off_t)-1, "AAsset_seek: error");
-	CE_UNUSED(seek_result);
-}
-
-void ApkFile::skip(u32 bytes)
-{
-	off_t seek_result = AAsset_seek(_asset, (off_t)bytes, SEEK_CUR);
-	CE_ASSERT(seek_result != (off_t)-1, "AAsset_seek: error");
-	CE_UNUSED(seek_result);
-}
-
-u32 ApkFile::read(void* data, u32 size)
-{
-	CE_ASSERT_NOT_NULL(data);
-	return (u32)AAsset_read(_asset, data, size);
-}
-
-u32 ApkFile::write(const void* /*data*/, u32 /*size*/)
-{
-	CE_ASSERT(false, "Apk files are read only!");
-	return 0;
-}
-
-void ApkFile::flush()
-{
-	// Not needed
-}
-
-} // namespace crown
-
-#endif // CROWN_PLATFORM_ANDROID

+ 0 - 67
src/core/filesystem/apk_file.h

@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2012-2016 Daniele Bartolini and individual contributors.
- * License: https://github.com/taylor001/crown/blob/master/LICENSE
- */
-
-#pragma once
-
-#include "platform.h"
-
-#if CROWN_PLATFORM_ANDROID
-
-#include "file.h"
-#include <sys/types.h>
-#include <android/asset_manager.h>
-
-namespace crown
-{
-/// Provides common facilities to access Android APK files.
-///
-/// @ingroup Filesystem
-class ApkFile : public File
-{
-	AAssetManager* _asset_manager;
-	AAsset* _asset;
-
-public:
-
-	ApkFile(AAssetManager* asset_manager);
-	~ApkFile();
-
-	/// @copydoc File::open()
-	void open(const char* path, FileOpenMode::Enum mode);
-
-	/// @copydoc File::close()
-	void close();
-
-	/// @copydoc File::size()
-	u32 size();
-
-	/// @copydoc File::position()
-	u32 position();
-
-	/// @copydoc File::end_of_file()
-	bool end_of_file();
-
-	/// @copydoc File::seek()
-	void seek(u32 position);
-
-	/// @copydoc File::seek_to_end()
-	void seek_to_end();
-
-	/// @copydoc File::skip()
-	void skip(u32 bytes);
-
-	/// @copydoc File::read()
-	u32 read(void* data, u32 size);
-
-	/// @copydoc File::write()
-	u32 write(const void* data, u32 size);
-
-	/// @copydoc File::flush()
-	void flush();
-};
-
-} // namespace crown
-
-#endif // CROWN_PLATFORM_ANDROID

+ 88 - 1
src/core/filesystem/apk_filesystem.cpp

@@ -7,14 +7,101 @@
 
 
 #if CROWN_PLATFORM_ANDROID
 #if CROWN_PLATFORM_ANDROID
 
 
-#include "apk_file.h"
 #include "apk_filesystem.h"
 #include "apk_filesystem.h"
+#include "file.h"
 #include "os.h"
 #include "os.h"
 #include "temp_allocator.h"
 #include "temp_allocator.h"
 #include "vector.h"
 #include "vector.h"
 
 
 namespace crown
 namespace crown
 {
 {
+class ApkFile : public File
+{
+	AAssetManager* _asset_manager;
+	AAsset* _asset;
+
+public:
+
+	ApkFile(AAssetManager* asset_manager)
+		: _asset_manager(asset_manager)
+		, _asset(NULL)
+	{
+	}
+
+	virtual ~ApkFile()
+	{
+		close();
+	}
+
+	void open(const char* path, FileOpenMode::Enum /*mode*/)
+	{
+		_asset = AAssetManager_open(_asset_manager, path, AASSET_MODE_RANDOM);
+		CE_ASSERT(_asset != NULL, "AAssetManager_open: failed to open %s", path);
+	}
+
+	void close()
+	{
+		if (_asset)
+		{
+			AAsset_close(_asset);
+			_asset = NULL;
+		}
+	}
+
+	u32 size()
+	{
+		return AAsset_getLength(_asset);
+	}
+
+	u32 position()
+	{
+		return u32(AAsset_getLength(_asset) - AAsset_getRemainingLength(_asset));
+	}
+
+	bool end_of_file()
+	{
+		return AAsset_getRemainingLength(_asset) == 0;
+	}
+
+	void seek(u32 position)
+	{
+		off_t seek_result = AAsset_seek(_asset, (off_t)position, SEEK_SET);
+		CE_ASSERT(seek_result != (off_t)-1, "AAsset_seek: error");
+		CE_UNUSED(seek_result);
+	}
+
+	void seek_to_end()
+	{
+		off_t seek_result = AAsset_seek(_asset, 0, SEEK_END);
+		CE_ASSERT(seek_result != (off_t)-1, "AAsset_seek: error");
+		CE_UNUSED(seek_result);
+	}
+
+	void skip(u32 bytes)
+	{
+		off_t seek_result = AAsset_seek(_asset, (off_t)bytes, SEEK_CUR);
+		CE_ASSERT(seek_result != (off_t)-1, "AAsset_seek: error");
+		CE_UNUSED(seek_result);
+	}
+
+	u32 read(void* data, u32 size)
+	{
+		CE_ASSERT_NOT_NULL(data);
+		return (u32)AAsset_read(_asset, data, size);
+	}
+
+	u32 write(const void* /*data*/, u32 /*size*/)
+	{
+		CE_ASSERT(false, "Apk files are read only!");
+		return 0;
+	}
+
+	void flush()
+	{
+		// Not needed
+	}
+};
+
 ApkFilesystem::ApkFilesystem(Allocator& a, AAssetManager* asset_manager)
 ApkFilesystem::ApkFilesystem(Allocator& a, AAssetManager* asset_manager)
 	: _allocator(&a)
 	: _allocator(&a)
 	, _asset_manager(asset_manager)
 	, _asset_manager(asset_manager)

+ 0 - 70
src/core/filesystem/disk_file.cpp

@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2012-2016 Daniele Bartolini and individual contributors.
- * License: https://github.com/taylor001/crown/blob/master/LICENSE
- */
-
-#include "disk_file.h"
-
-namespace crown
-{
-DiskFile::~DiskFile()
-{
-	close();
-}
-
-void DiskFile::open(const char* path, FileOpenMode::Enum mode)
-{
-	_file.open(path, mode);
-}
-
-void DiskFile::close()
-{
-	_file.close();
-}
-
-u32 DiskFile::size()
-{
-	return _file.size();
-}
-
-u32 DiskFile::position()
-{
-	return _file.position();
-}
-
-bool DiskFile::end_of_file()
-{
-	return position() == size();
-}
-
-void DiskFile::seek(u32 position)
-{
-	_file.seek(position);
-}
-
-void DiskFile::seek_to_end()
-{
-	_file.seek_to_end();
-}
-
-void DiskFile::skip(u32 bytes)
-{
-	_file.skip(bytes);
-}
-
-u32 DiskFile::read(void* data, u32 size)
-{
-	return _file.read(data, size);
-}
-
-u32 DiskFile::write(const void* data, u32 size)
-{
-	return _file.write(data, size);
-}
-
-void DiskFile::flush()
-{
-	_file.flush();
-}
-
-} // namespace crown

+ 0 - 58
src/core/filesystem/disk_file.h

@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2012-2016 Daniele Bartolini and individual contributors.
- * License: https://github.com/taylor001/crown/blob/master/LICENSE
- */
-
-#pragma once
-
-#include "file.h"
-#include "os_file.h"
-
-namespace crown
-{
-/// Provides common facilities to access files on disk.
-///
-/// @ingroup Filesystem
-class DiskFile: public File
-{
-	OsFile _file;
-
-public:
-
-	virtual ~DiskFile();
-
-	/// @copydoc File::open()
-	void open(const char* path, FileOpenMode::Enum mode);
-
-	/// @copydoc File::close()
-	void close();
-
-	/// @copydoc File::size()
-	u32 size();
-
-	/// @copydoc File::position()
-	u32 position();
-
-	/// @copydoc File::end_of_file()
-	bool end_of_file();
-
-	/// @copydoc File::seek()
-	void seek(u32 position);
-
-	/// @copydoc File::seek_to_end()
-	void seek_to_end();
-
-	/// @copydoc File::skip()
-	void skip(u32 bytes);
-
-	/// @copydoc File::read()
-	u32 read(void* data, u32 size);
-
-	/// @copydoc File::write()
-	u32 write(const void* data, u32 size);
-
-	/// @copydoc File::flush()
-	void flush();
-};
-
-} // namespace crown

+ 69 - 1
src/core/filesystem/disk_filesystem.cpp

@@ -3,15 +3,83 @@
  * License: https://github.com/taylor001/crown/blob/master/LICENSE
  * License: https://github.com/taylor001/crown/blob/master/LICENSE
  */
  */
 
 
-#include "disk_file.h"
 #include "disk_filesystem.h"
 #include "disk_filesystem.h"
+#include "file.h"
 #include "os.h"
 #include "os.h"
+#include "os_file.h"
 #include "path.h"
 #include "path.h"
 #include "temp_allocator.h"
 #include "temp_allocator.h"
 #include "vector.h"
 #include "vector.h"
 
 
 namespace crown
 namespace crown
 {
 {
+class DiskFile: public File
+{
+	OsFile _file;
+
+public:
+
+	virtual ~DiskFile()
+	{
+		close();
+	}
+
+	void open(const char* path, FileOpenMode::Enum mode)
+	{
+		_file.open(path, mode);
+	}
+
+	void close()
+	{
+		_file.close();
+	}
+
+	u32 size()
+	{
+		return _file.size();
+	}
+
+	u32 position()
+	{
+		return _file.position();
+	}
+
+	bool end_of_file()
+	{
+		return position() == size();
+	}
+
+	void seek(u32 position)
+	{
+		_file.seek(position);
+	}
+
+	void seek_to_end()
+	{
+		_file.seek_to_end();
+	}
+
+	void skip(u32 bytes)
+	{
+		_file.skip(bytes);
+	}
+
+	u32 read(void* data, u32 size)
+	{
+		return _file.read(data, size);
+	}
+
+	u32 write(const void* data, u32 size)
+	{
+		return _file.write(data, size);
+	}
+
+	void flush()
+	{
+		_file.flush();
+	}
+};
+
 DiskFilesystem::DiskFilesystem(Allocator& a)
 DiskFilesystem::DiskFilesystem(Allocator& a)
 	: _allocator(&a)
 	: _allocator(&a)
 	, _prefix(a)
 	, _prefix(a)