[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r6305 - gnuradio/branches/features/inband-usb/pmt/src/
From: |
eb |
Subject: |
[Commit-gnuradio] r6305 - gnuradio/branches/features/inband-usb/pmt/src/lib |
Date: |
Tue, 4 Sep 2007 17:05:28 -0600 (MDT) |
Author: eb
Date: 2007-09-04 17:05:28 -0600 (Tue, 04 Sep 2007)
New Revision: 6305
Modified:
gnuradio/branches/features/inband-usb/pmt/src/lib/pmt.cc
gnuradio/branches/features/inband-usb/pmt/src/lib/qa_pmt_prims.cc
Log:
fixed pmt_length for pairs
Modified: gnuradio/branches/features/inband-usb/pmt/src/lib/pmt.cc
===================================================================
--- gnuradio/branches/features/inband-usb/pmt/src/lib/pmt.cc 2007-09-04
23:04:57 UTC (rev 6304)
+++ gnuradio/branches/features/inband-usb/pmt/src/lib/pmt.cc 2007-09-04
23:05:28 UTC (rev 6305)
@@ -748,24 +748,19 @@
if (x->is_uniform_vector())
return _uniform_vector(x)->length();
- if (x->is_pair()) {
-
+ if (x->is_pair() || x->is_null()) {
size_t length=0;
- pmt_t alist = x;
-
- while (pmt_is_pair(alist)){
- pmt_t p = pmt_car(alist);
- if (!pmt_is_pair(p)) // malformed alist
- throw pmt_wrong_type("pmt_length", x);
-
- alist = pmt_cdr(alist);
+ while (pmt_is_pair(x)){
length++;
+ x = pmt_cdr(x);
}
+ if (pmt_is_null(x))
+ return length;
- return length;
+ // not a proper list
+ throw pmt_wrong_type("pmt_length", x);
}
-
// FIXME dictionary length (number of entries)
throw pmt_wrong_type("pmt_length", x);
Modified: gnuradio/branches/features/inband-usb/pmt/src/lib/qa_pmt_prims.cc
===================================================================
--- gnuradio/branches/features/inband-usb/pmt/src/lib/qa_pmt_prims.cc
2007-09-04 23:04:57 UTC (rev 6304)
+++ gnuradio/branches/features/inband-usb/pmt/src/lib/qa_pmt_prims.cc
2007-09-04 23:05:28 UTC (rev 6305)
@@ -139,11 +139,16 @@
pmt_t s3 = pmt_string_to_symbol("s3");
+ CPPUNIT_ASSERT_EQUAL((size_t)0, pmt_length(PMT_NIL));
+ CPPUNIT_ASSERT_THROW(pmt_length(s1), pmt_wrong_type);
+ CPPUNIT_ASSERT_THROW(pmt_length(pmt_from_double(42)), pmt_wrong_type);
+
pmt_t c1 = pmt_cons(s1, PMT_NIL);
CPPUNIT_ASSERT(pmt_is_pair(c1));
CPPUNIT_ASSERT(!pmt_is_pair(s1));
CPPUNIT_ASSERT_EQUAL(s1, pmt_car(c1));
CPPUNIT_ASSERT_EQUAL(PMT_NIL, pmt_cdr(c1));
+ CPPUNIT_ASSERT_EQUAL((size_t) 1, pmt_length(c1));
pmt_t c3 = pmt_cons(s3, PMT_NIL);
pmt_t c2 = pmt_cons(s2, c3);
@@ -151,6 +156,8 @@
CPPUNIT_ASSERT_EQUAL(c2, pmt_cdr(c1));
pmt_set_car(c1, s3);
CPPUNIT_ASSERT_EQUAL(s3, pmt_car(c1));
+ CPPUNIT_ASSERT_EQUAL((size_t)1, pmt_length(c3));
+ CPPUNIT_ASSERT_EQUAL((size_t)2, pmt_length(c2));
CPPUNIT_ASSERT_THROW(pmt_cdr(PMT_NIL), pmt_wrong_type);
CPPUNIT_ASSERT_THROW(pmt_car(PMT_NIL), pmt_wrong_type);
@@ -229,8 +236,6 @@
void
qa_pmt_prims::test_misc()
{
- CPPUNIT_ASSERT_THROW(pmt_length(PMT_NIL), pmt_wrong_type);
-
pmt_t k0 = pmt_string_to_symbol("k0");
pmt_t k1 = pmt_string_to_symbol("k1");
pmt_t k2 = pmt_string_to_symbol("k2");
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r6305 - gnuradio/branches/features/inband-usb/pmt/src/lib,
eb <=