summaryrefslogtreecommitdiff
path: root/gruel/src
diff options
context:
space:
mode:
authorTim O'Shea <tim.oshea753@gmail.com>2012-12-07 09:28:41 -0800
committerJohnathan Corgan <johnathan@corganlabs.com>2012-12-07 09:36:19 -0800
commit52ca5e2765b7a4532d26502b5b76b7c85c5019d7 (patch)
tree27901f998f00d4c824c060723fab9d397931aeb3 /gruel/src
parent69990c3fb6d4c7a0daee0229407241aa1959095a (diff)
core: added gr_tuntap_pdu, gr_socket_pdu, and msg passing enhancements
Diffstat (limited to 'gruel/src')
-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