From 83f34b0c47087325444e3a17ae5fd358445f9c1b Mon Sep 17 00:00:00 2001 From: Jamie Reece Wilson Date: Fri, 19 Apr 2024 04:33:57 +0100 Subject: [PATCH] [*] I was right. String views are [mostly] pointless (*) 03:28:55:638 17>2 of 53388 functions (<0.1%) were compiled, the rest were copied from previous compilation. 03:28:55:638 17> 0 functions were new in current compilation 03:28:55:638 17> 65 functions had inline decision re-evaluated but remain unchanged 03:28:56:749 17>Finished generating code the header of const AuString & is the same as std::string_view therefore nothing changes. in fact, we still need to alloc strings a bunch of times for a zero terminated string. worse, GetValue(const AuString &key); + AUKN_SYM AuOptional GetValue(const AuROString &key); /** * @brief Returns a constant array of values; key=values and /key values @@ -51,7 +51,7 @@ namespace Aurora::CmdLine * @return * @warning multiple of @param key must exist */ - AUKN_SYM const AuList &GetValues(const AuString &key); + AUKN_SYM const AuList &GetValues(const AuROString &key); /** * @brief Returns a constant array of flag keys diff --git a/Include/Aurora/Console/Commands/Commands.hpp b/Include/Aurora/Console/Commands/Commands.hpp index 9bffa55e..e92a3f21 100644 --- a/Include/Aurora/Console/Commands/Commands.hpp +++ b/Include/Aurora/Console/Commands/Commands.hpp @@ -17,22 +17,22 @@ namespace Aurora::Async namespace Aurora::Console::Commands { - AUKN_SYM void AddCommand(const AuString &tag, const Parse::ParseObject &commandStructure, const AuSPtr &subscriber); + AUKN_SYM void AddCommand(const AuROString &tag, const Parse::ParseObject &commandStructure, const AuSPtr &subscriber); - AUKN_SYM void RemoveCommand(const AuString &tag); + AUKN_SYM void RemoveCommand(const AuROString &tag); /** * Dispatch a command to the main thread or aurora async overloaded command dispatcher thread worker id */ - AUKN_SYM bool DispatchCommand(const AuString &string); + AUKN_SYM bool DispatchCommand(const AuROString &string); /** * Parses `string` and dispatches the parsed command on the current thread instantly */ - AUKN_SYM bool DispatchCommandThisThread(const AuString &string); + AUKN_SYM bool DispatchCommandThisThread(const AuROString &string); /** * Parses `string` on the current thread and then schedules the ICommandSubscriber callback on the specified thread */ - AUKN_SYM bool DispatchCommandToAsyncRunner(const AuString &string, Async::WorkerPId_t id); + AUKN_SYM bool DispatchCommandToAsyncRunner(const AuROString &string, Async::WorkerPId_t id); } \ No newline at end of file diff --git a/Include/Aurora/Crypto/PEM/PEM.hpp b/Include/Aurora/Crypto/PEM/PEM.hpp index 9632c212..495615e5 100644 --- a/Include/Aurora/Crypto/PEM/PEM.hpp +++ b/Include/Aurora/Crypto/PEM/PEM.hpp @@ -15,9 +15,9 @@ namespace Aurora::Crypto::PEM AUKN_SYM AuString PublicRSAToString(const DerBuffer &in); AUKN_SYM AuString PrivateRSAToString(const DerBuffer &in); - AUKN_SYM bool FromString(const AuString &in, Aurora::Crypto::X509::Certificate &out); - AUKN_SYM bool PublicFromString(const AuString &in, DerBuffer &out); - AUKN_SYM bool PrivateFromString(const AuString &in, DerBuffer &out); - AUKN_SYM bool PublicRSAFromString(const AuString &in, DerBuffer &out); - AUKN_SYM bool PrivateRSAFromString(const AuString &in, DerBuffer &out); + AUKN_SYM bool FromString(const AuROString &in, Aurora::Crypto::X509::Certificate &out); + AUKN_SYM bool PublicFromString(const AuROString &in, DerBuffer &out); + AUKN_SYM bool PrivateFromString(const AuROString &in, DerBuffer &out); + AUKN_SYM bool PublicRSAFromString(const AuROString &in, DerBuffer &out); + AUKN_SYM bool PrivateRSAFromString(const AuROString &in, DerBuffer &out); } \ No newline at end of file diff --git a/Include/Aurora/IO/Character/Providers.hpp b/Include/Aurora/IO/Character/Providers.hpp index ca010a37..fb251556 100644 --- a/Include/Aurora/IO/Character/Providers.hpp +++ b/Include/Aurora/IO/Character/Providers.hpp @@ -12,5 +12,5 @@ namespace Aurora::IO::Character // you are responsible for maintaining a lock over shared string writes and provider use instances // (string may change so long as a read/write lock is protecting ICharacterProviderEx reads) AUKN_SHARED_API(ProviderFromSharedString, ICharacterProviderEx, const AuSPtr &str, AuUInt index = 0); - AUKN_SHARED_API(ProviderFromString, ICharacterProviderEx, const AuString &str, AuUInt index = 0); + AUKN_SHARED_API(ProviderFromString, ICharacterProviderEx, const AuROString &str, AuUInt index = 0); } \ No newline at end of file diff --git a/Include/Aurora/IO/FS/Async.hpp b/Include/Aurora/IO/FS/Async.hpp index 022da456..6d106cf9 100644 --- a/Include/Aurora/IO/FS/Async.hpp +++ b/Include/Aurora/IO/FS/Async.hpp @@ -10,7 +10,7 @@ namespace Aurora::IO::FS { AUKN_SHARED_API(OpenAsync, IAsyncFileStream, - const AuString &path, + const AuROString &path, EFileOpenMode openMode, AuOptional optbDirectIO = { true }, AuOptional optLock = { EFileAdvisoryLockLevel::eNoSafety }); diff --git a/Include/Aurora/IO/FS/FS.hpp b/Include/Aurora/IO/FS/FS.hpp index f0ec96e5..6d5af563 100644 --- a/Include/Aurora/IO/FS/FS.hpp +++ b/Include/Aurora/IO/FS/FS.hpp @@ -17,34 +17,34 @@ namespace Aurora::IO::FS Lists files with respect to a given partial or full path of a directory @param files relative address of an entry */ - AUKN_SYM bool FilesInDirectory(const AuString &string, AuList &files); + AUKN_SYM bool FilesInDirectory(const AuROString &string, AuList &files); /** Lists directories with respect to a given partial or full path of a directory @param files relative address of an entry */ - AUKN_SYM bool DirsInDirectory(const AuString &string, AuList &dirs); + AUKN_SYM bool DirsInDirectory(const AuROString &string, AuList &dirs); /** @brief Opens a directory iterator given a directory path * @param directory An Aurora path as defined in the README * @return */ - AUKN_SYM AuSPtr ReadDir(const AuString &directory); + AUKN_SYM AuSPtr ReadDir(const AuROString &directory); /** * @brief * @param string * @return */ - AUKN_SYM AuSPtr ReadDirRecursive(const AuString &string, AuOptional bTraverseSymlinks = { true }); + AUKN_SYM AuSPtr ReadDirRecursive(const AuROString &string, AuOptional bTraverseSymlinks = { true }); /** * @brief Recursively deletes any given path * @param string * @return */ - AUKN_SYM bool DirDeleter(const AuString &string); + AUKN_SYM bool DirDeleter(const AuROString &string); /** * @brief @@ -52,7 +52,7 @@ namespace Aurora::IO::FS * @param failingPaths * @return */ - AUKN_SYM bool DirDeleterEx(const AuString &string, AuList &failingPaths); + AUKN_SYM bool DirDeleterEx(const AuROString &string, AuList &failingPaths); struct CopyDirResult { @@ -76,7 +76,7 @@ namespace Aurora::IO::FS * @param blob * @return true on success */ - AUKN_SYM bool WriteFile(const AuString &path, const Memory::MemoryViewRead &blob); + AUKN_SYM bool WriteFile(const AuROString &path, const Memory::MemoryViewRead &blob); /** * @brief Same as WriteFile except fails if the file already exists @@ -88,7 +88,7 @@ namespace Aurora::IO::FS * @param blob * @return */ - AUKN_SYM bool WriteNewFile(const AuString &path, const Memory::MemoryViewRead &blob); + AUKN_SYM bool WriteNewFile(const AuROString &path, const Memory::MemoryViewRead &blob); /** * @brief Writes a UTF-8 string onto disk with a BOM @@ -97,7 +97,7 @@ namespace Aurora::IO::FS * @param str UTF-8 bytecode (can be ASCII) * @return true on success */ - AUKN_SYM bool WriteString(const AuString &path, const AuString &str); + AUKN_SYM bool WriteString(const AuROString &path, const AuROString &str); /** * @brief Same as WriteString except fails if the file already exists @@ -109,7 +109,7 @@ namespace Aurora::IO::FS * @param str * @return */ - AUKN_SYM bool WriteNewString(const AuString &path, const AuString &str); + AUKN_SYM bool WriteNewString(const AuROString &path, const AuROString &str); /** * @brief Returns a bytebuffer (does not write into) of a binary files contents @@ -117,7 +117,7 @@ namespace Aurora::IO::FS * @param buffer * @return */ - AUKN_SYM bool ReadFile(const AuString &path, Memory::ByteBuffer &buffer); + AUKN_SYM bool ReadFile(const AuROString &path, Memory::ByteBuffer &buffer); /** * @brief Reads a UTF-8 string from the disk. @@ -130,9 +130,9 @@ namespace Aurora::IO::FS * @param buffer * @return true on success */ - AUKN_SYM bool ReadString(const AuString &path, AuString &buffer); + AUKN_SYM bool ReadString(const AuROString &path, AuString &buffer); - AUKN_SYM bool ReadFileHeader(const AuString &path, AuUInt16 uLength, Memory::ByteBuffer &buffer); + AUKN_SYM bool ReadFileHeader(const AuROString &path, AuUInt16 uLength, Memory::ByteBuffer &buffer); /** * @brief Returns a non-atomic non-promise that the requested file didn't exist. @@ -140,20 +140,20 @@ namespace Aurora::IO::FS * Do not solely rely on this return value. * @param path An Aurora path as defined in the README */ - AUKN_SYM bool FileExists(const AuString &path); + AUKN_SYM bool FileExists(const AuROString &path); /** * @brief Returns a non-atomic non-promise that the requested directory didn't exist. * @param path An Aurora path as defined in the README */ - AUKN_SYM bool DirExists(const AuString &path); + AUKN_SYM bool DirExists(const AuROString &path); /** * @brief * @param path * @return */ - AUKN_SYM bool DirMk(const AuString &path); + AUKN_SYM bool DirMk(const AuROString &path); /** * @brief Deletes a file or an empty directory @@ -162,7 +162,7 @@ namespace Aurora::IO::FS * @warning Directory iteration is not supported. No FS API will do * iterative tasks for you. */ - AUKN_SYM bool Remove(const AuString &path); + AUKN_SYM bool Remove(const AuROString &path); /** * @brief Attempts to move a directory or file from the source @@ -172,7 +172,7 @@ namespace Aurora::IO::FS * @param dest The source Aurora path as defined in the README * @return true on success */ - AUKN_SYM bool Relink(const AuString &src, const AuString &dest); + AUKN_SYM bool Relink(const AuROString &src, const AuROString &dest); /** * @brief Performs a synchronous platform-optimized copy of @@ -184,21 +184,21 @@ namespace Aurora::IO::FS * iterative tasks for you. * @return true on success */ - AUKN_SYM bool Copy(const AuString &src, const AuString &dest); + AUKN_SYM bool Copy(const AuROString &src, const AuROString &dest); /** * @brief Specifies download level of trust * @param path * @return */ - AUKN_SYM bool BlockFile(const AuString &path); + AUKN_SYM bool BlockFile(const AuROString &path); /** * @brief Specifies generic local-system/trusted level of trust * @param path * @return */ - AUKN_SYM bool UnblockFile(const AuString &path); + AUKN_SYM bool UnblockFile(const AuROString &path); /** * @brief Specifies user/executable level trust of a file @@ -210,11 +210,11 @@ namespace Aurora::IO::FS * @param path * @return */ - AUKN_SYM bool TrustFile(const AuString &path); + AUKN_SYM bool TrustFile(const AuROString &path); - AUKN_SYM bool IsFileBlocked(const AuString &path); + AUKN_SYM bool IsFileBlocked(const AuROString &path); - AUKN_SYM bool IsFileTrusted(const AuString &path); + AUKN_SYM bool IsFileTrusted(const AuROString &path); /** * @brief Transfers the contents of the specified filepath through a @@ -222,13 +222,13 @@ namespace Aurora::IO::FS * @warning This file API does not relate to file-system level compression * @param path = ur mother */ - AUKN_SYM bool Compress(const AuString &path, AuInt8 level = 17); + AUKN_SYM bool Compress(const AuROString &path, AuInt8 level = 17); - AUKN_SYM bool CompressEx(const AuString &path, const AuString &suffix, Compression::ECompressionType type, AuInt8 level); + AUKN_SYM bool CompressEx(const AuROString &path, const AuROString &suffix, Compression::ECompressionType type, AuInt8 level); - AUKN_SYM bool Decompress(const AuString &path); + AUKN_SYM bool Decompress(const AuROString &path); - AUKN_SYM bool DecompressEx(const AuString &path, const AuString &suffix, Compression::ECompressionType type); + AUKN_SYM bool DecompressEx(const AuROString &path, const AuROString &suffix, Compression::ECompressionType type); struct UpdateTimes { @@ -242,14 +242,14 @@ namespace Aurora::IO::FS * @param times * @return */ - AUKN_SYM bool UpdateFileTimes(const AuString &path, const UpdateTimes ×); + AUKN_SYM bool UpdateFileTimes(const AuROString &path, const UpdateTimes ×); /** * @brief * @param path * @return */ - AUKN_SYM AuList FileAttrsList(const AuString &path); + AUKN_SYM AuList FileAttrsList(const AuROString &path); /** * @brief @@ -257,7 +257,7 @@ namespace Aurora::IO::FS * @param attr * @return */ - AUKN_SYM AuResult FileAttrsGet(const AuString &path, const AuString &attr); + AUKN_SYM AuResult FileAttrsGet(const AuROString &path, const AuROString &attr); /** * @brief @@ -266,7 +266,7 @@ namespace Aurora::IO::FS * @param view * @return */ - AUKN_SYM bool FileAttrsSet(const AuString &path, const AuString &attr, const Memory::MemoryViewRead &view); + AUKN_SYM bool FileAttrsSet(const AuROString &path, const AuROString &attr, const Memory::MemoryViewRead &view); /** * @brief @@ -274,7 +274,7 @@ namespace Aurora::IO::FS * @param attr * @return */ - AUKN_SYM bool FileAttrsDel(const AuString &path, const AuString &attr); + AUKN_SYM bool FileAttrsDel(const AuROString &path, const AuROString &attr); /** * @brief Normalizes an arbitrary string of in @@ -282,7 +282,7 @@ namespace Aurora::IO::FS * @param in * @return */ - AUKN_SYM bool NormalizePath(AuString &out, const AuString &in); + AUKN_SYM bool NormalizePath(AuString &out, const AuROString &in); /** * @brief Strips the filename part out of an Aurora path @@ -290,7 +290,7 @@ namespace Aurora::IO::FS * @param path * @return */ - AUKN_SYM bool GetFileFromPath(AuString &out, const AuString &path); + AUKN_SYM bool GetFileFromPath(AuROString &out, const AuROString &path); /** * @brief Strips the directory part out of an Aurora path @@ -298,9 +298,9 @@ namespace Aurora::IO::FS * @param path * @return */ - AUKN_SYM bool GetDirectoryFromPath(AuString &out, const AuString &path); + AUKN_SYM bool GetDirectoryFromPath(AuROString &out, const AuROString &path); - AUKN_SYM bool GoUpToSeparator(AuString &out, const AuString &path); + AUKN_SYM bool GoUpToSeparator(AuROString &out, const AuROString &path); // Further apis can be found in: Stat.hpp, FileStream.hpp, Async.hpp, and Resources.hpp } diff --git a/Include/Aurora/IO/FS/FileStream.hpp b/Include/Aurora/IO/FS/FileStream.hpp index 5c537978..fc561d1b 100644 --- a/Include/Aurora/IO/FS/FileStream.hpp +++ b/Include/Aurora/IO/FS/FileStream.hpp @@ -11,13 +11,13 @@ namespace Aurora::IO::FS { // WARNING: there are no truncate write modes. IFileStream::WriteEoS or IFileStream::SetWriteEoSOnClose must be called by the caller of `Open[Write]/Create`s. - AUKN_SHARED_API(Create, IFileStream, const AuString &path); + AUKN_SHARED_API(Create, IFileStream, const AuROString &path); - AUKN_SHARED_API(OpenRead, IFileStream, const AuString &path, EFileAdvisoryLockLevel successPostAdvisoryLevel = EFileAdvisoryLockLevel::eBlockWrite); + AUKN_SHARED_API(OpenRead, IFileStream, const AuROString &path, EFileAdvisoryLockLevel successPostAdvisoryLevel = EFileAdvisoryLockLevel::eBlockWrite); - AUKN_SHARED_API(OpenWrite, IFileStream, const AuString &path, EFileAdvisoryLockLevel successPostAdvisoryLevel = EFileAdvisoryLockLevel::eBlockReadWrite); + AUKN_SHARED_API(OpenWrite, IFileStream, const AuROString &path, EFileAdvisoryLockLevel successPostAdvisoryLevel = EFileAdvisoryLockLevel::eBlockReadWrite); - AUKN_SHARED_API(Open, IFileStream, const AuString &path, EFileOpenMode mode = EFileOpenMode::eRead, EFileAdvisoryLockLevel successPostAdvisoryLevel = EFileAdvisoryLockLevel::eBlockReadWrite); + AUKN_SHARED_API(Open, IFileStream, const AuROString &path, EFileOpenMode mode = EFileOpenMode::eRead, EFileAdvisoryLockLevel successPostAdvisoryLevel = EFileAdvisoryLockLevel::eBlockReadWrite); AUKN_SHARED_API(OpenBlockingFileStreamFromHandle, IFileStream, const AuSPtr &pIOHandle); } \ No newline at end of file diff --git a/Include/Aurora/IO/FS/Stat.hpp b/Include/Aurora/IO/FS/Stat.hpp index d74b7612..115f06e4 100644 --- a/Include/Aurora/IO/FS/Stat.hpp +++ b/Include/Aurora/IO/FS/Stat.hpp @@ -35,5 +35,5 @@ namespace Aurora::IO::FS /** Classic file stat function */ - AUKN_SYM bool StatFile(const AuString &path, Stat &stat); + AUKN_SYM bool StatFile(const AuROString &path, Stat &stat); } \ No newline at end of file diff --git a/Include/Aurora/IO/IOHandle.hpp b/Include/Aurora/IO/IOHandle.hpp index 656f2709..7c5a3680 100644 --- a/Include/Aurora/IO/IOHandle.hpp +++ b/Include/Aurora/IO/IOHandle.hpp @@ -37,7 +37,7 @@ namespace Aurora::IO /** * Path */ - const AuString &path; + AuROString path; /** * Mode @@ -70,7 +70,7 @@ namespace Aurora::IO */ bool bWriteEoSOnClose { false }; - cstatic HandleCreate Create(const AuString &path) + cstatic HandleCreate Create(const AuROString &path) { HandleCreate create(path); create.bFailIfNonEmptyFile = true; @@ -79,7 +79,7 @@ namespace Aurora::IO return AuMove(create); } - cstatic HandleCreate ReadWrite(const AuString &path) + cstatic HandleCreate ReadWrite(const AuROString &path) { HandleCreate create(path); create.eMode = FS::EFileOpenMode::eReadWrite; @@ -87,7 +87,7 @@ namespace Aurora::IO return AuMove(create); } - cstatic HandleCreate Read(const AuString &path) + cstatic HandleCreate Read(const AuROString &path) { HandleCreate read(path); read.eMode = FS::EFileOpenMode::eRead; @@ -95,7 +95,7 @@ namespace Aurora::IO return AuMove(read); } - cstatic HandleCreate Open(const AuString &path) + cstatic HandleCreate Open(const AuROString &path) { HandleCreate read(path); read.eMode = FS::EFileOpenMode::eRead; @@ -103,7 +103,7 @@ namespace Aurora::IO return AuMove(read); } - inline HandleCreate(const AuString &path) : + inline HandleCreate(const AuROString &path) : path(path), eAdvisoryLevel(FS::EFileAdvisoryLockLevel::eNoSafety), eMode(FS::EFileOpenMode::eRead) diff --git a/Include/Aurora/Locale/Locale.hpp b/Include/Aurora/Locale/Locale.hpp index cb0771b3..c21c7542 100644 --- a/Include/Aurora/Locale/Locale.hpp +++ b/Include/Aurora/Locale/Locale.hpp @@ -34,7 +34,7 @@ namespace Aurora::Locale AUKN_SYM LocalizationInfo GetLocale(); #if defined(AURORA_PLATFORM_WIN32) || defined(I_REALLY_NEED_WIDECHAR_PUBAPI) - AUKN_SYM std::wstring ConvertFromUTF8(const AuString &in); + AUKN_SYM std::wstring ConvertFromUTF8(const AuROString &in); AUKN_SYM AuString ConvertFromWChar(const wchar_t *in, AuMach length); AUKN_SYM AuString ConvertFromWChar(const wchar_t *in); #endif diff --git a/Include/Aurora/Memory/ByteBuffer.hpp b/Include/Aurora/Memory/ByteBuffer.hpp index 6bc680e9..d0f02cd2 100644 --- a/Include/Aurora/Memory/ByteBuffer.hpp +++ b/Include/Aurora/Memory/ByteBuffer.hpp @@ -544,7 +544,7 @@ namespace Aurora::Memory // String API - inline bool WriteString(std::string_view string, EStringType type = EStringType::eStringDword, Locale::ECodePage codepage = Locale::ECodePage::eUTF8); + inline bool WriteString(AuROString string, EStringType type = EStringType::eStringDword, Locale::ECodePage codepage = Locale::ECodePage::eUTF8); inline bool ReadString(AuString &string, EStringType type = EStringType::eStringDword, Locale::ECodePage codepage = Locale::ECodePage::eUTF8); // Copy, concat, etc diff --git a/Include/Aurora/Memory/ByteBuffer_Strings.inl b/Include/Aurora/Memory/ByteBuffer_Strings.inl index 4494f799..d86b38ba 100644 --- a/Include/Aurora/Memory/ByteBuffer_Strings.inl +++ b/Include/Aurora/Memory/ByteBuffer_Strings.inl @@ -14,7 +14,7 @@ namespace Aurora::Memory { - bool ByteBuffer::WriteString(std::string_view string, EStringType type, Locale::ECodePage codepage) + bool ByteBuffer::WriteString(AuROString string, EStringType type, Locale::ECodePage codepage) { ByteBufferPushWriteState a(*this); AuStreamReadWrittenPair_t len {}; diff --git a/Include/Aurora/Memory/ByteBuffer_TypedReadWrite.inl b/Include/Aurora/Memory/ByteBuffer_TypedReadWrite.inl index 3a3aaddf..c212a7b7 100644 --- a/Include/Aurora/Memory/ByteBuffer_TypedReadWrite.inl +++ b/Include/Aurora/Memory/ByteBuffer_TypedReadWrite.inl @@ -129,7 +129,7 @@ namespace Aurora::Memory return (AuUInt8)Data::EDataType::kTypeSpecialObject; } else if constexpr (AuIsSame_v, AuString> || - AuIsSame_v, std::string_view>) + AuIsSame_v, AuROString>) { return (AuUInt8)Data::EDataType::kTypeString; } @@ -432,7 +432,7 @@ namespace Aurora::Memory Write(in.data(), in.size()); return !this->flagWriteError; } - else if constexpr (AuIsSame_v, std::string_view>) + else if constexpr (AuIsSame_v, AuROString>) { Write(AuUInt32(in.size())); Write(in.data(), in.size()); diff --git a/Include/Aurora/Memory/MemoryView.hpp b/Include/Aurora/Memory/MemoryView.hpp index 0f1620a7..0a16b038 100644 --- a/Include/Aurora/Memory/MemoryView.hpp +++ b/Include/Aurora/Memory/MemoryView.hpp @@ -61,6 +61,12 @@ namespace Aurora::Memory this->length = list.size() * sizeof(typename T::value_type); } + MemoryView(const AuROString &str) + { + this->ptr = str.data(); + this->length = str.size(); + } + MemoryView(const AuString &str) { this->ptr = str.data(); diff --git a/Include/Aurora/Parse/Base32.hpp b/Include/Aurora/Parse/Base32.hpp index 9f3ea2c3..13e57ce4 100644 --- a/Include/Aurora/Parse/Base32.hpp +++ b/Include/Aurora/Parse/Base32.hpp @@ -9,7 +9,7 @@ namespace Aurora::Parse { - AUKN_SYM bool Base32Decode(const AuString &in, Memory::ByteBuffer &decoded); + AUKN_SYM bool Base32Decode(const AuROString &in, Memory::ByteBuffer &decoded); AUKN_SYM bool Base32Encode(const Memory::MemoryViewRead &input, AuString &encoded); } \ No newline at end of file diff --git a/Include/Aurora/Parse/Base64.hpp b/Include/Aurora/Parse/Base64.hpp index a7ab6f09..b41dfb13 100644 --- a/Include/Aurora/Parse/Base64.hpp +++ b/Include/Aurora/Parse/Base64.hpp @@ -9,7 +9,7 @@ namespace Aurora::Parse { - AUKN_SYM bool Base64Decode(const AuString &in, Memory::ByteBuffer &decoded, bool url = false); + AUKN_SYM bool Base64Decode(const AuROString &in, Memory::ByteBuffer &decoded, bool url = false); AUKN_SYM bool Base64Encode(const Memory::MemoryViewRead &input, AuString &encoded, bool url = false); diff --git a/Include/Aurora/Parse/Hex.hpp b/Include/Aurora/Parse/Hex.hpp index e702689a..09480839 100644 --- a/Include/Aurora/Parse/Hex.hpp +++ b/Include/Aurora/Parse/Hex.hpp @@ -18,9 +18,10 @@ namespace Aurora::Parse eJSLiteral )); + AUKN_SYM bool HexToByte(const char(hex)[2], AuUInt8 &val); AUKN_SYM void ByteToHex(AuUInt8 val, char(&hex)[2]); - AUKN_SYM bool HexToInt (const char *hex, AuUInt32 length, AuUInt64 &val); + AUKN_SYM bool HexToInt (const AuROString &hex, AuUInt64 &val); AUKN_SYM bool EncodeHex(Memory::MemoryViewRead view, EHexDump formatting, AuString &out); - AUKN_SYM bool DecodeHex(const AuString &in, Memory::ByteBuffer &out); + AUKN_SYM bool DecodeHex(const AuROString &in, Memory::ByteBuffer &out); } \ No newline at end of file diff --git a/Include/Aurora/Parse/LineParser.hpp b/Include/Aurora/Parse/LineParser.hpp index 258cb53e..049a1800 100644 --- a/Include/Aurora/Parse/LineParser.hpp +++ b/Include/Aurora/Parse/LineParser.hpp @@ -9,7 +9,7 @@ namespace Aurora::Parse { - static AuString SplitNewlines(const AuString &in, AuFunction lineCallback, bool returnRemaining) + static AuROString SplitNewlines(const AuROString &in, AuFunction lineCallback, bool returnRemaining) { AuMach index = 0, startIdx = 0; @@ -20,7 +20,7 @@ namespace Aurora::Parse if (line[line.size() - 1] == '\r') { - line.pop_back(); + line.remove_suffix(1); } lineCallback(line); @@ -42,14 +42,14 @@ namespace Aurora::Parse } } - static void SplitNewlines(const AuString &in, AuFunction lineCallback) + static void SplitNewlines(const AuROString &in, AuFunction lineCallback) { SplitNewlines(in, lineCallback, false); } - static AuList SplitString(const AuString &in, AuUInt16 characters) + static AuList SplitString(const AuROString &in, AuUInt16 characters) { - AuList ret; + AuList ret; for (auto i = 0u; i < in.size(); i += characters) { auto start = i; @@ -60,7 +60,7 @@ namespace Aurora::Parse return ret; } - static AuString SplitStringDelm(const AuString &in, const AuString &delm, AuUInt16 characters) + static AuString SplitStringDelm(const AuROString &in, const AuString &delm, AuUInt16 characters) { AuString ret; ret.reserve(in.size()); diff --git a/Include/Aurora/Parse/Parser.hpp b/Include/Aurora/Parse/Parser.hpp index 130d3e14..0531f7fe 100644 --- a/Include/Aurora/Parse/Parser.hpp +++ b/Include/Aurora/Parse/Parser.hpp @@ -147,7 +147,7 @@ namespace Aurora::Parse AUKN_SYM bool ConsumeToken(ParseState &state, ParsableTag type, ParseValue &out); - static bool ConsumeToken(ParsableTag type, const AuString &str, AuMach &index, ParseValueEx &out) + static bool ConsumeToken(ParsableTag type, const AuROString &str, AuMach &index, ParseValueEx &out) { auto base = IO::Character::ProviderFromStringUnique(str, index); if (!base) return false; @@ -158,7 +158,7 @@ namespace Aurora::Parse return true; } - static bool ConsumeToken(ParsableTag type, const AuString &str, ParseValueEx &out) + static bool ConsumeToken(ParsableTag type, const AuROString &str, ParseValueEx &out) { auto base = IO::Character::ProviderFromStringUnique(str); if (!base) return false; @@ -169,7 +169,7 @@ namespace Aurora::Parse AUKN_SYM bool Parse(ParseState &state, const ParseObject &structure, ParseResult &result); - static bool Parse(ParseResult &result, const ParseObject &structure, const AuString &str, AuMach &index) + static bool Parse(ParseResult &result, const ParseObject &structure, const AuROString &str, AuMach &index) { auto base = IO::Character::ProviderFromStringUnique(str); if (!base) return false; @@ -181,7 +181,7 @@ namespace Aurora::Parse return true; } - static bool Parse(ParseResult &result, const ParseObject &structure, const AuString &str) + static bool Parse(ParseResult &result, const ParseObject &structure, const AuROString &str) { auto base = IO::Character::ProviderFromStringUnique(str); if (!base) return false; @@ -230,7 +230,7 @@ namespace Aurora::Parse /** * @brief Parse base16 abi terminated string with optional 0x suffix and 'h' ending */ - AUKN_SYM AuResult ParseSInt16(const AuString &str); + AUKN_SYM AuResult ParseSInt16(const AuROString &str); /** * @brief Parse base16 null terminated string with optional 0x suffix and 'h' ending @@ -240,13 +240,13 @@ namespace Aurora::Parse /** * @brief Parse base16 abi terminated string with optional 0x suffix and 'h' ending */ - AUKN_SYM AuResult ParseUInt16(const AuString &str); + AUKN_SYM AuResult ParseUInt16(const AuROString &str); /** * @brief Parse abi null terminated string */ - AUKN_SYM AuResult ParseSInt(const AuString &str); + AUKN_SYM AuResult ParseSInt(const AuROString &str); /** * @brief Parse base10 null terminated string @@ -256,7 +256,7 @@ namespace Aurora::Parse /** * @brief Parse base10 abi terminated string */ - AUKN_SYM AuResult ParseUInt(const AuString &str); + AUKN_SYM AuResult ParseUInt(const AuROString &str); /** * @brief Parse base10 null terminated string diff --git a/Include/Aurora/Processes/Open.hpp b/Include/Aurora/Processes/Open.hpp index df01934f..b777851c 100644 --- a/Include/Aurora/Processes/Open.hpp +++ b/Include/Aurora/Processes/Open.hpp @@ -14,13 +14,12 @@ namespace Aurora::Processes * @param uri * @return */ - AUKN_SYM void OpenUri(const AuString &uri); - + AUKN_SYM void OpenUri(const AuROString &uri); /** * @brief Opens a file or directory * @param file unexpanded relative or absolute filepath * @return */ - AUKN_SYM void OpenFile(const AuString &file); + AUKN_SYM void OpenFile(const AuROString &file); } \ No newline at end of file diff --git a/Source/CmdLine/AuCmdLine.cpp b/Source/CmdLine/AuCmdLine.cpp index fee2a611..e5e8dfa9 100644 --- a/Source/CmdLine/AuCmdLine.cpp +++ b/Source/CmdLine/AuCmdLine.cpp @@ -24,18 +24,18 @@ namespace Aurora::CmdLine return gCmdLineString; } - AUKN_SYM bool HasFlag(const AuString &key) + AUKN_SYM bool HasFlag(const AuROString &key) { - return gCmdFlagLookup.find(key) != gCmdFlagLookup.end(); + return AuExists(gCmdFlagLookup, key); } - AUKN_SYM bool HasValue(const AuString &key) + AUKN_SYM bool HasValue(const AuROString &key) { - return gCmdValueArrayMap.find(key) != gCmdValueArrayMap.end() || - gCmdValueMap.find(key) != gCmdValueMap.end(); + return AuExists(gCmdValueArrayMap, key) || + AuExists(gCmdValueMap, key); } - AUKN_SYM const AuString &GetValue(const AuString &key, const AuString &defaultValue) + AUKN_SYM const AuString &GetValue(const AuROString &key, const AuString &defaultValue) { auto itr = gCmdValueMap.find(key); if (itr == gCmdValueMap.end()) @@ -48,7 +48,7 @@ namespace Aurora::CmdLine } } - AUKN_SYM AuOptional GetValue(const AuString &key) + AUKN_SYM AuOptional GetValue(const AuROString &key) { auto itr = gCmdValueMap.find(key); if (itr == gCmdValueMap.end()) @@ -58,10 +58,11 @@ namespace Aurora::CmdLine return itr->second; } - AUKN_SYM const AuList &GetValues(const AuString &key) + AUKN_SYM const AuList &GetValues(const AuROString &key) { static AuList kMissing; - auto itr = gCmdValueArrayMap.find(key); + AuString temp(key); + auto itr = gCmdValueArrayMap.find(temp); if (itr != gCmdValueArrayMap.end()) { return itr->second; diff --git a/Source/Console/Commands/Commands.cpp b/Source/Console/Commands/Commands.cpp index 136d9405..87ffc70e 100644 --- a/Source/Console/Commands/Commands.cpp +++ b/Source/Console/Commands/Commands.cpp @@ -44,11 +44,13 @@ namespace Aurora::Console::Commands eAsync }; - static bool Dispatch(const AuString &string, EDispatchType type, AuOptionalEx workerId) + static bool Dispatch(const AuROString &string, EDispatchType type, AuOptionalEx workerId) { Parse::ParseResult res; AuSPtr callback; + // TODO: try catch? + { AU_LOCK_GUARD(gPendingCommandsMutex); @@ -113,30 +115,30 @@ namespace Aurora::Console::Commands return true; } - AUKN_SYM void RemoveCommand(const AuString &tag) + AUKN_SYM void RemoveCommand(const AuROString &tag) { AU_LOCK_GUARD(gPendingCommandsMutex); AuTryRemove(gCommands, tag); } - AUKN_SYM void AddCommand(const AuString &tag, const Parse::ParseObject &commandStructure, const AuSPtr &callback) + AUKN_SYM void AddCommand(const AuROString &tag, const Parse::ParseObject &commandStructure, const AuSPtr &callback) { AU_LOCK_GUARD(gPendingCommandsMutex); SysAssert(callback); - gCommands.insert(AuMakePair(tag, Command(tag, commandStructure, callback))); + gCommands.insert(AuMakePair(AuString(tag), Command(AuString(tag), commandStructure, callback))); } - AUKN_SYM bool DispatchCommand(const AuString &string) + AUKN_SYM bool DispatchCommand(const AuROString &string) { return Dispatch(string, EDispatchType::eSys, gCommandDispatcher); } - AUKN_SYM bool DispatchCommandThisThread(const AuString &string) + AUKN_SYM bool DispatchCommandThisThread(const AuROString &string) { return Dispatch(string, EDispatchType::eNow, {}); } - AUKN_SYM bool DispatchCommandToAsyncRunner(const AuString &string, Async::WorkerPId_t id) + AUKN_SYM bool DispatchCommandToAsyncRunner(const AuROString &string, Async::WorkerPId_t id) { return Dispatch(string, EDispatchType::eAsync, id); } diff --git a/Source/Console/ConsoleStd/ConsoleStd.cpp b/Source/Console/ConsoleStd/ConsoleStd.cpp index 9db06480..03ff0b43 100755 --- a/Source/Console/ConsoleStd/ConsoleStd.cpp +++ b/Source/Console/ConsoleStd/ConsoleStd.cpp @@ -248,7 +248,7 @@ namespace Aurora::Console::ConsoleStd } { - auto remaining = AuParse::SplitNewlines(str, [](const AuString &line) + auto remaining = AuParse::SplitNewlines(str, [](const AuROString &line) { NoncanonicalInput canInput {}; canInput.type = ENoncanonicalInput::eInput; diff --git a/Source/Console/ConsoleTTY/ConsoleTTY.cpp b/Source/Console/ConsoleTTY/ConsoleTTY.cpp index ef81f064..50d884a2 100644 --- a/Source/Console/ConsoleTTY/ConsoleTTY.cpp +++ b/Source/Console/ConsoleTTY/ConsoleTTY.cpp @@ -964,9 +964,9 @@ namespace Aurora::Console::ConsoleTTY return; } - AuParse::SplitNewlines(buffer, [&](const AuString &in) + AuParse::SplitNewlines(buffer, [&](const AuROString &in) { - this->history.push_back(in); + this->history.push_back(AuString(in)); }); this->iHistoryWritePos = this->history.size(); diff --git a/Source/Console/Hooks/Hooks.cpp b/Source/Console/Hooks/Hooks.cpp index 40b7a6c9..76391d23 100644 --- a/Source/Console/Hooks/Hooks.cpp +++ b/Source/Console/Hooks/Hooks.cpp @@ -88,7 +88,7 @@ namespace Aurora::Console::Hooks else [[unlikely]] { Parse::SplitNewlines(msg.line, - [&](const AuString &line) + [&](const AuROString &line) { ConsoleMessage dup = msg; dup.line = line; diff --git a/Source/Crypto/PEM/PEM.cpp b/Source/Crypto/PEM/PEM.cpp index b28415b0..d62f7d1f 100644 --- a/Source/Crypto/PEM/PEM.cpp +++ b/Source/Crypto/PEM/PEM.cpp @@ -11,7 +11,7 @@ namespace Aurora::Crypto::PEM { - static bool ParsePEM(const AuString &begin, const AuString &end, const AuString &src, AuByteBuffer &buf) + static bool ParsePEM(const AuROString &begin, const AuROString &end, const AuROString &src, AuByteBuffer &buf) { AuUInt lines = 0; AuString str; @@ -23,7 +23,7 @@ namespace Aurora::Crypto::PEM str.reserve(src.size()); Parse::SplitNewlines(src, - [&](const AuString &src) + [&](const AuROString &src) { if (lines == 0) { @@ -50,7 +50,7 @@ namespace Aurora::Crypto::PEM return fail ? false : finished; } - static AuString SerializePEM(const AuString &begin, const AuString &end, const AuByteBuffer &buf) + static AuString SerializePEM(const AuROString &begin, const AuROString &end, const AuByteBuffer &buf) { auto &delm = AuLocale::NewLine(); AuString ret; @@ -104,27 +104,27 @@ namespace Aurora::Crypto::PEM return SerializePEM("-----BEGIN RSA PRIVATE KEY-----", "-----END RSA PRIVATE KEY-----", in); } - AUKN_SYM bool FromString(const AuString &in, Aurora::Crypto::X509::Certificate &out) + AUKN_SYM bool FromString(const AuROString &in, Aurora::Crypto::X509::Certificate &out) { return ParsePEM("-----BEGIN CERTIFICATE-----", "-----END CERTIFICATE-----", in, out); } - AUKN_SYM bool PrivateFromString(const AuString &in, DerBuffer &out) + AUKN_SYM bool PrivateFromString(const AuROString &in, DerBuffer &out) { return ParsePEM("-----BEGIN PRIVATE KEY-----", "-----END PRIVATE KEY-----", in, out); } - AUKN_SYM bool PublicRSAFromString(const AuString &in, DerBuffer &out) + AUKN_SYM bool PublicRSAFromString(const AuROString &in, DerBuffer &out) { return ParsePEM("-----BEGIN RSA PUBLIC KEY-----", "-----END RSA PUBLIC KEY-----", in, out); } - AUKN_SYM bool PrivateRSAFromString(const AuString &in, DerBuffer &out) + AUKN_SYM bool PrivateRSAFromString(const AuROString &in, DerBuffer &out) { return ParsePEM("-----BEGIN RSA PRIVATE KEY-----", "-----END RSA PRIVATE KEY-----", in, out); } - AUKN_SYM bool PublicFromString(const AuString &in, DerBuffer &out) + AUKN_SYM bool PublicFromString(const AuROString &in, DerBuffer &out) { return ParsePEM("-----BEGIN PUBLIC KEY-----", "-----END PUBLIC KEY-----", in, out); } diff --git a/Source/Debug/Debug.cpp b/Source/Debug/Debug.cpp index a12da94d..4448375d 100644 --- a/Source/Debug/Debug.cpp +++ b/Source/Debug/Debug.cpp @@ -407,7 +407,7 @@ namespace Aurora::Debug if (frame.label) { auto parts = AuSplitString(frame.label.value(), "+"); - if (auto resultName = DemangleName(parts[0])) + if (auto resultName = DemangleName(AuString(parts[0]))) { if (resultName.value() == parts[0]) { diff --git a/Source/HWInfo/AuCpuTimes.cpp b/Source/HWInfo/AuCpuTimes.cpp index 2757617d..991c1e74 100644 --- a/Source/HWInfo/AuCpuTimes.cpp +++ b/Source/HWInfo/AuCpuTimes.cpp @@ -147,7 +147,7 @@ namespace Aurora::HWInfo return false; } - AuParse::SplitNewlines(statFile, [&](const AuString &line) + AuParse::SplitNewlines(statFile, [&](const AuROString &line) { CpuCoreTime coreTimes; diff --git a/Source/IO/Character/BufferedLineReader.cpp b/Source/IO/Character/BufferedLineReader.cpp index d44ab7c2..c6fef362 100644 --- a/Source/IO/Character/BufferedLineReader.cpp +++ b/Source/IO/Character/BufferedLineReader.cpp @@ -10,6 +10,12 @@ namespace Aurora::IO::Character { + BufferedLineReader::BufferedLineReader(AuSPtr reader) : + pInputStream_(reader) + { + + } + void BufferedLineReader::Flush() { this->flushLine_ = true; @@ -26,7 +32,7 @@ namespace Aurora::IO::Character } AuUInt bytesRead; - if (this->inputStream_->Read(AuMemoryViewStreamWrite(AuMemoryViewWrite(this->buffer_.writePtr, this->buffer_.writePtr + this->buffer_.length), bytesRead)) != + if (this->pInputStream_->Read(AuMemoryViewStreamWrite(AuMemoryViewWrite(this->buffer_.writePtr, this->buffer_.writePtr + this->buffer_.length), bytesRead)) != EStreamError::eErrorNone) { SysPushErrorIO(); @@ -53,31 +59,37 @@ namespace Aurora::IO::Character { Memory::ByteBufferPushReadState _(this->buffer_, true); - if (*this->buffer_.readPtr != '\n') + auto pStartPointer = this->buffer_.readPtr; + + if (*this->buffer_.readPtr != '\n' && + this->buffer_.readPtr < this->buffer_.base + this->buffer_.length) { this->buffer_.readPtr++; continue; } - auto end = this->buffer_.GetReadOffset(); - auto next = end + 1; - if (end != 0) + auto pEndReadPointer = this->buffer_.readPtr; + auto pEndReadPointer2 = this->buffer_.readPtr; + + if (pEndReadPointer != this->buffer_.base) { - if (this->buffer_.readPtr[-1] == '\r') + if (pEndReadPointer[-1] == '\r') { - end--; + pEndReadPointer--; } } try { - if (!AuTryInsert(ret, AuString(this->buffer_.base, this->buffer_.base + end))) + AuMemoryViewRead view = this->buffer_; + + if (AuTryInsert(ret, AuString((char *)pStartPointer, (char *)pEndReadPointer))) { this->buffer_.flagReadError = true; break; } - this->buffer_.readPtr = this->buffer_.base + next; + this->buffer_.readPtr = pEndReadPointer2; } catch (...) { @@ -91,9 +103,10 @@ namespace Aurora::IO::Character { try { - if (AuTryInsert(ret, AuString(this->buffer_.base, this->buffer_.base + this->buffer_.length))) + AuMemoryViewRead view = this->buffer_; + if (AuTryInsert(ret, AuString(view.begin(), view.end()))) { - this->buffer_.readPtr = this->buffer_.base + this->buffer_.length; + this->buffer_.readPtr += view.length; } } catch (...) @@ -102,12 +115,18 @@ namespace Aurora::IO::Character } } + if (this->buffer_.readPtr == this->buffer_.writePtr) + { + this->buffer_.readPtr = this->buffer_.writePtr = this->buffer_.base; + } + return ret; } - AUKN_SYM IBufferedLineReader *NewLineReaderNew(const AuSPtr &input) + AUKN_SYM IBufferedLineReader *NewLineReaderNew(const AuSPtr &pInputReader) { - return _new BufferedLineReader(input); + SysCheckArgNotNull(pInputReader, {}); + return _new BufferedLineReader(pInputReader); } AUKN_SYM void NewLineReaderNew(IBufferedLineReader *reader) diff --git a/Source/IO/Character/BufferedLineReader.hpp b/Source/IO/Character/BufferedLineReader.hpp index 297536cf..b118a7f8 100644 --- a/Source/IO/Character/BufferedLineReader.hpp +++ b/Source/IO/Character/BufferedLineReader.hpp @@ -9,10 +9,9 @@ namespace Aurora::IO::Character { - struct BufferedLineReader : public IBufferedLineReader + struct BufferedLineReader : IBufferedLineReader { - BufferedLineReader(AuSPtr reader) : inputStream_(reader) - {}; + BufferedLineReader(AuSPtr reader); virtual bool ReadBytes(AuUInt32 length) override; virtual AuList ReadLines() override; @@ -20,9 +19,9 @@ namespace Aurora::IO::Character private: - AuSPtr inputStream_; + AuSPtr pInputStream_; AuByteBuffer buffer_; - bool flushLine_; - AuThreadPrimitives::SpinLock lock_; + bool flushLine_ {}; + AuMutex lock_; }; } \ No newline at end of file diff --git a/Source/IO/Character/StringToProvider.cpp b/Source/IO/Character/StringToProvider.cpp index ed5e4ce7..a2090bc4 100644 --- a/Source/IO/Character/StringToProvider.cpp +++ b/Source/IO/Character/StringToProvider.cpp @@ -10,62 +10,64 @@ namespace Aurora::IO::Character { - class CharacterProvider : public ICharacterProviderEx + struct CharacterProvider : ICharacterProviderEx { - public: - CharacterProvider(const AuString &in, AuUInt offset = 0); + CharacterProvider(const AuROString &in, AuUInt offset = 0); CharacterProvider(const AuSPtr &in, AuUInt offset = 0); bool GetByte(AuUInt8 &val) override; AuUInt GetPosition() override; bool SetPosition(AuUInt offset) override; + bool HasString(); + protected: - AuUInt offset_ {}; - AuSPtr string_; + AuUInt uOffset_ {}; + AuSPtr pString_; }; - CharacterProvider::CharacterProvider(const AuString &in, AuUInt offset) : string_(AuMakeShared(in)), offset_(offset) + CharacterProvider::CharacterProvider(const AuROString &in, AuUInt offset) : + pString_(AuMakeShared(in)), + uOffset_(offset) {} - CharacterProvider::CharacterProvider(const AuSPtr &in, AuUInt offset) : string_(in), offset_(offset) + CharacterProvider::CharacterProvider(const AuSPtr &in, AuUInt offset) : + pString_(in), + uOffset_(offset) {} bool CharacterProvider::GetByte(AuUInt8 &val) { - if (!this->string_) + auto offset = this->uOffset_++; + if (offset >= this->pString_->size()) { - return false; - } - - auto offset = this->offset_++; - if (offset >= this->string_->size()) - { - offset = this->string_->size(); + offset = this->pString_->size(); return false; } - val = this->string_->at(offset); + val = this->pString_->at(offset); return true; } AuUInt CharacterProvider::GetPosition() { - return this->offset_; + return this->uOffset_; } bool CharacterProvider::SetPosition(AuUInt offset) { - if (!this->string_) - { - return false; - } - this->offset_ = offset; - return this->offset_ < this->string_->size(); + this->uOffset_ = offset; + return this->uOffset_ < this->pString_->size(); + } + + bool CharacterProvider::HasString() + { + return this->pString_; } AUKN_SYM ICharacterProviderEx *ProviderFromSharedStringNew(const AuSPtr &str, AuUInt index) { + SysCheckArgNotNull(str, {}); return _new CharacterProvider(str, index); } @@ -74,9 +76,17 @@ namespace Aurora::IO::Character AuSafeDelete(me); } - AUKN_SYM ICharacterProviderEx *ProviderFromStringNew(const AuString &str, AuUInt index) + AUKN_SYM ICharacterProviderEx *ProviderFromStringNew(const AuROString &str, AuUInt index) { - return _new CharacterProvider(str, index); + if (auto pRet = _new CharacterProvider(str, index)) + { + if (pRet->HasString()) + { + return pRet; + } + } + + return nullptr; } AUKN_SYM void ProviderFromStringRelease(ICharacterProviderEx *me) diff --git a/Source/IO/FS/Async.Linux.cpp b/Source/IO/FS/Async.Linux.cpp index 3b5f05e4..ad294e96 100644 --- a/Source/IO/FS/Async.Linux.cpp +++ b/Source/IO/FS/Async.Linux.cpp @@ -613,7 +613,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM IAsyncFileStream *OpenAsyncNew(const AuString &path, EFileOpenMode openMode, AuOptional optbDirectIO, AuOptional optLock) + AUKN_SYM IAsyncFileStream *OpenAsyncNew(const AuROString &path, EFileOpenMode openMode, AuOptional optbDirectIO, AuOptional optLock) { auto bDirectIO = optbDirectIO.ValueOr(true); auto lock = optLock.ValueOr(EFileAdvisoryLockLevel::eNoSafety); diff --git a/Source/IO/FS/Async.NT.cpp b/Source/IO/FS/Async.NT.cpp index 6943dd24..aad7fbde 100644 --- a/Source/IO/FS/Async.NT.cpp +++ b/Source/IO/FS/Async.NT.cpp @@ -688,7 +688,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM IAsyncFileStream *OpenAsyncNew(const AuString &path, EFileOpenMode openMode, AuOptional optbDirectIO, AuOptional optLock) + AUKN_SYM IAsyncFileStream *OpenAsyncNew(const AuROString &path, EFileOpenMode openMode, AuOptional optbDirectIO, AuOptional optLock) { auto bDirectIO = optbDirectIO.ValueOr(true); auto lock = optLock.ValueOr(EFileAdvisoryLockLevel::eNoSafety); diff --git a/Source/IO/FS/DirDeleter.cpp b/Source/IO/FS/DirDeleter.cpp index f006a190..f7d3f4ba 100644 --- a/Source/IO/FS/DirDeleter.cpp +++ b/Source/IO/FS/DirDeleter.cpp @@ -37,7 +37,7 @@ namespace Aurora::IO::FS } } - bool DoThing(const AuString &string) + bool DoThing(const AuROString &string) { AU_DEBUG_MEMCRUNCH; @@ -57,7 +57,7 @@ namespace Aurora::IO::FS return true; } - bool OpenDir(const AuString &str) + bool OpenDir(const AuROString &str) { this->curPath = str; this->pDir = ReadDir(str); @@ -159,7 +159,7 @@ namespace Aurora::IO::FS } }; - AUKN_SYM bool DirDeleter(const AuString &string) + AUKN_SYM bool DirDeleter(const AuROString &string) { auto pObj = AuMakeShared(); SysCheckNotNullMemory(pObj, false); @@ -179,7 +179,7 @@ namespace Aurora::IO::FS return !AuFS::DirExists(string); } - AUKN_SYM bool DirDeleterEx(const AuString &string, AuList &failingPaths) + AUKN_SYM bool DirDeleterEx(const AuROString &string, AuList &failingPaths) { auto pObj = AuMakeShared(); SysCheckNotNullMemory(pObj, false); @@ -195,7 +195,7 @@ namespace Aurora::IO::FS { for (const auto &str : pObj->failedPaths) { - auto normalizedUserDir = string + "/"; + auto normalizedUserDir = AuString(string) + "/"; auto normalizedUserDir2 = normalizedUserDir + str; if (AuFS::FileExists(normalizedUserDir2) || diff --git a/Source/IO/FS/FS.NT.cpp b/Source/IO/FS/FS.NT.cpp index 01021a90..416bf64f 100644 --- a/Source/IO/FS/FS.NT.cpp +++ b/Source/IO/FS/FS.NT.cpp @@ -15,7 +15,7 @@ namespace Aurora::IO::FS { static const AuUInt64 kFileCopyBlock = 0xFFFF; // 64KiB - bool _MkDir(const AuString &str) + bool _MkDir(const AuROString &str) { return CreateDirectoryW(Locale::ConvertFromUTF8(str).c_str(), NULL); } @@ -112,7 +112,7 @@ namespace Aurora::IO::FS } }; - AUKN_SYM AuSPtr ReadDir(const AuString &string) + AUKN_SYM AuSPtr ReadDir(const AuROString &string) { if (string.empty()) { @@ -149,7 +149,7 @@ namespace Aurora::IO::FS return pObj; } - AUKN_SYM bool FilesInDirectory(const AuString &string, AuList &files) + AUKN_SYM bool FilesInDirectory(const AuROString &string, AuList &files) { auto itr = ReadDir(string); if (!itr) @@ -174,7 +174,7 @@ namespace Aurora::IO::FS return true; } - AUKN_SYM bool DirsInDirectory(const AuString &string, AuList &dirs) + AUKN_SYM bool DirsInDirectory(const AuROString &string, AuList &dirs) { auto itr = ReadDir(string); if (!itr) @@ -199,7 +199,7 @@ namespace Aurora::IO::FS return true; } - AUKN_SYM bool ReadFile(const AuString &path, AuByteBuffer &buffer) + AUKN_SYM bool ReadFile(const AuROString &path, AuByteBuffer &buffer) { std::wstring win32Path; LARGE_INTEGER length; @@ -293,7 +293,7 @@ namespace Aurora::IO::FS return status; } - AUKN_SYM bool FileExists(const AuString &path) + AUKN_SYM bool FileExists(const AuROString &path) { try { @@ -321,7 +321,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM bool DirExists(const AuString &path) + AUKN_SYM bool DirExists(const AuROString &path) { try { @@ -349,7 +349,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM bool DirMk(const AuString &path) + AUKN_SYM bool DirMk(const AuROString &path) { try { @@ -375,7 +375,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM bool Remove(const AuString &path) + AUKN_SYM bool Remove(const AuROString &path) { try { @@ -432,7 +432,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM bool Relink(const AuString &src, const AuString &dest) + AUKN_SYM bool Relink(const AuROString &src, const AuROString &dest) { try { @@ -467,7 +467,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM bool Copy(const AuString &src, const AuString &dest) + AUKN_SYM bool Copy(const AuROString &src, const AuROString &dest) { try { @@ -501,7 +501,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM bool StatFile(const AuString &path, Stat &stat) + AUKN_SYM bool StatFile(const AuROString &path, Stat &stat) { WIN32_FILE_ATTRIBUTE_DATA data; diff --git a/Source/IO/FS/FS.Unix.cpp b/Source/IO/FS/FS.Unix.cpp index cd78d0b9..42e57641 100755 --- a/Source/IO/FS/FS.Unix.cpp +++ b/Source/IO/FS/FS.Unix.cpp @@ -24,7 +24,7 @@ namespace Aurora::IO::FS { - bool _MkDir(const AuString &path) + bool _MkDir(const AuROString &path) { AuString subdir; @@ -150,7 +150,7 @@ namespace Aurora::IO::FS } }; - static AuSPtr ReadDirEx(const AuString &string, bool bFast) + static AuSPtr ReadDirEx(const AuROString &string, bool bFast) { if (string.empty()) { @@ -189,12 +189,12 @@ namespace Aurora::IO::FS return pObj; } - AUKN_SYM AuSPtr ReadDir(const AuString &string) + AUKN_SYM AuSPtr ReadDir(const AuROString &string) { return ReadDirEx(string, false); } - AUKN_SYM bool FilesInDirectory(const AuString &string, AuList &files) + AUKN_SYM bool FilesInDirectory(const AuROString &string, AuList &files) { auto itr = ReadDirEx(string, true); if (!itr) @@ -219,7 +219,7 @@ namespace Aurora::IO::FS return true; } - AUKN_SYM bool DirsInDirectory(const AuString &string, AuList &dirs) + AUKN_SYM bool DirsInDirectory(const AuROString &string, AuList &dirs) { auto itr = ReadDirEx(string, true); if (!itr) @@ -244,7 +244,7 @@ namespace Aurora::IO::FS return true; } - AUKN_SYM bool ReadFile(const AuString &path, AuByteBuffer &buffer) + AUKN_SYM bool ReadFile(const AuROString &path, AuByteBuffer &buffer) { AuMemoryViewWrite writeView; @@ -304,7 +304,7 @@ namespace Aurora::IO::FS return true; } - static bool UnixExists(const AuString &path, bool dir) + static bool UnixExists(const AuROString &path, bool dir) { struct stat s; int err = ::stat(path.c_str(), &s); @@ -316,7 +316,7 @@ namespace Aurora::IO::FS return dir ? S_ISDIR(s.st_mode) : S_ISREG(s.st_mode); } - AUKN_SYM bool FileExists(const AuString &path) + AUKN_SYM bool FileExists(const AuROString &path) { if (path.empty()) { @@ -334,7 +334,7 @@ namespace Aurora::IO::FS return UnixExists(pathExpanded, false); } - AUKN_SYM bool DirExists(const AuString &path) + AUKN_SYM bool DirExists(const AuROString &path) { if (path.empty()) { @@ -352,7 +352,7 @@ namespace Aurora::IO::FS return UnixExists(pathExpanded, true); } - AUKN_SYM bool DirMk(const AuString &path) + AUKN_SYM bool DirMk(const AuROString &path) { if (path.empty()) { @@ -370,7 +370,7 @@ namespace Aurora::IO::FS return CreateDirectories(pathExpanded, false); } - AUKN_SYM bool Remove(const AuString &path) + AUKN_SYM bool Remove(const AuROString &path) { struct stat s; @@ -430,7 +430,7 @@ namespace Aurora::IO::FS return false; } - AUKN_SYM bool Relink(const AuString &src, const AuString &dest) + AUKN_SYM bool Relink(const AuROString &src, const AuROString &dest) { if (src.empty() || dest.empty()) @@ -456,7 +456,7 @@ namespace Aurora::IO::FS #if defined(AURORA_IS_LINUX_DERIVED) - AUKN_SYM bool Copy(const AuString &src, const AuString &dest) + AUKN_SYM bool Copy(const AuROString &src, const AuROString &dest) { if (src.empty() || dest.empty()) @@ -509,7 +509,7 @@ namespace Aurora::IO::FS #elif defined(AURORA_IS_BSD_DERIVED) - AUKN_SYM bool Copy(const AuString &src, const AuString &dest) + AUKN_SYM bool Copy(const AuROString &src, const AuROString &dest) { if (src.empty() || dest.empty()) @@ -561,7 +561,7 @@ namespace Aurora::IO::FS #else - AUKN_SYM bool Copy(const AuString &src, const AuString &dest) + AUKN_SYM bool Copy(const AuROString &src, const AuROString &dest) { // TODO: not that i care return false; @@ -569,7 +569,7 @@ namespace Aurora::IO::FS #endif - AUKN_SYM bool StatFile(const AuString &pathRel, Stat &stat) + AUKN_SYM bool StatFile(const AuROString &pathRel, Stat &stat) { stat = {}; diff --git a/Source/IO/FS/FS.cpp b/Source/IO/FS/FS.cpp index 8252ac9b..2119ae65 100644 --- a/Source/IO/FS/FS.cpp +++ b/Source/IO/FS/FS.cpp @@ -326,7 +326,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM bool ReadString(const AuString &path, AuString &buffer) + AUKN_SYM bool ReadString(const AuROString &path, AuString &buffer) { AuByteBuffer fileBuffer; @@ -338,7 +338,7 @@ namespace Aurora::IO::FS return Locale::Encoding::DecodeUTF8(fileBuffer.data(), fileBuffer.size(), buffer, Locale::ECodePage::eUTF8).first != 0; } - AUKN_SYM bool ReadFileHeader(const AuString &path, AuUInt16 uLength, Memory::ByteBuffer &buffer) + AUKN_SYM bool ReadFileHeader(const AuROString &path, AuUInt16 uLength, Memory::ByteBuffer &buffer) { AuUInt uSize {}; auto memView = buffer.GetOrAllocateLinearWriteable(uLength); @@ -352,7 +352,7 @@ namespace Aurora::IO::FS return true; } - AUKN_SYM bool WriteString(const AuString &path, const AuString &str) + AUKN_SYM bool WriteString(const AuROString &path, const AuROString &str) { char bom[3] { @@ -383,7 +383,7 @@ namespace Aurora::IO::FS return bOk; } - AUKN_SYM bool WriteNewString(const AuString &path, const AuString &str) + AUKN_SYM bool WriteNewString(const AuROString &path, const AuROString &str) { static const char bom[3] { @@ -428,7 +428,7 @@ namespace Aurora::IO::FS return bOk; } - AUKN_SYM bool WriteNewFile(const AuString &path, const Memory::MemoryViewRead &blob) + AUKN_SYM bool WriteNewFile(const AuROString &path, const Memory::MemoryViewRead &blob) { bool bOk {}; @@ -469,7 +469,7 @@ namespace Aurora::IO::FS return bOk; } - AUKN_SYM bool WriteFile(const AuString &path, const Memory::MemoryViewRead &blob) + AUKN_SYM bool WriteFile(const AuROString &path, const Memory::MemoryViewRead &blob) { bool bOk {}; AuIO::IOHandle handle; @@ -701,7 +701,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM bool NormalizePath(AuString &out, const AuString &in) + AUKN_SYM bool NormalizePath(AuString &out, const AuROString &in) { try { @@ -714,7 +714,7 @@ namespace Aurora::IO::FS } } - static AuUInt GetLastSplitterIndex(const AuString &path) + static AuUInt GetLastSplitterIndex(const AuROString &path) { AuUInt indexA {}, indexB {}; @@ -727,7 +727,7 @@ namespace Aurora::IO::FS return AuMax(indexA, indexB); } - AUKN_SYM bool GetFileFromPath(AuString &out, const AuString &path) + AUKN_SYM bool GetFileFromPath(AuROString &out, const AuROString &path) { try { @@ -746,81 +746,74 @@ namespace Aurora::IO::FS } } - AUKN_SYM bool GetDirectoryFromPath(AuString &out, const AuString &path) + AUKN_SYM bool GetDirectoryFromPath(AuROString &out, const AuROString &path) { - try + if (path.empty()) { - if (path.empty()) return false; - if (path[path.size() - 1] == '.') - { - if (path.size() > 2 && (path[path.size() - 2] == '\\' || path[path.size() - 2] == '/')) - { - out = path.substr(0, path.size() - 1); - } - else - { - return false; - } - } + return false; + } - AuUInt max = GetLastSplitterIndex(path); - if (!max) + if (path[path.size() - 1] == '.') + { + if (path.size() > 2 && (path[path.size() - 2] == '\\' || path[path.size() - 2] == '/')) + { + out = path.substr(0, path.size() - 1); + } + else { return false; } - - if (max == path.size()) - { - out = path; - return true; - } - - out = path.substr(0, max + 1); - return true; } - catch (...) + + AuUInt max = GetLastSplitterIndex(path); + if (!max) { - out.clear(); return false; } + + if (max == path.size()) + { + out = path; + return true; + } + + out = path.substr(0, max + 1); + return true; } - AUKN_SYM bool GoUpToSeparator(AuString &out, const AuString &path) + AUKN_SYM bool GoUpToSeparator(AuROString &out, const AuROString &path) { - try + if (path.empty()) { - if (path.empty()) return false; - if (path[path.size() - 1] == '.') - { - if (path.size() > 2 && (path[path.size() - 2] == '\\' || path[path.size() - 2] == '/')) - { - out = path.substr(0, path.size() - 2); - } - else - { - return false; - } - } + return false; + } - AuUInt max = GetLastSplitterIndex(path); - if (!max) + if (path[path.size() - 1] == '.') + { + if (path.size() > 2 && (path[path.size() - 2] == '\\' || path[path.size() - 2] == '/')) + { + out = path.substr(0, path.size() - 2); + } + else { return false; } - - if (max == path.size()) - { - out = path.substr(0, max - 1); - return true; - } - - out = path.substr(0, max); - return true; } - catch (...) + + AuUInt max = GetLastSplitterIndex(path); + if (!max) { - out.clear(); return false; } + + if (max == path.size()) + { + out = path.substr(0, max - 1); + return true; + } + + out = path.substr(0, max); + return true; + } } \ No newline at end of file diff --git a/Source/IO/FS/FS.hpp b/Source/IO/FS/FS.hpp index 714fc832..5bedf2bc 100644 --- a/Source/IO/FS/FS.hpp +++ b/Source/IO/FS/FS.hpp @@ -53,11 +53,11 @@ namespace Aurora::IO::FS } } - static auline AuString NormalizePathRet(const AuString &str) + static auline AuString NormalizePathRet(AuROString str) { try { - AuString ret = str; + AuString ret = AuString(str); _NormalizePath(ret); return ret; } @@ -67,14 +67,14 @@ namespace Aurora::IO::FS } } - bool _MkDir(const AuString &str); + bool _MkDir(const AuROString &str); - static bool CreateDirectories(const AuString &cpath, bool isFile) + static bool CreateDirectories(const AuROString &cpath, bool isFile) { try { // This gives us a significant performance boost - AuString path; + AuROString path; if (isFile && GetDirectoryFromPath(path, cpath)) { if (DirExists(path)) @@ -89,7 +89,7 @@ namespace Aurora::IO::FS if ((cpath[i] == kPathSplitter) || ((!isFile) && (end))) { - auto subpath = end ? cpath : AuString(cpath.begin(), cpath.begin() + i); + auto subpath = end ? AuString(cpath) : AuString(cpath.begin(), cpath.begin() + i); if (subpath.empty()) { continue; diff --git a/Source/IO/FS/FSCompress.cpp b/Source/IO/FS/FSCompress.cpp index 562a5132..15056b94 100644 --- a/Source/IO/FS/FSCompress.cpp +++ b/Source/IO/FS/FSCompress.cpp @@ -16,7 +16,7 @@ namespace Aurora::IO::FS static auto const kCompressionType = AuCompression::ECompressionType::eZSTD; static const AuString kStringSuffix = ".zst"; - static bool CompressEx2(const AuString &path, const AuString &suffix, AuCompression::ECompressionType type, AuInt8 level, bool bCheck) + static bool CompressEx2(const AuROString &path, const AuROString &suffix, AuCompression::ECompressionType type, AuInt8 level, bool bCheck) { static const auto kCompressionReadChunks = kFileCopyBlock; @@ -42,14 +42,16 @@ namespace Aurora::IO::FS return {}; } + AuString fullA(AuString(path) + AuString(suffix)); + auto qwLength = pFileSrc->GetLength(); if (!qwLength) { pFileSrc->Close(); - return AuFS::Relink(path, path + suffix); + return AuFS::Relink(path, fullA); } - auto pFileDest = OpenWriteShared(path + suffix, EFileAdvisoryLockLevel::eBlockReadWrite); + auto pFileDest = OpenWriteShared(fullA, EFileAdvisoryLockLevel::eBlockReadWrite); if (!pFileDest) { SysPushErrorIO("Couldn't open compression destination path: {}{}", path, suffix); @@ -62,7 +64,6 @@ namespace Aurora::IO::FS return {}; } - auto pFileStream = AuMakeShared(pFileSrc); SysCheckNotNullMemory(pFileStream, {}); @@ -145,17 +146,17 @@ namespace Aurora::IO::FS return qwTotalRead == qwLength; } - AUKN_SYM bool CompressEx(const AuString &path, const AuString &suffix, AuCompression::ECompressionType type, AuInt8 level) + AUKN_SYM bool CompressEx(const AuROString &path, const AuROString &suffix, AuCompression::ECompressionType type, AuInt8 level) { return CompressEx2(path, kStringSuffix, kCompressionType, level, false); } - AUKN_SYM bool Compress(const AuString &path, AuInt8 level) + AUKN_SYM bool Compress(const AuROString &path, AuInt8 level) { return CompressEx2(path, kStringSuffix, kCompressionType, level, true); } - AUKN_SYM bool DecompressEx(const AuString &path, const AuString &suffix, AuCompression::ECompressionType type) + AUKN_SYM bool DecompressEx(const AuROString &path, const AuROString &suffix, AuCompression::ECompressionType type) { static const auto kCompressionReadChunks = kFileCopyBlock; @@ -165,7 +166,9 @@ namespace Aurora::IO::FS return {}; } - auto pFileSrc = OpenReadShared(path + suffix, EFileAdvisoryLockLevel::eBlockWrite); + AuString fullA(AuString(path) + AuString(suffix)); + + auto pFileSrc = OpenReadShared(fullA, EFileAdvisoryLockLevel::eBlockWrite); if (!pFileSrc) { SysPushErrorIO("Couldn't open compression source path: {}{}", path, suffix); @@ -176,7 +179,7 @@ namespace Aurora::IO::FS if (!qwLength) { pFileSrc->Close(); - return AuFS::Relink(path + suffix, path); + return AuFS::Relink(fullA, path); } auto pFileDest = OpenWriteShared(path, EFileAdvisoryLockLevel::eBlockReadWrite); @@ -256,7 +259,7 @@ namespace Aurora::IO::FS return qwTotalRead == qwLength; } - AUKN_SYM bool Decompress(const AuString &path) + AUKN_SYM bool Decompress(const AuROString &path) { return DecompressEx(path, kStringSuffix, kCompressionType); } diff --git a/Source/IO/FS/FSRecursion.cpp b/Source/IO/FS/FSRecursion.cpp index bd6869e1..b79b4a38 100644 --- a/Source/IO/FS/FSRecursion.cpp +++ b/Source/IO/FS/FSRecursion.cpp @@ -30,14 +30,14 @@ namespace Aurora::IO::FS return this->failedPaths; } - bool OpenDir(const AuString &str) + bool OpenDir(const AuROString &str) { curPath = str; pDir = ReadDir(str); return bool(pDir); } - bool OpenNext(const AuString &str) + bool OpenNext(const AuROString &str) { curPath = str; pDir = ReadDir(str); @@ -121,7 +121,7 @@ namespace Aurora::IO::FS } }; - AUKN_SYM AuSPtr ReadDirRecursive(const AuString &string, AuOptional bTraverseSymlinks) + AUKN_SYM AuSPtr ReadDirRecursive(const AuROString &string, AuOptional bTraverseSymlinks) { auto pObj = AuMakeShared(); if (!pObj) diff --git a/Source/IO/FS/FSTimes.NT.cpp b/Source/IO/FS/FSTimes.NT.cpp index c12667d4..3129c88a 100644 --- a/Source/IO/FS/FSTimes.NT.cpp +++ b/Source/IO/FS/FSTimes.NT.cpp @@ -25,7 +25,7 @@ namespace Aurora::IO::FS return temp; } - AUKN_SYM bool UpdateFileTimes(const AuString &path, const UpdateTimes ×) + AUKN_SYM bool UpdateFileTimes(const AuROString &path, const UpdateTimes ×) { HANDLE hFile; FILETIME created; diff --git a/Source/IO/FS/FSTimes.Unix.cpp b/Source/IO/FS/FSTimes.Unix.cpp index 07ca5142..be255e7d 100644 --- a/Source/IO/FS/FSTimes.Unix.cpp +++ b/Source/IO/FS/FSTimes.Unix.cpp @@ -31,7 +31,7 @@ namespace Aurora::IO::FS temp->tv_usec = ts.tv_nsec / 1'000ull; } - AUKN_SYM bool UpdateFileTimes(const AuString &path, const UpdateTimes ×) + AUKN_SYM bool UpdateFileTimes(const AuROString &path, const UpdateTimes ×) { if (times.createdNs) { diff --git a/Source/IO/FS/FileAttrs.NT.cpp b/Source/IO/FS/FileAttrs.NT.cpp index d96cfec3..38924eef 100644 --- a/Source/IO/FS/FileAttrs.NT.cpp +++ b/Source/IO/FS/FileAttrs.NT.cpp @@ -11,7 +11,7 @@ namespace Aurora::IO::FS { - AUKN_SYM AuList FileAttrsList(const AuString &path) + AUKN_SYM AuList FileAttrsList(const AuROString &path) { AuList names; WIN32_FIND_STREAM_DATA data; @@ -108,25 +108,46 @@ namespace Aurora::IO::FS return names; } - AUKN_SYM AuResult FileAttrsGet(const AuString &path, const AuString &attr) + AUKN_SYM AuResult FileAttrsGet(const AuROString &path, const AuROString &attr) { - AuByteBuffer temp; + try + { + AuByteBuffer temp; - if (!AuFS::ReadFile(path + ":" + attr, temp)) + if (!AuFS::ReadFile(AuString(path) + ":" + AuString(attr), temp)) + { + return {}; + } + + return AuMove(temp); + } + catch (...) { return {}; } - - return AuMove(temp); } - AUKN_SYM bool FileAttrsSet(const AuString &path, const AuString &attr, const Memory::MemoryViewRead &view) + AUKN_SYM bool FileAttrsSet(const AuROString &path, const AuROString &attr, const Memory::MemoryViewRead &view) { - return AuFS::WriteFile(path + ":" + attr, view); + try + { + return AuFS::WriteFile(AuString(path) + ":" + AuString(attr), view); + } + catch (...) + { + return false; + } } - AUKN_SYM bool FileAttrsDel(const AuString &path, const AuString &attr) + AUKN_SYM bool FileAttrsDel(const AuROString &path, const AuROString &attr) { - return AuFS::Remove(path + ":" + attr) || AuFS::FileExists(path); + try + { + return AuFS::Remove(AuString(path) + ":" + AuString(attr)) || AuFS::FileExists(path); + } + catch (...) + { + return false; + } } } \ No newline at end of file diff --git a/Source/IO/FS/FileAttrs.Unix.cpp b/Source/IO/FS/FileAttrs.Unix.cpp index 27f25fb3..c1aa079b 100644 --- a/Source/IO/FS/FileAttrs.Unix.cpp +++ b/Source/IO/FS/FileAttrs.Unix.cpp @@ -13,7 +13,7 @@ namespace Aurora::IO::FS { - AUKN_SYM AuList FileAttrsList(const AuString &path) + AUKN_SYM AuList FileAttrsList(const AuROString &path) { static const auto kLength = 10 * 1024; AuString buffer; @@ -43,11 +43,12 @@ namespace Aurora::IO::FS return {}; } - return AuSplitString(buffer, "\00"); + return AuSplitStringLegacy(buffer, "\00"); } - AUKN_SYM AuResult FileAttrsGet(const AuString &path, const AuString &attr) + AUKN_SYM AuResult FileAttrsGet(const AuROString &path, const AuROString &attr) { + AuString copy(attr); AuByteBuffer buffer; auto srcPath = NormalizePathRet(path); @@ -56,7 +57,7 @@ namespace Aurora::IO::FS return {}; } - auto length = ::getxattr(srcPath.c_str(), attr.c_str(), nullptr, 0); + auto length = ::getxattr(srcPath.c_str(), copy.c_str(), nullptr, 0); if (length < 0) { SysPushErrorIO("Error reading attribute"); @@ -74,7 +75,7 @@ namespace Aurora::IO::FS return {}; } - length = ::getxattr(srcPath.c_str(), attr.c_str(), buffer.base, length); + length = ::getxattr(srcPath.c_str(), copy.c_str(), buffer.base, length); if (length < 0) { SysPushErrorIO("Error reading attribute"); @@ -86,19 +87,21 @@ namespace Aurora::IO::FS return AuMove(buffer); } - AUKN_SYM bool FileAttrsSet(const AuString &path, const AuString &attr, const Memory::MemoryViewRead &view) + AUKN_SYM bool FileAttrsSet(const AuROString &path, const AuROString &attr, const Memory::MemoryViewRead &view) { + AuString copy(attr); + auto srcPath = NormalizePathRet(path); if (srcPath.empty()) { return false; } - if (::setxattr(srcPath.c_str(), attr.c_str(), view.ptr, view.length, XATTR_CREATE) == -1) + if (::setxattr(srcPath.c_str(), copy.c_str(), view.ptr, view.length, XATTR_CREATE) == -1) { if (errno == EEXIST) { - if (::setxattr(srcPath.c_str(), attr.c_str(), view.ptr, view.length, XATTR_REPLACE) == -1) + if (::setxattr(srcPath.c_str(), copy.c_str(), view.ptr, view.length, XATTR_REPLACE) == -1) { SysPushErrorIO(); return false; @@ -109,15 +112,17 @@ namespace Aurora::IO::FS return true; } - AUKN_SYM bool FileAttrsDel(const AuString &path, const AuString &attr) + AUKN_SYM bool FileAttrsDel(const AuROString &path, const AuROString &attr) { + AuString copy(attr); + auto srcPath = NormalizePathRet(path); if (srcPath.empty()) { return false; } - return (::removexattr(srcPath.c_str(), attr.c_str()) == 0) || + return (::removexattr(srcPath.c_str(), copy.c_str()) == 0) || (errno == ENODATA); } } \ No newline at end of file diff --git a/Source/IO/FS/FileStream.NT.cpp b/Source/IO/FS/FileStream.NT.cpp index 5353afab..284b25ba 100644 --- a/Source/IO/FS/FileStream.NT.cpp +++ b/Source/IO/FS/FileStream.NT.cpp @@ -566,7 +566,7 @@ namespace Aurora::IO::FS AuSafeDelete(that); } - static IFileStream *OpenNewEx(const AuString &path, + static IFileStream *OpenNewEx(const AuROString &path, EFileOpenMode openMode, EFileAdvisoryLockLevel lock, bool bCheck) @@ -609,7 +609,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM IFileStream *CreateNew(const AuString &path) + AUKN_SYM IFileStream *CreateNew(const AuROString &path) { return OpenNewEx(path, EFileOpenMode::eWrite, EFileAdvisoryLockLevel::eBlockReadWrite, true); } @@ -619,7 +619,7 @@ namespace Aurora::IO::FS AuSafeDelete(that); } - AUKN_SYM IFileStream *OpenNew(const AuString &path, EFileOpenMode openMode, EFileAdvisoryLockLevel lock) + AUKN_SYM IFileStream *OpenNew(const AuROString &path, EFileOpenMode openMode, EFileAdvisoryLockLevel lock) { return OpenNewEx(path, openMode, lock, false); } @@ -629,7 +629,7 @@ namespace Aurora::IO::FS AuSafeDelete(that); } - AUKN_SYM IFileStream *OpenReadNew(const AuString &path, EFileAdvisoryLockLevel level) + AUKN_SYM IFileStream *OpenReadNew(const AuROString &path, EFileAdvisoryLockLevel level) { return OpenNew(path, EFileOpenMode::eRead, level); } @@ -639,7 +639,7 @@ namespace Aurora::IO::FS AuSafeDelete(that); } - AUKN_SYM IFileStream *OpenWriteNew(const AuString &path, EFileAdvisoryLockLevel level) + AUKN_SYM IFileStream *OpenWriteNew(const AuROString &path, EFileAdvisoryLockLevel level) { return OpenNew(path, EFileOpenMode::eWrite, level); } diff --git a/Source/IO/FS/FileStream.Unix.cpp b/Source/IO/FS/FileStream.Unix.cpp index d95f73e7..c4c3f585 100755 --- a/Source/IO/FS/FileStream.Unix.cpp +++ b/Source/IO/FS/FileStream.Unix.cpp @@ -476,7 +476,7 @@ namespace Aurora::IO::FS } } - AUKN_SYM IFileStream *CreateNew(const AuString &path) + AUKN_SYM IFileStream *CreateNew(const AuROString &path) { return OpenNewEx(path, EFileOpenMode::eWrite, EFileAdvisoryLockLevel::eBlockReadWrite, true); } @@ -486,7 +486,7 @@ namespace Aurora::IO::FS AuSafeDelete(that); } - AUKN_SYM IFileStream *OpenNew(const AuString &path, EFileOpenMode openMode, EFileAdvisoryLockLevel lock) + AUKN_SYM IFileStream *OpenNew(const AuROString &path, EFileOpenMode openMode, EFileAdvisoryLockLevel lock) { return OpenNewEx(path, openMode, lock, false); } @@ -496,7 +496,7 @@ namespace Aurora::IO::FS AuSafeDelete(that); } - AUKN_SYM IFileStream *OpenReadNew(const AuString &path, EFileAdvisoryLockLevel level) + AUKN_SYM IFileStream *OpenReadNew(const AuROString &path, EFileAdvisoryLockLevel level) { return OpenNewEx(path, EFileOpenMode::eRead, level, false); } @@ -506,7 +506,7 @@ namespace Aurora::IO::FS AuSafeDelete(that); } - AUKN_SYM IFileStream *OpenWriteNew(const AuString &path, EFileAdvisoryLockLevel level) + AUKN_SYM IFileStream *OpenWriteNew(const AuROString &path, EFileAdvisoryLockLevel level) { return OpenNewEx(path, EFileOpenMode::eWrite, level, false); } diff --git a/Source/IO/FS/FileTrust.NT.cpp b/Source/IO/FS/FileTrust.NT.cpp index 4b097839..1e6e58db 100644 --- a/Source/IO/FS/FileTrust.NT.cpp +++ b/Source/IO/FS/FileTrust.NT.cpp @@ -11,21 +11,21 @@ namespace Aurora::IO::FS { - AUKN_SYM bool BlockFile(const AuString &path) + AUKN_SYM bool BlockFile(const AuROString &path) { - return AuFS::WriteFile(path + ":Zone.Identifier", "[ZoneTransfer]\r\nZoneId=3\r\n"); + return AuFS::WriteFile(AuString(path) + ":Zone.Identifier", "[ZoneTransfer]\r\nZoneId=3\r\n"); } - AUKN_SYM bool UnblockFile(const AuString &path) + AUKN_SYM bool UnblockFile(const AuROString &path) { - return AuFS::WriteFile(path + ":Zone.Identifier", "[ZoneTransfer]\r\nZoneId=0\r\n"); + return AuFS::WriteFile(AuString(path) + ":Zone.Identifier", "[ZoneTransfer]\r\nZoneId=0\r\n"); } - AUKN_SYM bool TrustFile(const AuString &path) + AUKN_SYM bool TrustFile(const AuROString &path) { AuString idc; - auto uri = path + ":Zone.Identifier"; + auto uri = AuString(path) + ":Zone.Identifier"; if (AuFS::FileExists(uri)) { @@ -38,11 +38,11 @@ namespace Aurora::IO::FS return true; } - AUKN_SYM bool IsFileBlocked(const AuString &path) + AUKN_SYM bool IsFileBlocked(const AuROString &path) { AuString content; - auto uri = path + ":Zone.Identifier"; + auto uri = AuString(path) + ":Zone.Identifier"; if (!AuFS::FileExists(uri)) { return !AuFS::FileExists(path); @@ -58,11 +58,11 @@ namespace Aurora::IO::FS AuStringContains(content, "ZoneId=4\r\n"); // untrusted } - AUKN_SYM bool IsFileTrusted(const AuString &path) + AUKN_SYM bool IsFileTrusted(const AuROString &path) { AuString content; - auto uri = path + ":Zone.Identifier"; + auto uri = AuString(path) + ":Zone.Identifier"; if (!AuFS::FileExists(uri)) { diff --git a/Source/IO/FS/FileTrust.Unix.cpp b/Source/IO/FS/FileTrust.Unix.cpp index 4d103704..5a19ac99 100644 --- a/Source/IO/FS/FileTrust.Unix.cpp +++ b/Source/IO/FS/FileTrust.Unix.cpp @@ -17,7 +17,7 @@ namespace Aurora::IO::FS { - AUKN_SYM bool BlockFile(const AuString &path) + AUKN_SYM bool BlockFile(const AuROString &path) { auto srcPath = NormalizePathRet(path); if (srcPath.empty()) @@ -81,7 +81,7 @@ namespace Aurora::IO::FS return true; } - AUKN_SYM bool UnblockFile(const AuString &path) + AUKN_SYM bool UnblockFile(const AuROString &path) { auto srcPath = NormalizePathRet(path); if (srcPath.empty()) @@ -136,7 +136,7 @@ namespace Aurora::IO::FS return true; } - AUKN_SYM bool IsFileBlocked(const AuString &path) + AUKN_SYM bool IsFileBlocked(const AuROString &path) { auto srcPath = NormalizePathRet(path); if (srcPath.empty()) @@ -160,7 +160,7 @@ namespace Aurora::IO::FS return false; } - AUKN_SYM bool IsFileTrusted(const AuString &path) + AUKN_SYM bool IsFileTrusted(const AuROString &path) { struct stat s; auto srcPath = NormalizePathRet(path); diff --git a/Source/IO/FS/Watcher.NT.cpp b/Source/IO/FS/Watcher.NT.cpp index e0d67d45..af330a51 100644 --- a/Source/IO/FS/Watcher.NT.cpp +++ b/Source/IO/FS/Watcher.NT.cpp @@ -545,7 +545,9 @@ namespace Aurora::IO::FS if (AuIOFS::FileExists(translated)) { - AuIOFS::GetDirectoryFromPath(translated, translated); + AuROString out; + AuIOFS::GetDirectoryFromPath(out, translated); + translated = out; } else { diff --git a/Source/Locale/LocaleConvertWide.cpp b/Source/Locale/LocaleConvertWide.cpp index 383700d7..7007e82c 100644 --- a/Source/Locale/LocaleConvertWide.cpp +++ b/Source/Locale/LocaleConvertWide.cpp @@ -74,7 +74,7 @@ namespace Aurora::Locale return {}; } - AUKN_SYM std::wstring ConvertFromUTF8(const AuString &in) + AUKN_SYM std::wstring ConvertFromUTF8(const AuROString &in) { AU_DEBUG_MEMCRUNCH; @@ -82,7 +82,7 @@ namespace Aurora::Locale { #if defined(AU_HAS_MSFT_NATIONALLANGSUPPORT) std::wstring ret; - auto chars = MultiByteToWideChar(CP_UTF8, 0, in.c_str(), in.length(), NULL, 0); + auto chars = MultiByteToWideChar(CP_UTF8, 0, in.data(), in.length(), NULL, 0); if (!chars) { @@ -90,7 +90,7 @@ namespace Aurora::Locale } ret.resize(chars); - MultiByteToWideChar(CP_UTF8, 0, in.c_str(), in.length(), ret.data(), ret.size()); + MultiByteToWideChar(CP_UTF8, 0, in.data(), in.length(), ret.data(), ret.size()); return ret; #elif !defined(AU_NO_CPPLOCALE) return gUtf8Conv.from_bytes(in); diff --git a/Source/Logging/AuLogger.cpp b/Source/Logging/AuLogger.cpp index 06186760..7aa0d0dc 100644 --- a/Source/Logging/AuLogger.cpp +++ b/Source/Logging/AuLogger.cpp @@ -47,7 +47,7 @@ namespace Aurora::Logging else [[unlikely]] { Parse::SplitNewlines(msg.line, - [&](const AuString &line) + [&](const AuROString &line) { ConsoleMessage dup = msg; dup.line = line; diff --git a/Source/Parse/AuBase32.cpp b/Source/Parse/AuBase32.cpp index 9d79eec5..af1c10e9 100644 --- a/Source/Parse/AuBase32.cpp +++ b/Source/Parse/AuBase32.cpp @@ -11,7 +11,7 @@ namespace Aurora::Parse { - AUKN_SYM bool Base32Decode(const AuString &in, AuByteBuffer &decoded) + AUKN_SYM bool Base32Decode(const AuROString &in, AuByteBuffer &decoded) { int iRet; unsigned long uLength = in.size(); @@ -23,9 +23,9 @@ namespace Aurora::Parse return false; } - iRet = ::base32_decode(AuReinterpretCast(decoded.writePtr), + iRet = ::base32_decode(AuReinterpretCast(in.data()), (unsigned long)uLength, - AuReinterpretCast(&decoded[0]), + AuReinterpretCast(decoded.writePtr), &uLength, BASE32_RFC4648); if (iRet != CRYPT_OK) diff --git a/Source/Parse/AuBase64.cpp b/Source/Parse/AuBase64.cpp index 7714365d..f25c4255 100644 --- a/Source/Parse/AuBase64.cpp +++ b/Source/Parse/AuBase64.cpp @@ -11,7 +11,7 @@ namespace Aurora::Parse { - AUKN_SYM bool Base64Decode(const AuString &in, AuByteBuffer &decoded, bool bUrl) + AUKN_SYM bool Base64Decode(const AuROString &in, AuByteBuffer &decoded, bool bUrl) { int iRet; unsigned long uLength = (unsigned long)in.size(); @@ -25,16 +25,16 @@ namespace Aurora::Parse if (bUrl) { - iRet = ::base64url_decode(AuReinterpretCast(decoded.writePtr), + iRet = ::base64url_decode(AuReinterpretCast(in.data()), (unsigned long)uLength, - AuReinterpretCast(&decoded[0]), + AuReinterpretCast(decoded.writePtr), &uLength); } else { - iRet = ::base64_decode(AuReinterpretCast(decoded.writePtr), + iRet = ::base64_decode(AuReinterpretCast(in.data()), (unsigned long)uLength, - AuReinterpretCast(&decoded[0]), + AuReinterpretCast(decoded.writePtr), &uLength); } diff --git a/Source/Parse/AuHex.cpp b/Source/Parse/AuHex.cpp index 9d67d8b9..0e4f5f45 100644 --- a/Source/Parse/AuHex.cpp +++ b/Source/Parse/AuHex.cpp @@ -41,8 +41,11 @@ namespace Aurora::Parse return true; } - AUKN_SYM bool HexToInt(const char *pHex, AuUInt32 uLength, AuUInt64 &val) + AUKN_SYM bool HexToInt(const AuROString &hex, AuUInt64 &val) { + auto pHex = hex.data(); + auto uLength = hex.length(); + val = 0; uLength = AuMin(AuUInt32(sizeof(AuUInt64) * 2), uLength); @@ -100,7 +103,7 @@ namespace Aurora::Parse hex[1] = NibbleToChar(lowNibble); } - AUKN_SYM bool DecodeHex(const AuString &in, AuByteBuffer &out) + AUKN_SYM bool DecodeHex(const AuROString &in, AuByteBuffer &out) { #define HEX_GRAMMAR_CONSUME_ALL(x) \ for (; i < in.size(); i++) \ diff --git a/Source/Parse/AuParser.cpp b/Source/Parse/AuParser.cpp index 281dc724..52c5300a 100644 --- a/Source/Parse/AuParser.cpp +++ b/Source/Parse/AuParser.cpp @@ -849,11 +849,11 @@ namespace Aurora::Parse return res; } - AUKN_SYM AuResult ParseSInt16(const AuString &str) + AUKN_SYM AuResult ParseSInt16(const AuROString &str) { const char *didntFuckingAskTYVM { &str[str.size()] }; - auto res = ParseSInt16(str.c_str(), didntFuckingAskTYVM); + auto res = ParseSInt16(str.data(), didntFuckingAskTYVM); if (!res.has_value()) { return {}; @@ -886,11 +886,11 @@ namespace Aurora::Parse return res; } - AUKN_SYM AuResult ParseUInt16(const AuString &str) + AUKN_SYM AuResult ParseUInt16(const AuROString &str) { const char *didntFuckingAskTYVM { &str[str.size()] }; - auto res = ParseUInt16(str.c_str(), didntFuckingAskTYVM); + auto res = ParseUInt16(str.data(), didntFuckingAskTYVM); if (!res.has_value()) { return {}; @@ -904,11 +904,11 @@ namespace Aurora::Parse return res; } - AUKN_SYM AuResult ParseSInt(const AuString &str) + AUKN_SYM AuResult ParseSInt(const AuROString &str) { const char *didntFuckingAskTYVM { &str[str.size()] }; - auto res = ParseSInt(str.c_str(), didntFuckingAskTYVM); + auto res = ParseSInt(str.data(), didntFuckingAskTYVM); if (!res.has_value()) { return {}; @@ -941,11 +941,11 @@ namespace Aurora::Parse return res; } - AUKN_SYM AuResult ParseUInt(const AuString &str) + AUKN_SYM AuResult ParseUInt(const AuROString &str) { const char *didntFuckingAskTYVM { &str[str.size()] }; - auto res = ParseUInt(str.c_str(), didntFuckingAskTYVM); + auto res = ParseUInt(str.data(), didntFuckingAskTYVM); if (!res.has_value()) { return {}; diff --git a/Source/Processes/AuOpen.Unix.cpp b/Source/Processes/AuOpen.Unix.cpp index 2414bc5a..375e9c96 100644 --- a/Source/Processes/AuOpen.Unix.cpp +++ b/Source/Processes/AuOpen.Unix.cpp @@ -103,7 +103,7 @@ namespace Aurora::Processes } } - static void UnixOpenAsync(const AuString &uri, bool bType) + static void UnixOpenAsync(const AuROString &uri, bool bType) { if (uri.empty()) { @@ -113,12 +113,12 @@ namespace Aurora::Processes AuThreads::Spawn(std::bind(&UnixOpenAsyncThread, AuString(uri), bType), true); } - AUKN_SYM void OpenUri(const AuString &uri) + AUKN_SYM void OpenUri(const AuROString &uri) { UnixOpenAsync(uri, true); } - AUKN_SYM void OpenFile(const AuString &file) + AUKN_SYM void OpenFile(const AuROString &file) { UnixOpenAsync(file, false); } diff --git a/Source/Processes/AuOpen.Win32.cpp b/Source/Processes/AuOpen.Win32.cpp index dc6fa609..69f2127e 100644 --- a/Source/Processes/AuOpen.Win32.cpp +++ b/Source/Processes/AuOpen.Win32.cpp @@ -132,14 +132,14 @@ namespace Aurora::Processes gOpenerThread.reset(); } - AUKN_SYM void OpenUri(const AuString &uri) + AUKN_SYM void OpenUri(const AuROString &uri) { AU_LOCK_GUARD(gCondMutex); - AuTryInsert(gOpenItems, AuMakePair(uri, true)); + AuTryInsert(gOpenItems, AuMakePair(AuString(uri), true)); gCondVariable->Signal(); } - AUKN_SYM void OpenFile(const AuString &file) + AUKN_SYM void OpenFile(const AuROString &file) { auto path = AuIOFS::NormalizePathRet(file);