Dqn/OS/dn_os_win32.h
2025-05-12 17:09:03 +10:00

42 lines
1.8 KiB
C

#if !defined(DN_OS_WIN32_H)
#define DN_OS_WIN32_H
struct DN_WinError
{
unsigned long code;
DN_Str8 msg;
};
// NOTE: Windows Str8 <-> Str16 ///////////////////////////////////////////
struct DN_Win_FolderIteratorW
{
void *handle;
DN_Str16 file_name;
wchar_t file_name_buf[512];
};
DN_API void DN_Win_ThreadSetName (DN_Str8 name);
// NOTE: DN_Win ////////////////////////////////////////////////////////////////////////////////////
DN_API DN_Str16 DN_Win_ErrorCodeToMsg16Alloc(uint32_t error_code);
DN_API DN_WinError DN_Win_ErrorCodeToMsg (DN_Arena *arena, uint32_t error_code);
DN_API DN_WinError DN_Win_ErrorCodeToMsgAlloc (uint32_t error_code);
DN_API DN_WinError DN_Win_LastError (DN_Arena *arena);
DN_API DN_WinError DN_Win_LastErrorAlloc ();
DN_API void DN_Win_MakeProcessDPIAware ();
// NOTE: Windows Str8 <-> Str16 ////////////////////////////////////////////////////////////////////
DN_API DN_Str16 DN_Win_Str8ToStr16 (DN_Arena *arena, DN_Str8 src);
DN_API int DN_Win_Str8ToStr16Buffer (DN_Str16 src, char *dest, int dest_size);
DN_API DN_Str8 DN_Win_Str16ToStr8 (DN_Arena *arena, DN_Str16 src);
DN_API int DN_Win_Str16ToStr8Buffer (DN_Str16 src, char *dest, int dest_size);
DN_API DN_Str8 DN_Win_Str16ToStr8FromHeap(DN_Str16 src);
// NOTE: Path navigation ///////////////////////////////////////////////////////////////////////////
DN_API DN_Str16 DN_Win_EXEPathW (DN_Arena *arena);
DN_API DN_Str16 DN_Win_EXEDirW (DN_Arena *arena);
DN_API DN_Str8 DN_Win_WorkingDir (DN_Arena *arena, DN_Str8 suffix);
DN_API DN_Str16 DN_Win_WorkingDirW (DN_Arena *arena, DN_Str16 suffix);
DN_API bool DN_Win_DirWIterate (DN_Str16 path, DN_Win_FolderIteratorW *it);
#endif // !defined(DN_OS_WIN32)