//////////////////////////////////////////////////////////////////////////////////////////////////// // /// \file ealfiledll.cpp DLL wrapper implementation for the EAL (file). // // For any questions/feedback please email gearsupport@ubisoft.com. // // See file ealdef.h for details on how to use the various EAL APIs. // // ONLY INCLUDE THIS FILE IN YOUR PROJECT IF YOU ARE USING DLLs. // //////////////////////////////////////////////////////////////////////////////////////////////////// #include "ealfile.h" #if defined(EAL_DLL) || defined(EAL_IMPORT_DLL) //////////////////////////////////////////////////////////////////////////////////////////////////// // DLL Side static eal_file_dll_interface gEalFileDllInterface = {0}; //////////////////////////////////////////////////////////////////////////////////////////////////// void EalFileDllInitInterface(const eal_file_dll_interface& Interface) { gEalFileDllInterface = Interface; } //////////////////////////////////////////////////////////////////////////////////////////////////// bool EalFileLibInit(eal_u32 Version) { return (*gEalFileDllInterface.pEalFileLibInit)(Version); } //////////////////////////////////////////////////////////////////////////////////////////////////// void EalFileLibShutdown() { (*gEalFileDllInterface.pEalFileLibShutdown)(); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_file* EalFileOpen(eal_id Tag, const char* pFileName, eal_file_flags OpenFlags, eal_file_status& Status) { return (*gEalFileDllInterface.pEalFileOpen)(Tag, pFileName, OpenFlags, Status); } //////////////////////////////////////////////////////////////////////////////////////////////////// void EalFileClose(eal_file* pFile) { (*gEalFileDllInterface.pEalFileClose)(pFile); } //////////////////////////////////////////////////////////////////////////////////////////////////// bool EalFileExists(eal_id Tag, const char* pPath) { return (*gEalFileDllInterface.pEalFileExists)(Tag, pPath); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_file_status EalFileRead(eal_file* pFile, void* pBuffer, const eal_u64& Position, eal_u32 BufferSize, eal_u32& SizeRead, eal_file_priority Priority) { return (*gEalFileDllInterface.pEalFileRead)(pFile, pBuffer, Position, BufferSize, SizeRead, Priority); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_file_status EalFileAsyncRead(eal_file* pFile, void* pBuffer, eal_u32 Size, const eal_u64& Pos, eal_async_cb Callback, void* pCookie, eal_file_priority Priority) { return (*gEalFileDllInterface.pEalFileAsyncRead)(pFile, pBuffer, Size, Pos, Callback, pCookie, Priority); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_file_status EalFileWrite(eal_file* pFile, const void* pBuffer, const eal_u64& Position, eal_u32 BufferSize, eal_u32& SizeWritten) { return (*gEalFileDllInterface.pEalFileWrite)(pFile, pBuffer, Position, BufferSize, SizeWritten); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_u64 EalFileGetSize(eal_file* pFile) { return (*gEalFileDllInterface.pEalFileGetSize)(pFile); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_file_status EalFileFlush(eal_file* pFile) { return (*gEalFileDllInterface.pEalFileFlush)(pFile); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_u32 EalFileGetBufferAlignment(eal_file* pFile) { return (*gEalFileDllInterface.pEalFileGetBufferAlignment)(pFile); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_u32 EalFileGetSectorSize(eal_file* pFile) { return (*gEalFileDllInterface.pEalFileGetSectorSize)(pFile); } //////////////////////////////////////////////////////////////////////////////////////////////////// char EalFileGetSeparator() { return (*gEalFileDllInterface.pEalFileGetSeparator)(); } //////////////////////////////////////////////////////////////////////////////////////////////////// // New since version 3.0 //////////////////////////////////////////////////////////////////////////////////////////////////// eal_file_status EalFileExistsWithStatus(eal_id Tag, const char* pPath) { return (*gEalFileDllInterface.pEalFileExistsWithStatus)(Tag, pPath); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_file_status EalFileAsyncWrite(eal_file* pFile, const void* pBuffer, eal_u32 Size, const eal_u64& Pos, eal_async_cb Callback, void* pCookie, eal_file_priority Priority) { return (*gEalFileDllInterface.pEalFileAsyncWrite)(pFile, pBuffer, Size, Pos, Callback, pCookie, Priority); } //////////////////////////////////////////////////////////////////////////////////////////////////// eal_file_status EalFileGetSizeWithStatus(eal_file* pFile, eal_u64& FileSize) { return (*gEalFileDllInterface.pEalFileGetSizeWithStatus)(pFile, FileSize); } //////////////////////////////////////////////////////////////////////////////////////////////////// #else //////////////////////////////////////////////////////////////////////////////////////////////////// // Engine Side void EalFileDllPopulateInterface(eal_file_dll_interface& Interface) { Interface.pEalFileLibInit = EalFileLibInit; Interface.pEalFileLibShutdown = EalFileLibShutdown; Interface.pEalFileOpen = EalFileOpen; Interface.pEalFileClose = EalFileClose; Interface.pEalFileExists = EalFileExists; Interface.pEalFileRead = EalFileRead; Interface.pEalFileAsyncRead = EalFileAsyncRead; Interface.pEalFileWrite = EalFileWrite; Interface.pEalFileGetSize = EalFileGetSize; Interface.pEalFileFlush = EalFileFlush; Interface.pEalFileGetBufferAlignment = EalFileGetBufferAlignment; Interface.pEalFileGetSectorSize = EalFileGetSectorSize; Interface.pEalFileGetSeparator = EalFileGetSeparator; // New since version 3.0 Interface.pEalFileExistsWithStatus = EalFileExistsWithStatus; Interface.pEalFileAsyncWrite = EalFileAsyncWrite; Interface.pEalFileGetSizeWithStatus = EalFileGetSizeWithStatus; } //////////////////////////////////////////////////////////////////////////////////////////////////// #endif