diff --git a/Src/IACore/imp/inl/iacore/string/string.inl b/Src/IACore/imp/inl/iacore/string/string.inl index 5600a3c..7631644 100644 --- a/Src/IACore/imp/inl/iacore/string/string.inl +++ b/Src/IACore/imp/inl/iacore/string/string.inl @@ -300,6 +300,7 @@ namespace ia define_member_function(BOOL, resize, IN size_type newCount) { + newCount += 1; const auto did_reallocate = reserve(newCount); for(; Base::m_count < newCount; Base::m_count++) Base::m_data[Base::m_count] = 0; return did_reallocate; diff --git a/Src/IACore/inc/hpp/iacore/file.hpp b/Src/IACore/inc/hpp/iacore/file.hpp index 2df2e23..3dd30a7 100644 --- a/Src/IACore/inc/hpp/iacore/file.hpp +++ b/Src/IACore/inc/hpp/iacore/file.hpp @@ -21,7 +21,7 @@ #include #include #include - +#include namespace ia { @@ -35,6 +35,19 @@ namespace ia OPEN_FLAG_BINARY = 4, }; + public: + STATIC Vector ReadToVector(IN CONST String &path) + { + File f(path, OPEN_FLAG_READ | OPEN_FLAG_BINARY); + return f.ReadToVector(); + } + + STATIC String ReadToString(IN CONST String &path) + { + File f(path, OPEN_FLAG_READ); + return f.ReadToString(); + } + public: File(IN CONST String &path, IN UINT32 flags) { @@ -78,6 +91,23 @@ namespace ia return readSize; } + Vector ReadToVector() + { + Vector result; + result.resize(Size()); + Read(result.data(), result.size(), result.size()); + return result; + } + + String ReadToString() + { + String result; + result.resize(Size()); + Read(result.data(), result.size(), result.size()); + result.back() = '\0'; + return result; + } + public: template STATIC INLINE String ExtractFilenameFromPath(IN CONST String &path) { diff --git a/Src/IACoreTest/imp/cpp/Main.cpp b/Src/IACoreTest/imp/cpp/Main.cpp index 0ca45f0..e910e92 100644 --- a/Src/IACoreTest/imp/cpp/Main.cpp +++ b/Src/IACoreTest/imp/cpp/Main.cpp @@ -5,7 +5,8 @@ using namespace ia; -VOID print(IN CONST Span& s) +template +VOID print(IN CONST Span<_value_type>& s) { for(const auto& v: s) Logger::Info(v);