123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488 |
- #pragma once
- #include "../Common.h"
- #define BFP_VERSION 2
- #ifdef BFP_INTERNAL
- #define BFP_EXPORT
- #define BFP_CALLTYPE
- #else
- #ifndef BFP_EXPORT
- #define BFP_EXPORT BF_EXPORT
- #endif
- #ifndef BFP_CALLTYPE
- #define BFP_CALLTYPE BF_CALLTYPE
- #endif
- #endif
- // Windows file time (the number of 100-nanosecond intervals that have elapsed since 12:00 A.M. January 1, 1601 Coordinated Universal Time (UTC))
- typedef uint64 BfpTimeStamp;
- typedef intptr BfpThreadId;
- struct BfpThread;
- struct BfpThreadInfo;
- struct BfpFile;
- struct BfpSpawn;
- struct BfpFileWatcher;
- struct BfpProcess;
- struct BfpGUID
- {
- uint32 mData1;
- uint16 mData2;
- uint16 mData3;
- uint8 mData4[8];
- };
- enum BfpResult
- {
- BfpResult_Ok,
- BfpResult_UnknownError,
- BfpResult_InsufficientBuffer,
- BfpResult_NotSupported,
- BfpResult_NoResults,
- BfpResult_InvalidParameter,
- BfpResult_Locked,
- BfpResult_AlreadyExists,
- BfpResult_NotFound,
- BfpResult_ShareError,
- BfpResult_AccessError,
- BfpResult_PartialData,
- BfpResult_TempFileError,
- BfpResult_Timeout,
- BfpResult_NotEmpty,
- BfpResult_PipeListening
- };
- enum BfpSystemResult
- {
- BfpSystemResult_Ok = BfpResult_Ok,
- BfpSystemResult_PartialData = BfpResult_PartialData
- };
- enum BfpFileResult
- {
- BfpFileResult_Ok = BfpResult_Ok,
- BfpFileResult_NoResults = BfpResult_NoResults,
- BfpFileResult_UnknownError = BfpResult_UnknownError,
- BfpFileResult_InvalidParameter = BfpResult_InvalidParameter,
- BfpFileResult_Locked = BfpResult_Locked,
- BfpFileResult_AlreadyExists = BfpResult_AlreadyExists,
- BfpFileResult_NotFound = BfpResult_NotFound,
- BfpFileResult_ShareError = BfpResult_ShareError,
- BfpFileResult_AccessError = BfpResult_AccessError,
- BfpFileResult_PartialData = BfpResult_PartialData,
- BfpFileResult_InsufficientBuffer = BfpResult_InsufficientBuffer,
- BfpFileResult_Timeout = BfpResult_Timeout,
- BfpFileResult_NotEmpty = BfpResult_NotEmpty,
- BfpFileResult_PipeListening = BfpResult_PipeListening
- };
- typedef void(*BfpCrashInfoFunc)();
- enum BfpSystemInitFlags
- {
- BfpSystemInitFlag_None = 0,
- BfpSystemInitFlag_InstallCrashCatcher = 1,
- BfpSystemInitFlag_SilentCrash = 2,
- };
- enum BfpCrashReportKind
- {
- BfpCrashReportKind_Default,
- BfpCrashReportKind_GUI,
- BfpCrashReportKind_Console,
- BfpCrashReportKind_PrintOnly,
- BfpCrashReportKind_None,
- BfpCrashReportKind_System
- };
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_Init(int version, BfpSystemInitFlags flags);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_InitCrashCatcher(BfpSystemInitFlags flags);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_SetCommandLine(int argc, char** argv);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_SetCrashReportKind(BfpCrashReportKind crashReportKind);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_AddCrashInfoFunc(BfpCrashInfoFunc crashInfoFunc);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_AddCrashInfo(const char* str); // Can do at any time, or during CrashInfoFunc callbacks
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_SetCrashRelaunchCmd(const char* str);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_Shutdown();
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_ShutdownCrashCatcher();
- BFP_EXPORT uint32 BFP_CALLTYPE BfpSystem_TickCount();
- BFP_EXPORT BfpTimeStamp BFP_CALLTYPE BfpSystem_GetTimeStamp();
- BFP_EXPORT uint16 BFP_CALLTYPE BfpSystem_EndianSwap16(uint16 val);
- BFP_EXPORT uint32 BFP_CALLTYPE BfpSystem_EndianSwap32(uint32 val);
- BFP_EXPORT uint64 BFP_CALLTYPE BfpSystem_EndianSwap64(uint64 val);
- BFP_EXPORT uint8 BFP_CALLTYPE BfpSystem_InterlockedExchange8(uint8* ptr, uint8 val);
- BFP_EXPORT uint16 BFP_CALLTYPE BfpSystem_InterlockedExchange16(uint16* ptr, uint16 val);
- BFP_EXPORT uint32 BFP_CALLTYPE BfpSystem_InterlockedExchange32(uint32* ptr, uint32 val);
- BFP_EXPORT uint64 BFP_CALLTYPE BfpSystem_InterlockedExchange64(uint64* ptr, uint64 val);
- BFP_EXPORT uint32 BFP_CALLTYPE BfpSystem_InterlockedExchangeAdd8(uint8* ptr, uint8 val);
- BFP_EXPORT uint16 BFP_CALLTYPE BfpSystem_InterlockedExchangeAdd16(uint16* ptr, uint16 val);
- BFP_EXPORT uint32 BFP_CALLTYPE BfpSystem_InterlockedExchangeAdd32(uint32* ptr, uint32 val); // Returns the initial value in 'ptr'
- BFP_EXPORT uint64 BFP_CALLTYPE BfpSystem_InterlockedExchangeAdd64(uint64* ptr, uint64 val);
- BFP_EXPORT uint8 BFP_CALLTYPE BfpSystem_InterlockedCompareExchange8(uint8* ptr, uint8 oldVal, uint8 newVal);
- BFP_EXPORT uint16 BFP_CALLTYPE BfpSystem_InterlockedCompareExchange16(uint16* ptr, uint16 oldVal, uint16 newVal);
- BFP_EXPORT uint32 BFP_CALLTYPE BfpSystem_InterlockedCompareExchange32(uint32* ptr, uint32 oldVal, uint32 newVal);
- BFP_EXPORT uint64 BFP_CALLTYPE BfpSystem_InterlockedCompareExchange64(uint64* ptr, uint64 oldVal, uint64 newVal);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_FatalError(const char* error, const char* title);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_GetCommandLine(char* outStr, int* inOutStrSize, BfpSystemResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_GetExecutablePath(char* outStr, int* inOutStrSize, BfpSystemResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_GetEnvironmentStrings(char* outStr, int* inOutStrSize, BfpSystemResult* outResult);
- BFP_EXPORT int BFP_CALLTYPE BfpSystem_GetNumLogicalCPUs(BfpSystemResult* outResult);
- BFP_EXPORT int64 BFP_CALLTYPE BfpSystem_GetCPUTick();
- BFP_EXPORT int64 BFP_CALLTYPE BfpSystem_GetCPUTickFreq();
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_CreateGUID(BfpGUID* outGuid);
- BFP_EXPORT void BFP_CALLTYPE BfpSystem_GetComputerName(char* outStr, int* inOutStrSize, BfpSystemResult* outResult);
- #ifdef BFP_INTPTR_UNIQUE
- #ifdef BF32
- #define BfpSystem_InterlockedExchangePtr(ptr, val) BfpSystem_InterlockedExchange32((uint32*)(ptr), (uint32)(val))
- #define BfpSystem_InterlockedExchangeAddPtr(ptr, val) BfpSystem_InterlockedExchangeAdd32((uint32*)(ptr), (uint32)(val))
- #define BfpSystem_InterlockedCompareExchangePtr(ptr, oldVal, newVal) BfpSystem_InterlockedCompareExchange32((uint32*)(ptr), (uint32)(oldVal), (uint32)(newVal))
- #define BfpSystem_EndianSwapPtr(val) BfpSystem_EndianSwap32((uint32)(val))
- #else
- #define BfpSystem_InterlockedExchangePtr(ptr, val) BfpSystem_InterlockedExchange64((uint64*)(ptr), (uint64)(val))
- #define BfpSystem_InterlockedExchangeAddPtr(ptr, val) BfpSystem_InterlockedExchangeAdd64((uint64*)(ptr), (uint64)(val))
- #define BfpSystem_InterlockedCompareExchangePtr(ptr, oldVal, newVal) BfpSystem_InterlockedCompareExchange64((uint64*)(ptr), (uint64)(oldVal), (uint64)(newVal))
- #define BfpSystem_EndianSwapPtr(val) BfpSystem_EndianSwap64((uint64)(val))
- #endif
- #else
- #ifdef BF32
- #define BfpSystem_InterlockedExchangePtr BfpSystem_InterlockedExchange32
- #define BfpSystem_InterlockedExchangeAddPtr BfpSystem_InterlockedExchangeAdd32
- #define BfpSystem_InterlockedCompareExchangePtr BfpSystem_InterlockedCompareExchange32
- #define BfpSystem_EndianSwapPtr BfpSystem_EndianSwap32
- #else
- #define BfpSystem_InterlockedExchangePtr BfpSystem_InterlockedExchange64
- #define BfpSystem_InterlockedExchangeAddPtr BfpSystem_InterlockedExchangeAdd64
- #define BfpSystem_InterlockedCompareExchangePtr BfpSystem_InterlockedCompareExchange64
- #define BfpSystem_EndianSwapPtr BfpSystem_EndianSwap64
- #endif
- #endif
- enum BfpProcessResult
- {
- BfpProcessResult_Ok = BfpResult_Ok,
- BfpProcessResult_UnknownError = BfpResult_UnknownError,
- BfpProcessResult_InsufficientBuffer = BfpResult_InsufficientBuffer,
- BfpProcessResult_NotFound = BfpResult_NotFound
- };
- BFP_EXPORT intptr BFP_CALLTYPE BfpProcess_GetCurrentId();
- BFP_EXPORT bool BFP_CALLTYPE BfpProcess_IsRemoteMachine(const char* machineName);
- BFP_EXPORT BfpProcess* BFP_CALLTYPE BfpProcess_GetById(const char* machineName, int processId, BfpProcessResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpProcess_Enumerate(const char* machineName, BfpProcess** outProcesses, int* inOutProcessesSize, BfpProcessResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpProcess_Release(BfpProcess* process);
- BFP_EXPORT int BFP_CALLTYPE BfpProcess_GetExitCode(BfpProcess* process, BfpProcessResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpProcess_GetMainWindowTitle(BfpProcess* process, char* outTitle, int* inOutTitleSize, BfpProcessResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpProcess_GetProcessName(BfpProcess* process, char* outName, int* inOutNameSize, BfpProcessResult* outResult);
- BFP_EXPORT int BFP_CALLTYPE BfpProcess_GetProcessId(BfpProcess* process);
- enum BfpSpawnFlags
- {
- BfpSpawnFlag_None = 0,
- BfpSpawnFlag_ArgsIncludesTarget = 1, // Otherwise most platforms prepend targetPath to the args
- BfpSpawnFlag_UseArgsFile = 2,
- BfpSpawnFlag_UseArgsFile_Native = 4,
- BfpSpawnFlag_UseArgsFile_UTF8 = 8,
- BfpSpawnFlag_UseArgsFile_BOM = 0x10,
- BfpSpawnFlag_UseShellExecute = 0x20, // Allows opening non-executable files by file association (ie: documents)
- BfpSpawnFlag_RedirectStdInput = 0x40,
- BfpSpawnFlag_RedirectStdOutput = 0x80,
- BfpSpawnFlag_RedirectStdError = 0x100,
- BfpSpawnFlag_NoWindow = 0x200,
- BfpSpawnFlag_ErrorDialog = 0x400,
- BfpSpawnFlag_Window_Hide = 0x800,
- BfpSpawnFlag_Window_Maximized = 0x1000,
- BfpSpawnFlag_NoActivateWindow = 0x2000,
- };
- enum BfpSpawnResult
- {
- BfpSpawnResult_Ok = BfpResult_Ok,
- BfpSpawnResult_UnknownError = BfpResult_UnknownError,
- BfpSpawnResult_TempFileError = BfpResult_TempFileError
- };
- enum BfpKillFlags
- {
- BfpKillFlag_None = 0,
- BfpKillFlag_KillChildren = 1
- };
- BFP_EXPORT BfpSpawn* BFP_CALLTYPE BfpSpawn_Create(const char* targetPath, const char* args, const char* workingDir, const char* env, BfpSpawnFlags flags, BfpSpawnResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpSpawn_Release(BfpSpawn* spawn);
- BFP_EXPORT void BFP_CALLTYPE BfpSpawn_Kill(BfpSpawn* spawn, int exitCode, BfpKillFlags killFlags, BfpSpawnResult* outResult);
- BFP_EXPORT bool BFP_CALLTYPE BfpSpawn_WaitFor(BfpSpawn* spawn, int waitMS, int* outExitCode, BfpSpawnResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpSpawn_GetStdHandles(BfpSpawn* spawn, BfpFile** outStdIn, BfpFile** outStdOut, BfpFile** outStdErr); // Caller must release the files
- BFP_EXPORT int BFP_CALLTYPE BfpSpawn_GetProcessId(BfpSpawn* spawn);
- enum BfpThreadCreateFlags
- {
- BfpThreadCreateFlag_None = 0,
- BfpThreadCreateFlag_Suspended = 1,
- BfpThreadCreateFlag_StackSizeReserve = 2, // Otherwise is a 'commit'
- };
- typedef void (BFP_CALLTYPE *BfpThreadStartProc)(void* threadParam);
- typedef void (BFP_CALLTYPE* BfpTLSProc)(void* threadParam);
- enum BfpThreadPriority
- {
- BfpThreadPriority_VeryLow = -2,
- BfpThreadPriority_Low = -1,
- BfpThreadPriority_Normal = 0,
- BfpThreadPriority_High = 1,
- BfpThreadPriority_VeryHigh =2
- };
- enum BfpThreadInfoFlags
- {
- BfpThreadInfoFlags_None = 0,
- BfpThreadInfoFlags_NoCache = 1
- };
- enum BfpThreadResult
- {
- BfpThreadResult_Ok = BfpResult_Ok,
- BfpThreadResult_UnknownError = BfpResult_UnknownError,
- BfpThreadResult_InsufficientBuffer = BfpResult_InsufficientBuffer,
- BfpThreadResult_NotSupported = BfpResult_NotSupported
- };
- BFP_EXPORT BfpThread* BFP_CALLTYPE BfpThread_Create(BfpThreadStartProc startProc, void* threadParam, intptr stackSize = 0, BfpThreadCreateFlags flags = BfpThreadCreateFlag_None, BfpThreadId* outThreadId = NULL);
- BFP_EXPORT void BFP_CALLTYPE BfpThread_Release(BfpThread* thread);
- BFP_EXPORT void BFP_CALLTYPE BfpThread_SetName(BfpThread* thread, const char* name, BfpThreadResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpThread_GetName(BfpThread* thread, char* outName, int* inOutNameSize, BfpThreadResult* outResult);
- BFP_EXPORT BfpThread* BFP_CALLTYPE BfpThread_GetCurrent();
- BFP_EXPORT BfpThreadId BFP_CALLTYPE BfpThread_GetCurrentId();
- BFP_EXPORT bool BFP_CALLTYPE BfpThread_WaitFor(BfpThread* thread, int waitMS);
- BFP_EXPORT BfpThreadPriority BFP_CALLTYPE BfpThread_GetPriority(BfpThread* thread, BfpThreadResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpThread_SetPriority(BfpThread* thread, BfpThreadPriority threadPriority, BfpThreadResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpThread_Suspend(BfpThread* thread, BfpThreadResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpThread_Resume(BfpThread* thread, BfpThreadResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpThread_GetIntRegisters(BfpThread* thread, intptr* outStackPtr, intptr* outIntRegs, int* inOutIntRegCount, BfpThreadResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpThread_Sleep(int sleepMS);
- BFP_EXPORT bool BFP_CALLTYPE BfpThread_Yield();
- BFP_EXPORT BfpThreadInfo* BFP_CALLTYPE BfpThreadInfo_Create();
- BFP_EXPORT void BFP_CALLTYPE BfpThreadInfo_Release(BfpThreadInfo* threadInfo);
- BFP_EXPORT void BFP_CALLTYPE BfpThreadInfo_GetStackInfo(BfpThreadInfo* thread, intptr* outStackBase, int* outStackLimit, BfpThreadInfoFlags flags, BfpThreadResult* outResult);
- struct BfpCritSect;
- BFP_EXPORT BfpCritSect* BFP_CALLTYPE BfpCritSect_Create();
- BFP_EXPORT void BFP_CALLTYPE BfpCritSect_Release(BfpCritSect* critSect);
- BFP_EXPORT void BFP_CALLTYPE BfpCritSect_Enter(BfpCritSect* critSect);
- BFP_EXPORT bool BFP_CALLTYPE BfpCritSect_TryEnter(BfpCritSect* critSect, int waitMS);
- BFP_EXPORT void BFP_CALLTYPE BfpCritSect_Leave(BfpCritSect* critSect);
- struct BfpTLS;
- BFP_EXPORT BfpTLS* BFP_CALLTYPE BfpTLS_Create(BfpTLSProc exitProc);
- BFP_EXPORT void BFP_CALLTYPE BfpTLS_Release(BfpTLS* tls);
- BFP_EXPORT void BFP_CALLTYPE BfpTLS_SetValue(BfpTLS* tls, void* value);
- BFP_EXPORT void* BFP_CALLTYPE BfpTLS_GetValue(BfpTLS* tls);
- enum BfpEventFlags
- {
- BfpEventFlag_None = 0,
- BfpEventFlag_AllowAutoReset = 1,
- BfpEventFlag_AllowManualReset = 2,
- BfpEventFlag_InitiallySet_Auto = 4,
- BfpEventFlag_InitiallySet_Manual = 8
- };
- enum BfpEventResult
- {
- BfpEventResult_Ok = BfpResult_Ok,
- BfpEventResult_NotSupported = BfpResult_NotSupported
- };
- struct BfpEvent;
- BFP_EXPORT BfpEvent* BFP_CALLTYPE BfpEvent_Create(BfpEventFlags flags);
- BFP_EXPORT void BFP_CALLTYPE BfpEvent_Release(BfpEvent* event);
- BFP_EXPORT void BFP_CALLTYPE BfpEvent_Set(BfpEvent* event, bool requireManualReset);
- BFP_EXPORT void BFP_CALLTYPE BfpEvent_Reset(BfpEvent* event, BfpEventResult* outResult);
- BFP_EXPORT bool BFP_CALLTYPE BfpEvent_WaitFor(BfpEvent* event, int waitMS);
- enum BfpLibResult
- {
- BfpLibResult_Ok = BfpResult_Ok,
- BfpLibResult_UnknownError = BfpResult_UnknownError,
- BfpLibResult_InsufficientBuffer = BfpResult_InsufficientBuffer
- };
- struct BfpDynLib;
- BFP_EXPORT BfpDynLib* BFP_CALLTYPE BfpDynLib_Load(const char* fileName);
- BFP_EXPORT void BFP_CALLTYPE BfpDynLib_Release(BfpDynLib* lib);
- BFP_EXPORT void BFP_CALLTYPE BfpDynLib_GetFilePath(BfpDynLib* lib, char* outPath, int* inOutPathSize, BfpLibResult* outResult);
- BFP_EXPORT void* BFP_CALLTYPE BfpDynLib_GetProcAddress(BfpDynLib* lib, const char* name);
- enum BfpSysDirectoryKind
- {
- BfpSysDirectoryKind_Default, // Home on Linux, Desktop on Windows, etc.
- BfpSysDirectoryKind_Home,
- BfpSysDirectoryKind_System,
- BfpSysDirectoryKind_Desktop,
- BfpSysDirectoryKind_Desktop_Common,
- BfpSysDirectoryKind_AppData_Local,
- BfpSysDirectoryKind_AppData_LocalLow,
- BfpSysDirectoryKind_AppData_Roaming,
- BfpSysDirectoryKind_Programs,
- BfpSysDirectoryKind_Programs_Common,
- BfpSysDirectoryKind_Documents
- };
- struct BfpFindFileData;
- BFP_EXPORT void BFP_CALLTYPE BfpDirectory_Create(const char* name, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpDirectory_Rename(const char* oldName, const char* newName, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpDirectory_Delete(const char* name, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpDirectory_GetCurrent(char* outPath, int* inOutPathSize, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpDirectory_SetCurrent(const char* path, BfpFileResult* outResult);
- BFP_EXPORT bool BFP_CALLTYPE BfpDirectory_Exists(const char* path);
- BFP_EXPORT void BFP_CALLTYPE BfpDirectory_GetSysDirectory(BfpSysDirectoryKind sysDirKind, char* outPath, int* inOutPathLen, BfpFileResult* outResult);
- enum BfpFileCreateKind
- {
- BfpFileCreateKind_CreateAlways,
- BfpFileCreateKind_CreateIfNotExists,
- BfpFileCreateKind_OpenExisting,
- BfpFileCreateKind_OpenAlways
- };
- enum BfpFileCreateFlags
- {
- BfpFileCreateFlag_Read = 1,
- BfpFileCreateFlag_Write = 2,
- BfpFileCreateFlag_ShareRead = 4,
- BfpFileCreateFlag_ShareWrite = 8,
- BfpFileCreateFlag_ShareDelete = 0x10,
- BfpFileCreateFlag_Append = 0x20,
- BfpFileCreateFlag_Truncate = 0x40,
- BfpFileCreateFlag_WriteThrough = 0x80,
- BfpFileCreateFlag_DeleteOnClose = 0x100,
- BfpFileCreateFlag_NoBuffering = 0x200,
- BfpFileCreateFlag_NonBlocking = 0x400,
- BfpFileCreateFlag_AllowTimeouts = 0x800,
- BfpFileCreateFlag_Pipe = 0x1000,
- };
- enum BfpFileSeekKind
- {
- BfpFileSeekKind_Absolute,
- BfpFileSeekKind_Relative,
- BfpFileSeekKind_FromEnd
- };
- enum BfpFileAttributes
- {
- BfpFileAttribute_None = 0,
- BfpFileAttribute_Normal = 1,
- BfpFileAttribute_Directory = 2,
- BfpFileAttribute_SymLink = 4,
- BfpFileAttribute_Device = 8,
- BfpFileAttribute_ReadOnly = 0x10,
- BfpFileAttribute_Hidden = 0x20,
- BfpFileAttribute_System = 0x40,
- BfpFileAttribute_Temporary = 0x80,
- BfpFileAttribute_Offline = 0x100,
- BfpFileAttribute_Encrypted = 0x200,
- BfpFileAttribute_Archive = 0x400,
- };
- enum BfpFileCopyKind
- {
- BfpFileCopyKind_Always,
- BfpFileCopyKind_IfNotExists,
- BfpFileCopyKind_IfNewer,
- };
- enum BfpFileWaitFlags
- {
- BfpFileWaitFlag_None = 0,
- BfpFileWaitFlag_Read = 1,
- BfpFileWaitFlag_Write = 2,
- };
- enum BfpFileStdKind
- {
- BfpFileStdKind_StdOut,
- BfpFileStdKind_StdError,
- BfpFileStdKind_StdIn
- };
- 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 BfpFile* BFP_CALLTYPE BfpFile_GetFromHandle(intptr handle, BfpFileResult* outResult);
- 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);
- BFP_EXPORT intptr BFP_CALLTYPE BfpFile_Read(BfpFile* file, void* buffer, intptr size, int timeoutMS, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_Flush(BfpFile* file);
- BFP_EXPORT int64 BFP_CALLTYPE BfpFile_GetFileSize(BfpFile* file);
- BFP_EXPORT int64 BFP_CALLTYPE BfpFile_Seek(BfpFile* file, int64 offset, BfpFileSeekKind seekKind);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_Truncate(BfpFile* file, BfpFileResult* outResult);
- BFP_EXPORT BfpTimeStamp BFP_CALLTYPE BfpFile_GetTime_LastWrite(const char* path);
- BFP_EXPORT BfpFileAttributes BFP_CALLTYPE BfpFile_GetAttributes(const char* path, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_SetAttributes(const char* path, BfpFileAttributes attribs, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_Copy(const char* oldPath, const char* newPath, BfpFileCopyKind copyKind, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_Rename(const char* oldPath, const char* newPath, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_Delete(const char* path, BfpFileResult* outResult);
- BFP_EXPORT bool BFP_CALLTYPE BfpFile_Exists(const char* path);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_GetTempPath(char* outPath, int* inOutPathSize, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_GetTempFileName(char* outName, int* inOutNameSize, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_GetFullPath(const char* inPath, char* outPath, int* inOutPathSize, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpFile_GetActualPath(const char* inPath, char* outPath, int* inOutPathSize, BfpFileResult* outResult);
- enum BfpFileChangeKind
- {
- BfpFileChangeKind_Added,
- BfpFileChangeKind_Removed,
- BfpFileChangeKind_Modified,
- BfpFileChangeKind_Renamed,
- BfpFileChangeKind_Failed
- };
- typedef void(*BfpDirectoryChangeFunc)(BfpFileWatcher* watcher, void* userData, BfpFileChangeKind changeKind, const char* directory, const char* fileName, const char* oldName);
- enum BfpFileWatcherFlags
- {
- BfpFileWatcherFlag_None = 0,
- BfpFileWatcherFlag_IncludeSubdirectories = 1
- };
- BFP_EXPORT BfpFileWatcher* BFP_CALLTYPE BfpFileWatcher_WatchDirectory(const char* path, BfpDirectoryChangeFunc callback, BfpFileWatcherFlags flags, void* userData, BfpFileResult* outResult);
- BFP_EXPORT void BFP_CALLTYPE BfpFileWatcher_Release(BfpFileWatcher* fileWatcher);
- enum BfpFindFileFlags
- {
- BfpFindFileFlag_None = 0,
- BfpFindFileFlag_Files = 1,
- BfpFindFileFlag_Directories = 2,
- };
- BFP_EXPORT BfpFindFileData* BFP_CALLTYPE BfpFindFileData_FindFirstFile(const char* path, BfpFindFileFlags flags, BfpFileResult* outResult);
- BFP_EXPORT bool BFP_CALLTYPE BfpFindFileData_FindNextFile(BfpFindFileData* findData);
- BFP_EXPORT void BFP_CALLTYPE BfpFindFileData_GetFileName(BfpFindFileData* findData, char* outName, int* inOutNameSize, BfpFileResult* outResult);
- BFP_EXPORT BfpTimeStamp BFP_CALLTYPE BfpFindFileData_GetTime_LastWrite(BfpFindFileData* findData);
- BFP_EXPORT BfpTimeStamp BFP_CALLTYPE BfpFindFileData_GetTime_Created(BfpFindFileData* findData);
- BFP_EXPORT BfpTimeStamp BFP_CALLTYPE BfpFindFileData_GetTime_Access(BfpFindFileData* findData);
- BFP_EXPORT BfpFileAttributes BFP_CALLTYPE BfpFindFileData_GetFileAttributes(BfpFindFileData* findData);
- BFP_EXPORT int64 BFP_CALLTYPE BfpFindFileData_GetFileSize(BfpFindFileData* findData);
- BFP_EXPORT void BFP_CALLTYPE BfpFindFileData_Release(BfpFindFileData* findData);
- BFP_EXPORT int BFP_CALLTYPE BfpStack_CaptureBackTrace(int framesToSkip, intptr* outFrames, int wantFrameCount);
- BFP_EXPORT void BFP_CALLTYPE BfpOutput_DebugString(const char* str);
|