Преглед изворни кода

Exposed system handle for FileStream

Brian Fiete пре 4 година
родитељ
комит
961e71c62a

+ 20 - 0
BeefLibs/corlib/src/IO/FileStream.bf

@@ -29,6 +29,16 @@ namespace System.IO
 			}
 		}
 
+		public int Handle
+		{
+			get
+			{
+				if (mBfpFile == null)
+					return 0;
+				return Platform.BfpFile_GetSystemHandle(mBfpFile);
+			}
+		}
+
 		public ~this()
 		{
 			Delete();
@@ -233,6 +243,16 @@ namespace System.IO
 		protected int64 mBfpFilePos;
 		FileAccess mFileAccess;
 
+		public int Handle
+		{
+			get
+			{
+				if (mBfpFile == null)
+					return 0;
+				return Platform.BfpFile_GetSystemHandle(mBfpFile);
+			}
+		}
+
 		public this()
 		{
 			

+ 2 - 0
BeefLibs/corlib/src/Platform.bf

@@ -337,6 +337,8 @@ namespace System
 		[CallingConvention(.Stdcall), CLink]
 		public static extern BfpFile* BfpFile_GetStd(BfpFileStdKind kind, BfpFileResult* outResult);
 		[CallingConvention(.Stdcall), CLink]
+		public static extern int BfpFile_GetSystemHandle(BfpFile* file);
+		[CallingConvention(.Stdcall), CLink]
 		public static extern void BfpFile_Release(BfpFile* file);
 		[CallingConvention(.Stdcall), CLink]
 		public static extern int BfpFile_Write(BfpFile* file, void* buffer, int size, int timeoutMS, BfpFileResult* outResult);

+ 1 - 0
BeefySysLib/platform/PlatformInterface.h

@@ -413,6 +413,7 @@ enum BfpFileStdKind
 
 BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_Create(const char* name, BfpFileCreateKind createKind, BfpFileCreateFlags createFlags, BfpFileAttributes createdFileAttr, BfpFileResult* outResult);
 BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_GetStd(BfpFileStdKind kind, BfpFileResult* outResult);
+BFP_EXPORT intptr BFP_CALLTYPE BfpFile_GetSystemHandle(BfpFile* file);
 BFP_EXPORT void BFP_CALLTYPE BfpFile_Release(BfpFile* file);
 BFP_EXPORT void BFP_CALLTYPE BfpFile_Close(BfpFile* file, BfpFileResult* outResult);
 BFP_EXPORT intptr BFP_CALLTYPE BfpFile_Write(BfpFile* file, const void* buffer, intptr size, int timeoutMS, BfpFileResult* outResult);

+ 5 - 0
BeefySysLib/platform/posix/PosixCommon.cpp

@@ -1941,6 +1941,11 @@ BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_GetStd(BfpFileStdKind kind, BfpFileResu
 	return bfpFile;
 }
 
+BFP_EXPORT intptr BFP_CALLTYPE BfpFile_GetSystemHandle(BfpFile* file)
+{
+    return (intptr)file->mHandle;
+}
+
 BFP_EXPORT void BFP_CALLTYPE BfpFile_Release(BfpFile* file)
 {	
 	if ((file->mHandle != -1) && (!file->mIsStd))

+ 5 - 0
BeefySysLib/platform/win/Platform.cpp

@@ -2824,6 +2824,11 @@ BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_GetStd(BfpFileStdKind kind, BfpFileResu
 	return bfpFile;	
 }
 
+BFP_EXPORT intptr BFP_CALLTYPE BfpFile_GetSystemHandle(BfpFile* file)
+{
+	return (intptr)file->mHandle;
+}
+
 BFP_EXPORT void BFP_CALLTYPE BfpFile_Release(BfpFile* file)
 {			
 	if ((file->mHandle != INVALID_HANDLE_VALUE) && (!file->mIsStd))