diff options
author | Friedemann Kleint <[email protected]> | 2023-10-06 08:38:33 +0200 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2023-10-10 11:46:29 +0200 |
commit | 95713d33383fa095d9b943e540fa927f03b65b8c (patch) | |
tree | eac8dea60d31b18ae61b313b84ccde670807dcfd /sources/shiboken6/tests/libsample | |
parent | 1faeb2e56ffdbeeed4df41b58851e51a7766c18c (diff) |
shiboken tests: Fix up class SimpleFile
Make it a proper object type with a unique pointer.
Use the new std::filesystem API to retrieve size and
check for existence instead of opening and winding.
Pick-to: 6.6
Fixes: PYSIDE-2479
Change-Id: I07e64a2b002195c7b6bce3526ef3ec6ea30a555e
Reviewed-by: Qt CI Bot <[email protected]>
Reviewed-by: Shyamnath Premnadh <[email protected]>
Diffstat (limited to 'sources/shiboken6/tests/libsample')
-rw-r--r-- | sources/shiboken6/tests/libsample/simplefile.cpp | 42 | ||||
-rw-r--r-- | sources/shiboken6/tests/libsample/simplefile.h | 11 |
2 files changed, 26 insertions, 27 deletions
diff --git a/sources/shiboken6/tests/libsample/simplefile.cpp b/sources/shiboken6/tests/libsample/simplefile.cpp index 86c951044..e51b14088 100644 --- a/sources/shiboken6/tests/libsample/simplefile.cpp +++ b/sources/shiboken6/tests/libsample/simplefile.cpp @@ -4,63 +4,59 @@ #include "simplefile.h" #include <cstdlib> -#include <cstring> -#include <fstream> +#include <cstdio> +#include <string> +#include <filesystem> -class SimpleFile_p +class SimpleFilePrivate { public: - SimpleFile_p(const char *filename) : - m_filename(strdup(filename)) {} + LIBMINIMAL_DISABLE_COPY_MOVE(SimpleFilePrivate) - ~SimpleFile_p() - { - std::free(m_filename); - } + SimpleFilePrivate(const char *filename) : m_filename(filename) {} + ~SimpleFilePrivate() = default; - char *m_filename; + std::string m_filename; FILE *m_descriptor = nullptr; long m_size = 0; }; -SimpleFile::SimpleFile(const char *filename) +SimpleFile::SimpleFile(const char *filename) : + p(std::make_unique<SimpleFilePrivate>(filename)) { - p = new SimpleFile_p(filename); } SimpleFile::~SimpleFile() { close(); - delete p; } const char *SimpleFile::filename() { - return p->m_filename; + return p->m_filename.c_str(); } -long SimpleFile::size() +long SimpleFile::size() const { return p->m_size; } bool SimpleFile::open() { - auto *descriptor = fopen(p->m_filename, "rb"); + auto *descriptor = std::fopen(p->m_filename.c_str(), "rb"); if (descriptor == nullptr) return false; p->m_descriptor = descriptor; - std::fseek(p->m_descriptor, 0, SEEK_END); - p->m_size = ftell(p->m_descriptor); - std::rewind(p->m_descriptor); + const auto size = std::filesystem::file_size(std::filesystem::path(p->m_filename)); + p->m_size = long(size); return true; } void SimpleFile::close() { - if (p->m_descriptor) { + if (p->m_descriptor != nullptr) { std::fclose(p->m_descriptor); p->m_descriptor = nullptr; } @@ -68,12 +64,10 @@ void SimpleFile::close() bool SimpleFile::exists() const { - std::ifstream ifile(p->m_filename); - return !ifile.fail(); + return std::filesystem::exists(std::filesystem::path(p->m_filename)); } bool SimpleFile::exists(const char *filename) { - std::ifstream ifile(filename); - return !ifile.fail(); + return std::filesystem::exists(std::filesystem::path(filename)); } diff --git a/sources/shiboken6/tests/libsample/simplefile.h b/sources/shiboken6/tests/libsample/simplefile.h index e551dd3e5..e4612c944 100644 --- a/sources/shiboken6/tests/libsample/simplefile.h +++ b/sources/shiboken6/tests/libsample/simplefile.h @@ -6,16 +6,21 @@ #include "libsamplemacros.h" -class SimpleFile_p; +#include <memory> + +class SimpleFilePrivate; class LIBSAMPLE_API SimpleFile { public: + LIBMINIMAL_DISABLE_COPY(SimpleFile) + LIBMINIMAL_DEFAULT_MOVE(SimpleFile) + explicit SimpleFile(const char *filename); ~SimpleFile(); const char *filename(); - long size(); + long size() const; bool open(); void close(); @@ -23,7 +28,7 @@ public: static bool exists(const char *filename); private: - SimpleFile_p *p; + std::unique_ptr<SimpleFilePrivate> p; }; #endif // SIMPLEFILE_H |