Branimir Karadžić 8 years ago
parent
commit
58c8c68062
3 changed files with 56 additions and 41 deletions
  1. 3 0
      include/bx/file.h
  2. 4 0
      src/crtnone.cpp
  3. 49 41
      src/file.cpp

+ 3 - 0
include/bx/file.h

@@ -20,6 +20,9 @@ namespace bx
 	///
 	WriterI* getStdErr();
 
+	///
+	WriterI* getNullOut();
+
 	///
 	class FileReader : public FileReaderI
 	{

+ 4 - 0
src/crtnone.cpp

@@ -303,6 +303,10 @@ extern "C" int printf(const char* _format, ...)
 	return -1;
 }
 
+struct FILE
+{
+};
+
 extern "C" int fprintf(FILE* _stream, const char* _format, ...)
 {
 	BX_UNUSED(_stream, _format);

+ 49 - 41
src/file.cpp

@@ -16,16 +16,51 @@
 
 namespace bx
 {
+	class NoopWriterImpl : public FileWriterI
+	{
+	public:
+		NoopWriterImpl(void*)
+		{
+		}
+
+		virtual ~NoopWriterImpl()
+		{
+			close();
+		}
+
+		virtual bool open(const FilePath& _filePath, bool _append, Error* _err) override
+		{
+			BX_UNUSED(_filePath, _append, _err);
+			return false;
+		}
+
+		virtual void close() override
+		{
+		}
+
+		virtual int64_t seek(int64_t _offset, Whence::Enum _whence) override
+		{
+			BX_UNUSED(_offset, _whence);
+			return 0;
+		}
+
+		virtual int32_t write(const void* _data, int32_t _size, Error* _err) override
+		{
+			BX_UNUSED(_data, _size, _err);
+			return 0;
+		}
+	};
+
 #if BX_CONFIG_CRT_FILE_READER_WRITER
 
 #	if BX_CRT_MSVC
 #		define fseeko64 _fseeki64
 #		define ftello64 _ftelli64
-#	elif 0 \
+#	elif 0                   \
 	  || BX_PLATFORM_ANDROID \
-	  || BX_PLATFORM_BSD \
-	  || BX_PLATFORM_IOS \
-	  || BX_PLATFORM_OSX \
+	  || BX_PLATFORM_BSD     \
+	  || BX_PLATFORM_IOS     \
+	  || BX_PLATFORM_OSX     \
 	  || BX_PLATFORM_QNX
 #		define fseeko64 fseeko
 #		define ftello64 ftello
@@ -34,7 +69,7 @@ namespace bx
 #		define ftello64 ftell
 #	endif // BX_
 
-	class FileReaderImpl : public bx::FileReaderI
+	class FileReaderImpl : public FileReaderI
 	{
 	public:
 		FileReaderImpl(FILE* _file)
@@ -114,7 +149,7 @@ namespace bx
 		bool  m_open;
 	};
 
-	class FileWriterImpl : public bx::FileWriterI
+	class FileWriterImpl : public FileWriterI
 	{
 	public:
 		FileWriterImpl(FILE* _file)
@@ -189,7 +224,7 @@ namespace bx
 
 #else
 
-	class FileReaderImpl : public bx::FileReaderI
+	class FileReaderImpl : public FileReaderI
 	{
 	public:
 		FileReaderImpl(void*)
@@ -224,40 +259,7 @@ namespace bx
 		}
 	};
 
-	class FileWriterImpl : public bx::FileWriterI
-	{
-	public:
-		FileWriterImpl(void*)
-		{
-		}
-
-		virtual ~FileWriterImpl()
-		{
-			close();
-		}
-
-		virtual bool open(const FilePath& _filePath, bool _append, Error* _err) override
-		{
-			BX_UNUSED(_filePath, _append);
-			return false;
-		}
-
-		virtual void close() override
-		{
-		}
-
-		virtual int64_t seek(int64_t _offset, Whence::Enum _whence) override
-		{
-			BX_UNUSED(_offset, _whence);
-			return 0;
-		}
-
-		virtual int32_t write(const void* _data, int32_t _size, Error* _err) override
-		{
-			BX_UNUSED(_data, _size, _err);
-			return 0;
-		}
-	};
+	typedef NoopWriterImpl FileWriterImpl;
 
 #endif // BX_CONFIG_CRT_FILE_READER_WRITER
 
@@ -351,6 +353,12 @@ namespace bx
 		return &s_stdOut;
 	}
 
+	WriterI* getNullOut()
+	{
+		static NoopWriterImpl s_nullOut(NULL);
+		return &s_nullOut;
+	}
+
 	bool stat(const char* _filePath, FileInfo& _fileInfo)
 	{
 		_fileInfo.m_size = 0;