commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] pmt/src/lib pmt.cc pmt.h qa_pmt_prims.cc qa_pmt...


From: Eric Blossom
Subject: [Commit-gnuradio] pmt/src/lib pmt.cc pmt.h qa_pmt_prims.cc qa_pmt...
Date: Tue, 04 Jul 2006 23:05:05 +0000

CVSROOT:        /sources/gnuradio
Module name:    pmt
Changes by:     Eric Blossom <eb>       06/07/04 23:05:05

Modified files:
        src/lib        : pmt.cc pmt.h qa_pmt_prims.cc qa_pmt_prims.h 

Log message:
        dictionaries and QA

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pmt/src/lib/pmt.cc?cvsroot=gnuradio&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pmt/src/lib/pmt.h?cvsroot=gnuradio&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pmt/src/lib/qa_pmt_prims.cc?cvsroot=gnuradio&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/pmt/src/lib/qa_pmt_prims.h?cvsroot=gnuradio&r1=1.2&r2=1.3

Patches:
Index: pmt.cc
===================================================================
RCS file: /sources/gnuradio/pmt/src/lib/pmt.cc,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- pmt.cc      4 Jul 2006 22:15:31 -0000       1.5
+++ pmt.cc      4 Jul 2006 23:05:05 -0000       1.6
@@ -486,6 +486,72 @@
   return pmt_map(pmt_cdr, d_alist);
 }
 
+bool
+pmt_is_dict(pmt_t obj)
+{
+  return obj->is_dict();
+}
+
+pmt_t
+pmt_make_dict()
+{
+  return pmt_t(new pmt_dict());
+}
+
+void
+pmt_dict_set(pmt_t dict, pmt_t key, pmt_t value)
+{
+  if (!dict->is_dict())
+    throw pmt_wrong_type("pmt_dict_set", dict);
+
+  _dict(dict)->set(key, value);
+}
+
+bool
+pmt_dict_has_key(pmt_t dict, pmt_t key)
+{
+  if (!dict->is_dict())
+    throw pmt_wrong_type("pmt_dict_has_key", dict);
+
+  return _dict(dict)->has_key(key);
+}
+
+pmt_t
+pmt_dict_ref(pmt_t dict, pmt_t key, pmt_t not_found)
+{
+  if (!dict->is_dict())
+    throw pmt_wrong_type("pmt_dict_ref", dict);
+
+  return _dict(dict)->ref(key, not_found);
+}
+
+pmt_t
+pmt_dict_items(pmt_t dict)
+{
+  if (!dict->is_dict())
+    throw pmt_wrong_type("pmt_dict_items", dict);
+
+  return _dict(dict)->items();
+}
+
+pmt_t
+pmt_dict_keys(pmt_t dict)
+{
+  if (!dict->is_dict())
+    throw pmt_wrong_type("pmt_dict_keys", dict);
+
+  return _dict(dict)->keys();
+}
+
+pmt_t
+pmt_dict_values(pmt_t dict)
+{
+  if (!dict->is_dict())
+    throw pmt_wrong_type("pmt_dict_values", dict);
+
+  return _dict(dict)->values();
+}
+
 ////////////////////////////////////////////////////////////////////////////
 //                          General Functions
 ////////////////////////////////////////////////////////////////////////////

Index: pmt.h
===================================================================
RCS file: /sources/gnuradio/pmt/src/lib/pmt.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- pmt.h       4 Jul 2006 22:15:31 -0000       1.6
+++ pmt.h       4 Jul 2006 23:05:05 -0000       1.7
@@ -303,6 +303,19 @@
 pmt_t pmt_make_c32vector(size_t k, std::complex<float> fill);
 pmt_t pmt_make_c64vector(size_t k, std::complex<double> fill);
 
+pmt_t pmt_init_u8vector(size_t k, uint8_t *data);
+pmt_t pmt_init_s8vector(size_t k, int8_t *data);
+pmt_t pmt_init_u16vector(size_t k, uint16_t *data);
+pmt_t pmt_init_s16vector(size_t k, int16_t *data);
+pmt_t pmt_init_u32vector(size_t k, uint32_t *data);
+pmt_t pmt_init_s32vector(size_t k, int32_t *data);
+pmt_t pmt_init_u64vector(size_t k, uint64_t *data);
+pmt_t pmt_init_s64vector(size_t k, int64_t *data);
+pmt_t pmt_init_f32vector(size_t k, float *data);
+pmt_t pmt_init_f64vector(size_t k, double *data);
+pmt_t pmt_init_c32vector(size_t k, std::complex<float> *data);
+pmt_t pmt_init_c64vector(size_t k, std::complex<double> *data);
+
 uint8_t  pmt_u8vector_ref(pmt_t v, size_t k);
 int8_t   pmt_s8vector_ref(pmt_t v, size_t k);
 uint16_t pmt_u16vector_ref(pmt_t v, size_t k);
@@ -523,11 +536,6 @@
  */
 void pmt_write(pmt_t obj, std::ostream &port);
 
-/*!
- * Writes an end of line to \p port.
- */
-void pmt_newline(std::ostream &port);
-
 /*
  * ------------------------------------------------------------------------
  *                   portable byte stream representation

Index: qa_pmt_prims.cc
===================================================================
RCS file: /sources/gnuradio/pmt/src/lib/qa_pmt_prims.cc,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- qa_pmt_prims.cc     4 Jul 2006 22:15:31 -0000       1.3
+++ qa_pmt_prims.cc     4 Jul 2006 23:05:05 -0000       1.4
@@ -249,3 +249,36 @@
   CPPUNIT_ASSERT(pmt_equal(keys, pmt_map(pmt_car, alist)));
   CPPUNIT_ASSERT(pmt_equal(vals, pmt_map(pmt_cdr, alist)));
 }
+
+void
+qa_pmt_prims::test_dict()
+{
+  pmt_t dict = pmt_make_dict();
+  CPPUNIT_ASSERT(pmt_is_dict(dict));
+
+  pmt_t k0 = pmt_string_to_symbol("k0");
+  pmt_t k1 = pmt_string_to_symbol("k1");
+  pmt_t k2 = pmt_string_to_symbol("k2");
+  pmt_t k3 = pmt_string_to_symbol("k3");
+  pmt_t v0 = pmt_string_to_symbol("v0");
+  pmt_t v1 = pmt_string_to_symbol("v1");
+  pmt_t v2 = pmt_string_to_symbol("v2");
+  pmt_t v3 = pmt_string_to_symbol("v3");
+  pmt_t not_found = pmt_cons(PMT_NIL, PMT_NIL);
+  
+  CPPUNIT_ASSERT(!pmt_dict_has_key(dict, k0));
+  pmt_dict_set(dict, k0, v0);
+  CPPUNIT_ASSERT(pmt_dict_has_key(dict, k0));
+  CPPUNIT_ASSERT(pmt_eqv(pmt_dict_ref(dict, k0, not_found), v0));
+  CPPUNIT_ASSERT(pmt_eqv(pmt_dict_ref(dict, k1, not_found), not_found));
+  pmt_dict_set(dict, k1, v1);
+  pmt_dict_set(dict, k2, v2);
+  CPPUNIT_ASSERT(pmt_eqv(pmt_dict_ref(dict, k1, not_found), v1));
+  pmt_dict_set(dict, k1, v3);
+  CPPUNIT_ASSERT(pmt_eqv(pmt_dict_ref(dict, k1, not_found), v3));
+
+  pmt_t keys = pmt_cons(k2, pmt_cons(k1, pmt_cons(k0, PMT_NIL)));
+  pmt_t vals = pmt_cons(v2, pmt_cons(v3, pmt_cons(v0, PMT_NIL)));
+  CPPUNIT_ASSERT(pmt_equal(keys, pmt_dict_keys(dict)));
+  CPPUNIT_ASSERT(pmt_equal(vals, pmt_dict_values(dict)));
+}

Index: qa_pmt_prims.h
===================================================================
RCS file: /sources/gnuradio/pmt/src/lib/qa_pmt_prims.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- qa_pmt_prims.h      4 Jul 2006 20:15:16 -0000       1.2
+++ qa_pmt_prims.h      4 Jul 2006 23:05:05 -0000       1.3
@@ -37,6 +37,7 @@
   CPPUNIT_TEST(test_vectors);
   CPPUNIT_TEST(test_equivalence);
   CPPUNIT_TEST(test_misc);
+  CPPUNIT_TEST(test_dict);
   CPPUNIT_TEST_SUITE_END();
 
  private:
@@ -49,6 +50,7 @@
   void test_vectors();
   void test_equivalence();
   void test_misc();
+  void test_dict();
 };
 
 #endif /* INCLUDED_QA_PMT_PRIMS_H */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]