From 2bf2a8f2d2a4477818bfa91cae64fb663fdf88c3 Mon Sep 17 00:00:00 2001 From: jcorgan Date: Sun, 26 Jul 2009 20:01:02 +0000 Subject: Merged r11491:11494 from jcorgan/pmt into trunk. Moves pmt types functions into pmt:: from gruel:: Trunk passes distcheck. git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@11495 221aa14e-8319-0410-a670-987f0aec2ac5 --- gruel/src/lib/pmt/pmt_io.cc | 141 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 gruel/src/lib/pmt/pmt_io.cc (limited to 'gruel/src/lib/pmt/pmt_io.cc') diff --git a/gruel/src/lib/pmt/pmt_io.cc b/gruel/src/lib/pmt/pmt_io.cc new file mode 100644 index 000000000..f5a82de0e --- /dev/null +++ b/gruel/src/lib/pmt/pmt_io.cc @@ -0,0 +1,141 @@ +/* -*- c++ -*- */ +/* + * Copyright 2006,2009 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifdef HAVE_CONFIG_H +#include +#endif +#include +#include +#include "pmt_int.h" +#include + +namespace pmt { + +static void +pmt_write_list_tail(pmt_t obj, std::ostream &port) +{ + pmt_write(pmt_car(obj), port); // write the car + obj = pmt_cdr(obj); // step to cdr + + if (pmt_is_null(obj)) // () + port << ")"; + + else if (pmt_is_pair(obj)){ // normal list + port << " "; + pmt_write_list_tail(obj, port); + } + else { // dotted pair + port << " . "; + pmt_write(obj, port); + port << ")"; + } +} + +void +pmt_write(pmt_t obj, std::ostream &port) +{ + if (pmt_is_bool(obj)){ + if (pmt_is_true(obj)) + port << "#t"; + else + port << "#f"; + } + else if (pmt_is_symbol(obj)){ + port << pmt_symbol_to_string(obj); + } + else if (pmt_is_number(obj)){ + if (pmt_is_integer(obj)) + port << pmt_to_long(obj); + else if (pmt_is_real(obj)) + port << pmt_to_double(obj); + else if (pmt_is_complex(obj)){ + std::complex c = pmt_to_complex(obj); + port << c.real() << '+' << c.imag() << 'i'; + } + else + goto error; + } + else if (pmt_is_null(obj)){ + port << "()"; + } + else if (pmt_is_pair(obj)){ + port << "("; + pmt_write_list_tail(obj, port); + } + else if (pmt_is_dict(obj)){ + // FIXME + // port << "#"; + port << "#"; + } + else if (pmt_is_vector(obj)){ + // FIXME + // port << "#"; + port << "#"; + } + else if (pmt_is_uniform_vector(obj)){ + // FIXME + // port << "#"; + port << "#"; + } + else { + error: + // FIXME + // port << "#<" << obj << ">"; + port << "#"; + } +} + +std::ostream& operator<<(std::ostream &os, pmt_t obj) +{ + pmt_write(obj, os); + return os; +} + +std::string +pmt_write_string(pmt_t obj) +{ + std::ostringstream s; + s << obj; + return s.str(); +} + +pmt_t +pmt_read(std::istream &port) +{ + throw pmt_notimplemented("notimplemented: pmt_read", PMT_NIL); +} + +void +pmt_serialize(pmt_t obj, std::ostream &sink) +{ + throw pmt_notimplemented("notimplemented: pmt_serialize", obj); +} + +/*! + * \brief Create obj from portable byte-serial representation + */ +pmt_t +pmt_deserialize(std::istream &source) +{ + throw pmt_notimplemented("notimplemented: pmt_deserialize", PMT_NIL); +} + +} /* namespace pmt */ -- cgit From f8f85dcf9de45cbb42ee46b6f6e3d1e685b0103a Mon Sep 17 00:00:00 2001 From: Eric Blossom Date: Sat, 15 Aug 2009 01:02:15 -0700 Subject: Additional QA for tuple. --- gruel/src/lib/pmt/pmt_io.cc | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gruel/src/lib/pmt/pmt_io.cc') diff --git a/gruel/src/lib/pmt/pmt_io.cc b/gruel/src/lib/pmt/pmt_io.cc index f5a82de0e..fbc556ab0 100644 --- a/gruel/src/lib/pmt/pmt_io.cc +++ b/gruel/src/lib/pmt/pmt_io.cc @@ -90,6 +90,11 @@ pmt_write(pmt_t obj, std::ostream &port) // port << "#"; port << "#"; } + else if (pmt_is_tuple(obj)){ + // FIXME + // port << "#"; + port << "#"; + } else if (pmt_is_uniform_vector(obj)){ // FIXME // port << "#"; -- cgit From 381ae7f53d9628dae5ac79bb580e1f8e62e7571b Mon Sep 17 00:00:00 2001 From: Eric Blossom Date: Sat, 15 Aug 2009 01:45:52 -0700 Subject: pmt_write now displays vector and tuple elements. --- gruel/src/lib/pmt/pmt_io.cc | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'gruel/src/lib/pmt/pmt_io.cc') diff --git a/gruel/src/lib/pmt/pmt_io.cc b/gruel/src/lib/pmt/pmt_io.cc index fbc556ab0..179e6b72c 100644 --- a/gruel/src/lib/pmt/pmt_io.cc +++ b/gruel/src/lib/pmt/pmt_io.cc @@ -80,20 +80,30 @@ pmt_write(pmt_t obj, std::ostream &port) port << "("; pmt_write_list_tail(obj, port); } - else if (pmt_is_dict(obj)){ - // FIXME - // port << "#"; - port << "#"; + else if (pmt_is_tuple(obj)){ + port << "{"; + size_t len = pmt_length(obj); + if (len > 0){ + port << pmt_tuple_ref(obj, 0); + for (size_t i = 1; i < len; i++) + port << " " << pmt_tuple_ref(obj, i); + } + port << "}"; } else if (pmt_is_vector(obj)){ - // FIXME - // port << "#"; - port << "#"; + port << "#("; + size_t len = pmt_length(obj); + if (len > 0){ + port << pmt_vector_ref(obj, 0); + for (size_t i = 1; i < len; i++) + port << " " << pmt_vector_ref(obj, i); + } + port << ")"; } - else if (pmt_is_tuple(obj)){ + else if (pmt_is_dict(obj)){ // FIXME - // port << "#"; - port << "#"; + // port << "#"; + port << "#"; } else if (pmt_is_uniform_vector(obj)){ // FIXME -- cgit From c986a2add25920eabacfd620a1a2132cd7e4981d Mon Sep 17 00:00:00 2001 From: Eric Blossom Date: Sat, 11 Sep 2010 13:06:10 -0700 Subject: Add support for uint64_t to pmt. --- gruel/src/lib/pmt/pmt_io.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gruel/src/lib/pmt/pmt_io.cc') diff --git a/gruel/src/lib/pmt/pmt_io.cc b/gruel/src/lib/pmt/pmt_io.cc index 179e6b72c..b909c1b64 100644 --- a/gruel/src/lib/pmt/pmt_io.cc +++ b/gruel/src/lib/pmt/pmt_io.cc @@ -64,6 +64,8 @@ pmt_write(pmt_t obj, std::ostream &port) else if (pmt_is_number(obj)){ if (pmt_is_integer(obj)) port << pmt_to_long(obj); + else if (pmt_is_uint64(obj)) + port << pmt_to_uint64(obj); else if (pmt_is_real(obj)) port << pmt_to_double(obj); else if (pmt_is_complex(obj)){ -- cgit From a611da7044175fede5f8ecfe13a055f5680fd3f9 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Mon, 14 Mar 2011 19:33:03 -0400 Subject: gruel: SWIGing Gruel into Python to access PMTs. --- gruel/src/lib/pmt/pmt_io.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'gruel/src/lib/pmt/pmt_io.cc') diff --git a/gruel/src/lib/pmt/pmt_io.cc b/gruel/src/lib/pmt/pmt_io.cc index b909c1b64..1214ff588 100644 --- a/gruel/src/lib/pmt/pmt_io.cc +++ b/gruel/src/lib/pmt/pmt_io.cc @@ -26,6 +26,7 @@ #include #include "pmt_int.h" #include +#include namespace pmt { @@ -156,3 +157,12 @@ pmt_deserialize(std::istream &source) } } /* namespace pmt */ + + +void +pmt::pmt_print(pmt_t v) +{ + std::cout << pmt_write_string(v) << std::endl; +} + + -- cgit From f919f9dcbb54a08e6e26d6c229ce92fb784fa1b2 Mon Sep 17 00:00:00 2001 From: Tom Rondeau Date: Fri, 13 Apr 2012 18:36:53 -0400 Subject: Removed whitespace and added dtools/bin/remove-whitespace as a tool to do this in the future. The sed script was provided by Moritz Fischer. --- gruel/src/lib/pmt/pmt_io.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'gruel/src/lib/pmt/pmt_io.cc') diff --git a/gruel/src/lib/pmt/pmt_io.cc b/gruel/src/lib/pmt/pmt_io.cc index 1214ff588..4bac4a0ec 100644 --- a/gruel/src/lib/pmt/pmt_io.cc +++ b/gruel/src/lib/pmt/pmt_io.cc @@ -1,19 +1,19 @@ /* -*- c++ -*- */ /* * Copyright 2006,2009 Free Software Foundation, Inc. - * + * * This file is part of GNU Radio - * + * * GNU Radio is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. - * + * * GNU Radio is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. @@ -127,7 +127,7 @@ std::ostream& operator<<(std::ostream &os, pmt_t obj) return os; } -std::string +std::string pmt_write_string(pmt_t obj) { std::ostringstream s; @@ -150,7 +150,7 @@ pmt_serialize(pmt_t obj, std::ostream &sink) /*! * \brief Create obj from portable byte-serial representation */ -pmt_t +pmt_t pmt_deserialize(std::istream &source) { throw pmt_notimplemented("notimplemented: pmt_deserialize", PMT_NIL); @@ -159,7 +159,7 @@ pmt_deserialize(std::istream &source) } /* namespace pmt */ -void +void pmt::pmt_print(pmt_t v) { std::cout << pmt_write_string(v) << std::endl; -- cgit