]> sigrok.org Git - libsigrok.git/blobdiff - bindings/cxx/QuantityFlag_methods.cpp
Add C++ bindings.
[libsigrok.git] / bindings / cxx / QuantityFlag_methods.cpp
diff --git a/bindings/cxx/QuantityFlag_methods.cpp b/bindings/cxx/QuantityFlag_methods.cpp
new file mode 100644 (file)
index 0000000..0a53790
--- /dev/null
@@ -0,0 +1,13 @@
+vector<const QuantityFlag *>
+    QuantityFlag::flags_from_mask(unsigned int mask)
+{
+    auto result = vector<const QuantityFlag *>();
+    while (mask)
+    {
+        unsigned int new_mask = mask & (mask - 1);
+        result.push_back(QuantityFlag::get(
+            static_cast<enum sr_mqflag>(mask ^ new_mask)));
+        mask = new_mask;
+    }
+    return result;
+}