Ver Fonte

Wrap C std file io into File

Daniele Bartolini há 13 anos atrás
pai
commit
0ce8494375
2 ficheiros alterados com 55 adições e 3 exclusões
  1. 45 2
      src/core/streams/File.cpp
  2. 10 1
      src/core/streams/File.h

+ 45 - 2
src/core/streams/File.cpp

@@ -26,20 +26,21 @@ OTHER DEALINGS IN THE SOFTWARE.
 #include "File.h"
 #include "Log.h"
 #include "MathUtils.h"
+#include <cassert>
 
 namespace crown
 {
 
 //-----------------------------------------------------------------------------
 File::File() :
-	m_file_handle(0), m_mode(FOM_READ)
+	m_file_handle(NULL), m_mode(FOM_READ)
 {
 }
 
 //-----------------------------------------------------------------------------
 File::~File()
 {
-	if (m_file_handle != 0)
+	if (m_file_handle != NULL)
 	{
 		fclose(m_file_handle);
 	}
@@ -89,6 +90,48 @@ File* File::open(const char* path, FileOpenMode mode)
 	return f;
 }
 
+//-----------------------------------------------------------------------------
+size_t File::read(void* ptr, size_t size, size_t nmemb)
+{
+	assert(m_file_handle != NULL);
+	assert(ptr != NULL);
+
+	return fread(ptr, size, nmemb, m_file_handle);
+}
+
+//-----------------------------------------------------------------------------
+size_t File::write(const void* ptr, size_t size, size_t nmemb)
+{
+	assert(m_file_handle != NULL);
+	assert(ptr != NULL);
+
+	return fwrite(ptr, size, nmemb, m_file_handle);
+}
+
+//-----------------------------------------------------------------------------
+int File::seek(int32_t offset, int whence)
+{
+	assert(m_file_handle != NULL);
+
+	return fseek(m_file_handle, offset, whence);
+}
+
+//-----------------------------------------------------------------------------
+int32_t File::tell()
+{
+	assert(m_file_handle != NULL);
+	
+	return ftell(m_file_handle);
+}
+
+//-----------------------------------------------------------------------------
+int File::eof()
+{
+	assert(m_file_handle != NULL);
+	
+	return feof(m_file_handle);
+}
+
 //-----------------------------------------------------------------------------
 size_t File::size()
 {

+ 10 - 1
src/core/streams/File.h

@@ -48,12 +48,21 @@ class File
 
 public:
 
-	virtual				~File();
+						~File();
 
 	bool				is_valid();
 
 	FileOpenMode		mode();
+
 	FILE*				get_handle();
+
+	size_t				read(void* ptr, size_t size, size_t nmemb);
+	size_t				write(const void* ptr, size_t size, size_t nmemb);
+	int					seek(int32_t offset, int whence);
+	int32_t				tell();
+
+	int					eof();
+
 	size_t				size();
 
 	static File*		open(const char* path, FileOpenMode mode);