aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/tests/libsample
diff options
context:
space:
mode:
authorFriedemann Kleint <[email protected]>2023-10-06 08:38:33 +0200
committerFriedemann Kleint <[email protected]>2023-10-10 11:46:29 +0200
commit95713d33383fa095d9b943e540fa927f03b65b8c (patch)
treeeac8dea60d31b18ae61b313b84ccde670807dcfd /sources/shiboken6/tests/libsample
parent1faeb2e56ffdbeeed4df41b58851e51a7766c18c (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.cpp42
-rw-r--r--sources/shiboken6/tests/libsample/simplefile.h11
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