Mark vfs functions as OC_REQUIRED_RESULT
authorHannah von Reth <hannah.vonreth@owncloud.com>
Thu, 17 Dec 2020 13:13:24 +0000 (14:13 +0100)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Wed, 30 Dec 2020 15:17:48 +0000 (16:17 +0100)
src/common/asserts.h
src/common/vfs.h

index 38440ce1b2c656560e5b647652d423b4154794f9..1967717e4d37365ae979c6fce497e826c3c7724f 100644 (file)
@@ -3,6 +3,13 @@
 
 #include <qglobal.h>
 
+#if 0 && defined(Q_CC_MSVC)
+// requires c++2017
+#define OC_REQUIRED_RESULT [[nodiscard]]
+#else
+#define OC_REQUIRED_RESULT Q_REQUIRED_RESULT
+#endif
+
 #if defined(QT_FORCE_ASSERTS) || !defined(QT_NO_DEBUG)
 #define OC_ASSERT_MSG qFatal
 #else
index b7bd22098d4a0db03bc28731673598a4352efc88..c4e9ffa374e318f70c65af962e136ef2b4314f47 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <memory>
 
+#include "assert.h"
 #include "ocsynclib.h"
 #include "result.h"
 #include "syncfilestatus.h"
@@ -158,24 +159,24 @@ public:
      * If the remote metadata changes, the local placeholder's metadata should possibly
      * change as well.
      */
-    virtual Result<void, QString> updateMetadata(const QString &filePath, time_t modtime, qint64 size, const QByteArray &fileId) = 0;
+    virtual OC_REQUIRED_RESULT Result<void, QString> updateMetadata(const QString &filePath, time_t modtime, qint64 size, const QByteArray &fileId) = 0;
 
     /// Create a new dehydrated placeholder. Called from PropagateDownload.
-    virtual Result<void, QString> createPlaceholder(const SyncFileItem &item) = 0;
+    virtual OC_REQUIRED_RESULT Result<void, QString> createPlaceholder(const SyncFileItem &item) = 0;
 
     /** Convert a hydrated placeholder to a dehydrated one. Called from PropagateDownlaod.
      *
      * This is different from delete+create because preserving some file metadata
      * (like pin states) may be essential for some vfs plugins.
      */
-    virtual Result<void, QString> dehydratePlaceholder(const SyncFileItem &item) = 0;
+    virtual OC_REQUIRED_RESULT Result<void, QString> dehydratePlaceholder(const SyncFileItem &item) = 0;
 
     /** Discovery hook: even unchanged files may need UPDATE_METADATA.
      *
      * For instance cfapi vfs wants local hydrated non-placeholder files to
      * become hydrated placeholder files.
      */
-    virtual bool needsMetadataUpdate(const SyncFileItem &item) = 0;
+    virtual OC_REQUIRED_RESULT bool needsMetadataUpdate(const SyncFileItem &item) = 0;
 
     /** Convert a new file to a hydrated placeholder.
      *
@@ -190,13 +191,13 @@ public:
      * new placeholder shall supersede, for rename-replace actions with new downloads,
      * for example.
      */
-    virtual Result<void, QString> convertToPlaceholder(
+    virtual OC_REQUIRED_RESULT Result<void, QString> convertToPlaceholder(
         const QString &filename,
         const SyncFileItem &item,
         const QString &replacesFile = QString()) = 0;
 
     /// Determine whether the file at the given absolute path is a dehydrated placeholder.
-    virtual bool isDehydratedPlaceholder(const QString &filePath) = 0;
+    virtual OC_REQUIRED_RESULT bool isDehydratedPlaceholder(const QString &filePath) = 0;
 
     /** Similar to isDehydratedPlaceholder() but used from sync discovery.
      *
@@ -205,7 +206,7 @@ public:
      *
      * Returning true means that type was fully determined.
      */
-    virtual bool statTypeVirtualFile(csync_file_stat_t *stat, void *stat_data) = 0;
+    virtual OC_REQUIRED_RESULT bool statTypeVirtualFile(csync_file_stat_t *stat, void *stat_data) = 0;
 
     /** Sets the pin state for the item at a path.
      *
@@ -216,7 +217,7 @@ public:
      *
      * folderPath is relative to the sync folder. Can be "" for root folder.
      */
-    virtual bool setPinState(const QString &folderPath, PinState state) = 0;
+    virtual OC_REQUIRED_RESULT bool setPinState(const QString &folderPath, PinState state) = 0;
 
     /** Returns the pin state of an item at a path.
      *
@@ -227,7 +228,7 @@ public:
      *
      * Returns none on retrieval error.
      */
-    virtual Optional<PinState> pinState(const QString &folderPath) = 0;
+    virtual OC_REQUIRED_RESULT Optional<PinState> pinState(const QString &folderPath) = 0;
 
     /** Returns availability status of an item at a path.
      *
@@ -236,7 +237,7 @@ public:
      *
      * folderPath is relative to the sync folder. Can be "" for root folder.
      */
-    virtual AvailabilityResult availability(const QString &folderPath) = 0;
+    virtual OC_REQUIRED_RESULT AvailabilityResult availability(const QString &folderPath) = 0;
 
 public slots:
     /** Update in-sync state based on SyncFileStatusTracker signal.