cpp-common/bt2: move findAllPluginsFromDir() to `plugin-load.hpp`
[babeltrace.git] / src / cpp-common / bt2 / plugin-load.hpp
diff --git a/src/cpp-common/bt2/plugin-load.hpp b/src/cpp-common/bt2/plugin-load.hpp
new file mode 100644 (file)
index 0000000..0f3e8d5
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2024 EfficiOS, Inc.
+ *
+ * SPDX-License-Identifier: MIT
+ */
+
+#ifndef BABELTRACE_CPP_COMMON_BT2_PLUGIN_LOAD_HPP
+#define BABELTRACE_CPP_COMMON_BT2_PLUGIN_LOAD_HPP
+
+#include <babeltrace2/babeltrace.h>
+
+#include "common/common.h"
+#include "cpp-common/bt2c/c-string-view.hpp"
+
+#include "exc.hpp"
+#include "plugin-set.hpp"
+
+namespace bt2 {
+
+inline ConstPluginSet::Shared findAllPluginsFromDir(const bt2c::CStringView path,
+                                                    const bool recurse, const bool failOnLoadError)
+{
+    const bt_plugin_set *pluginSet;
+
+    switch (bt_plugin_find_all_from_dir(path, recurse, failOnLoadError, &pluginSet)) {
+    case BT_PLUGIN_FIND_ALL_FROM_DIR_STATUS_OK:
+        return ConstPluginSet::Shared::createWithoutRef(pluginSet);
+    case BT_PLUGIN_FIND_ALL_FROM_DIR_STATUS_NOT_FOUND:
+        return ConstPluginSet::Shared {};
+    case BT_PLUGIN_FIND_ALL_FROM_DIR_STATUS_MEMORY_ERROR:
+        throw MemoryError {};
+    case BT_PLUGIN_FIND_ALL_FROM_DIR_STATUS_ERROR:
+        throw Error {};
+    }
+
+    bt_common_abort();
+}
+
+} /* namespace bt2 */
+
+#endif /* BABELTRACE_CPP_COMMON_BT2_PLUGIN_LOAD_HPP */
This page took 0.025824 seconds and 4 git commands to generate.