summaryrefslogtreecommitdiff
path: root/gruel
diff options
context:
space:
mode:
authorJohnathan Corgan <johnathan@corganlabs.com>2012-12-07 10:06:29 -0800
committerJohnathan Corgan <johnathan@corganlabs.com>2012-12-07 10:07:52 -0800
commitddb6ada4dbd0fa8db97ba6f2f4d2d8cb4149c8f1 (patch)
tree5faf735022d164b5f222a2d1b6e11b0b901f8a28 /gruel
parent583ba9b96ce3c3e52173cd847a0c00ff10c1cf85 (diff)
parent52ca5e2765b7a4532d26502b5b76b7c85c5019d7 (diff)
Merge branch 'master' into next
Conflicts: gnuradio-core/src/lib/runtime/gr_basic_block.h
Diffstat (limited to 'gruel')
-rw-r--r--gruel/src/include/gruel/pmt.h6
-rw-r--r--gruel/src/lib/pmt/pmt.cc16
-rw-r--r--gruel/src/swig/pmt_swig.i5
3 files changed, 27 insertions, 0 deletions
diff --git a/gruel/src/include/gruel/pmt.h b/gruel/src/include/gruel/pmt.h
index a462155c5f..d09686783c 100644
--- a/gruel/src/include/gruel/pmt.h
+++ b/gruel/src/include/gruel/pmt.h
@@ -734,6 +734,12 @@ GRUEL_API pmt_t pmt_list_add(pmt_t list, const pmt_t& item);
*/
GRUEL_API pmt_t pmt_list_rm(pmt_t list, const pmt_t& item);
+/*!
+ * \brief Return bool of \p list contains \p item
+ */
+GRUEL_API bool pmt_list_has(pmt_t list, const pmt_t& item);
+
+
/*
* ------------------------------------------------------------------------
* read / write
diff --git a/gruel/src/lib/pmt/pmt.cc b/gruel/src/lib/pmt/pmt.cc
index 3eb39ed7b1..e5baca98a8 100644
--- a/gruel/src/lib/pmt/pmt.cc
+++ b/gruel/src/lib/pmt/pmt.cc
@@ -1340,6 +1340,22 @@ pmt_list_rm(pmt_t list, const pmt_t& item)
}
}
+bool
+pmt_list_has(pmt_t list, const pmt_t& item)
+{
+ if(pmt_is_pair(list)){
+ pmt_t left = pmt_car(list);
+ pmt_t right = pmt_cdr(list);
+ if(pmt_equal(left,item))
+ return true;
+ return pmt_list_has(right, item);
+ } else {
+ if(pmt_is_null(list))
+ return false;
+ throw std::runtime_error("list contains invalid format!");
+ }
+}
+
pmt_t
pmt_caar(pmt_t pair)
{
diff --git a/gruel/src/swig/pmt_swig.i b/gruel/src/swig/pmt_swig.i
index d46143424b..b1628c9983 100644
--- a/gruel/src/swig/pmt_swig.i
+++ b/gruel/src/swig/pmt_swig.i
@@ -701,6 +701,11 @@ pmt_t pmt_list_add(pmt_t list, const pmt_t& item);
*/
pmt_t pmt_list_rm(pmt_t list, const pmt_t& item);
+/*!
+ * \brief Return bool of \p list contains \p item
+ */
+bool pmt_list_has(pmt_t list, const pmt_t& item);
+
/*
* ------------------------------------------------------------------------
* read / write