diff options
57 files changed, 1820 insertions, 2291 deletions
diff --git a/docs/doxygen/other/pmt.dox b/docs/doxygen/other/pmt.dox index 61b73bca13..ba97863a08 100644 --- a/docs/doxygen/other/pmt.dox +++ b/docs/doxygen/other/pmt.dox @@ -66,25 +66,25 @@ underneath is still a C++ typed object, and so the right type of set/get function must be used for the data type. Typically, a PMT object can be made from a scalar item using a call -like "pmt::pmt_from_<type>". Similarly, when getting data out of a -PMT, we use a call like "pmt::pmt_to_<type>". For example: +like "pmt::from_<type>". Similarly, when getting data out of a +PMT, we use a call like "pmt::to_<type>". For example: \code double a = 1.2345; -pmt::pmt_t pmt_a = pmt::pmt_from_double(a); -double b = pmt::pmt_to_double(pmt_a); +pmt::pmt_t pmt_a = pmt::from_double(a); +double b = pmt::to_double(pmt_a); int c = 12345; -pmt::pmt_t pmt_c = pmt::pmt_from_long(c); -int d = pmt::pmt_to_long(pmt_c); +pmt::pmt_t pmt_c = pmt::from_long(c); +int d = pmt::to_long(pmt_c); \endcode As a side-note, making a PMT from a complex number is not obvious: \code std::complex<double> a(1.2, 3.4); -pmt::pmt_t pmt_a = pmt::pmt_make_rectangular(a.real(), b.imag()); -std::complex<double> b = pmt::pmt_to_complex(pmt_a); +pmt::pmt_t pmt_a = pmt::make_rectangular(a.real(), b.imag()); +std::complex<double> b = pmt::to_complex(pmt_a); \endcode Pairs, dictionaries, and vectors have different constructors and ways @@ -100,17 +100,17 @@ new symbol from a string, if that string already exists in the hash table, the constructor will return a reference to the existing PMT. We create strings with the following functions, where the second -function, pmt::pmt_intern, is simply an alias of the first. +function, pmt::intern, is simply an alias of the first. \code -pmt::pmt_t str0 = pmt::pmt_string_to_symbol(std::string("some string")); -pmt::pmt_t str1 = pmt::pmt_intern(std::string("some string")); +pmt::pmt_t str0 = pmt::string_to_symbol(std::string("some string")); +pmt::pmt_t str1 = pmt::intern(std::string("some string")); \endcode The string can be retrieved using the inverse function: \code -std::string s = pmt::pmt_symbol_to_string(str0); +std::string s = pmt::symbol_to_string(str0); \endcode @@ -118,28 +118,28 @@ std::string s = pmt::pmt_symbol_to_string(str0); The PMT library comes with a number of functions to test and compare PMT objects. In general, for any PMT data type, there is an equivalent -"pmt::pmt_is_<type>". We can use these to test the PMT before trying +"pmt::is_<type>". We can use these to test the PMT before trying to access the data inside. Expanding our examples above, we have: \code -pmt::pmt_t str0 = pmt::pmt_string_to_symbol(std::string("some string")); -if(pmt::pmt_is_symbol(str0)) - std::string s = pmt::pmt_symbol_to_string(str0); +pmt::pmt_t str0 = pmt::string_to_symbol(std::string("some string")); +if(pmt::is_symbol(str0)) + std::string s = pmt::symbol_to_string(str0); double a = 1.2345; -pmt::pmt_t pmt_a = pmt::pmt_from_double(a); -if(pmt::pmt_is_double(pmt_a)) - double b = pmt::pmt_to_double(pmt_a); +pmt::pmt_t pmt_a = pmt::from_double(a); +if(pmt::is_double(pmt_a)) + double b = pmt::to_double(pmt_a); int c = 12345; -pmt::pmt_t pmt_c = pmt::pmt_from_long(c); -if(pmt::pmt_is_long(pmt_a)) - int d = pmt::pmt_to_long(pmt_c); +pmt::pmt_t pmt_c = pmt::from_long(c); +if(pmt::is_long(pmt_a)) + int d = pmt::to_long(pmt_c); \\ This will fail the test. Otherwise, trying to coerce \b pmt_c as a \\ double when internally it is a long will result in an exception. -if(pmt::pmt_is_double(pmt_a)) - double d = pmt::pmt_to_double(pmt_c); +if(pmt::is_double(pmt_a)) + double d = pmt::to_double(pmt_c); \endcode @@ -156,15 +156,15 @@ returned dictionary is a new PMT with the changes made there. The following is a list of PMT dictionary functions. Click through to get more information on what each does. -- bool pmt::pmt_is_dict(const pmt_t &obj) -- pmt_t pmt::pmt_make_dict() -- pmt_t pmt::pmt_dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value) -- pmt_t pmt::pmt_dict_delete(const pmt_t &dict, const pmt_t &key) -- bool pmt::pmt_dict_has_key(const pmt_t &dict, const pmt_t &key) -- pmt_t pmt::pmt_dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t ¬_found) -- pmt_t pmt::pmt_dict_items(pmt_t dict) -- pmt_t pmt::pmt_dict_keys(pmt_t dict) -- pmt_t pmt::pmt_dict_values(pmt_t dict) +- bool pmt::is_dict(const pmt_t &obj) +- pmt_t pmt::make_dict() +- pmt_t pmt::dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value) +- pmt_t pmt::dict_delete(const pmt_t &dict, const pmt_t &key) +- bool pmt::dict_has_key(const pmt_t &dict, const pmt_t &key) +- pmt_t pmt::dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t ¬_found) +- pmt_t pmt::dict_items(pmt_t dict) +- pmt_t pmt::dict_keys(pmt_t dict) +- pmt_t pmt::dict_values(pmt_t dict) This example does some basic manipulations of PMT dictionaries in Python. Notice that we pass the dictionary \a a and return the results @@ -175,39 +175,39 @@ variables small. \code from gruel import pmt -key0 = pmt.pmt_intern("int") -val0 = pmt.pmt_from_long(123) -val1 = pmt.pmt_from_long(234) +key0 = pmt.intern("int") +val0 = pmt.from_long(123) +val1 = pmt.from_long(234) -key1 = pmt.pmt_intern("double") -val2 = pmt.pmt_from_double(5.4321) +key1 = pmt.tern("double") +val2 = pmt.om_double(5.4321) # Make an empty dictionary -a = pmt.pmt_make_dict() +a = pmt.make_dict() # Add a key:value pair to the dictionary -a = pmt.pmt_dict_add(a, key0, val0) -pmt.pmt_print(a) +a = pmt.dict_add(a, key0, val0) +print a # Add a new value to the same key; # new dict will still have one item with new value -a = pmt.pmt_dict_add(a, key0, val1) -pmt.pmt_print(a) +a = pmt.dict_add(a, key0, val1) +print a # Add a new key:value pair -a = pmt.pmt_dict_add(a, key1, val2) -pmt.pmt_print(a) +a = pmt.dict_add(a, key1, val2) +print a # Test if we have a key, then delete it -print pmt.pmt_dict_has_key(a, key1) -a = pmt.pmt_dict_delete(a, key1) -print pmt.pmt_dict_has_key(a, key1) +print pmt.dict_has_key(a, key1) +a = pmt.dict_delete(a, key1) +print pmt.dict_has_key(a, key1) -ref = pmt.pmt_dict_ref(a, key0, pmt.PMT_NIL) -pmt.pmt_print(ref) +ref = pmt.dict_ref(a, key0, pmt.PMT_NIL) +print ref # The following should never print -if(pmt.pmt_dict_has_key(a, key0) and pmt.pmt_eq(ref, pmt.PMT_NIL)): +if(pmt.dict_has_key(a, key0) and pmt.eq(ref, pmt.PMT_NIL)): print "Trouble! We have key0, but it returned PMT_NIL" \endcode @@ -232,29 +232,29 @@ both signed and unsigned. Vectors have a well-defined interface that allows us to make, set, get, and fill them. We can also get the length of a vector with -pmt::pmt_length. +pmt::length. For standard vectors, these functions look like: -- bool pmt::pmt_is_vector(pmt_t x) -- pmt_t pmt::pmt_make_vector(size_t k, pmt_t fill) -- pmt_t pmt::pmt_vector_ref(pmt_t vector, size_t k) -- void pmt::pmt_vector_set(pmt_t vector, size_t k, pmt_t obj) -- void pmt::pmt_vector_fill(pmt_t vector, pmt_t fill) +- bool pmt::is_vector(pmt_t x) +- pmt_t pmt::make_vector(size_t k, pmt_t fill) +- pmt_t pmt::vector_ref(pmt_t vector, size_t k) +- void pmt::vector_set(pmt_t vector, size_t k, pmt_t obj) +- void pmt::vector_fill(pmt_t vector, pmt_t fill) Uniform vectors have the same types of functions, but they are data type-dependent. The following list tries to explain them where you substitute the specific data type prefix for \a dtype (prefixes being: u8, u16, u32, u64, s8, s16, s32, s64, f32, f64, c32, c64). -- bool pmt::pmt_is_(dtype)vector(pmt_t x) -- pmt_t pmt::pmt_make_(dtype)vector(size_t k, (dtype) fill) -- pmt_t pmt::pmt_init_(dtype)vector(size_t k, const (dtype*) data) -- pmt_t pmt::pmt_init_(dtype)vector(size_t k, const std::vector<dtype> data) -- pmt_t pmt::pmt_(dtype)vector_ref(pmt_t vector, size_t k) -- void pmt::pmt_(dtype)vector_set(pmt_t vector, size_t k, (dtype) x) -- const dtype* pmt::pmt_(dtype)vector_elements(pmt_t vector, size_t &len) -- dtype* pmt::pmt_(dtype)vector_writable_elements(pmt_t vector, size_t &len) +- bool pmt::is_(dtype)vector(pmt_t x) +- pmt_t pmt::make_(dtype)vector(size_t k, (dtype) fill) +- pmt_t pmt::init_(dtype)vector(size_t k, const (dtype*) data) +- pmt_t pmt::init_(dtype)vector(size_t k, const std::vector<dtype> data) +- pmt_t pmt::(dtype)vector_ref(pmt_t vector, size_t k) +- void pmt::(dtype)vector_set(pmt_t vector, size_t k, (dtype) x) +- const dtype* pmt::(dtype)vector_elements(pmt_t vector, size_t &len) +- dtype* pmt::(dtype)vector_writable_elements(pmt_t vector, size_t &len) \b Note: We break the contract with vectors. The 'set' functions actually change the data underneath. It is important to keep track of @@ -276,12 +276,12 @@ Pairs are inspired by LISP 'cons' data types, so you will find the language here comes from LISP. A pair is just a pair of PMT objects. They are manipulated using the following functions: -- bool pmt::pmt_is_pair (const pmt_t &obj): Return true if obj is a pair, else false -- pmt_t pmt::pmt_cons(const pmt_t &x, const pmt_t &y): construct new pair -- pmt_t pmt::pmt_car(const pmt_t &pair): get the car of the pair (first object) -- pmt_t pmt::pmt_cdr(const pmt_t &pair): get the cdr of the pair (second object) -- void pmt::pmt_set_car(pmt_t pair, pmt_t value): Stores value in the car field -- void pmt::pmt_set_cdr(pmt_t pair, pmt_t value): Stores value in the cdr field +- bool pmt::is_pair(const pmt_t &obj): Return true if obj is a pair, else false +- pmt_t pmt::cons(const pmt_t &x, const pmt_t &y): construct new pair +- pmt_t pmt::car(const pmt_t &pair): get the car of the pair (first object) +- pmt_t pmt::cdr(const pmt_t &pair): get the cdr of the pair (second object) +- void pmt::set_car(pmt_t pair, pmt_t value): Stores value in the car field +- void pmt::set_cdr(pmt_t pair, pmt_t value): Stores value in the cdr field \section serdes Serializing and Deserializing @@ -293,10 +293,10 @@ string and then methods to deserialize the string buffer or string back into a PMT. We use this extensively in the metadata files (see \ref page_metadata). -- bool pmt::pmt_serialize(pmt_t obj, std::streambuf &sink) -- std::string pmt::pmt_serialize_str(pmt_t obj) -- pmt_t pmt::pmt_deserialize(std::streambuf &source) -- pmt_t pmt::pmt_deserialize_str(std::string str) +- bool pmt::serialize(pmt_t obj, std::streambuf &sink) +- std::string pmt::serialize_str(pmt_t obj) +- pmt_t pmt::deserialize(std::streambuf &source) +- pmt_t pmt::deserialize_str(std::string str) For example, we will serialize the data above to make it into a string ready to be written to a file and then deserialize it back to its @@ -305,26 +305,26 @@ original PMT. \code from gruel import pmt -key0 = pmt.pmt_intern("int") -val0 = pmt.pmt_from_long(123) +key0 = pmt.intern("int") +val0 = pmt.from_long(123) -key1 = pmt.pmt_intern("double") -val1 = pmt.pmt_from_double(5.4321) +key1 = pmt.intern("double") +val1 = pmt.from_double(5.4321) # Make an empty dictionary -a = pmt.pmt_make_dict() +a = pmt.make_dict() # Add a key:value pair to the dictionary -a = pmt.pmt_dict_add(a, key0, val0) -a = pmt.pmt_dict_add(a, key1, val1) +a = pmt.dict_add(a, key0, val0) +a = pmt.dict_add(a, key1, val1) -pmt.pmt_print(a) +print a -ser_str = pmt.pmt_serialize_str(a) +ser_str = pmt.serialize_str(a) print ser_str -b = pmt.pmt_deserialize_str(ser_str) -pmt.pmt_print(b) +b = pmt.deserialize_str(ser_str) +print b \endcode @@ -335,13 +335,17 @@ string. This is only done here as a test. \section printing Printing -We have used the pmt::pmt_print function in these examples to nicely -print the contents of a PMT. Another way to print the contents is -using the overloaded "<<" operator with a stream buffer object. In -C++, we can inline print the contents of a PMT like: +In Python, the __repr__ function of a PMT object is overloaded to call +'pmt::write_string'. This means that any time we call a formatted +printing operation on a PMT object, the PMT library will properly +format the object for display. + +In C++, we can use the 'pmt::print(object)' function or print the +contents is using the overloaded "<<" operator with a stream buffer +object. In C++, we can inline print the contents of a PMT like: \code -pmt::pmt_t a pmt::pmt_from_double(1.0); +pmt::pmt_t a pmt::from_double(1.0); std::cout << "The PMT a contains " << a << std::endl; \endcode diff --git a/gnuradio-core/src/lib/general/gr_annotator_1to1.cc b/gnuradio-core/src/lib/general/gr_annotator_1to1.cc index 963af9202a..1178bdc34f 100644 --- a/gnuradio-core/src/lib/general/gr_annotator_1to1.cc +++ b/gnuradio-core/src/lib/general/gr_annotator_1to1.cc @@ -79,8 +79,8 @@ gr_annotator_1to1::work (int noutput_items, } // Storing the current noutput_items as the value to the "noutput_items" key - pmt::pmt_t srcid = pmt::pmt_string_to_symbol(str.str()); - pmt::pmt_t key = pmt::pmt_string_to_symbol("seq"); + pmt::pmt_t srcid = pmt::string_to_symbol(str.str()); + pmt::pmt_t key = pmt::string_to_symbol("seq"); // Work does nothing to the data stream; just copy all inputs to outputs // Adds a new tag when the number of items read is a multiple of d_when @@ -92,7 +92,7 @@ gr_annotator_1to1::work (int noutput_items, // the 1-to-1 propagation policy. for(int i = 0; i < std::min(noutputs, ninputs); i++) { if(abs_N % d_when == 0) { - pmt::pmt_t value = pmt::pmt_from_uint64(d_tag_counter++); + pmt::pmt_t value = pmt::from_uint64(d_tag_counter++); add_item_tag(i, abs_N, key, value, srcid); } diff --git a/gnuradio-core/src/lib/general/gr_annotator_alltoall.cc b/gnuradio-core/src/lib/general/gr_annotator_alltoall.cc index 01bdd30644..d8b7e2db7e 100644 --- a/gnuradio-core/src/lib/general/gr_annotator_alltoall.cc +++ b/gnuradio-core/src/lib/general/gr_annotator_alltoall.cc @@ -80,8 +80,8 @@ gr_annotator_alltoall::work (int noutput_items, } // Source ID and key for any tag that might get applied from this block - pmt::pmt_t srcid = pmt::pmt_string_to_symbol(str.str()); - pmt::pmt_t key = pmt::pmt_string_to_symbol("seq"); + pmt::pmt_t srcid = pmt::string_to_symbol(str.str()); + pmt::pmt_t key = pmt::string_to_symbol("seq"); // Work does nothing to the data stream; just copy all inputs to outputs // Adds a new tag when the number of items read is a multiple of d_when @@ -91,7 +91,7 @@ gr_annotator_alltoall::work (int noutput_items, for(int j = 0; j < noutput_items; j++) { for(int i = 0; i < noutputs; i++) { if(abs_N % d_when == 0) { - pmt::pmt_t value = pmt::pmt_from_uint64(d_tag_counter++); + pmt::pmt_t value = pmt::from_uint64(d_tag_counter++); add_item_tag(i, abs_N, key, value, srcid); } diff --git a/gnuradio-core/src/lib/general/gr_annotator_raw.cc b/gnuradio-core/src/lib/general/gr_annotator_raw.cc index d3dcce73af..c3aecdd938 100644 --- a/gnuradio-core/src/lib/general/gr_annotator_raw.cc +++ b/gnuradio-core/src/lib/general/gr_annotator_raw.cc @@ -55,7 +55,7 @@ void gr_annotator_raw::add_tag(uint64_t offset, pmt_t key, pmt_t val) gruel::scoped_lock l(d_mutex); gr_tag_t tag; - tag.srcid = pmt::pmt_intern(name()); + tag.srcid = pmt::intern(name()); tag.key = key; tag.value = val; tag.offset = offset; diff --git a/gnuradio-core/src/lib/general/gr_burst_tagger.cc b/gnuradio-core/src/lib/general/gr_burst_tagger.cc index 83e84bfa09..72924109bf 100644 --- a/gnuradio-core/src/lib/general/gr_burst_tagger.cc +++ b/gnuradio-core/src/lib/general/gr_burst_tagger.cc @@ -43,19 +43,19 @@ gr_burst_tagger::gr_burst_tagger(size_t itemsize) std::stringstream str; str << name() << unique_id(); - d_true_key = pmt::pmt_string_to_symbol("burst"); + d_true_key = pmt::string_to_symbol("burst"); d_true_value = pmt::PMT_T; - d_false_key = pmt::pmt_string_to_symbol("burst"); + d_false_key = pmt::string_to_symbol("burst"); d_false_value = pmt::PMT_F; - d_id = pmt::pmt_string_to_symbol(str.str()); + d_id = pmt::string_to_symbol(str.str()); } void gr_burst_tagger::set_true_tag (const std::string &key, bool value) { - d_true_key = pmt::pmt_string_to_symbol(key); + d_true_key = pmt::string_to_symbol(key); if(value == true) { d_true_value = pmt::PMT_T; } @@ -67,7 +67,7 @@ gr_burst_tagger::set_true_tag (const std::string &key, bool value) void gr_burst_tagger::set_false_tag (const std::string &key, bool value) { - d_false_key = pmt::pmt_string_to_symbol(key); + d_false_key = pmt::string_to_symbol(key); if(value == true) { d_false_value = pmt::PMT_T; } diff --git a/gnuradio-core/src/lib/general/gr_ctrlport_probe2_c.cc b/gnuradio-core/src/lib/general/gr_ctrlport_probe2_c.cc index 5d6abd2ee5..453f55ef4d 100644 --- a/gnuradio-core/src/lib/general/gr_ctrlport_probe2_c.cc +++ b/gnuradio-core/src/lib/general/gr_ctrlport_probe2_c.cc @@ -42,9 +42,9 @@ gr_ctrlport_probe2_c::gr_ctrlport_probe2_c(const std::string &id, gr_make_io_signature(0, 0, 0)), d_len(len), d_const_rpc(d_name, id.c_str(), this, unique_id(), &gr_ctrlport_probe2_c::get, - pmt::pmt_make_c32vector(0,-2), - pmt::pmt_make_c32vector(0,2), - pmt::pmt_make_c32vector(0,0), + pmt::make_c32vector(0,-2), + pmt::make_c32vector(0,2), + pmt::make_c32vector(0,0), "volts", desc.c_str(), RPC_PRIVLVL_MIN, DISPXYSCATTER), d_len_get_rpc(d_name, "length", this, unique_id(), &gr_ctrlport_probe2_c::length, pmt::mp(1), pmt::mp(10*len), pmt::mp(len), diff --git a/gnuradio-core/src/lib/general/gr_ctrlport_probe_c.cc b/gnuradio-core/src/lib/general/gr_ctrlport_probe_c.cc index 017a1fdcf7..7ad7bd6bce 100644 --- a/gnuradio-core/src/lib/general/gr_ctrlport_probe_c.cc +++ b/gnuradio-core/src/lib/general/gr_ctrlport_probe_c.cc @@ -43,9 +43,9 @@ gr_ctrlport_probe_c::gr_ctrlport_probe_c(const std::string &id, gr_make_io_signature(0, 0, 0)), d_ptr(NULL), d_ptrLen(0), d_const_rpc(d_name, id.c_str(), this, unique_id(), &gr_ctrlport_probe_c::get, - pmt::pmt_make_c32vector(0,-2), - pmt::pmt_make_c32vector(0,2), - pmt::pmt_make_c32vector(0,0), + pmt::make_c32vector(0,-2), + pmt::make_c32vector(0,2), + pmt::make_c32vector(0,0), "volts", desc.c_str(), RPC_PRIVLVL_MIN, DISPXYSCATTER) { } diff --git a/gnuradio-core/src/lib/general/gr_tag_debug.cc b/gnuradio-core/src/lib/general/gr_tag_debug.cc index ecf1b65e1f..9c66e890af 100644 --- a/gnuradio-core/src/lib/general/gr_tag_debug.cc +++ b/gnuradio-core/src/lib/general/gr_tag_debug.cc @@ -84,8 +84,8 @@ gr_tag_debug::work(int noutput_items, sout << "Input Stream: " << std::setw(2) << std::setfill('0') << i << std::setfill(' ') << std::endl; for(d_tags_itr = d_tags.begin(); d_tags_itr != d_tags.end(); d_tags_itr++) { sout << std::setw(10) << "Offset: " << d_tags_itr->offset - << std::setw(10) << "Source: " << (pmt::pmt_is_symbol(d_tags_itr->srcid) ? pmt::pmt_symbol_to_string(d_tags_itr->srcid) : "n/a") - << std::setw(10) << "Key: " << pmt::pmt_symbol_to_string(d_tags_itr->key) + << std::setw(10) << "Source: " << (pmt::is_symbol(d_tags_itr->srcid) ? pmt::symbol_to_string(d_tags_itr->srcid) : "n/a") + << std::setw(10) << "Key: " << pmt::symbol_to_string(d_tags_itr->key) << std::setw(10) << "Value: "; sout << d_tags_itr->value << std::endl; } diff --git a/gnuradio-core/src/lib/io/gr_message_burst_source.cc b/gnuradio-core/src/lib/io/gr_message_burst_source.cc index e9e2dfd4dc..968df6ec38 100644 --- a/gnuradio-core/src/lib/io/gr_message_burst_source.cc +++ b/gnuradio-core/src/lib/io/gr_message_burst_source.cc @@ -58,7 +58,7 @@ gr_message_burst_source::gr_message_burst_source (size_t itemsize, int msgq_limi { std::stringstream id; id << name() << unique_id(); - d_me = pmt::pmt_string_to_symbol(id.str()); + d_me = pmt::string_to_symbol(id.str()); } gr_message_burst_source::gr_message_burst_source (size_t itemsize, gr_msg_queue_sptr msgq) @@ -69,7 +69,7 @@ gr_message_burst_source::gr_message_burst_source (size_t itemsize, gr_msg_queue_ { std::stringstream id; id << name() << unique_id(); - d_me = pmt::pmt_string_to_symbol(id.str()); + d_me = pmt::string_to_symbol(id.str()); } gr_message_burst_source::~gr_message_burst_source() @@ -107,8 +107,8 @@ gr_message_burst_source::work(int noutput_items, //tag end of burst add_item_tag(0, //stream ID abs_sample_count+nn-1, //sample number - pmt::pmt_string_to_symbol("tx_eob"), - pmt::pmt_from_bool(1), + pmt::string_to_symbol("tx_eob"), + pmt::from_bool(1), d_me //block src id ); } @@ -129,8 +129,8 @@ gr_message_burst_source::work(int noutput_items, //tag start of burst add_item_tag(0, //stream ID abs_sample_count+nn, //sample number - pmt::pmt_string_to_symbol("tx_sob"), - pmt::pmt_from_bool(1), + pmt::string_to_symbol("tx_sob"), + pmt::from_bool(1), d_me //block src id ); diff --git a/gnuradio-core/src/lib/io/gr_message_debug.cc b/gnuradio-core/src/lib/io/gr_message_debug.cc index 27f4c65fdc..a0abf4d093 100644 --- a/gnuradio-core/src/lib/io/gr_message_debug.cc +++ b/gnuradio-core/src/lib/io/gr_message_debug.cc @@ -47,7 +47,7 @@ void gr_message_debug::print(pmt::pmt_t msg) { std::cout << "******* MESSAGE DEBUG PRINT ********\n"; - pmt::pmt_print(msg); + pmt::print(msg); std::cout << "************************************\n"; } @@ -61,15 +61,15 @@ gr_message_debug::store(pmt::pmt_t msg) void gr_message_debug::print_verbose(pmt::pmt_t msg) { - pmt::pmt_t meta = pmt::pmt_car(msg); - pmt::pmt_t vector = pmt::pmt_cdr(msg); + pmt::pmt_t meta = pmt::car(msg); + pmt::pmt_t vector = pmt::cdr(msg); std::cout << "* MESSAGE DEBUG PRINT PDU VERBOSE *\n"; - pmt::pmt_print(meta); - size_t len = pmt::pmt_length(vector); + pmt::print(meta); + size_t len = pmt::length(vector); std::cout << "pdu_length = " << len << std::endl; std::cout << "contents = " << std::endl; size_t offset(0); - const uint8_t* d = (const uint8_t*) pmt_uniform_vector_elements(vector, offset); + const uint8_t* d = (const uint8_t*) uniform_vector_elements(vector, offset); for(size_t i=0; i<len; i+=16){ printf("%04x: ", i); for(size_t j=i; j<std::min(i+16,len); j++){ diff --git a/gnuradio-core/src/lib/io/gr_pdu.cc b/gnuradio-core/src/lib/io/gr_pdu.cc index 302fd7b9bb..fe5d9f690f 100644 --- a/gnuradio-core/src/lib/io/gr_pdu.cc +++ b/gnuradio-core/src/lib/io/gr_pdu.cc @@ -44,11 +44,11 @@ bool gr_pdu_type_matches(gr_pdu_vector_type type, pmt::pmt_t v){ switch(type){ case pdu_byte: - return pmt::pmt_is_u8vector(v); + return pmt::is_u8vector(v); case pdu_float: - return pmt::pmt_is_f32vector(v); + return pmt::is_f32vector(v); case pdu_complex: - return pmt::pmt_is_c32vector(v); + return pmt::is_c32vector(v); default: throw std::runtime_error("bad type!"); } @@ -58,22 +58,22 @@ pmt::pmt_t gr_pdu_make_vector(gr_pdu_vector_type type, const uint8_t* buf, size_t items){ switch(type){ case pdu_byte: - return pmt::pmt_init_u8vector(items, buf); + return pmt::init_u8vector(items, buf); case pdu_float: - return pmt::pmt_init_f32vector(items, (const float*)buf); + return pmt::init_f32vector(items, (const float*)buf); case pdu_complex: - return pmt::pmt_init_c32vector(items, (const gr_complex*)buf); + return pmt::init_c32vector(items, (const gr_complex*)buf); default: throw std::runtime_error("bad type!"); } } gr_pdu_vector_type type_from_pmt(pmt::pmt_t vector){ - if(pmt_is_u8vector(vector)) + if(is_u8vector(vector)) return pdu_byte; - if(pmt_is_f32vector(vector)) + if(is_f32vector(vector)) return pdu_float; - if(pmt_is_c32vector(vector)) + if(is_c32vector(vector)) return pdu_complex; throw std::runtime_error("bad type!"); } diff --git a/gnuradio-core/src/lib/io/gr_pdu_to_tagged_stream.cc b/gnuradio-core/src/lib/io/gr_pdu_to_tagged_stream.cc index 5c319dc39d..9354a1366d 100644 --- a/gnuradio-core/src/lib/io/gr_pdu_to_tagged_stream.cc +++ b/gnuradio-core/src/lib/io/gr_pdu_to_tagged_stream.cc @@ -84,46 +84,46 @@ gr_pdu_to_tagged_stream::work(int noutput_items, } // make sure type is valid - if(!pmt::pmt_is_pair(msg)){ + if(!pmt::is_pair(msg)){ throw std::runtime_error("received a malformed pdu message!"); } // printf("got a msg\n"); -// pmt::pmt_print(msg); +// pmt::print(msg); // grab the components of the pdu message - pmt::pmt_t meta(pmt::pmt_car(msg)); // make sure this is NIL || Dict ? - pmt::pmt_t vect(pmt::pmt_cdr(msg)); // make sure this is a vector? + pmt::pmt_t meta(pmt::car(msg)); // make sure this is NIL || Dict ? + pmt::pmt_t vect(pmt::cdr(msg)); // make sure this is a vector? // compute offset for output tag uint64_t offset = nitems_written(0) + nout; // add a tag for pdu length - add_item_tag(0, offset, pdu_length_tag, pmt::pmt_from_long( pmt::pmt_length(vect) ), pmt::mp(alias())); + add_item_tag(0, offset, pdu_length_tag, pmt::from_long( pmt::length(vect) ), pmt::mp(alias())); // if we recieved metadata add it as tags - if( !pmt_eq(meta, pmt::PMT_NIL) ){ - pmt::pmt_t pair(pmt::pmt_dict_keys( meta )); - while( !pmt_eq(pair, pmt::PMT_NIL) ){ - pmt::pmt_t k(pmt::pmt_cdr(pair)); - pmt::pmt_t v(pmt::pmt_dict_ref(meta, k, pmt::PMT_NIL)); + if( !eq(meta, pmt::PMT_NIL) ){ + pmt::pmt_t pair(pmt::dict_keys( meta )); + while( !eq(pair, pmt::PMT_NIL) ){ + pmt::pmt_t k(pmt::cdr(pair)); + pmt::pmt_t v(pmt::dict_ref(meta, k, pmt::PMT_NIL)); add_item_tag(0, offset, k, v, pmt::mp(alias())); } } // copy vector output - size_t ncopy = std::min((size_t)noutput_items, (size_t)pmt::pmt_length(vect)); - size_t nsave = pmt::pmt_length(vect) - ncopy; + size_t ncopy = std::min((size_t)noutput_items, (size_t)pmt::length(vect)); + size_t nsave = pmt::length(vect) - ncopy; // copy output size_t io(0); nout += ncopy; - memcpy(out, pmt_uniform_vector_elements(vect,io), ncopy*d_itemsize); + memcpy(out, uniform_vector_elements(vect,io), ncopy*d_itemsize); // save leftover items if needed for next work call if(nsave > 0){ d_remain.resize(nsave*d_itemsize, 0); - memcpy(&d_remain[0], pmt_uniform_vector_elements(vect,ncopy), nsave*d_itemsize); + memcpy(&d_remain[0], uniform_vector_elements(vect,ncopy), nsave*d_itemsize); } } diff --git a/gnuradio-core/src/lib/io/gr_socket_pdu.cc b/gnuradio-core/src/lib/io/gr_socket_pdu.cc index bb374b3006..366ca507bc 100644 --- a/gnuradio-core/src/lib/io/gr_socket_pdu.cc +++ b/gnuradio-core/src/lib/io/gr_socket_pdu.cc @@ -114,8 +114,8 @@ void tcp_connection::handle_read(const boost::system::error_code& error/*error*/ { if(!error) { - pmt::pmt_t vector = pmt::pmt_init_u8vector(bytes_transferred, (const uint8_t*)&buf[0]); - pmt::pmt_t pdu = pmt::pmt_cons( pmt::PMT_NIL, vector); + pmt::pmt_t vector = pmt::init_u8vector(bytes_transferred, (const uint8_t*)&buf[0]); + pmt::pmt_t pdu = pmt::cons( pmt::PMT_NIL, vector); d_block->message_port_pub( pmt::mp("pdus"), pdu ); @@ -131,27 +131,27 @@ void tcp_connection::handle_read(const boost::system::error_code& error/*error*/ void gr_socket_pdu::tcp_server_send(pmt::pmt_t msg){ - pmt::pmt_t vector = pmt::pmt_cdr(msg); + pmt::pmt_t vector = pmt::cdr(msg); for(size_t i=0; i<d_tcp_connections.size(); i++){ d_tcp_connections[i]->send(vector); } } void gr_socket_pdu::tcp_client_send(pmt::pmt_t msg){ - pmt::pmt_t vector = pmt::pmt_cdr(msg); - size_t len = pmt::pmt_length(vector); + pmt::pmt_t vector = pmt::cdr(msg); + size_t len = pmt::length(vector); size_t offset(0); boost::array<char, 10000> txbuf; - memcpy(&txbuf[0], pmt::pmt_uniform_vector_elements(vector, offset), len); + memcpy(&txbuf[0], pmt::uniform_vector_elements(vector, offset), len); _tcp_socket->send(boost::asio::buffer(txbuf,len)); } void gr_socket_pdu::udp_send(pmt::pmt_t msg){ - pmt::pmt_t vector = pmt::pmt_cdr(msg); - size_t len = pmt::pmt_length(vector); + pmt::pmt_t vector = pmt::cdr(msg); + size_t len = pmt::length(vector); size_t offset(0); boost::array<char, 10000> txbuf; - memcpy(&txbuf[0], pmt::pmt_uniform_vector_elements(vector, offset), len); + memcpy(&txbuf[0], pmt::uniform_vector_elements(vector, offset), len); if(_udp_endpoint_other.address().to_string() != "0.0.0.0") _udp_socket->send_to(boost::asio::buffer(txbuf,len), _udp_endpoint_other); } diff --git a/gnuradio-core/src/lib/io/gr_socket_pdu.h b/gnuradio-core/src/lib/io/gr_socket_pdu.h index e30a4cc6cb..c2b4dd248c 100644 --- a/gnuradio-core/src/lib/io/gr_socket_pdu.h +++ b/gnuradio-core/src/lib/io/gr_socket_pdu.h @@ -68,10 +68,10 @@ public: boost::bind(&tcp_connection::handle_read, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)); } void send(pmt::pmt_t vector){ - size_t len = pmt::pmt_length(vector); + size_t len = pmt::length(vector); size_t offset(0); boost::array<char, 10000> txbuf; - memcpy(&txbuf[0], pmt::pmt_uniform_vector_elements(vector, offset), len); + memcpy(&txbuf[0], pmt::uniform_vector_elements(vector, offset), len); boost::asio::async_write(socket_, boost::asio::buffer(txbuf, len), boost::bind(&tcp_connection::handle_write, shared_from_this(), boost::asio::placeholders::error, @@ -161,8 +161,8 @@ class GR_CORE_API gr_socket_pdu : public gr_stream_pdu_base void handle_udp_read(const boost::system::error_code& error/*error*/, size_t bytes_transferred){ if(!error){ - pmt::pmt_t vector = pmt::pmt_init_u8vector(bytes_transferred, (const uint8_t*)&rxbuf[0]); - pmt::pmt_t pdu = pmt::pmt_cons( pmt::PMT_NIL, vector); + pmt::pmt_t vector = pmt::init_u8vector(bytes_transferred, (const uint8_t*)&rxbuf[0]); + pmt::pmt_t pdu = pmt::cons( pmt::PMT_NIL, vector); message_port_pub( pmt::mp("pdus"), pdu ); @@ -178,8 +178,8 @@ class GR_CORE_API gr_socket_pdu : public gr_stream_pdu_base void handle_tcp_read(const boost::system::error_code& error/*error*/, size_t bytes_transferred){ if(!error) { - pmt::pmt_t vector = pmt::pmt_init_u8vector(bytes_transferred, (const uint8_t*)&rxbuf[0]); - pmt::pmt_t pdu = pmt::pmt_cons( pmt::PMT_NIL, vector); + pmt::pmt_t vector = pmt::init_u8vector(bytes_transferred, (const uint8_t*)&rxbuf[0]); + pmt::pmt_t pdu = pmt::cons( pmt::PMT_NIL, vector); message_port_pub( pmt::mp("pdus"), pdu ); diff --git a/gnuradio-core/src/lib/io/gr_stream_pdu_base.cc b/gnuradio-core/src/lib/io/gr_stream_pdu_base.cc index 7250c33e59..0a0038ea25 100644 --- a/gnuradio-core/src/lib/io/gr_stream_pdu_base.cc +++ b/gnuradio-core/src/lib/io/gr_stream_pdu_base.cc @@ -79,19 +79,19 @@ void gr_stream_pdu_base::run(){ if(not wait_ready()){ continue; } const int result = read( d_fd, &d_rxbuf[0], d_rxbuf.size() ); if(result <= 0){ throw std::runtime_error("gr_stream_pdu_base, bad socket read!"); } - pmt::pmt_t vector = pmt::pmt_init_u8vector(result, &d_rxbuf[0]); - pmt::pmt_t pdu = pmt::pmt_cons( pmt::PMT_NIL, vector); + pmt::pmt_t vector = pmt::init_u8vector(result, &d_rxbuf[0]); + pmt::pmt_t pdu = pmt::cons( pmt::PMT_NIL, vector); message_port_pub(rxport, pdu); } } void gr_stream_pdu_base::send(pmt::pmt_t msg){ - pmt::pmt_t vector = pmt::pmt_cdr(msg); + pmt::pmt_t vector = pmt::cdr(msg); size_t offset(0); size_t itemsize(gr_pdu_itemsize(type_from_pmt(vector))); - int len( pmt::pmt_length(vector)*itemsize ); + int len( pmt::length(vector)*itemsize ); - const int rv = write(d_fd, pmt::pmt_uniform_vector_elements(vector, offset), len); + const int rv = write(d_fd, pmt::uniform_vector_elements(vector, offset), len); if(rv != len){ std::cerr << boost::format("WARNING: gr_stream_pdu_base::send(pdu) write failed! (d_fd=%d, len=%d, rv=%d)") % d_fd % len % rv << std::endl; diff --git a/gnuradio-core/src/lib/io/gr_tagged_file_sink.cc b/gnuradio-core/src/lib/io/gr_tagged_file_sink.cc index c9c8407a07..3288fcdd60 100644 --- a/gnuradio-core/src/lib/io/gr_tagged_file_sink.cc +++ b/gnuradio-core/src/lib/io/gr_tagged_file_sink.cc @@ -81,8 +81,8 @@ gr_tagged_file_sink::work (int noutput_items, uint64_t start_N = nitems_read(0); uint64_t end_N = start_N + (uint64_t)(noutput_items); - pmt::pmt_t bkey = pmt::pmt_string_to_symbol("burst"); - pmt::pmt_t tkey = pmt::pmt_string_to_symbol("rx_time"); // use gr_tags::key_time + pmt::pmt_t bkey = pmt::string_to_symbol("burst"); + pmt::pmt_t tkey = pmt::string_to_symbol("rx_time"); // use gr_tags::key_time std::vector<gr_tag_t> all_tags; get_tags_in_range(all_tags, 0, start_N, end_N); @@ -98,8 +98,8 @@ gr_tagged_file_sink::work (int noutput_items, const gr_tag_t tag = time_tags_outer[0]; uint64_t offset = tag.offset; pmt::pmt_t time = tag.value; - uint64_t tsecs = pmt::pmt_to_uint64(pmt::pmt_tuple_ref(time, 0)); - double tfrac = pmt::pmt_to_double(pmt::pmt_tuple_ref(time, 1)); + uint64_t tsecs = pmt::to_uint64(pmt::tuple_ref(time, 0)); + double tfrac = pmt::to_double(pmt::tuple_ref(time, 1)); double delta = (double)offset / d_sample_rate; d_timeval = (double)tsecs + tfrac + delta; d_last_N = offset; @@ -109,8 +109,8 @@ gr_tagged_file_sink::work (int noutput_items, while(idx < noutput_items) { if(d_state == NOT_IN_BURST) { while(vitr != all_tags.end()) { - if((pmt::pmt_eqv((*vitr).key, bkey)) && - pmt::pmt_is_true((*vitr).value)) { + if((pmt::eqv((*vitr).key, bkey)) && + pmt::is_true((*vitr).value)) { uint64_t N = (*vitr).offset; idx = (int)(N - start_N); @@ -130,8 +130,8 @@ gr_tagged_file_sink::work (int noutput_items, // Get time based on last time tag from USRP pmt::pmt_t time = tag.value; - uint64_t tsecs = pmt::pmt_to_uint64(pmt::pmt_tuple_ref(time, 0)); - double tfrac = pmt::pmt_to_double(pmt::pmt_tuple_ref(time, 1)); + uint64_t tsecs = pmt::to_uint64(pmt::tuple_ref(time, 0)); + double tfrac = pmt::to_double(pmt::tuple_ref(time, 1)); // Get new time from last time tag + difference in time to when // burst tag occured based on the sample rate @@ -187,8 +187,8 @@ gr_tagged_file_sink::work (int noutput_items, } else { // In burst while(vitr != all_tags.end()) { - if((pmt::pmt_eqv((*vitr).key, bkey)) && - pmt::pmt_is_false((*vitr).value)) { + if((pmt::eqv((*vitr).key, bkey)) && + pmt::is_false((*vitr).value)) { uint64_t N = (*vitr).offset; idx_stop = (int)N - start_N; diff --git a/gnuradio-core/src/lib/io/gr_tagged_stream_to_pdu.cc b/gnuradio-core/src/lib/io/gr_tagged_stream_to_pdu.cc index 8211b7672d..3493f6a389 100644 --- a/gnuradio-core/src/lib/io/gr_tagged_stream_to_pdu.cc +++ b/gnuradio-core/src/lib/io/gr_tagged_stream_to_pdu.cc @@ -70,14 +70,14 @@ gr_tagged_stream_to_pdu::work(int noutput_items, get_tags_in_range(d_tags, 0, abs_N, abs_N+1); bool found_length_tag(false); for(d_tags_itr = d_tags.begin(); (d_tags_itr != d_tags.end()) && (!found_length_tag); d_tags_itr++){ - if( pmt::pmt_equal( (*d_tags_itr).key, pdu_length_tag ) ){ + if( pmt::equal( (*d_tags_itr).key, pdu_length_tag ) ){ if( (*d_tags_itr).offset != abs_N ){ throw std::runtime_error("expected next pdu length tag on a different item..."); } found_length_tag = true; - d_pdu_length = pmt::pmt_to_long( (*d_tags_itr).value ); + d_pdu_length = pmt::to_long( (*d_tags_itr).value ); d_pdu_remain = d_pdu_length; - d_pdu_meta = pmt::pmt_make_dict(); + d_pdu_meta = pmt::make_dict(); break; } // if have length tag } // iter over tags @@ -91,8 +91,8 @@ gr_tagged_stream_to_pdu::work(int noutput_items, // copy any tags in this range into our meta object get_tags_in_range(d_tags, 0, abs_N, abs_N+ncopy); for(d_tags_itr = d_tags.begin(); d_tags_itr != d_tags.end(); d_tags_itr++){ - if( ! pmt_equal( (*d_tags_itr).key, pdu_length_tag ) ){ - d_pdu_meta = pmt_dict_add(d_pdu_meta, (*d_tags_itr).key, (*d_tags_itr).value); + if( ! equal( (*d_tags_itr).key, pdu_length_tag ) ){ + d_pdu_meta = dict_add(d_pdu_meta, (*d_tags_itr).key, (*d_tags_itr).value); } } @@ -122,11 +122,11 @@ gr_tagged_stream_to_pdu::work(int noutput_items, void gr_tagged_stream_to_pdu::send_message(){ - if(pmt::pmt_length(d_pdu_vector) != d_pdu_length){ + if(pmt::length(d_pdu_vector) != d_pdu_length){ throw std::runtime_error("msg length not correct"); } - pmt::pmt_t msg = pmt::pmt_cons( d_pdu_meta, d_pdu_vector ); + pmt::pmt_t msg = pmt::cons( d_pdu_meta, d_pdu_vector ); message_port_pub( pdu_port_id, msg ); d_pdu_meta = pmt::PMT_NIL; diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.cc b/gnuradio-core/src/lib/runtime/gr_basic_block.cc index 6ff57a1d6c..2530391532 100644 --- a/gnuradio-core/src/lib/runtime/gr_basic_block.cc +++ b/gnuradio-core/src/lib/runtime/gr_basic_block.cc @@ -30,8 +30,6 @@ #include <sstream> #include <iostream> -using namespace pmt; - static long s_next_id = 0; static long s_ncurrently_allocated = 0; @@ -51,7 +49,7 @@ gr_basic_block::gr_basic_block(const std::string &name, d_symbolic_id(global_block_registry.block_register(this)), d_symbol_name(global_block_registry.register_symbolic_name(this)), d_color(WHITE), - message_subscribers(pmt::pmt_make_dict()) + message_subscribers(pmt::make_dict()) { s_ncurrently_allocated++; } @@ -80,7 +78,7 @@ gr_basic_block::set_block_alias(std::string name) void gr_basic_block::message_port_register_in(pmt::pmt_t port_id) { - if(!pmt::pmt_is_symbol(port_id)) { + if(!pmt::is_symbol(port_id)) { throw std::runtime_error("message_port_register_in: bad port id"); } msg_queue[port_id] = msg_queue_t(); @@ -90,10 +88,10 @@ gr_basic_block::message_port_register_in(pmt::pmt_t port_id) pmt::pmt_t gr_basic_block::message_ports_in() { - pmt::pmt_t port_names = pmt::pmt_make_vector(msg_queue.size(), pmt::PMT_NIL); + pmt::pmt_t port_names = pmt::make_vector(msg_queue.size(), pmt::PMT_NIL); msg_queue_map_itr itr = msg_queue.begin(); for(size_t i = 0; i < msg_queue.size(); i++) { - pmt::pmt_vector_set(port_names, i, (*itr).first); + pmt::vector_set(port_names, i, (*itr).first); itr++; } return port_names; @@ -103,23 +101,23 @@ gr_basic_block::message_ports_in() void gr_basic_block::message_port_register_out(pmt::pmt_t port_id) { - if(!pmt::pmt_is_symbol(port_id)) { + if(!pmt::is_symbol(port_id)) { throw std::runtime_error("message_port_register_out: bad port id"); } - if(pmt::pmt_dict_has_key(message_subscribers, port_id)) { + if(pmt::dict_has_key(message_subscribers, port_id)) { throw std::runtime_error("message_port_register_out: port already in use"); } - message_subscribers = pmt::pmt_dict_add(message_subscribers, port_id, pmt::PMT_NIL); + message_subscribers = pmt::dict_add(message_subscribers, port_id, pmt::PMT_NIL); } pmt::pmt_t gr_basic_block::message_ports_out() { - size_t len = pmt::pmt_length(message_subscribers); - pmt::pmt_t port_names = pmt::pmt_make_vector(len, pmt::PMT_NIL); - pmt::pmt_t keys = pmt::pmt_dict_keys(message_subscribers); + size_t len = pmt::length(message_subscribers); + pmt::pmt_t port_names = pmt::make_vector(len, pmt::PMT_NIL); + pmt::pmt_t keys = pmt::dict_keys(message_subscribers); for(size_t i = 0; i < len; i++) { - pmt::pmt_vector_set(port_names, i, pmt::pmt_nth(i, keys)); + pmt::vector_set(port_names, i, pmt::nth(i, keys)); } return port_names; } @@ -127,19 +125,19 @@ gr_basic_block::message_ports_out() // - publish a message on a message port void gr_basic_block::message_port_pub(pmt::pmt_t port_id, pmt::pmt_t msg) { - if(!pmt::pmt_dict_has_key(message_subscribers, port_id)) { + if(!pmt::dict_has_key(message_subscribers, port_id)) { throw std::runtime_error("port does not exist"); } - pmt::pmt_t currlist = pmt::pmt_dict_ref(message_subscribers, port_id, pmt::PMT_NIL); + pmt::pmt_t currlist = pmt::dict_ref(message_subscribers, port_id, pmt::PMT_NIL); // iterate through subscribers on port - while(pmt::pmt_is_pair(currlist)) { - pmt::pmt_t target = pmt::pmt_car(currlist); + while(pmt::is_pair(currlist)) { + pmt::pmt_t target = pmt::car(currlist); - pmt::pmt_t block = pmt::pmt_car(target); - pmt::pmt_t port = pmt::pmt_cdr(target); + pmt::pmt_t block = pmt::car(target); + pmt::pmt_t port = pmt::cdr(target); - currlist = pmt::pmt_cdr(currlist); + currlist = pmt::cdr(currlist); gr_basic_block_sptr blk = global_block_registry.block_lookup(block); //blk->post(msg); blk->post(port, msg); @@ -149,33 +147,33 @@ void gr_basic_block::message_port_pub(pmt::pmt_t port_id, pmt::pmt_t msg) // - subscribe to a message port void gr_basic_block::message_port_sub(pmt::pmt_t port_id, pmt::pmt_t target){ - if(!pmt::pmt_dict_has_key(message_subscribers, port_id)){ + if(!pmt::dict_has_key(message_subscribers, port_id)){ std::stringstream ss; - ss << "Port does not exist: \"" << pmt::pmt_write_string(port_id) << "\" on block: " << pmt::pmt_write_string(target) << std::endl; + ss << "Port does not exist: \"" << pmt::write_string(port_id) << "\" on block: " << pmt::write_string(target) << std::endl; throw std::runtime_error(ss.str()); } - pmt::pmt_t currlist = pmt::pmt_dict_ref(message_subscribers,port_id,pmt::PMT_NIL); + pmt::pmt_t currlist = pmt::dict_ref(message_subscribers,port_id,pmt::PMT_NIL); // ignore re-adds of the same target - if(!pmt::pmt_list_has(currlist, target)) - message_subscribers = pmt::pmt_dict_add(message_subscribers,port_id,pmt::pmt_list_add(currlist,target)); + if(!pmt::list_has(currlist, target)) + message_subscribers = pmt::dict_add(message_subscribers,port_id,pmt::list_add(currlist,target)); } void gr_basic_block::message_port_unsub(pmt::pmt_t port_id, pmt::pmt_t target){ - if(!pmt::pmt_dict_has_key(message_subscribers, port_id)){ + if(!pmt::dict_has_key(message_subscribers, port_id)){ std::stringstream ss; - ss << "Port does not exist: \"" << pmt::pmt_write_string(port_id) << "\" on block: " << pmt::pmt_write_string(target) << std::endl; + ss << "Port does not exist: \"" << pmt::write_string(port_id) << "\" on block: " << pmt::write_string(target) << std::endl; throw std::runtime_error(ss.str()); } // ignore unsubs of unknown targets - pmt::pmt_t currlist = pmt::pmt_dict_ref(message_subscribers,port_id,pmt::PMT_NIL); - message_subscribers = pmt::pmt_dict_add(message_subscribers,port_id,pmt::pmt_list_rm(currlist,target)); + pmt::pmt_t currlist = pmt::dict_ref(message_subscribers,port_id,pmt::PMT_NIL); + message_subscribers = pmt::dict_add(message_subscribers,port_id,pmt::list_rm(currlist,target)); } void -gr_basic_block::_post(pmt_t which_port, pmt_t msg) +gr_basic_block::_post(pmt::pmt_t which_port, pmt::pmt_t msg) { insert_tail(which_port, msg); } @@ -186,7 +184,7 @@ gr_basic_block::insert_tail(pmt::pmt_t which_port, pmt::pmt_t msg) gruel::scoped_lock guard(mutex); if( (msg_queue.find(which_port) == msg_queue.end()) || (msg_queue_ready.find(which_port) == msg_queue_ready.end())){ - std::cout << "target port = " << pmt::pmt_symbol_to_string(which_port) << std::endl; + std::cout << "target port = " << pmt::symbol_to_string(which_port) << std::endl; throw std::runtime_error("attempted to insert_tail on invalid queue!"); } @@ -197,7 +195,7 @@ gr_basic_block::insert_tail(pmt::pmt_t which_port, pmt::pmt_t msg) global_block_registry.notify_blk(alias()); } -pmt_t +pmt::pmt_t gr_basic_block::delete_head_nowait(pmt::pmt_t which_port) { gruel::scoped_lock guard(mutex); @@ -206,13 +204,13 @@ gr_basic_block::delete_head_nowait(pmt::pmt_t which_port) return pmt::pmt_t(); } - pmt_t m(msg_queue[which_port].front()); + pmt::pmt_t m(msg_queue[which_port].front()); msg_queue[which_port].pop_front(); return m; } -pmt_t +pmt::pmt_t gr_basic_block::delete_head_blocking(pmt::pmt_t which_port) { gruel::scoped_lock guard(mutex); @@ -221,7 +219,7 @@ gr_basic_block::delete_head_blocking(pmt::pmt_t which_port) msg_queue_ready[which_port]->wait(guard); } - pmt_t m(msg_queue[which_port].front()); + pmt::pmt_t m(msg_queue[which_port].front()); msg_queue[which_port].pop_front(); return m; } diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.h b/gnuradio-core/src/lib/runtime/gr_basic_block.h index b7958c1281..55940e3c7f 100644 --- a/gnuradio-core/src/lib/runtime/gr_basic_block.h +++ b/gnuradio-core/src/lib/runtime/gr_basic_block.h @@ -72,13 +72,13 @@ class GR_CORE_API gr_basic_block : public gr_msg_accepter, public boost::enable_ }; //msg_handler_t d_msg_handler; - typedef std::map<pmt::pmt_t , msg_handler_t, pmt::pmt_comperator> d_msg_handlers_t; + typedef std::map<pmt::pmt_t , msg_handler_t, pmt::comperator> d_msg_handlers_t; d_msg_handlers_t d_msg_handlers; typedef std::deque<pmt::pmt_t> msg_queue_t; - typedef std::map<pmt::pmt_t, msg_queue_t, pmt::pmt_comperator> msg_queue_map_t; - typedef std::map<pmt::pmt_t, msg_queue_t, pmt::pmt_comperator>::iterator msg_queue_map_itr; - std::map<pmt::pmt_t, boost::shared_ptr<boost::condition_variable>, pmt::pmt_comperator> msg_queue_ready; + typedef std::map<pmt::pmt_t, msg_queue_t, pmt::comperator> msg_queue_map_t; + typedef std::map<pmt::pmt_t, msg_queue_t, pmt::comperator>::iterator msg_queue_map_itr; + std::map<pmt::pmt_t, boost::shared_ptr<boost::condition_variable>, pmt::comperator> msg_queue_ready; gruel::mutex mutex; //< protects all vars @@ -138,7 +138,7 @@ class GR_CORE_API gr_basic_block : public gr_msg_accepter, public boost::enable_ gr_basic_block_sptr to_basic_block(); // Needed for Python type coercion bool alias_set() { return !d_symbol_alias.empty(); } std::string alias(){ return alias_set()?d_symbol_alias:symbol_name(); } - pmt::pmt_t alias_pmt(){ return pmt::pmt_intern(alias()); } + pmt::pmt_t alias_pmt(){ return pmt::intern(alias()); } void set_block_alias(std::string name); // ** Message passing interface ** @@ -210,7 +210,7 @@ class GR_CORE_API gr_basic_block : public gr_msg_accepter, public boost::enable_ if(msg_queue.find(which_port) != msg_queue.end()){ return true; } - if(pmt::pmt_dict_has_key(message_subscribers, which_port)){ + if(pmt::dict_has_key(message_subscribers, which_port)){ return true; } return false; diff --git a/gnuradio-core/src/lib/runtime/gr_block_detail.cc b/gnuradio-core/src/lib/runtime/gr_block_detail.cc index 337c9518ef..ebe89d930e 100644 --- a/gnuradio-core/src/lib/runtime/gr_block_detail.cc +++ b/gnuradio-core/src/lib/runtime/gr_block_detail.cc @@ -27,8 +27,6 @@ #include <gr_block_detail.h> #include <gr_buffer.h> -using namespace pmt; - static long s_ncurrently_allocated = 0; long @@ -146,8 +144,8 @@ gr_block_detail::nitems_written(unsigned int which_output) void gr_block_detail::add_item_tag(unsigned int which_output, const gr_tag_t &tag) { - if(!pmt_is_symbol(tag.key)) { - throw pmt_wrong_type("gr_block_detail::add_item_tag key", tag.key); + if(!pmt::is_symbol(tag.key)) { + throw pmt::wrong_type("gr_block_detail::add_item_tag key", tag.key); } else { // Add tag to gr_buffer's deque tags @@ -170,7 +168,7 @@ gr_block_detail::get_tags_in_range(std::vector<gr_tag_t> &v, unsigned int which_input, uint64_t abs_start, uint64_t abs_end, - const pmt_t &key) + const pmt::pmt_t &key) { std::vector<gr_tag_t> found_items; @@ -180,11 +178,11 @@ gr_block_detail::get_tags_in_range(std::vector<gr_tag_t> &v, d_input[which_input]->get_tags_in_range(found_items, abs_start, abs_end); // Filter further by key name - pmt_t itemkey; + pmt::pmt_t itemkey; std::vector<gr_tag_t>::iterator itr; for(itr = found_items.begin(); itr != found_items.end(); itr++) { itemkey = (*itr).key; - if(pmt_eqv(key, itemkey)) { + if(pmt::eqv(key, itemkey)) { v.push_back(*itr); } } diff --git a/gnuradio-core/src/lib/runtime/gr_block_registry.cc b/gnuradio-core/src/lib/runtime/gr_block_registry.cc index ff23d97eb2..eaa770dcaf 100644 --- a/gnuradio-core/src/lib/runtime/gr_block_registry.cc +++ b/gnuradio-core/src/lib/runtime/gr_block_registry.cc @@ -8,7 +8,7 @@ gr_block_registry global_block_registry; gr_block_registry::gr_block_registry(){ - d_ref_map = pmt::pmt_make_dict(); + d_ref_map = pmt::make_dict(); } long gr_block_registry::block_register(gr_basic_block* block){ @@ -29,9 +29,9 @@ long gr_block_registry::block_register(gr_basic_block* block){ void gr_block_registry::block_unregister(gr_basic_block* block){ d_map[block->name()].erase( d_map[block->name()].find(block->symbolic_id())); - d_ref_map = pmt::pmt_dict_delete(d_ref_map, pmt::pmt_intern(block->symbol_name())); + d_ref_map = pmt::dict_delete(d_ref_map, pmt::intern(block->symbol_name())); if(block->alias_set()){ - d_ref_map = pmt::pmt_dict_delete(d_ref_map, pmt::pmt_intern(block->alias())); + d_ref_map = pmt::dict_delete(d_ref_map, pmt::intern(block->alias())); } } @@ -44,18 +44,18 @@ std::string gr_block_registry::register_symbolic_name(gr_basic_block* block){ } void gr_block_registry::register_symbolic_name(gr_basic_block* block, std::string name){ - if(pmt_dict_has_key(d_ref_map, pmt::pmt_intern(name))){ + if(dict_has_key(d_ref_map, pmt::intern(name))){ throw std::runtime_error("symbol already exists, can not re-use!"); } - d_ref_map = pmt_dict_add(d_ref_map, pmt::pmt_intern(name), pmt::pmt_make_any(block)); + d_ref_map = dict_add(d_ref_map, pmt::intern(name), pmt::make_any(block)); } gr_basic_block_sptr gr_block_registry::block_lookup(pmt::pmt_t symbol){ - pmt::pmt_t ref = pmt_dict_ref(d_ref_map, symbol, pmt::PMT_NIL); - if(pmt::pmt_eq(ref, pmt::PMT_NIL)){ + pmt::pmt_t ref = dict_ref(d_ref_map, symbol, pmt::PMT_NIL); + if(pmt::eq(ref, pmt::PMT_NIL)){ throw std::runtime_error("block lookup failed! block not found!"); } - gr_basic_block* blk = boost::any_cast<gr_basic_block*>( pmt::pmt_any_ref(ref) ); + gr_basic_block* blk = boost::any_cast<gr_basic_block*>( pmt::any_ref(ref) ); return blk->shared_from_this(); } diff --git a/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc b/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc index 9294a5dca2..e7b75d95cd 100644 --- a/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc +++ b/gnuradio-core/src/lib/runtime/gr_flat_flowgraph.cc @@ -78,7 +78,7 @@ gr_flat_flowgraph::setup_connections() std::cout << boost::format("flat_fg connecting msg primitives: (%s, %s)->(%s, %s)\n") % i->src().block() % i->src().port() % i->dst().block() % i->dst().port(); - i->src().block()->message_port_sub( i->src().port(), pmt::pmt_cons(i->dst().block()->alias_pmt(), i->dst().port()) ); + i->src().block()->message_port_sub( i->src().port(), pmt::cons(i->dst().block()->alias_pmt(), i->dst().port()) ); } } diff --git a/gnuradio-core/src/lib/runtime/gr_flowgraph.h b/gnuradio-core/src/lib/runtime/gr_flowgraph.h index bef70f626f..3c8cd3cb02 100644 --- a/gnuradio-core/src/lib/runtime/gr_flowgraph.h +++ b/gnuradio-core/src/lib/runtime/gr_flowgraph.h @@ -73,7 +73,7 @@ public: inline bool gr_msg_endpoint::operator==(const gr_msg_endpoint &other) const { return (d_basic_block == other.d_basic_block && - pmt::pmt_equal(d_port, other.d_port)); + pmt::equal(d_port, other.d_port)); } diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2.cc b/gnuradio-core/src/lib/runtime/gr_hier_block2.cc index 8c2794c63c..9e924fdaf5 100644 --- a/gnuradio-core/src/lib/runtime/gr_hier_block2.cc +++ b/gnuradio-core/src/lib/runtime/gr_hier_block2.cc @@ -86,7 +86,7 @@ void gr_hier_block2::msg_connect(gr_basic_block_sptr src, pmt::pmt_t srcport, gr_basic_block_sptr dst, pmt::pmt_t dstport) { - if(!pmt::pmt_is_symbol(srcport)){throw std::runtime_error("bad port id"); } + if(!pmt::is_symbol(srcport)){throw std::runtime_error("bad port id"); } d_detail->msg_connect(src, srcport, dst, dstport); } @@ -101,7 +101,7 @@ void gr_hier_block2::msg_disconnect(gr_basic_block_sptr src, pmt::pmt_t srcport, gr_basic_block_sptr dst, pmt::pmt_t dstport) { - if(!pmt::pmt_is_symbol(srcport)){throw std::runtime_error("bad port id"); } + if(!pmt::is_symbol(srcport)){throw std::runtime_error("bad port id"); } d_detail->msg_disconnect(src, srcport, dst, dstport); } diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2.h b/gnuradio-core/src/lib/runtime/gr_hier_block2.h index f80dd73e4b..aa6b180cac 100644 --- a/gnuradio-core/src/lib/runtime/gr_hier_block2.h +++ b/gnuradio-core/src/lib/runtime/gr_hier_block2.h @@ -175,28 +175,28 @@ public: return message_port_is_hier_in(port_id) || message_port_is_hier_out(port_id); } bool message_port_is_hier_in(pmt::pmt_t port_id){ - return pmt::pmt_list_has(hier_message_ports_in, port_id); + return pmt::list_has(hier_message_ports_in, port_id); } bool message_port_is_hier_out(pmt::pmt_t port_id){ - return pmt::pmt_list_has(hier_message_ports_out, port_id); + return pmt::list_has(hier_message_ports_out, port_id); } pmt::pmt_t hier_message_ports_in; pmt::pmt_t hier_message_ports_out; void message_port_register_hier_in(pmt::pmt_t port_id){ - if(pmt::pmt_list_has(hier_message_ports_in, port_id)) + if(pmt::list_has(hier_message_ports_in, port_id)) throw std::invalid_argument("hier msg in port by this name already registered"); if(msg_queue.find(port_id) != msg_queue.end()) throw std::invalid_argument("block already has a primitive input port by this name"); - hier_message_ports_in = pmt::pmt_list_add(hier_message_ports_in, port_id); + hier_message_ports_in = pmt::list_add(hier_message_ports_in, port_id); } void message_port_register_hier_out(pmt::pmt_t port_id){ - if(pmt::pmt_list_has(hier_message_ports_out, port_id)) + if(pmt::list_has(hier_message_ports_out, port_id)) throw std::invalid_argument("hier msg out port by this name already registered"); - if(pmt::pmt_dict_has_key(message_subscribers, port_id)) + if(pmt::dict_has_key(message_subscribers, port_id)) throw std::invalid_argument("block already has a primitive output port by this name"); - hier_message_ports_out = pmt::pmt_list_add(hier_message_ports_out, port_id); + hier_message_ports_out = pmt::list_add(hier_message_ports_out, port_id); } }; diff --git a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc index add6da0248..44475d2ae0 100644 --- a/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc +++ b/gnuradio-core/src/lib/runtime/gr_hier_block2_detail.cc @@ -154,7 +154,7 @@ gr_hier_block2_detail::msg_connect(gr_basic_block_sptr src, pmt::pmt_t srcport, // register the subscription // this is done later... -// src->message_port_sub(srcport, pmt::pmt_cons(dst->alias_pmt(), dstport)); +// src->message_port_sub(srcport, pmt::cons(dst->alias_pmt(), dstport)); // add block uniquely to list to internal blocks if (std::find(d_blocks.begin(), d_blocks.end(), dst) == d_blocks.end()){ @@ -196,7 +196,7 @@ gr_hier_block2_detail::msg_disconnect(gr_basic_block_sptr src, pmt::pmt_t srcpor std::cout << "disconnecting message port..." << std::endl; // unregister the subscription - if already subscribed - src->message_port_unsub(srcport, pmt::pmt_cons(dst->alias_pmt(), dstport)); + src->message_port_unsub(srcport, pmt::cons(dst->alias_pmt(), dstport)); // remove edge for this message connection bool hier_out = (d_owner == src.get()) && src->message_port_is_hier_out(srcport);; diff --git a/gnuradio-core/src/lib/runtime/pycallback_object.h b/gnuradio-core/src/lib/runtime/pycallback_object.h index c27bf00508..389a975bd4 100644 --- a/gnuradio-core/src/lib/runtime/pycallback_object.h +++ b/gnuradio-core/src/lib/runtime/pycallback_object.h @@ -60,13 +60,13 @@ public: template<> pmt::pmt_t pmt_assist<std::vector<float> >::make(std::vector<float> _val) { - return pmt::pmt_init_f32vector(_val.size(), &_val[0]); + return pmt::init_f32vector(_val.size(), &_val[0]); } template<> pmt::pmt_t pmt_assist<std::vector<gr_complex> >::make(std::vector<gr_complex> _val) { - return pmt::pmt_init_c32vector(_val.size(), &_val[0]); + return pmt::init_c32vector(_val.size(), &_val[0]); } template <class myType> class pycallback_object diff --git a/gnuradio-core/src/lib/runtime/qa_set_msg_handler.cc b/gnuradio-core/src/lib/runtime/qa_set_msg_handler.cc index c84a219bd1..ac06a3f8bc 100644 --- a/gnuradio-core/src/lib/runtime/qa_set_msg_handler.cc +++ b/gnuradio-core/src/lib/runtime/qa_set_msg_handler.cc @@ -37,8 +37,6 @@ #define VERBOSE 0 -using namespace pmt; - /* * The gr_nop block has been instrumented so that it counts * the number of messages sent to it. We use this feature @@ -65,9 +63,9 @@ void qa_set_msg_handler::t0() tb->start(); // Send them... - pmt_t port(pmt_intern("port")); + pmt::pmt_t port(pmt::intern("port")); for (int i = 0; i < NMSGS; i++){ - send(nop, port, mp(mp("example-msg"), mp(i))); + send(nop, port, pmt::mp(pmt::mp("example-msg"), pmt::mp(i))); } // Give the messages a chance to be processed diff --git a/gnuradio-core/src/lib/runtime/rpcpmtconverters_ice.cc b/gnuradio-core/src/lib/runtime/rpcpmtconverters_ice.cc index 31953fd09c..c5502c7362 100644 --- a/gnuradio-core/src/lib/runtime/rpcpmtconverters_ice.cc +++ b/gnuradio-core/src/lib/runtime/rpcpmtconverters_ice.cc @@ -27,11 +27,11 @@ GNURadio::KnobPtr rpcpmtconverter::from_pmt(const pmt::pmt_t& knob, const Ice::Current& c) { - if(pmt::pmt_is_real(knob)) { - return new GNURadio::KnobD(Ice::Double(pmt::pmt_to_double(knob))); + if(pmt::is_real(knob)) { + return new GNURadio::KnobD(Ice::Double(pmt::to_double(knob))); } - else if(pmt::pmt_is_symbol(knob)) { - std::string stuff = pmt::pmt_symbol_to_string(knob); + else if(pmt::is_symbol(knob)) { + std::string stuff = pmt::symbol_to_string(knob); if(stuff.length() != 1) { return new GNURadio::KnobS(stuff); } @@ -41,24 +41,24 @@ rpcpmtconverter::from_pmt(const pmt::pmt_t& knob, const Ice::Current& c) //TODO: FLOAT!!! } - else if(pmt::pmt_is_integer(knob)) { - return new GNURadio::KnobI(pmt::pmt_to_long(knob)); + else if(pmt::is_integer(knob)) { + return new GNURadio::KnobI(pmt::to_long(knob)); } - else if(pmt::pmt_is_bool(knob)) { - return new GNURadio::KnobB(pmt::pmt_to_bool(knob)); + else if(pmt::is_bool(knob)) { + return new GNURadio::KnobB(pmt::to_bool(knob)); } - else if(pmt::pmt_is_uint64(knob)) { - return new GNURadio::KnobL(pmt::pmt_to_uint64(knob)); - //const std::complex<float> *pmt_c32vector_elements(pmt_t v, size_t &len); //< len is in elements + else if(pmt::is_uint64(knob)) { + return new GNURadio::KnobL(pmt::to_uint64(knob)); + //const std::complex<float> *c32vector_elements(pmt_t v, size_t &len); //< len is in elements } - else if(pmt::pmt_is_c32vector(knob)) { // c32 sent as interleaved floats - size_t size(pmt::pmt_length(knob)); - const float* start((const float*) pmt::pmt_c32vector_elements(knob,size)); + else if(pmt::is_c32vector(knob)) { // c32 sent as interleaved floats + size_t size(pmt::length(knob)); + const float* start((const float*) pmt::c32vector_elements(knob,size)); return new GNURadio::KnobVecF(std::vector<float>(start,start+size*2)); } - else if(pmt::pmt_is_f32vector(knob)) { - size_t size(pmt::pmt_length(knob)); - const float* start((const float*) pmt::pmt_f32vector_elements(knob,size)); + else if(pmt::is_f32vector(knob)) { + size_t size(pmt::length(knob)); + const float* start((const float*) pmt::f32vector_elements(knob,size)); return new GNURadio::KnobVecF(std::vector<float>(start,start+size)); } else { @@ -85,7 +85,7 @@ rpcpmtconverter::to_pmt(const GNURadio::KnobPtr& knob, const Ice::Current& c) } else if(id == "KnobS") { GNURadio::KnobSPtr k(GNURadio::KnobSPtr::dynamicCast(knob)); - return pmt::pmt_string_to_symbol(k->value); + return pmt::string_to_symbol(k->value); } else if(id == "KnobB") { GNURadio::KnobBPtr k(GNURadio::KnobBPtr::dynamicCast(knob)); diff --git a/gnuradio-core/src/lib/runtime/rpcregisterhelpers.h b/gnuradio-core/src/lib/runtime/rpcregisterhelpers.h index bbe4f6c7d3..6d5f878d3b 100644 --- a/gnuradio-core/src/lib/runtime/rpcregisterhelpers.h +++ b/gnuradio-core/src/lib/runtime/rpcregisterhelpers.h @@ -104,7 +104,7 @@ public: void post(pmt::pmt_t which_port, pmt::pmt_t msg) { (rpcextractor_base<T,double>::_source->*rpcextractor_base<T,double>::_func) - (pmt::pmt_to_double(msg)); + (pmt::to_double(msg)); } }; @@ -119,7 +119,7 @@ public: void post(pmt::pmt_t which_port, pmt::pmt_t msg) { (rpcextractor_base<T,float>::_source->*rpcextractor_base<T,float>::_func) - (pmt::pmt_to_double(msg)); + (pmt::to_double(msg)); } }; @@ -134,7 +134,7 @@ public: void post(pmt::pmt_t which_port, pmt::pmt_t msg) { (rpcextractor_base<T,long>::_source->*rpcextractor_base<T,long>::_func) - (pmt::pmt_to_long(msg)); + (pmt::to_long(msg)); } }; @@ -149,7 +149,7 @@ public: void post(pmt::pmt_t which_port, pmt::pmt_t msg) { (rpcextractor_base<T,int>::_source->*rpcextractor_base<T,int>::_func) - (pmt::pmt_to_long(msg)); + (pmt::to_long(msg)); } }; @@ -164,7 +164,7 @@ public: void post(pmt::pmt_t which_port, pmt::pmt_t msg) { (rpcextractor_base<T,bool>::_source->*rpcextractor_base<T,bool>::_func) - (pmt::pmt_to_bool(msg)); + (pmt::to_bool(msg)); } }; @@ -180,7 +180,7 @@ public: void post(pmt::pmt_t which_port, pmt::pmt_t msg) { (rpcextractor_base<T,std::complex<double> >:: - _source->*rpcextractor_base<T,std::complex<double> >::_func)(pmt::pmt_to_complex(msg)); + _source->*rpcextractor_base<T,std::complex<double> >::_func)(pmt::to_complex(msg)); } }; @@ -196,7 +196,7 @@ public: void post(pmt::pmt_t which_port, pmt::pmt_t msg) { (rpcextractor_base<T,std::string>:: - _source->*rpcextractor_base<T,std::string>::_func)(pmt::pmt_symbol_to_string(msg)); + _source->*rpcextractor_base<T,std::string>::_func)(pmt::symbol_to_string(msg)); } }; @@ -214,8 +214,8 @@ public: pmt::pmt_t retrieve() { - return pmt::pmt_from_uint64((rpcinserter_base<T,uint64_t>:: - _source->*rpcinserter_base<T,uint64_t>::_func)()); + return pmt::from_uint64((rpcinserter_base<T,uint64_t>:: + _source->*rpcinserter_base<T,uint64_t>::_func)()); } }; @@ -237,7 +237,7 @@ public: std::vector< std::complex<float> > vec((rpcinserter_base<T,std::vector<std::complex<float> > >:: _source->*rpcinserter_base<T,std::vector< std::complex<float> > >::_func)()); - return pmt::pmt_init_c32vector(vec.size(), &vec[0]); + return pmt::init_c32vector(vec.size(), &vec[0]); } }; @@ -258,7 +258,7 @@ public: { std::vector< float > vec((rpcinserter_base<T,std::vector<float> >:: _source->*rpcinserter_base<T,std::vector< float> >::_func)()); - return pmt::pmt_init_f32vector(vec.size(), &vec[0]); + return pmt::init_f32vector(vec.size(), &vec[0]); } }; diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_block_gateway.py b/gnuradio-core/src/python/gnuradio/gr/qa_block_gateway.py index 374d87c5ca..2c8cba5439 100644 --- a/gnuradio-core/src/python/gnuradio/gr/qa_block_gateway.py +++ b/gnuradio-core/src/python/gnuradio/gr/qa_block_gateway.py @@ -112,8 +112,8 @@ class tag_source(gr.sync_block): #make a new tag on the middle element every time work is called count = self.nitems_written(0) + num_output_items/2 - key = pmt.pmt_string_to_symbol("example_key") - value = pmt.pmt_string_to_symbol("example_value") + key = pmt.string_to_symbol("example_key") + value = pmt.string_to_symbol("example_value") self.add_item_tag(0, count, key, value) return num_output_items @@ -138,9 +138,9 @@ class tag_sink(gr.sync_block): tags = self.get_tags_in_range(0, nread, nread+num_input_items) for tag in tags: #print tag.offset - #print pmt.pmt_symbol_to_string(tag.key) - #print pmt.pmt_symbol_to_string(tag.value) - self.key = pmt.pmt_symbol_to_string(tag.key) + #print pmt.symbol_to_string(tag.key) + #print pmt.symbol_to_string(tag.value) + self.key = pmt.symbol_to_string(tag.key) return num_input_items diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_pdu.py b/gnuradio-core/src/python/gnuradio/gr/qa_pdu.py index 572d8b1861..59f927fa19 100755 --- a/gnuradio-core/src/python/gnuradio/gr/qa_pdu.py +++ b/gnuradio-core/src/python/gnuradio/gr/qa_pdu.py @@ -46,23 +46,23 @@ class test_pdu(gr_unittest.TestCase): # Test that the right number of ports exist. pi = dbg.message_ports_in() po = dbg.message_ports_out() - self.assertEqual(pmt.pmt_length(pi), 2) - self.assertEqual(pmt.pmt_length(po), 0) + self.assertEqual(pmt.length(pi), 2) + self.assertEqual(pmt.length(po), 0) pi = snk3.message_ports_in() po = snk3.message_ports_out() - self.assertEqual(pmt.pmt_length(pi), 0) - self.assertEqual(pmt.pmt_length(po), 1) + self.assertEqual(pmt.length(pi), 0) + self.assertEqual(pmt.length(po), 1) #print "Message Debug input ports: " - #pmt.pmt_print(pi) + #pmt.print(pi) #print "Message Debug output ports: " - #pmt.pmt_print(po) + #pmt.print(po) #print "Stream to PDU input ports: " - #pmt.pmt_print(pi) + #pmt.print(pi) #print "Stream to PDU output ports: " - #pmt.pmt_print(po) + #pmt.print(po) time.sleep(0.1) self.tb.connect(src, snk) @@ -73,12 +73,12 @@ class test_pdu(gr_unittest.TestCase): self.tb.start() # make our reference and message pmts - port = pmt.pmt_intern("pdus") - msg = pmt.pmt_cons( pmt.PMT_NIL, pmt.pmt_make_u8vector(16, 0xFF) ) + port = pmt.intern("pdus") + msg = pmt.cons( pmt.PMT_NIL, pmt.make_u8vector(16, 0xFF) ) #print "printing port & msg" - #pmt.pmt_print(port) - #pmt.pmt_print(msg) + #print(port) + #print(msg) # post the message src.to_basic_block()._post( port, msg ) @@ -94,13 +94,13 @@ class test_pdu(gr_unittest.TestCase): # Get the vector of data from the message sink # Convert the message PMT as a pair into its vector result_msg = dbg.get_message(0) - msg_vec = pmt.pmt_cdr(result_msg) - pmt.pmt_print(msg_vec) + msg_vec = pmt.cdr(result_msg) + print(msg_vec) # Convert the PMT vector into a Python list msg_data = [] for i in xrange(16): - msg_data.append(pmt.pmt_u8vector_ref(msg_vec, i)) + msg_data.append(pmt.u8vector_ref(msg_vec, i)) actual_data = 16*[0xFF,] self.assertEqual(actual_data, list(result_data)) diff --git a/gr-blocks/lib/file_meta_sink_impl.cc b/gr-blocks/lib/file_meta_sink_impl.cc index b707bfac4e..d996e7a93e 100644 --- a/gr-blocks/lib/file_meta_sink_impl.cc +++ b/gr-blocks/lib/file_meta_sink_impl.cc @@ -100,34 +100,34 @@ namespace gr { if(!open(filename)) throw std::runtime_error("file_meta_sink: can't open file\n"); - pmt_t timestamp = pmt_make_tuple(pmt_from_uint64(0), - pmt_from_double(0)); + pmt::pmt_t timestamp = pmt::make_tuple(pmt::from_uint64(0), + pmt::from_double(0)); // handle extra dictionary - d_extra = pmt_make_dict(); + d_extra = pmt::make_dict(); if(extra_dict.size() > 0) { - pmt_t extras = pmt_deserialize_str(extra_dict); - pmt_t keys = pmt_dict_keys(extras); - pmt_t vals = pmt_dict_values(extras); - size_t nitems = pmt_length(keys); + pmt::pmt_t extras = pmt::deserialize_str(extra_dict); + pmt::pmt_t keys = pmt::dict_keys(extras); + pmt::pmt_t vals = pmt::dict_values(extras); + size_t nitems = pmt::length(keys); for(size_t i = 0; i < nitems; i++) { - d_extra = pmt_dict_add(d_extra, - pmt_nth(i, keys), - pmt_nth(i, vals)); + d_extra = pmt::dict_add(d_extra, + pmt::nth(i, keys), + pmt::nth(i, vals)); } } - d_extra_size = pmt_serialize_str(d_extra).size(); + d_extra_size = pmt::serialize_str(d_extra).size(); - d_header = pmt_make_dict(); - d_header = pmt_dict_add(d_header, mp("version"), mp(METADATA_VERSION)); - d_header = pmt_dict_add(d_header, mp("rx_rate"), mp(samp_rate)); - d_header = pmt_dict_add(d_header, mp("rx_time"), timestamp); - d_header = pmt_dict_add(d_header, mp("size"), pmt_from_long(d_itemsize)); - d_header = pmt_dict_add(d_header, mp("type"), pmt_from_long(type)); - d_header = pmt_dict_add(d_header, mp("cplx"), complex ? PMT_T : PMT_F); - d_header = pmt_dict_add(d_header, mp("strt"), pmt_from_uint64(METADATA_HEADER_SIZE+d_extra_size)); - d_header = pmt_dict_add(d_header, mp("bytes"), pmt_from_uint64(0)); + d_header = pmt::make_dict(); + d_header = pmt::dict_add(d_header, pmt::mp("version"), pmt::mp(METADATA_VERSION)); + d_header = pmt::dict_add(d_header, pmt::mp("rx_rate"), pmt::mp(samp_rate)); + d_header = pmt::dict_add(d_header, pmt::mp("rx_time"), timestamp); + d_header = pmt::dict_add(d_header, pmt::mp("size"), pmt::from_long(d_itemsize)); + d_header = pmt::dict_add(d_header, pmt::mp("type"), pmt::from_long(type)); + d_header = pmt::dict_add(d_header, pmt::mp("cplx"), complex ? pmt::PMT_T : pmt::PMT_F); + d_header = pmt::dict_add(d_header, pmt::mp("strt"), pmt::from_uint64(METADATA_HEADER_SIZE+d_extra_size)); + d_header = pmt::dict_add(d_header, mp("bytes"), pmt::from_uint64(0)); do_update(); @@ -240,10 +240,10 @@ namespace gr { } void - file_meta_sink_impl::write_header(FILE *fp, pmt_t header, pmt_t extra) + file_meta_sink_impl::write_header(FILE *fp, pmt::pmt_t header, pmt::pmt_t extra) { - std::string header_str = pmt_serialize_str(header); - std::string extra_str = pmt_serialize_str(extra); + std::string header_str = pmt::serialize_str(header); + std::string extra_str = pmt::serialize_str(extra); if((header_str.size() != METADATA_HEADER_SIZE) && (extra_str.size() != d_extra_size)) throw std::runtime_error("file_meta_sink: header or extras is wrong size.\n"); @@ -274,24 +274,24 @@ namespace gr { } void - file_meta_sink_impl::update_header(pmt_t key, pmt_t value) + file_meta_sink_impl::update_header(pmt::pmt_t key, pmt::pmt_t value) { // Special handling caveat to transform rate from radio source into // the rate at this sink. - if(pmt_eq(key, mp("rx_rate"))) { - d_samp_rate = pmt_to_double(value); - value = pmt_from_double(d_samp_rate*d_relative_rate); + if(pmt::eq(key, mp("rx_rate"))) { + d_samp_rate = pmt::to_double(value); + value = pmt::from_double(d_samp_rate*d_relative_rate); } // If the tag is not part of the standard header, we put it into the // extra data, which either updates the current dictionary or adds a // new item. - if(pmt_dict_has_key(d_header, key)) { - d_header = pmt_dict_add(d_header, key, value); + if(pmt::dict_has_key(d_header, key)) { + d_header = pmt::dict_add(d_header, key, value); } else { - d_extra = pmt_dict_add(d_extra, key, value); - d_extra_size = pmt_serialize_str(d_extra).size(); + d_extra = pmt::dict_add(d_extra, key, value); + d_extra_size = pmt::serialize_str(d_extra).size(); } } @@ -310,11 +310,11 @@ namespace gr { // Update the last header info with the number of samples this // block represents. - size_t hdrlen = pmt_to_uint64(pmt_dict_ref(d_header, mp("strt"), PMT_NIL)); + size_t hdrlen = pmt::to_uint64(pmt::dict_ref(d_header, mp("strt"), pmt::PMT_NIL)); size_t seg_size = d_itemsize*d_total_seg_size; - pmt_t s = pmt_from_uint64(seg_size); + pmt::pmt_t s = pmt::from_uint64(seg_size); update_header(mp("bytes"), s); - update_header(mp("strt"), pmt_from_uint64(METADATA_HEADER_SIZE+d_extra_size)); + update_header(mp("strt"), pmt::from_uint64(METADATA_HEADER_SIZE+d_extra_size)); fseek(d_fp, -seg_size-hdrlen, SEEK_CUR); write_header(d_fp, d_header, d_extra); fseek(d_fp, seg_size, SEEK_CUR); @@ -325,11 +325,11 @@ namespace gr { { // Update the last header info with the number of samples this // block represents. - size_t hdrlen = pmt_to_uint64(pmt_dict_ref(d_header, mp("strt"), PMT_NIL)); + size_t hdrlen = pmt::to_uint64(pmt::dict_ref(d_header, mp("strt"), pmt::PMT_NIL)); size_t seg_size = d_itemsize*d_total_seg_size; - pmt_t s = pmt_from_uint64(seg_size); + pmt::pmt_t s = pmt::from_uint64(seg_size); update_header(mp("bytes"), s); - update_header(mp("strt"), pmt_from_uint64(METADATA_HEADER_SIZE+d_extra_size)); + update_header(mp("strt"), pmt::from_uint64(METADATA_HEADER_SIZE+d_extra_size)); fseek(d_hdr_fp, -hdrlen, SEEK_CUR); write_header(d_hdr_fp, d_header, d_extra); } @@ -340,13 +340,13 @@ namespace gr { // New header, so set current size of chunk to 0 and start of chunk // based on current index + header size. //uint64_t loc = get_last_header_loc(); - pmt_t s = pmt_from_uint64(0); + pmt::pmt_t s = pmt::from_uint64(0); update_header(mp("bytes"), s); // If we have multiple tags on the same offset, this makes // sure we just overwrite the same header each time instead // of creating a new header per tag. - s = pmt_from_uint64(METADATA_HEADER_SIZE + d_extra_size); + s = pmt::from_uint64(METADATA_HEADER_SIZE + d_extra_size); update_header(mp("strt"), s); if(d_state == STATE_DETACHED) @@ -358,10 +358,10 @@ namespace gr { void file_meta_sink_impl::update_rx_time() { - pmt_t rx_time = pmt_string_to_symbol("rx_time"); - pmt_t r = pmt_dict_ref(d_header, rx_time, PMT_NIL); - uint64_t secs = pmt_to_uint64(pmt_tuple_ref(r, 0)); - double fracs = pmt_to_double(pmt_tuple_ref(r, 1)); + pmt::pmt_t rx_time = pmt::string_to_symbol("rx_time"); + pmt::pmt_t r = pmt::dict_ref(d_header, rx_time, pmt::PMT_NIL); + uint64_t secs = pmt::to_uint64(pmt::tuple_ref(r, 0)); + double fracs = pmt::to_double(pmt::tuple_ref(r, 1)); double diff = d_total_seg_size / (d_samp_rate*d_relative_rate); //std::cerr << "old secs: " << secs << std::endl; @@ -377,8 +377,8 @@ namespace gr { //std::cerr << "new secs: " << secs << std::endl; //std::cerr << "new fracs: " << fracs << std::endl << std::endl; - r = pmt_make_tuple(pmt_from_uint64(secs), pmt_from_double(fracs)); - d_header = pmt_dict_add(d_header, rx_time, r); + r = pmt::make_tuple(pmt::from_uint64(secs), pmt::from_double(fracs)); + d_header = pmt::dict_add(d_header, rx_time, r); } int diff --git a/gr-blocks/lib/file_meta_source_impl.cc b/gr-blocks/lib/file_meta_source_impl.cc index 42fdabb541..9d66193e53 100644 --- a/gr-blocks/lib/file_meta_source_impl.cc +++ b/gr-blocks/lib/file_meta_source_impl.cc @@ -95,7 +95,7 @@ namespace gr { do_update(); - pmt_t hdr = PMT_NIL, extras = PMT_NIL; + pmt::pmt_t hdr = pmt::PMT_NIL, extras = pmt::PMT_NIL; if(read_header(hdr, extras)) { parse_header(hdr, 0, d_tags); parse_extras(extras, 0, d_tags); @@ -125,7 +125,7 @@ namespace gr { } bool - file_meta_source_impl::read_header(pmt_t &hdr, pmt_t &extras) + file_meta_source_impl::read_header(pmt::pmt_t &hdr, pmt::pmt_t &extras) { // Select which file handle to read from. FILE *fp; @@ -156,14 +156,14 @@ namespace gr { // Convert to string or the char array gets confused by the \0 str.insert(0, hdr_buffer, METADATA_HEADER_SIZE); - hdr = pmt_deserialize_str(str); + hdr = pmt::deserialize_str(str); delete [] hdr_buffer; uint64_t seg_start, extra_len; - pmt_t r, dump; - if(pmt_dict_has_key(hdr, pmt_string_to_symbol("strt"))) { - r = pmt_dict_ref(hdr, pmt_string_to_symbol("strt"), dump); - seg_start = pmt_to_uint64(r); + pmt::pmt_t r, dump; + if(pmt::dict_has_key(hdr, pmt::string_to_symbol("strt"))) { + r = pmt::dict_ref(hdr, pmt::string_to_symbol("strt"), dump); + seg_start = pmt::to_uint64(r); extra_len = seg_start - METADATA_HEADER_SIZE; } @@ -188,7 +188,7 @@ namespace gr { str.clear(); str.insert(0, hdr_buffer, extra_len); - extras = pmt_deserialize_str(str); + extras = pmt::deserialize_str(str); delete [] hdr_buffer; } @@ -196,16 +196,16 @@ namespace gr { } void - file_meta_source_impl::parse_header(pmt_t hdr, uint64_t offset, + file_meta_source_impl::parse_header(pmt::pmt_t hdr, uint64_t offset, std::vector<gr_tag_t> &tags) { - pmt_t r, key; + pmt::pmt_t r, key; // GET SAMPLE RATE - key = pmt_string_to_symbol("rx_rate"); - if(pmt_dict_has_key(hdr, key)) { - r = pmt_dict_ref(hdr, key, PMT_NIL); - d_samp_rate = pmt_to_double(r); + key = pmt::string_to_symbol("rx_rate"); + if(pmt::dict_has_key(hdr, key)) { + r = pmt::dict_ref(hdr, key, pmt::PMT_NIL); + d_samp_rate = pmt::to_double(r); gr_tag_t t; t.offset = offset; @@ -219,9 +219,9 @@ namespace gr { } // GET TIME STAMP - key = pmt_string_to_symbol("rx_time"); - if(pmt_dict_has_key(hdr, key)) { - d_time_stamp = pmt_dict_ref(hdr, key, PMT_NIL); + key = pmt::string_to_symbol("rx_time"); + if(pmt::dict_has_key(hdr, key)) { + d_time_stamp = pmt::dict_ref(hdr, key, pmt::PMT_NIL); gr_tag_t t; t.offset = offset; @@ -235,16 +235,16 @@ namespace gr { } // GET ITEM SIZE OF DATA - if(pmt_dict_has_key(hdr, pmt_string_to_symbol("size"))) { - d_itemsize = pmt_to_long(pmt_dict_ref(hdr, pmt_string_to_symbol("size"), PMT_NIL)); + if(pmt::dict_has_key(hdr, pmt::string_to_symbol("size"))) { + d_itemsize = pmt::to_long(pmt::dict_ref(hdr, pmt::string_to_symbol("size"), pmt::PMT_NIL)); } else { throw std::runtime_error("file_meta_source: Could not extract item size.\n"); } // GET SEGMENT SIZE - if(pmt_dict_has_key(hdr, pmt_string_to_symbol("bytes"))) { - d_seg_size = pmt_to_uint64(pmt_dict_ref(hdr, pmt_string_to_symbol("bytes"), PMT_NIL)); + if(pmt::dict_has_key(hdr, pmt::string_to_symbol("bytes"))) { + d_seg_size = pmt::to_uint64(pmt::dict_ref(hdr, pmt::string_to_symbol("bytes"), pmt::PMT_NIL)); // Convert from bytes to items d_seg_size /= d_itemsize; @@ -255,16 +255,16 @@ namespace gr { } void - file_meta_source_impl::parse_extras(pmt_t extras, uint64_t offset, + file_meta_source_impl::parse_extras(pmt::pmt_t extras, uint64_t offset, std::vector<gr_tag_t> &tags) { - pmt_t item, key, val; + pmt::pmt_t item, key, val; - size_t nitems = pmt_length(extras); + size_t nitems = pmt::length(extras); for(size_t i = 0; i < nitems; i++) { - item = pmt_nth(i, extras); - key = pmt_car(item); - val = pmt_cdr(item); + item = pmt::nth(i, extras); + key = pmt::car(item); + val = pmt::cdr(item); gr_tag_t t; t.offset = offset; @@ -370,7 +370,7 @@ namespace gr { // We've reached the end of a segment; parse the next header and get // the new tags to send and set the next segment size. if(d_seg_size == 0) { - pmt_t hdr=PMT_NIL, extras=PMT_NIL; + pmt::pmt_t hdr=pmt::PMT_NIL, extras=pmt::PMT_NIL; if(read_header(hdr, extras)) { parse_header(hdr, nitems_written(0), d_tags); parse_extras(extras, nitems_written(0), d_tags); diff --git a/gr-blocks/python/parse_file_metadata.py b/gr-blocks/python/parse_file_metadata.py index c8ac2def94..eaa8025bbf 100644 --- a/gr-blocks/python/parse_file_metadata.py +++ b/gr-blocks/python/parse_file_metadata.py @@ -66,14 +66,14 @@ def parse_header(p, VERBOSE=False): info = dict() - if(pmt.pmt_is_dict(p) is False): + if(pmt.is_dict(p) is False): sys.stderr.write("Header is not a PMT dictionary: invalid or corrupt data file.\n") sys.exit(1) # GET FILE FORMAT VERSION NUMBER - if(pmt.pmt_dict_has_key(p, pmt.pmt_string_to_symbol("version"))): - r = pmt.pmt_dict_ref(p, pmt.pmt_string_to_symbol("version"), dump) - version = pmt.pmt_to_long(r) + if(pmt.dict_has_key(p, pmt.string_to_symbol("version"))): + r = pmt.dict_ref(p, pmt.string_to_symbol("version"), dump) + version = pmt.to_long(r) if(VERBOSE): print "Version Number: {0}".format(version) else: @@ -81,9 +81,9 @@ def parse_header(p, VERBOSE=False): sys.exit(1) # EXTRACT SAMPLE RATE - if(pmt.pmt_dict_has_key(p, pmt.pmt_string_to_symbol("rx_rate"))): - r = pmt.pmt_dict_ref(p, pmt.pmt_string_to_symbol("rx_rate"), dump) - samp_rate = pmt.pmt_to_double(r) + if(pmt.dict_has_key(p, pmt.string_to_symbol("rx_rate"))): + r = pmt.dict_ref(p, pmt.string_to_symbol("rx_rate"), dump) + samp_rate = pmt.to_double(r) info["rx_rate"] = samp_rate if(VERBOSE): print "Sample Rate: {0:.2f} sps".format(samp_rate) @@ -92,12 +92,12 @@ def parse_header(p, VERBOSE=False): sys.exit(1) # EXTRACT TIME STAMP - if(pmt.pmt_dict_has_key(p, pmt.pmt_string_to_symbol("rx_time"))): - r = pmt.pmt_dict_ref(p, pmt.pmt_string_to_symbol("rx_time"), dump) - pmt_secs = pmt.pmt_tuple_ref(r, 0) - pmt_fracs = pmt.pmt_tuple_ref(r, 1) - secs = float(pmt.pmt_to_uint64(pmt_secs)) - fracs = pmt.pmt_to_double(pmt_fracs) + if(pmt.dict_has_key(p, pmt.string_to_symbol("rx_time"))): + r = pmt.dict_ref(p, pmt.string_to_symbol("rx_time"), dump) + secs = pmt.tuple_ref(r, 0) + fracs = pmt.tuple_ref(r, 1) + secs = float(pmt.to_uint64(secs)) + fracs = pmt.to_double(fracs) t = secs + fracs info["rx_time"] = t if(VERBOSE): @@ -107,9 +107,9 @@ def parse_header(p, VERBOSE=False): sys.exit(1) # EXTRACT ITEM SIZE - if(pmt.pmt_dict_has_key(p, pmt.pmt_string_to_symbol("size"))): - r = pmt.pmt_dict_ref(p, pmt.pmt_string_to_symbol("size"), dump) - dsize = pmt.pmt_to_long(r) + if(pmt.dict_has_key(p, pmt.string_to_symbol("size"))): + r = pmt.dict_ref(p, pmt.string_to_symbol("size"), dump) + dsize = pmt.to_long(r) info["size"] = dsize if(VERBOSE): print "Item size: {0}".format(dsize) @@ -118,9 +118,9 @@ def parse_header(p, VERBOSE=False): sys.exit(1) # EXTRACT DATA TYPE - if(pmt.pmt_dict_has_key(p, pmt.pmt_string_to_symbol("type"))): - r = pmt.pmt_dict_ref(p, pmt.pmt_string_to_symbol("type"), dump) - dtype = pmt.pmt_to_long(r) + if(pmt.dict_has_key(p, pmt.string_to_symbol("type"))): + r = pmt.dict_ref(p, pmt.string_to_symbol("type"), dump) + dtype = pmt.to_long(r) stype = ftype_to_string[dtype] info["type"] = stype if(VERBOSE): @@ -130,9 +130,9 @@ def parse_header(p, VERBOSE=False): sys.exit(1) # EXTRACT COMPLEX - if(pmt.pmt_dict_has_key(p, pmt.pmt_string_to_symbol("cplx"))): - r = pmt.pmt_dict_ref(p, pmt.pmt_string_to_symbol("cplx"), dump) - cplx = pmt.pmt_to_bool(r) + if(pmt.dict_has_key(p, pmt.string_to_symbol("cplx"))): + r = pmt.dict_ref(p, pmt.string_to_symbol("cplx"), dump) + cplx = pmt.to_bool(r) info["cplx"] = cplx if(VERBOSE): print "Complex? {0}".format(cplx) @@ -141,9 +141,9 @@ def parse_header(p, VERBOSE=False): sys.exit(1) # EXTRACT WHERE CURRENT SEGMENT STARTS - if(pmt.pmt_dict_has_key(p, pmt.pmt_string_to_symbol("strt"))): - r = pmt.pmt_dict_ref(p, pmt.pmt_string_to_symbol("strt"), dump) - seg_start = pmt.pmt_to_uint64(r) + if(pmt.dict_has_key(p, pmt.string_to_symbol("strt"))): + r = pmt.dict_ref(p, pmt.string_to_symbol("strt"), dump) + seg_start = pmt.to_uint64(r) info["hdr_len"] = seg_start info["extra_len"] = seg_start - HEADER_LENGTH info["has_extra"] = info["extra_len"] > 0 @@ -156,9 +156,9 @@ def parse_header(p, VERBOSE=False): sys.exit(1) # EXTRACT SIZE OF DATA - if(pmt.pmt_dict_has_key(p, pmt.pmt_string_to_symbol("bytes"))): - r = pmt.pmt_dict_ref(p, pmt.pmt_string_to_symbol("bytes"), dump) - nbytes = pmt.pmt_to_uint64(r) + if(pmt.dict_has_key(p, pmt.string_to_symbol("bytes"))): + r = pmt.dict_ref(p, pmt.string_to_symbol("bytes"), dump) + nbytes = pmt.to_uint64(r) nitems = nbytes/dsize info["nitems"] = nitems @@ -175,19 +175,18 @@ def parse_header(p, VERBOSE=False): # IF THERE IS EXTRA DATA, PULL OUT THE DICTIONARY AND PARSE IT def parse_extra_dict(p, info, VERBOSE=False): - if(pmt.pmt_is_dict(p) is False): + if(pmt.is_dict(p) is False): sys.stderr.write("Extra header is not a PMT dictionary: invalid or corrupt data file.\n") sys.exit(1) - items = pmt.pmt_dict_items(p) - nitems = pmt.pmt_length(items) + items = pmt.dict_items(p) + nitems = pmt.length(items) for i in xrange(nitems): - item = pmt.pmt_nth(i, items) - key = pmt.pmt_symbol_to_string(pmt.pmt_car(item)) - val = pmt.pmt_cdr(item) + item = pmt.nth(i, items) + key = pmt.symbol_to_string(pmt.car(item)) + val = pmt.cdr(item) info[key] = val if(VERBOSE): - print "{0}: ".format(key) - pmt.pmt_print(val) + print "{0}: {1}".format(key, val) return info diff --git a/gr-blocks/python/qa_file_metadata.py b/gr-blocks/python/qa_file_metadata.py index 29ed0d1c87..26506c68de 100644 --- a/gr-blocks/python/qa_file_metadata.py +++ b/gr-blocks/python/qa_file_metadata.py @@ -46,11 +46,11 @@ class test_file_metadata(gr_unittest.TestCase): detached = False samp_rate = 200000 - key = pmt.pmt_intern("samp_rate") - val = pmt.pmt_from_double(samp_rate) - extras = pmt.pmt_make_dict() - extras = pmt.pmt_dict_add(extras, key, val) - extras_str = pmt.pmt_serialize_str(extras) + key = pmt.intern("samp_rate") + val = pmt.from_double(samp_rate) + extras = pmt.make_dict() + extras = pmt.dict_add(extras, key, val) + extras_str = pmt.serialize_str(extras) data = sig_source_c(samp_rate, 1000, 1, N) src = gr.vector_source_c(data) @@ -70,7 +70,7 @@ class test_file_metadata(gr_unittest.TestCase): self.assertFalse() try: - header = pmt.pmt_deserialize_str(header_str) + header = pmt.deserialize_str(header_str) except RuntimeError: self.assertFalse() @@ -82,14 +82,14 @@ class test_file_metadata(gr_unittest.TestCase): handle.close() try: - extra = pmt.pmt_deserialize_str(extra_str) + extra = pmt.deserialize_str(extra_str) except RuntimeError: self.assertFalse() extra_info = parse_file_metadata.parse_extra_dict(extra, info, False) self.assertEqual(info['rx_rate'], samp_rate) - self.assertEqual(pmt.pmt_to_double(extra_info['samp_rate']), samp_rate) + self.assertEqual(pmt.to_double(extra_info['samp_rate']), samp_rate) # Test file metadata source @@ -108,10 +108,10 @@ class test_file_metadata(gr_unittest.TestCase): # were generated and received correctly. tags = tsnk.current_tags() for t in tags: - if(pmt.pmt_eq(t.key, pmt.pmt_intern("samp_rate"))): - self.assertEqual(pmt.pmt_to_double(t.value), samp_rate) - elif(pmt.pmt_eq(t.key, pmt.pmt_intern("rx_rate"))): - self.assertEqual(pmt.pmt_to_double(t.value), samp_rate) + if(pmt.eq(t.key, pmt.intern("samp_rate"))): + self.assertEqual(pmt.to_double(t.value), samp_rate) + elif(pmt.eq(t.key, pmt.intern("rx_rate"))): + self.assertEqual(pmt.to_double(t.value), samp_rate) # Test that the data portion was extracted and received correctly. self.assertComplexTuplesAlmostEqual(vsnk.data(), ssnk.data(), 5) @@ -125,11 +125,11 @@ class test_file_metadata(gr_unittest.TestCase): detached = True samp_rate = 200000 - key = pmt.pmt_intern("samp_rate") - val = pmt.pmt_from_double(samp_rate) - extras = pmt.pmt_make_dict() - extras = pmt.pmt_dict_add(extras, key, val) - extras_str = pmt.pmt_serialize_str(extras) + key = pmt.intern("samp_rate") + val = pmt.from_double(samp_rate) + extras = pmt.make_dict() + extras = pmt.dict_add(extras, key, val) + extras_str = pmt.serialize_str(extras) data = sig_source_c(samp_rate, 1000, 1, N) src = gr.vector_source_c(data) @@ -150,7 +150,7 @@ class test_file_metadata(gr_unittest.TestCase): self.assertFalse() try: - header = pmt.pmt_deserialize_str(header_str) + header = pmt.deserialize_str(header_str) except RuntimeError: self.assertFalse() @@ -161,14 +161,14 @@ class test_file_metadata(gr_unittest.TestCase): handle.close() try: - extra = pmt.pmt_deserialize_str(extra_str) + extra = pmt.deserialize_str(extra_str) except RuntimeError: self.assertFalse() extra_info = parse_file_metadata.parse_extra_dict(extra, info, False) self.assertEqual(info['rx_rate'], samp_rate) - self.assertEqual(pmt.pmt_to_double(extra_info['samp_rate']), samp_rate) + self.assertEqual(pmt.to_double(extra_info['samp_rate']), samp_rate) # Test file metadata source @@ -187,10 +187,10 @@ class test_file_metadata(gr_unittest.TestCase): # were generated and received correctly. tags = tsnk.current_tags() for t in tags: - if(pmt.pmt_eq(t.key, pmt.pmt_intern("samp_rate"))): - self.assertEqual(pmt.pmt_to_double(t.value), samp_rate) - elif(pmt.pmt_eq(t.key, pmt.pmt_intern("rx_rate"))): - self.assertEqual(pmt.pmt_to_double(t.value), samp_rate) + if(pmt.eq(t.key, pmt.intern("samp_rate"))): + self.assertEqual(pmt.to_double(t.value), samp_rate) + elif(pmt.eq(t.key, pmt.intern("rx_rate"))): + self.assertEqual(pmt.to_double(t.value), samp_rate) # Test that the data portion was extracted and received correctly. self.assertComplexTuplesAlmostEqual(vsnk.data(), ssnk.data(), 5) diff --git a/gr-channels/lib/channel_model_impl.cc b/gr-channels/lib/channel_model_impl.cc index 7ff157a739..9447a17784 100644 --- a/gr-channels/lib/channel_model_impl.cc +++ b/gr-channels/lib/channel_model_impl.cc @@ -167,9 +167,9 @@ namespace gr { rpcbasic_sptr(new rpcbasic_register_get<channel_model_impl, std::vector<gr_complex> >( d_name, "taps", this, unique_id(), &channel_model_impl::taps, - pmt::pmt_make_c32vector(0,-10), - pmt::pmt_make_c32vector(0,10), - pmt::pmt_make_c32vector(0,0), + pmt::make_c32vector(0,-10), + pmt::make_c32vector(0,10), + pmt::make_c32vector(0,0), "", "Multipath taps", RPC_PRIVLVL_MIN, DISPTIMESERIESC))); diff --git a/gr-digital/lib/correlate_access_code_tag_bb_impl.cc b/gr-digital/lib/correlate_access_code_tag_bb_impl.cc index d375daf95c..1ff27f02a5 100644 --- a/gr-digital/lib/correlate_access_code_tag_bb_impl.cc +++ b/gr-digital/lib/correlate_access_code_tag_bb_impl.cc @@ -61,8 +61,8 @@ namespace gr { std::stringstream str; str << name() << unique_id(); - d_me = pmt::pmt_string_to_symbol(str.str()); - d_key = pmt::pmt_string_to_symbol(tag_name); + d_me = pmt::string_to_symbol(str.str()); + d_key = pmt::string_to_symbol(tag_name); } correlate_access_code_tag_bb_impl::~correlate_access_code_tag_bb_impl() diff --git a/gr-digital/lib/mpsk_snr_est_cc_impl.cc b/gr-digital/lib/mpsk_snr_est_cc_impl.cc index efd18ea4f4..621c41b9f0 100644 --- a/gr-digital/lib/mpsk_snr_est_cc_impl.cc +++ b/gr-digital/lib/mpsk_snr_est_cc_impl.cc @@ -61,8 +61,8 @@ namespace gr { std::stringstream str; str << name() << unique_id(); - d_me = pmt::pmt_string_to_symbol(str.str()); - d_key = pmt::pmt_string_to_symbol("snr"); + d_me = pmt::string_to_symbol(str.str()); + d_key = pmt::string_to_symbol("snr"); } mpsk_snr_est_cc_impl::~mpsk_snr_est_cc_impl() @@ -93,7 +93,7 @@ namespace gr { d_snr_est->update(x, &in[index]); // Issue a tag with the SNR data - pmt::pmt_t pmt_snr = pmt::pmt_from_double(d_snr_est->snr()); + pmt::pmt_t pmt_snr = pmt::from_double(d_snr_est->snr()); add_item_tag(0, // stream ID nwritten, // tag's sample number d_key, // snr key diff --git a/gr-digital/lib/probe_mpsk_snr_est_c_impl.cc b/gr-digital/lib/probe_mpsk_snr_est_c_impl.cc index 31de586e05..fb71bdc110 100644 --- a/gr-digital/lib/probe_mpsk_snr_est_c_impl.cc +++ b/gr-digital/lib/probe_mpsk_snr_est_c_impl.cc @@ -59,7 +59,7 @@ namespace gr { // at least 1 estimator has to look back set_history(2); - d_key = pmt::pmt_string_to_symbol("snr"); + d_key = pmt::string_to_symbol("snr"); } probe_mpsk_snr_est_c_impl::~probe_mpsk_snr_est_c_impl() diff --git a/gr-uhd/examples/c++/tag_sink_demo.h b/gr-uhd/examples/c++/tag_sink_demo.h index 5417bd3242..676005e06c 100644 --- a/gr-uhd/examples/c++/tag_sink_demo.h +++ b/gr-uhd/examples/c++/tag_sink_demo.h @@ -47,7 +47,7 @@ public: //grab all "rx time" tags in this work call const uint64_t samp0_count = this->nitems_read(0); std::vector<gr_tag_t> rx_time_tags; - get_tags_in_range(rx_time_tags, 0, samp0_count, samp0_count + ninput_items, pmt::pmt_string_to_symbol("rx_time")); + get_tags_in_range(rx_time_tags, 0, samp0_count, samp0_count + ninput_items, pmt::string_to_symbol("rx_time")); //print all tags BOOST_FOREACH(const gr_tag_t &rx_time_tag, rx_time_tags){ @@ -55,8 +55,8 @@ public: const pmt::pmt_t &value = rx_time_tag.value; std::cout << boost::format("Full seconds %u, Frac seconds %f, abs sample offset %u") - % pmt::pmt_to_uint64(pmt::pmt_tuple_ref(value, 0)) - % pmt::pmt_to_double(pmt::pmt_tuple_ref(value, 1)) + % pmt::to_uint64(pmt::tuple_ref(value, 0)) + % pmt::to_double(pmt::tuple_ref(value, 1)) % offset << std::endl; } diff --git a/gr-uhd/examples/c++/tag_source_demo.h b/gr-uhd/examples/c++/tag_source_demo.h index 7d48502b24..6efe4667e5 100644 --- a/gr-uhd/examples/c++/tag_source_demo.h +++ b/gr-uhd/examples/c++/tag_source_demo.h @@ -53,26 +53,26 @@ public: } void make_time_tag(const uint64_t tag_count){; - const pmt::pmt_t key = pmt::pmt_string_to_symbol("tx_time"); - const pmt::pmt_t value = pmt::pmt_make_tuple( - pmt::pmt_from_uint64(_time_secs), - pmt::pmt_from_double(_time_fracs) + const pmt::pmt_t key = pmt::string_to_symbol("tx_time"); + const pmt::pmt_t value = pmt::make_tuple( + pmt::from_uint64(_time_secs), + pmt::from_double(_time_fracs) ); - const pmt::pmt_t srcid = pmt::pmt_string_to_symbol(this->name()); + const pmt::pmt_t srcid = pmt::string_to_symbol(this->name()); this->add_item_tag(0/*chan0*/, tag_count, key, value, srcid); } void make_sob_tag(const uint64_t tag_count){ - const pmt::pmt_t key = pmt::pmt_string_to_symbol("tx_sob"); + const pmt::pmt_t key = pmt::string_to_symbol("tx_sob"); const pmt::pmt_t value = pmt::PMT_T; - const pmt::pmt_t srcid = pmt::pmt_string_to_symbol(this->name()); + const pmt::pmt_t srcid = pmt::string_to_symbol(this->name()); this->add_item_tag(0/*chan0*/, tag_count, key, value, srcid); } void make_eob_tag(const uint64_t tag_count){; - const pmt::pmt_t key = pmt::pmt_string_to_symbol("tx_eob"); + const pmt::pmt_t key = pmt::string_to_symbol("tx_eob"); const pmt::pmt_t value = pmt::PMT_T; - const pmt::pmt_t srcid = pmt::pmt_string_to_symbol(this->name()); + const pmt::pmt_t srcid = pmt::string_to_symbol(this->name()); this->add_item_tag(0/*chan0*/, tag_count, key, value, srcid); } diff --git a/gr-uhd/lib/gr_uhd_usrp_sink.cc b/gr-uhd/lib/gr_uhd_usrp_sink.cc index 6216c94a83..3b8fcea405 100644 --- a/gr-uhd/lib/gr_uhd_usrp_sink.cc +++ b/gr-uhd/lib/gr_uhd_usrp_sink.cc @@ -25,9 +25,9 @@ #include <boost/make_shared.hpp> #include "gr_uhd_common.h" -static const pmt::pmt_t SOB_KEY = pmt::pmt_string_to_symbol("tx_sob"); -static const pmt::pmt_t EOB_KEY = pmt::pmt_string_to_symbol("tx_eob"); -static const pmt::pmt_t TIME_KEY = pmt::pmt_string_to_symbol("tx_time"); +static const pmt::pmt_t SOB_KEY = pmt::string_to_symbol("tx_sob"); +static const pmt::pmt_t EOB_KEY = pmt::string_to_symbol("tx_eob"); +static const pmt::pmt_t TIME_KEY = pmt::string_to_symbol("tx_time"); #include <uhd/convert.hpp> inline gr_io_signature_sptr args_to_io_sig(const uhd::stream_args_t &args){ @@ -374,23 +374,23 @@ public: } //handle end of burst with a mini end of burst packet - else if (pmt::pmt_equal(key, EOB_KEY)){ - _metadata.end_of_burst = pmt::pmt_to_bool(value); + else if (pmt::equal(key, EOB_KEY)){ + _metadata.end_of_burst = pmt::to_bool(value); ninput_items = 1; return; } //set the start of burst flag in the metadata - else if (pmt::pmt_equal(key, SOB_KEY)){ - _metadata.start_of_burst = pmt::pmt_to_bool(value); + else if (pmt::equal(key, SOB_KEY)){ + _metadata.start_of_burst = pmt::to_bool(value); } //set the time specification in the metadata - else if (pmt::pmt_equal(key, TIME_KEY)){ + else if (pmt::equal(key, TIME_KEY)){ _metadata.has_time_spec = true; _metadata.time_spec = uhd::time_spec_t( - pmt::pmt_to_uint64(pmt::pmt_tuple_ref(value, 0)), - pmt::pmt_to_double(pmt::pmt_tuple_ref(value, 1)) + pmt::to_uint64(pmt::tuple_ref(value, 0)), + pmt::to_double(pmt::tuple_ref(value, 1)) ); } } diff --git a/gr-uhd/lib/gr_uhd_usrp_source.cc b/gr-uhd/lib/gr_uhd_usrp_source.cc index 3813673b4b..6403d3d913 100644 --- a/gr-uhd/lib/gr_uhd_usrp_source.cc +++ b/gr-uhd/lib/gr_uhd_usrp_source.cc @@ -28,9 +28,9 @@ #include <boost/make_shared.hpp> #include "gr_uhd_common.h" -static const pmt::pmt_t TIME_KEY = pmt::pmt_string_to_symbol("rx_time"); -static const pmt::pmt_t RATE_KEY = pmt::pmt_string_to_symbol("rx_rate"); -static const pmt::pmt_t FREQ_KEY = pmt::pmt_string_to_symbol("rx_freq"); +static const pmt::pmt_t TIME_KEY = pmt::string_to_symbol("rx_time"); +static const pmt::pmt_t RATE_KEY = pmt::string_to_symbol("rx_rate"); +static const pmt::pmt_t FREQ_KEY = pmt::string_to_symbol("rx_freq"); #include <uhd/convert.hpp> inline gr_io_signature_sptr args_to_io_sig(const uhd::stream_args_t &args){ @@ -69,7 +69,7 @@ public: if (stream_args.cpu_format == "sc16") _type = boost::make_shared<uhd::io_type_t>(uhd::io_type_t::COMPLEX_INT16); std::stringstream str; str << name() << unique_id(); - _id = pmt::pmt_string_to_symbol(str.str()); + _id = pmt::string_to_symbol(str.str()); _dev = uhd::usrp::multi_usrp::make(device_addr); } @@ -363,15 +363,15 @@ public: if (_tag_now){ _tag_now = false; //create a timestamp pmt for the first sample - const pmt::pmt_t val = pmt::pmt_make_tuple( - pmt::pmt_from_uint64(_metadata.time_spec.get_full_secs()), - pmt::pmt_from_double(_metadata.time_spec.get_frac_secs()) + const pmt::pmt_t val = pmt::make_tuple( + pmt::from_uint64(_metadata.time_spec.get_full_secs()), + pmt::from_double(_metadata.time_spec.get_frac_secs()) ); //create a tag set for each channel for (size_t i = 0; i < _nchan; i++){ this->add_item_tag(i, nitems_written(0), TIME_KEY, val, _id); - this->add_item_tag(i, nitems_written(0), RATE_KEY, pmt::pmt_from_double(_samp_rate), _id); - this->add_item_tag(i, nitems_written(0), FREQ_KEY, pmt::pmt_from_double(_center_freq), _id); + this->add_item_tag(i, nitems_written(0), RATE_KEY, pmt::from_double(_samp_rate), _id); + this->add_item_tag(i, nitems_written(0), FREQ_KEY, pmt::from_double(_center_freq), _id); } } break; diff --git a/gr-utils/python/gr_read_file_metadata b/gr-utils/python/gr_read_file_metadata index cf0cd5b116..3bc448b04e 100644 --- a/gr-utils/python/gr_read_file_metadata +++ b/gr-utils/python/gr_read_file_metadata @@ -40,7 +40,7 @@ def main(filename, detached=False): # Convert from string to PMT (should be a dictionary) try: - header = pmt.pmt_deserialize_str(header_str) + header = pmt.deserialize_str(header_str) except RuntimeError: sys.stderr.write("Could not deserialize header: invalid or corrupt data file.\n") sys.exit(1) @@ -54,7 +54,7 @@ def main(filename, detached=False): break try: - extra = pmt.pmt_deserialize_str(extra_str) + extra = pmt.deserialize_str(extra_str) except RuntimeError: sys.stderr.write("Could not deserialize extras: invalid or corrupt data file.\n") sys.exit(1) diff --git a/gruel/src/include/gruel/msg_passing.h b/gruel/src/include/gruel/msg_passing.h index 25f30118f7..572507e0f3 100644 --- a/gruel/src/include/gruel/msg_passing.h +++ b/gruel/src/include/gruel/msg_passing.h @@ -95,7 +95,7 @@ namespace gruel { /*! * \brief send message to msg_accepter * - * \param accepter is the target of the send. precond: pmt_is_msg_accepter(accepter) + * \param accepter is the target of the send. precond: pmt::is_msg_accepter(accepter) * \param which_port A pmt symbol describing the port by name. * \param msg is the message to send. It's usually a pmt tuple. * @@ -108,7 +108,7 @@ namespace gruel { static inline pmt::pmt_t send(pmt::pmt_t accepter, const pmt::pmt_t &which_port, const pmt::pmt_t &msg) { - return send(pmt_msg_accepter_ref(accepter), which_port, msg); + return send(pmt::msg_accepter_ref(accepter), which_port, msg); } } /* namespace gruel */ diff --git a/gruel/src/include/gruel/pmt.h b/gruel/src/include/gruel/pmt.h index 383a1d44d0..b4c51ab927 100644 --- a/gruel/src/include/gruel/pmt.h +++ b/gruel/src/include/gruel/pmt.h @@ -62,28 +62,28 @@ typedef boost::intrusive_ptr<pmt_base> pmt_t; extern GRUEL_API void intrusive_ptr_add_ref(pmt_base*); extern GRUEL_API void intrusive_ptr_release(pmt_base*); -class GRUEL_API pmt_exception : public std::logic_error +class GRUEL_API exception : public std::logic_error { public: - pmt_exception(const std::string &msg, pmt_t obj); + exception(const std::string &msg, pmt_t obj); }; -class GRUEL_API pmt_wrong_type : public pmt_exception +class GRUEL_API wrong_type : public exception { public: - pmt_wrong_type(const std::string &msg, pmt_t obj); + wrong_type(const std::string &msg, pmt_t obj); }; -class GRUEL_API pmt_out_of_range : public pmt_exception +class GRUEL_API out_of_range : public exception { public: - pmt_out_of_range(const std::string &msg, pmt_t obj); + out_of_range(const std::string &msg, pmt_t obj); }; -class GRUEL_API pmt_notimplemented : public pmt_exception +class GRUEL_API notimplemented : public exception { public: - pmt_notimplemented(const std::string &msg, pmt_t obj); + notimplemented(const std::string &msg, pmt_t obj); }; /* @@ -98,20 +98,20 @@ extern GRUEL_API const pmt_t PMT_T; //< \#t : boolean true constant extern GRUEL_API const pmt_t PMT_F; //< \#f : boolean false constant //! Return true if obj is \#t or \#f, else return false. -GRUEL_API bool pmt_is_bool(pmt_t obj); +GRUEL_API bool is_bool(pmt_t obj); //! Return false if obj is \#f, else return true. -GRUEL_API bool pmt_is_true(pmt_t obj); +GRUEL_API bool is_true(pmt_t obj); //! Return true if obj is \#f, else return true. -GRUEL_API bool pmt_is_false(pmt_t obj); +GRUEL_API bool is_false(pmt_t obj); //! Return \#f is val is false, else return \#t. -GRUEL_API pmt_t pmt_from_bool(bool val); +GRUEL_API pmt_t from_bool(bool val); -//! Return true if val is PMT_T, return false when val is PMT_F, +//! Return true if val is pmt::True, return false when val is pmt::PMT_F, // else raise wrong_type exception. -GRUEL_API bool pmt_to_bool(pmt_t val); +GRUEL_API bool to_bool(pmt_t val); /* * ------------------------------------------------------------------------ @@ -120,20 +120,20 @@ GRUEL_API bool pmt_to_bool(pmt_t val); */ //! Return true if obj is a symbol, else false. -GRUEL_API bool pmt_is_symbol(const pmt_t& obj); +GRUEL_API bool is_symbol(const pmt_t& obj); //! Return the symbol whose name is \p s. -GRUEL_API pmt_t pmt_string_to_symbol(const std::string &s); +GRUEL_API pmt_t string_to_symbol(const std::string &s); //! Alias for pmt_string_to_symbol -GRUEL_API pmt_t pmt_intern(const std::string &s); +GRUEL_API pmt_t intern(const std::string &s); /*! * If \p is a symbol, return the name of the symbol as a string. * Otherwise, raise the wrong_type exception. */ -GRUEL_API const std::string pmt_symbol_to_string(const pmt_t& sym); +GRUEL_API const std::string symbol_to_string(const pmt_t& sym); /* * ------------------------------------------------------------------------ @@ -142,7 +142,7 @@ GRUEL_API const std::string pmt_symbol_to_string(const pmt_t& sym); */ //! Return true if obj is any kind of number, else false. -GRUEL_API bool pmt_is_number(pmt_t obj); +GRUEL_API bool is_number(pmt_t obj); /* * ------------------------------------------------------------------------ @@ -151,10 +151,10 @@ GRUEL_API bool pmt_is_number(pmt_t obj); */ //! Return true if \p x is an integer number, else false -GRUEL_API bool pmt_is_integer(pmt_t x); +GRUEL_API bool is_integer(pmt_t x); //! Return the pmt value that represents the integer \p x. -GRUEL_API pmt_t pmt_from_long(long x); +GRUEL_API pmt_t from_long(long x); /*! * \brief Convert pmt to long if possible. @@ -163,7 +163,7 @@ GRUEL_API pmt_t pmt_from_long(long x); * return that integer. Else raise an exception, either wrong_type * when x is not an exact integer, or out_of_range when it doesn't fit. */ -GRUEL_API long pmt_to_long(pmt_t x); +GRUEL_API long to_long(pmt_t x); /* * ------------------------------------------------------------------------ @@ -172,10 +172,10 @@ GRUEL_API long pmt_to_long(pmt_t x); */ //! Return true if \p x is an uint64 number, else false -GRUEL_API bool pmt_is_uint64(pmt_t x); +GRUEL_API bool is_uint64(pmt_t x); //! Return the pmt value that represents the uint64 \p x. -GRUEL_API pmt_t pmt_from_uint64(uint64_t x); +GRUEL_API pmt_t from_uint64(uint64_t x); /*! * \brief Convert pmt to uint64 if possible. @@ -184,7 +184,7 @@ GRUEL_API pmt_t pmt_from_uint64(uint64_t x); * return that uint64. Else raise an exception, either wrong_type * when x is not an exact uint64, or out_of_range when it doesn't fit. */ -GRUEL_API uint64_t pmt_to_uint64(pmt_t x); +GRUEL_API uint64_t to_uint64(pmt_t x); /* * ------------------------------------------------------------------------ @@ -195,10 +195,10 @@ GRUEL_API uint64_t pmt_to_uint64(pmt_t x); /* * \brief Return true if \p obj is a real number, else false. */ -GRUEL_API bool pmt_is_real(pmt_t obj); +GRUEL_API bool is_real(pmt_t obj); //! Return the pmt value that represents double \p x. -GRUEL_API pmt_t pmt_from_double(double x); +GRUEL_API pmt_t from_double(double x); /*! * \brief Convert pmt to double if possible. @@ -207,7 +207,7 @@ GRUEL_API pmt_t pmt_from_double(double x); * as a double. The argument \p val must be a real or integer, otherwise * a wrong_type exception is raised. */ -GRUEL_API double pmt_to_double(pmt_t x); +GRUEL_API double to_double(pmt_t x); /* * ------------------------------------------------------------------------ @@ -218,10 +218,16 @@ GRUEL_API double pmt_to_double(pmt_t x); /*! * \brief return true if \p obj is a complex number, false otherwise. */ -GRUEL_API bool pmt_is_complex(pmt_t obj); +GRUEL_API bool is_complex(pmt_t obj); //! Return a complex number constructed of the given real and imaginary parts. -GRUEL_API pmt_t pmt_make_rectangular(double re, double im); +GRUEL_API pmt_t make_rectangular(double re, double im); + +//! Return a complex number constructed of the given real and imaginary parts. +GRUEL_API pmt_t from_complex(double re, double im); + +//! Return a complex number constructed of the given a complex number. +GRUEL_API pmt_t from_complex(const std::complex<double> &z); //! Return a complex number constructed of the given real and imaginary parts. GRUEL_API pmt_t pmt_from_complex(double re, double im); @@ -233,7 +239,7 @@ GRUEL_API pmt_t pmt_from_complex(const std::complex<double> &z); * If \p z is complex, real or integer, return the closest complex<double>. * Otherwise, raise the wrong_type exception. */ -GRUEL_API std::complex<double> pmt_to_complex(pmt_t z); +GRUEL_API std::complex<double> to_complex(pmt_t z); /* * ------------------------------------------------------------------------ @@ -244,32 +250,32 @@ GRUEL_API std::complex<double> pmt_to_complex(pmt_t z); extern GRUEL_API const pmt_t PMT_NIL; //< the empty list //! Return true if \p x is the empty list, otherwise return false. -GRUEL_API bool pmt_is_null(const pmt_t& x); +GRUEL_API bool is_null(const pmt_t& x); //! Return true if \p obj is a pair, else false. -GRUEL_API bool pmt_is_pair(const pmt_t& obj); +GRUEL_API bool is_pair(const pmt_t& obj); //! Return a newly allocated pair whose car is \p x and whose cdr is \p y. -GRUEL_API pmt_t pmt_cons(const pmt_t& x, const pmt_t& y); +GRUEL_API pmt_t cons(const pmt_t& x, const pmt_t& y); //! If \p pair is a pair, return the car of the \p pair, otherwise raise wrong_type. -GRUEL_API pmt_t pmt_car(const pmt_t& pair); +GRUEL_API pmt_t car(const pmt_t& pair); //! If \p pair is a pair, return the cdr of the \p pair, otherwise raise wrong_type. -GRUEL_API pmt_t pmt_cdr(const pmt_t& pair); +GRUEL_API pmt_t cdr(const pmt_t& pair); //! Stores \p value in the car field of \p pair. -GRUEL_API void pmt_set_car(pmt_t pair, pmt_t value); +GRUEL_API void set_car(pmt_t pair, pmt_t value); //! Stores \p value in the cdr field of \p pair. -GRUEL_API void pmt_set_cdr(pmt_t pair, pmt_t value); +GRUEL_API void set_cdr(pmt_t pair, pmt_t value); -GRUEL_API pmt_t pmt_caar(pmt_t pair); -GRUEL_API pmt_t pmt_cadr(pmt_t pair); -GRUEL_API pmt_t pmt_cdar(pmt_t pair); -GRUEL_API pmt_t pmt_cddr(pmt_t pair); -GRUEL_API pmt_t pmt_caddr(pmt_t pair); -GRUEL_API pmt_t pmt_cadddr(pmt_t pair); +GRUEL_API pmt_t caar(pmt_t pair); +GRUEL_API pmt_t cadr(pmt_t pair); +GRUEL_API pmt_t cdar(pmt_t pair); +GRUEL_API pmt_t cddr(pmt_t pair); +GRUEL_API pmt_t caddr(pmt_t pair); +GRUEL_API pmt_t cadddr(pmt_t pair); /* * ------------------------------------------------------------------------ @@ -282,30 +288,30 @@ GRUEL_API pmt_t pmt_cadddr(pmt_t pair); */ //! Return true if \p x is a tuple, othewise false. -GRUEL_API bool pmt_is_tuple(pmt_t x); +GRUEL_API bool is_tuple(pmt_t x); -GRUEL_API pmt_t pmt_make_tuple(); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8); -GRUEL_API pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8, const pmt_t &e9); +GRUEL_API pmt_t make_tuple(); +GRUEL_API pmt_t make_tuple(const pmt_t &e0); +GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1); +GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2); +GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3); +GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4); +GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5); +GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6); +GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7); +GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8); +GRUEL_API pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8, const pmt_t &e9); /*! * If \p x is a vector or proper list, return a tuple containing the elements of x */ -GRUEL_API pmt_t pmt_to_tuple(const pmt_t &x); +GRUEL_API pmt_t to_tuple(const pmt_t &x); /*! * Return the contents of position \p k of \p tuple. * \p k must be a valid index of \p tuple. */ -GRUEL_API pmt_t pmt_tuple_ref(const pmt_t &tuple, size_t k); +GRUEL_API pmt_t tuple_ref(const pmt_t &tuple, size_t k); /* * ------------------------------------------------------------------------ @@ -316,22 +322,22 @@ GRUEL_API pmt_t pmt_tuple_ref(const pmt_t &tuple, size_t k); */ //! Return true if \p x is a vector, othewise false. -GRUEL_API bool pmt_is_vector(pmt_t x); +GRUEL_API bool is_vector(pmt_t x); //! Make a vector of length \p k, with initial values set to \p fill -GRUEL_API pmt_t pmt_make_vector(size_t k, pmt_t fill); +GRUEL_API pmt_t make_vector(size_t k, pmt_t fill); /*! * Return the contents of position \p k of \p vector. * \p k must be a valid index of \p vector. */ -GRUEL_API pmt_t pmt_vector_ref(pmt_t vector, size_t k); +GRUEL_API pmt_t vector_ref(pmt_t vector, size_t k); //! Store \p obj in position \p k. -GRUEL_API void pmt_vector_set(pmt_t vector, size_t k, pmt_t obj); +GRUEL_API void vector_set(pmt_t vector, size_t k, pmt_t obj); //! Store \p fill in every position of \p vector -GRUEL_API void pmt_vector_fill(pmt_t vector, pmt_t fill); +GRUEL_API void vector_fill(pmt_t vector, pmt_t fill); /* * ------------------------------------------------------------------------ @@ -342,7 +348,7 @@ GRUEL_API void pmt_vector_fill(pmt_t vector, pmt_t fill); */ //! Return true if \p x is a blob, othewise false. -GRUEL_API bool pmt_is_blob(pmt_t x); +GRUEL_API bool is_blob(pmt_t x); /*! * \brief Make a blob given a pointer and length in bytes @@ -352,13 +358,13 @@ GRUEL_API bool pmt_is_blob(pmt_t x); * * The data is copied into the blob. */ -GRUEL_API pmt_t pmt_make_blob(const void *buf, size_t len); +GRUEL_API pmt_t make_blob(const void *buf, size_t len); //! Return a pointer to the blob's data -GRUEL_API const void *pmt_blob_data(pmt_t blob); +GRUEL_API const void *blob_data(pmt_t blob); //! Return the blob's length in bytes -GRUEL_API size_t pmt_blob_length(pmt_t blob); +GRUEL_API size_t blob_length(pmt_t blob); /*! * <pre> @@ -390,101 +396,115 @@ GRUEL_API size_t pmt_blob_length(pmt_t blob); */ //! true if \p x is any kind of uniform numeric vector -GRUEL_API bool pmt_is_uniform_vector(pmt_t x); - -GRUEL_API bool pmt_is_u8vector(pmt_t x); -GRUEL_API bool pmt_is_s8vector(pmt_t x); -GRUEL_API bool pmt_is_u16vector(pmt_t x); -GRUEL_API bool pmt_is_s16vector(pmt_t x); -GRUEL_API bool pmt_is_u32vector(pmt_t x); -GRUEL_API bool pmt_is_s32vector(pmt_t x); -GRUEL_API bool pmt_is_u64vector(pmt_t x); -GRUEL_API bool pmt_is_s64vector(pmt_t x); -GRUEL_API bool pmt_is_f32vector(pmt_t x); -GRUEL_API bool pmt_is_f64vector(pmt_t x); -GRUEL_API bool pmt_is_c32vector(pmt_t x); -GRUEL_API bool pmt_is_c64vector(pmt_t x); - -GRUEL_API pmt_t pmt_make_u8vector(size_t k, uint8_t fill); -GRUEL_API pmt_t pmt_make_s8vector(size_t k, int8_t fill); -GRUEL_API pmt_t pmt_make_u16vector(size_t k, uint16_t fill); -GRUEL_API pmt_t pmt_make_s16vector(size_t k, int16_t fill); -GRUEL_API pmt_t pmt_make_u32vector(size_t k, uint32_t fill); -GRUEL_API pmt_t pmt_make_s32vector(size_t k, int32_t fill); -GRUEL_API pmt_t pmt_make_u64vector(size_t k, uint64_t fill); -GRUEL_API pmt_t pmt_make_s64vector(size_t k, int64_t fill); -GRUEL_API pmt_t pmt_make_f32vector(size_t k, float fill); -GRUEL_API pmt_t pmt_make_f64vector(size_t k, double fill); -GRUEL_API pmt_t pmt_make_c32vector(size_t k, std::complex<float> fill); -GRUEL_API pmt_t pmt_make_c64vector(size_t k, std::complex<double> fill); - -GRUEL_API pmt_t pmt_init_u8vector(size_t k, const uint8_t *data); -GRUEL_API pmt_t pmt_init_u8vector(size_t k, const std::vector<uint8_t> &data); -GRUEL_API pmt_t pmt_init_s8vector(size_t k, const int8_t *data); -GRUEL_API pmt_t pmt_init_s8vector(size_t k, const std::vector<int8_t> &data); -GRUEL_API pmt_t pmt_init_u16vector(size_t k, const uint16_t *data); -GRUEL_API pmt_t pmt_init_u16vector(size_t k, const std::vector<uint16_t> &data); -GRUEL_API pmt_t pmt_init_s16vector(size_t k, const int16_t *data); -GRUEL_API pmt_t pmt_init_s16vector(size_t k, const std::vector<int16_t> &data); -GRUEL_API pmt_t pmt_init_u32vector(size_t k, const uint32_t *data); -GRUEL_API pmt_t pmt_init_u32vector(size_t k, const std::vector<uint32_t> &data); -GRUEL_API pmt_t pmt_init_s32vector(size_t k, const int32_t *data); -GRUEL_API pmt_t pmt_init_s32vector(size_t k, const std::vector<int32_t> &data); -GRUEL_API pmt_t pmt_init_u64vector(size_t k, const uint64_t *data); -GRUEL_API pmt_t pmt_init_u64vector(size_t k, const std::vector<uint64_t> &data); -GRUEL_API pmt_t pmt_init_s64vector(size_t k, const int64_t *data); -GRUEL_API pmt_t pmt_init_s64vector(size_t k, const std::vector<int64_t> &data); -GRUEL_API pmt_t pmt_init_f32vector(size_t k, const float *data); -GRUEL_API pmt_t pmt_init_f32vector(size_t k, const std::vector<float> &data); -GRUEL_API pmt_t pmt_init_f64vector(size_t k, const double *data); -GRUEL_API pmt_t pmt_init_f64vector(size_t k, const std::vector<double> &data); -GRUEL_API pmt_t pmt_init_c32vector(size_t k, const std::complex<float> *data); -GRUEL_API pmt_t pmt_init_c32vector(size_t k, const std::vector<std::complex<float> > &data); -GRUEL_API pmt_t pmt_init_c64vector(size_t k, const std::complex<double> *data); -GRUEL_API pmt_t pmt_init_c64vector(size_t k, const std::vector<std::complex<double> > &data); - -GRUEL_API uint8_t pmt_u8vector_ref(pmt_t v, size_t k); -GRUEL_API int8_t pmt_s8vector_ref(pmt_t v, size_t k); -GRUEL_API uint16_t pmt_u16vector_ref(pmt_t v, size_t k); -GRUEL_API int16_t pmt_s16vector_ref(pmt_t v, size_t k); -GRUEL_API uint32_t pmt_u32vector_ref(pmt_t v, size_t k); -GRUEL_API int32_t pmt_s32vector_ref(pmt_t v, size_t k); -GRUEL_API uint64_t pmt_u64vector_ref(pmt_t v, size_t k); -GRUEL_API int64_t pmt_s64vector_ref(pmt_t v, size_t k); -GRUEL_API float pmt_f32vector_ref(pmt_t v, size_t k); -GRUEL_API double pmt_f64vector_ref(pmt_t v, size_t k); -GRUEL_API std::complex<float> pmt_c32vector_ref(pmt_t v, size_t k); -GRUEL_API std::complex<double> pmt_c64vector_ref(pmt_t v, size_t k); - -GRUEL_API void pmt_u8vector_set(pmt_t v, size_t k, uint8_t x); //< v[k] = x -GRUEL_API void pmt_s8vector_set(pmt_t v, size_t k, int8_t x); -GRUEL_API void pmt_u16vector_set(pmt_t v, size_t k, uint16_t x); -GRUEL_API void pmt_s16vector_set(pmt_t v, size_t k, int16_t x); -GRUEL_API void pmt_u32vector_set(pmt_t v, size_t k, uint32_t x); -GRUEL_API void pmt_s32vector_set(pmt_t v, size_t k, int32_t x); -GRUEL_API void pmt_u64vector_set(pmt_t v, size_t k, uint64_t x); -GRUEL_API void pmt_s64vector_set(pmt_t v, size_t k, int64_t x); -GRUEL_API void pmt_f32vector_set(pmt_t v, size_t k, float x); -GRUEL_API void pmt_f64vector_set(pmt_t v, size_t k, double x); -GRUEL_API void pmt_c32vector_set(pmt_t v, size_t k, std::complex<float> x); -GRUEL_API void pmt_c64vector_set(pmt_t v, size_t k, std::complex<double> x); +GRUEL_API bool is_uniform_vector(pmt_t x); + +GRUEL_API bool is_u8vector(pmt_t x); +GRUEL_API bool is_s8vector(pmt_t x); +GRUEL_API bool is_u16vector(pmt_t x); +GRUEL_API bool is_s16vector(pmt_t x); +GRUEL_API bool is_u32vector(pmt_t x); +GRUEL_API bool is_s32vector(pmt_t x); +GRUEL_API bool is_u64vector(pmt_t x); +GRUEL_API bool is_s64vector(pmt_t x); +GRUEL_API bool is_f32vector(pmt_t x); +GRUEL_API bool is_f64vector(pmt_t x); +GRUEL_API bool is_c32vector(pmt_t x); +GRUEL_API bool is_c64vector(pmt_t x); + +GRUEL_API pmt_t make_u8vector(size_t k, uint8_t fill); +GRUEL_API pmt_t make_s8vector(size_t k, int8_t fill); +GRUEL_API pmt_t make_u16vector(size_t k, uint16_t fill); +GRUEL_API pmt_t make_s16vector(size_t k, int16_t fill); +GRUEL_API pmt_t make_u32vector(size_t k, uint32_t fill); +GRUEL_API pmt_t make_s32vector(size_t k, int32_t fill); +GRUEL_API pmt_t make_u64vector(size_t k, uint64_t fill); +GRUEL_API pmt_t make_s64vector(size_t k, int64_t fill); +GRUEL_API pmt_t make_f32vector(size_t k, float fill); +GRUEL_API pmt_t make_f64vector(size_t k, double fill); +GRUEL_API pmt_t make_c32vector(size_t k, std::complex<float> fill); +GRUEL_API pmt_t make_c64vector(size_t k, std::complex<double> fill); + +GRUEL_API pmt_t init_u8vector(size_t k, const uint8_t *data); +GRUEL_API pmt_t init_u8vector(size_t k, const std::vector<uint8_t> &data); +GRUEL_API pmt_t init_s8vector(size_t k, const int8_t *data); +GRUEL_API pmt_t init_s8vector(size_t k, const std::vector<int8_t> &data); +GRUEL_API pmt_t init_u16vector(size_t k, const uint16_t *data); +GRUEL_API pmt_t init_u16vector(size_t k, const std::vector<uint16_t> &data); +GRUEL_API pmt_t init_s16vector(size_t k, const int16_t *data); +GRUEL_API pmt_t init_s16vector(size_t k, const std::vector<int16_t> &data); +GRUEL_API pmt_t init_u32vector(size_t k, const uint32_t *data); +GRUEL_API pmt_t init_u32vector(size_t k, const std::vector<uint32_t> &data); +GRUEL_API pmt_t init_s32vector(size_t k, const int32_t *data); +GRUEL_API pmt_t init_s32vector(size_t k, const std::vector<int32_t> &data); +GRUEL_API pmt_t init_u64vector(size_t k, const uint64_t *data); +GRUEL_API pmt_t init_u64vector(size_t k, const std::vector<uint64_t> &data); +GRUEL_API pmt_t init_s64vector(size_t k, const int64_t *data); +GRUEL_API pmt_t init_s64vector(size_t k, const std::vector<int64_t> &data); +GRUEL_API pmt_t init_f32vector(size_t k, const float *data); +GRUEL_API pmt_t init_f32vector(size_t k, const std::vector<float> &data); +GRUEL_API pmt_t init_f64vector(size_t k, const double *data); +GRUEL_API pmt_t init_f64vector(size_t k, const std::vector<double> &data); +GRUEL_API pmt_t init_c32vector(size_t k, const std::complex<float> *data); +GRUEL_API pmt_t init_c32vector(size_t k, const std::vector<std::complex<float> > &data); +GRUEL_API pmt_t init_c64vector(size_t k, const std::complex<double> *data); +GRUEL_API pmt_t init_c64vector(size_t k, const std::vector<std::complex<double> > &data); + +GRUEL_API uint8_t u8vector_ref(pmt_t v, size_t k); +GRUEL_API int8_t s8vector_ref(pmt_t v, size_t k); +GRUEL_API uint16_t u16vector_ref(pmt_t v, size_t k); +GRUEL_API int16_t s16vector_ref(pmt_t v, size_t k); +GRUEL_API uint32_t u32vector_ref(pmt_t v, size_t k); +GRUEL_API int32_t s32vector_ref(pmt_t v, size_t k); +GRUEL_API uint64_t u64vector_ref(pmt_t v, size_t k); +GRUEL_API int64_t s64vector_ref(pmt_t v, size_t k); +GRUEL_API float f32vector_ref(pmt_t v, size_t k); +GRUEL_API double f64vector_ref(pmt_t v, size_t k); +GRUEL_API std::complex<float> c32vector_ref(pmt_t v, size_t k); +GRUEL_API std::complex<double> c64vector_ref(pmt_t v, size_t k); + +GRUEL_API void u8vector_set(pmt_t v, size_t k, uint8_t x); //< v[k] = x +GRUEL_API void s8vector_set(pmt_t v, size_t k, int8_t x); +GRUEL_API void u16vector_set(pmt_t v, size_t k, uint16_t x); +GRUEL_API void s16vector_set(pmt_t v, size_t k, int16_t x); +GRUEL_API void u32vector_set(pmt_t v, size_t k, uint32_t x); +GRUEL_API void s32vector_set(pmt_t v, size_t k, int32_t x); +GRUEL_API void u64vector_set(pmt_t v, size_t k, uint64_t x); +GRUEL_API void s64vector_set(pmt_t v, size_t k, int64_t x); +GRUEL_API void f32vector_set(pmt_t v, size_t k, float x); +GRUEL_API void f64vector_set(pmt_t v, size_t k, double x); +GRUEL_API void c32vector_set(pmt_t v, size_t k, std::complex<float> x); +GRUEL_API void c64vector_set(pmt_t v, size_t k, std::complex<double> x); // Return const pointers to the elements -GRUEL_API const void *pmt_uniform_vector_elements(pmt_t v, size_t &len); //< works with any; len is in bytes - -GRUEL_API const uint8_t *pmt_u8vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const int8_t *pmt_s8vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const uint16_t *pmt_u16vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const int16_t *pmt_s16vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const uint32_t *pmt_u32vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const int32_t *pmt_s32vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const uint64_t *pmt_u64vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const int64_t *pmt_s64vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const float *pmt_f32vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const double *pmt_f64vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const std::complex<float> *pmt_c32vector_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API const std::complex<double> *pmt_c64vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const void *uniform_vector_elements(pmt_t v, size_t &len); //< works with any; len is in bytes + +GRUEL_API const uint8_t *u8vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const int8_t *s8vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const uint16_t *u16vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const int16_t *s16vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const uint32_t *u32vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const int32_t *s32vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const uint64_t *u64vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const int64_t *s64vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const float *f32vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const double *f64vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const std::complex<float> *c32vector_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API const std::complex<double> *c64vector_elements(pmt_t v, size_t &len); //< len is in elements + +// len is in elements +GRUEL_API const std::vector<uint8_t> u8vector_elements(pmt_t v); +GRUEL_API const std::vector<int8_t> s8vector_elements(pmt_t v); +GRUEL_API const std::vector<uint16_t> u16vector_elements(pmt_t v); +GRUEL_API const std::vector<int16_t> s16vector_elements(pmt_t v); +GRUEL_API const std::vector<uint32_t> u32vector_elements(pmt_t v); +GRUEL_API const std::vector<int32_t> s32vector_elements(pmt_t v); +GRUEL_API const std::vector<uint64_t> u64vector_elements(pmt_t v); +GRUEL_API const std::vector<int64_t> s64vector_elements(pmt_t v); +GRUEL_API const std::vector<float> f32vector_elements(pmt_t v); +GRUEL_API const std::vector<double> f64vector_elements(pmt_t v); +GRUEL_API const std::vector<std::complex<float> > c32vector_elements(pmt_t v); +GRUEL_API const std::vector<std::complex<double> > c64vector_elements(pmt_t v); // len is in elements GRUEL_API const std::vector<uint8_t> pmt_u8vector_elements(pmt_t v); @@ -502,20 +522,20 @@ GRUEL_API const std::vector<std::complex<double> > pmt_c64vector_elements(pmt_t // Return non-const pointers to the elements -GRUEL_API void *pmt_uniform_vector_writable_elements(pmt_t v, size_t &len); //< works with any; len is in bytes - -GRUEL_API uint8_t *pmt_u8vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API int8_t *pmt_s8vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API uint16_t *pmt_u16vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API int16_t *pmt_s16vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API uint32_t *pmt_u32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API int32_t *pmt_s32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API uint64_t *pmt_u64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API int64_t *pmt_s64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API float *pmt_f32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API double *pmt_f64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API std::complex<float> *pmt_c32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements -GRUEL_API std::complex<double> *pmt_c64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API void *uniform_vector_writable_elements(pmt_t v, size_t &len); //< works with any; len is in bytes + +GRUEL_API uint8_t *u8vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API int8_t *s8vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API uint16_t *u16vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API int16_t *s16vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API uint32_t *u32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API int32_t *s32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API uint64_t *u64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API int64_t *s64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API float *f32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API double *f64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API std::complex<float> *c32vector_writable_elements(pmt_t v, size_t &len); //< len is in elements +GRUEL_API std::complex<double> *c64vector_writable_elements(pmt_t v, size_t &len); //< len is in elements /* * ------------------------------------------------------------------------ @@ -528,31 +548,31 @@ GRUEL_API std::complex<double> *pmt_c64vector_writable_elements(pmt_t v, size_t */ //! Return true if \p obj is a dictionary -GRUEL_API bool pmt_is_dict(const pmt_t &obj); +GRUEL_API bool is_dict(const pmt_t &obj); //! Make an empty dictionary -GRUEL_API pmt_t pmt_make_dict(); +GRUEL_API pmt_t make_dict(); //! Return a new dictionary with \p key associated with \p value. -GRUEL_API pmt_t pmt_dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value); +GRUEL_API pmt_t dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value); //! Return a new dictionary with \p key removed. -GRUEL_API pmt_t pmt_dict_delete(const pmt_t &dict, const pmt_t &key); +GRUEL_API pmt_t dict_delete(const pmt_t &dict, const pmt_t &key); //! Return true if \p key exists in \p dict -GRUEL_API bool pmt_dict_has_key(const pmt_t &dict, const pmt_t &key); +GRUEL_API bool dict_has_key(const pmt_t &dict, const pmt_t &key); //! If \p key exists in \p dict, return associated value; otherwise return \p not_found. -GRUEL_API pmt_t pmt_dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t ¬_found); +GRUEL_API pmt_t dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t ¬_found); //! Return list of (key . value) pairs -GRUEL_API pmt_t pmt_dict_items(pmt_t dict); +GRUEL_API pmt_t dict_items(pmt_t dict); //! Return list of keys -GRUEL_API pmt_t pmt_dict_keys(pmt_t dict); +GRUEL_API pmt_t dict_keys(pmt_t dict); //! Return list of values -GRUEL_API pmt_t pmt_dict_values(pmt_t dict); +GRUEL_API pmt_t dict_values(pmt_t dict); /* * ------------------------------------------------------------------------ @@ -564,16 +584,16 @@ GRUEL_API pmt_t pmt_dict_values(pmt_t dict); */ //! Return true if \p obj is an any -GRUEL_API bool pmt_is_any(pmt_t obj); +GRUEL_API bool is_any(pmt_t obj); //! make an any -GRUEL_API pmt_t pmt_make_any(const boost::any &any); +GRUEL_API pmt_t make_any(const boost::any &any); //! Return underlying boost::any -GRUEL_API boost::any pmt_any_ref(pmt_t obj); +GRUEL_API boost::any any_ref(pmt_t obj); //! Store \p any in \p obj -GRUEL_API void pmt_any_set(pmt_t obj, const boost::any &any); +GRUEL_API void any_set(pmt_t obj, const boost::any &any); /* @@ -582,13 +602,13 @@ GRUEL_API void pmt_any_set(pmt_t obj, const boost::any &any); * ------------------------------------------------------------------------ */ //! Return true if \p obj is a msg_accepter -GRUEL_API bool pmt_is_msg_accepter(const pmt_t &obj); +GRUEL_API bool is_msg_accepter(const pmt_t &obj); //! make a msg_accepter -GRUEL_API pmt_t pmt_make_msg_accepter(boost::shared_ptr<gruel::msg_accepter> ma); +GRUEL_API pmt_t make_msg_accepter(boost::shared_ptr<gruel::msg_accepter> ma); //! Return underlying msg_accepter -GRUEL_API boost::shared_ptr<gruel::msg_accepter> pmt_msg_accepter_ref(const pmt_t &obj); +GRUEL_API boost::shared_ptr<gruel::msg_accepter> msg_accepter_ref(const pmt_t &obj); /* * ------------------------------------------------------------------------ @@ -597,7 +617,7 @@ GRUEL_API boost::shared_ptr<gruel::msg_accepter> pmt_msg_accepter_ref(const pmt_ */ //! Return true if x and y are the same object; otherwise return false. -GRUEL_API bool pmt_eq(const pmt_t& x, const pmt_t& y); +GRUEL_API bool eq(const pmt_t& x, const pmt_t& y); /*! * \brief Return true if x and y should normally be regarded as the same object, else false. @@ -612,19 +632,19 @@ GRUEL_API bool pmt_eq(const pmt_t& x, const pmt_t& y); * x and y are pairs or vectors that denote same location in store. * </pre> */ -GRUEL_API bool pmt_eqv(const pmt_t& x, const pmt_t& y); +GRUEL_API bool eqv(const pmt_t& x, const pmt_t& y); /*! - * pmt_equal recursively compares the contents of pairs and vectors, - * applying pmt_eqv on other objects such as numbers and symbols. - * pmt_equal may fail to terminate if its arguments are circular data + * pmt::equal recursively compares the contents of pairs and vectors, + * applying pmt::eqv on other objects such as numbers and symbols. + * pmt::equal may fail to terminate if its arguments are circular data * structures. */ -GRUEL_API bool pmt_equal(const pmt_t& x, const pmt_t& y); +GRUEL_API bool equal(const pmt_t& x, const pmt_t& y); //! Return the number of elements in v -GRUEL_API size_t pmt_length(const pmt_t& v); +GRUEL_API size_t length(const pmt_t& v); /*! * \brief Find the first pair in \p alist whose car field is \p obj @@ -632,9 +652,9 @@ GRUEL_API size_t pmt_length(const pmt_t& v); * * \p alist (for "association list") must be a list of pairs. If no pair * in \p alist has \p obj as its car then \#f is returned. - * Uses pmt_eq to compare \p obj with car fields of the pairs in \p alist. + * Uses pmt::eq to compare \p obj with car fields of the pairs in \p alist. */ -GRUEL_API pmt_t pmt_assq(pmt_t obj, pmt_t alist); +GRUEL_API pmt_t assq(pmt_t obj, pmt_t alist); /*! * \brief Find the first pair in \p alist whose car field is \p obj @@ -642,9 +662,9 @@ GRUEL_API pmt_t pmt_assq(pmt_t obj, pmt_t alist); * * \p alist (for "association list") must be a list of pairs. If no pair * in \p alist has \p obj as its car then \#f is returned. - * Uses pmt_eqv to compare \p obj with car fields of the pairs in \p alist. + * Uses pmt::eqv to compare \p obj with car fields of the pairs in \p alist. */ -GRUEL_API pmt_t pmt_assv(pmt_t obj, pmt_t alist); +GRUEL_API pmt_t assv(pmt_t obj, pmt_t alist); /*! * \brief Find the first pair in \p alist whose car field is \p obj @@ -652,9 +672,9 @@ GRUEL_API pmt_t pmt_assv(pmt_t obj, pmt_t alist); * * \p alist (for "association list") must be a list of pairs. If no pair * in \p alist has \p obj as its car then \#f is returned. - * Uses pmt_equal to compare \p obj with car fields of the pairs in \p alist. + * Uses pmt::equal to compare \p obj with car fields of the pairs in \p alist. */ -GRUEL_API pmt_t pmt_assoc(pmt_t obj, pmt_t alist); +GRUEL_API pmt_t assoc(pmt_t obj, pmt_t alist); /*! * \brief Apply \p proc element-wise to the elements of list and returns @@ -663,114 +683,114 @@ GRUEL_API pmt_t pmt_assoc(pmt_t obj, pmt_t alist); * \p list must be a list. The dynamic order in which \p proc is * applied to the elements of \p list is unspecified. */ -GRUEL_API pmt_t pmt_map(pmt_t proc(const pmt_t&), pmt_t list); +GRUEL_API pmt_t map(pmt_t proc(const pmt_t&), pmt_t list); /*! * \brief reverse \p list. * * \p list must be a proper list. */ -GRUEL_API pmt_t pmt_reverse(pmt_t list); +GRUEL_API pmt_t reverse(pmt_t list); /*! * \brief destructively reverse \p list. * * \p list must be a proper list. */ -GRUEL_API pmt_t pmt_reverse_x(pmt_t list); +GRUEL_API pmt_t reverse_x(pmt_t list); /*! * \brief (acons x y a) == (cons (cons x y) a) */ inline static pmt_t -pmt_acons(pmt_t x, pmt_t y, pmt_t a) +acons(pmt_t x, pmt_t y, pmt_t a) { - return pmt_cons(pmt_cons(x, y), a); + return cons(cons(x, y), a); } /*! * \brief locates \p nth element of \n list where the car is the 'zeroth' element. */ -GRUEL_API pmt_t pmt_nth(size_t n, pmt_t list); +GRUEL_API pmt_t nth(size_t n, pmt_t list); /*! * \brief returns the tail of \p list that would be obtained by calling * cdr \p n times in succession. */ -GRUEL_API pmt_t pmt_nthcdr(size_t n, pmt_t list); +GRUEL_API pmt_t nthcdr(size_t n, pmt_t list); /*! * \brief Return the first sublist of \p list whose car is \p obj. * If \p obj does not occur in \p list, then \#f is returned. - * pmt_memq use pmt_eq to compare \p obj with the elements of \p list. + * pmt::memq use pmt::eq to compare \p obj with the elements of \p list. */ -GRUEL_API pmt_t pmt_memq(pmt_t obj, pmt_t list); +GRUEL_API pmt_t memq(pmt_t obj, pmt_t list); /*! * \brief Return the first sublist of \p list whose car is \p obj. * If \p obj does not occur in \p list, then \#f is returned. - * pmt_memv use pmt_eqv to compare \p obj with the elements of \p list. + * pmt::memv use pmt::eqv to compare \p obj with the elements of \p list. */ -GRUEL_API pmt_t pmt_memv(pmt_t obj, pmt_t list); +GRUEL_API pmt_t memv(pmt_t obj, pmt_t list); /*! * \brief Return the first sublist of \p list whose car is \p obj. * If \p obj does not occur in \p list, then \#f is returned. - * pmt_member use pmt_equal to compare \p obj with the elements of \p list. + * pmt::member use pmt::equal to compare \p obj with the elements of \p list. */ -GRUEL_API pmt_t pmt_member(pmt_t obj, pmt_t list); +GRUEL_API pmt_t member(pmt_t obj, pmt_t list); /*! * \brief Return true if every element of \p list1 appears in \p list2, and false otherwise. - * Comparisons are done with pmt_eqv. + * Comparisons are done with pmt::eqv. */ -GRUEL_API bool pmt_subsetp(pmt_t list1, pmt_t list2); +GRUEL_API bool subsetp(pmt_t list1, pmt_t list2); /*! * \brief Return a list of length 1 containing \p x1 */ -GRUEL_API pmt_t pmt_list1(const pmt_t& x1); +GRUEL_API pmt_t list1(const pmt_t& x1); /*! * \brief Return a list of length 2 containing \p x1, \p x2 */ -GRUEL_API pmt_t pmt_list2(const pmt_t& x1, const pmt_t& x2); +GRUEL_API pmt_t list2(const pmt_t& x1, const pmt_t& x2); /*! * \brief Return a list of length 3 containing \p x1, \p x2, \p x3 */ -GRUEL_API pmt_t pmt_list3(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3); +GRUEL_API pmt_t list3(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3); /*! * \brief Return a list of length 4 containing \p x1, \p x2, \p x3, \p x4 */ -GRUEL_API pmt_t pmt_list4(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4); +GRUEL_API pmt_t list4(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4); /*! * \brief Return a list of length 5 containing \p x1, \p x2, \p x3, \p x4, \p x5 */ -GRUEL_API pmt_t pmt_list5(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5); +GRUEL_API pmt_t list5(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5); /*! * \brief Return a list of length 6 containing \p x1, \p x2, \p x3, \p x4, \p * x5, \p x6 */ -GRUEL_API pmt_t pmt_list6(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5, const pmt_t& x6); +GRUEL_API pmt_t list6(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5, const pmt_t& x6); /*! * \brief Return \p list with \p item added to it. */ -GRUEL_API pmt_t pmt_list_add(pmt_t list, const pmt_t& item); +GRUEL_API pmt_t list_add(pmt_t list, const pmt_t& item); /*! * \brief Return \p list with \p item removed from it. */ -GRUEL_API pmt_t pmt_list_rm(pmt_t list, const pmt_t& item); +GRUEL_API pmt_t 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); +GRUEL_API bool list_has(pmt_t list, const pmt_t& item); /* @@ -781,7 +801,7 @@ GRUEL_API bool pmt_list_has(pmt_t list, const pmt_t& item); extern GRUEL_API const pmt_t PMT_EOF; //< The end of file object //! return true if obj is the EOF object, otherwise return false. -GRUEL_API bool pmt_is_eof_object(pmt_t obj); +GRUEL_API bool is_eof_object(pmt_t obj); /*! * read converts external representations of pmt objects into the @@ -798,18 +818,18 @@ GRUEL_API bool pmt_is_eof_object(pmt_t obj); * representation, but the external representation is incomplete and * therefore not parsable, an error is signaled. */ -GRUEL_API pmt_t pmt_read(std::istream &port); +GRUEL_API pmt_t read(std::istream &port); /*! * Write a written representation of \p obj to the given \p port. */ -GRUEL_API void pmt_write(pmt_t obj, std::ostream &port); +GRUEL_API void write(pmt_t obj, std::ostream &port); /*! * Return a string representation of \p obj. - * This is the same output as would be generated by pmt_write. + * This is the same output as would be generated by pmt::write. */ -GRUEL_API std::string pmt_write_string(pmt_t obj); +GRUEL_API std::string write_string(pmt_t obj); GRUEL_API std::ostream& operator<<(std::ostream &os, pmt_t obj); @@ -817,7 +837,7 @@ GRUEL_API std::ostream& operator<<(std::ostream &os, pmt_t obj); /*! * \brief Write pmt string representation to stdout. */ -GRUEL_API void pmt_print(pmt_t v); +GRUEL_API void print(pmt_t v); /* @@ -828,33 +848,33 @@ GRUEL_API void pmt_print(pmt_t v); /*! * \brief Write portable byte-serial representation of \p obj to \p sink */ -GRUEL_API bool pmt_serialize(pmt_t obj, std::streambuf &sink); +GRUEL_API bool serialize(pmt_t obj, std::streambuf &sink); /*! * \brief Create obj from portable byte-serial representation */ -GRUEL_API pmt_t pmt_deserialize(std::streambuf &source); +GRUEL_API pmt_t deserialize(std::streambuf &source); -GRUEL_API void pmt_dump_sizeof(); // debugging +GRUEL_API void dump_sizeof(); // debugging /*! * \brief Provide a simple string generating interface to pmt's serialize function */ -GRUEL_API std::string pmt_serialize_str(pmt_t obj); +GRUEL_API std::string serialize_str(pmt_t obj); /*! * \brief Provide a simple string generating interface to pmt's deserialize function */ -GRUEL_API pmt_t pmt_deserialize_str(std::string str); +GRUEL_API pmt_t deserialize_str(std::string str); /*! * \brief Provide a comparator function object to allow pmt use in stl types */ -class pmt_comperator { +class comperator { public: bool operator()(pmt::pmt_t const& p1, pmt::pmt_t const& p2) const - { return pmt::pmt_eqv(p1,p2)?false:p1.get()>p2.get(); } + { return pmt::eqv(p1,p2)?false:p1.get()>p2.get(); } }; } /* namespace pmt */ diff --git a/gruel/src/include/gruel/pmt_sugar.h b/gruel/src/include/gruel/pmt_sugar.h index bde7f716dc..7791bcce6a 100644 --- a/gruel/src/include/gruel/pmt_sugar.h +++ b/gruel/src/include/gruel/pmt_sugar.h @@ -32,136 +32,136 @@ namespace pmt { static inline pmt_t mp(const std::string &s) { - return pmt_string_to_symbol(s); + return string_to_symbol(s); } //! Make pmt symbol static inline pmt_t mp(const char *s) { - return pmt_string_to_symbol(s); + return string_to_symbol(s); } //! Make pmt long static inline pmt_t mp(long x){ - return pmt_from_long(x); + return from_long(x); } //! Make pmt long static inline pmt_t mp(long long unsigned x){ - return pmt_from_long(x); + return from_long(x); } //! Make pmt long static inline pmt_t mp(int x){ - return pmt_from_long(x); + return from_long(x); } //! Make pmt double static inline pmt_t mp(double x){ - return pmt_from_double(x); + return from_double(x); } //! Make pmt complex static inline pmt_t mp(std::complex<double> z) { - return pmt_make_rectangular(z.real(), z.imag()); + return make_rectangular(z.real(), z.imag()); } //! Make pmt complex static inline pmt_t mp(std::complex<float> z) { - return pmt_make_rectangular(z.real(), z.imag()); + return make_rectangular(z.real(), z.imag()); } //! Make pmt msg_accepter static inline pmt_t mp(boost::shared_ptr<gruel::msg_accepter> ma) { - return pmt_make_msg_accepter(ma); + return make_msg_accepter(ma); } //! Make pmt Binary Large Object (BLOB) static inline pmt_t mp(const void *data, size_t len_in_bytes) { - return pmt_make_blob(data, len_in_bytes); + return make_blob(data, len_in_bytes); } //! Make tuple static inline pmt_t mp(const pmt_t &e0) { - return pmt_make_tuple(e0); + return make_tuple(e0); } //! Make tuple static inline pmt_t mp(const pmt_t &e0, const pmt_t &e1) { - return pmt_make_tuple(e0, e1); + return make_tuple(e0, e1); } //! Make tuple static inline pmt_t mp(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2) { - return pmt_make_tuple(e0, e1, e2); + return make_tuple(e0, e1, e2); } //! Make tuple static inline pmt_t mp(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3) { - return pmt_make_tuple(e0, e1, e2, e3); + return make_tuple(e0, e1, e2, e3); } //! Make tuple static inline pmt_t mp(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4) { - return pmt_make_tuple(e0, e1, e2, e3, e4); + return make_tuple(e0, e1, e2, e3, e4); } //! Make tuple static inline pmt_t mp(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5) { - return pmt_make_tuple(e0, e1, e2, e3, e4, e5); + return make_tuple(e0, e1, e2, e3, e4, e5); } //! Make tuple static inline pmt_t mp(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6) { - return pmt_make_tuple(e0, e1, e2, e3, e4, e5, e6); + return make_tuple(e0, e1, e2, e3, e4, e5, e6); } //! Make tuple static inline pmt_t mp(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7) { - return pmt_make_tuple(e0, e1, e2, e3, e4, e5, e6, e7); + return make_tuple(e0, e1, e2, e3, e4, e5, e6, e7); } //! Make tuple static inline pmt_t mp(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8) { - return pmt_make_tuple(e0, e1, e2, e3, e4, e5, e6, e7, e8); + return make_tuple(e0, e1, e2, e3, e4, e5, e6, e7, e8); } //! Make tuple static inline pmt_t mp(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8, const pmt_t &e9) { - return pmt_make_tuple(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9); + return make_tuple(e0, e1, e2, e3, e4, e5, e6, e7, e8, e9); } diff --git a/gruel/src/lib/pmt/pmt.cc b/gruel/src/lib/pmt/pmt.cc index 1d1e9ba7c8..8ea0e76143 100644 --- a/gruel/src/lib/pmt/pmt.cc +++ b/gruel/src/lib/pmt/pmt.cc @@ -69,23 +69,23 @@ pmt_base::~pmt_base() // Exceptions //////////////////////////////////////////////////////////////////////////// -pmt_exception::pmt_exception(const std::string &msg, pmt_t obj) - : logic_error(msg + ": " + pmt_write_string(obj)) +exception::exception(const std::string &msg, pmt_t obj) + : logic_error(msg + ": " + write_string(obj)) { } -pmt_wrong_type::pmt_wrong_type(const std::string &msg, pmt_t obj) - : pmt_exception(msg + ": wrong_type ", obj) +wrong_type::wrong_type(const std::string &msg, pmt_t obj) + : exception(msg + ": wrong_type ", obj) { } -pmt_out_of_range::pmt_out_of_range(const std::string &msg, pmt_t obj) - : pmt_exception(msg + ": out of range ", obj) +out_of_range::out_of_range(const std::string &msg, pmt_t obj) + : exception(msg + ": out of range ", obj) { } -pmt_notimplemented::pmt_notimplemented(const std::string &msg, pmt_t obj) - : pmt_exception(msg + ": notimplemented ", obj) +notimplemented::notimplemented(const std::string &msg, pmt_t obj) + : exception(msg + ": notimplemented ", obj) { } @@ -157,10 +157,10 @@ _any(pmt_t x) // Globals //////////////////////////////////////////////////////////////////////////// -const pmt_t PMT_T = pmt_t(new pmt_bool()); // singleton -const pmt_t PMT_F = pmt_t(new pmt_bool()); // singleton -const pmt_t PMT_NIL = pmt_t(new pmt_null()); // singleton -const pmt_t PMT_EOF = pmt_cons(PMT_NIL, PMT_NIL); // singleton +const pmt_t PMT_T = pmt_t(new pmt_bool()); // singleton +const pmt_t PMT_F = pmt_t(new pmt_bool()); // singleton +const pmt_t PMT_NIL = pmt_t(new pmt_null()); // singleton +const pmt_t PMT_EOF = cons(PMT_NIL, PMT_NIL); // singleton //////////////////////////////////////////////////////////////////////////// // Booleans @@ -169,37 +169,37 @@ const pmt_t PMT_EOF = pmt_cons(PMT_NIL, PMT_NIL); // singleton pmt_bool::pmt_bool(){} bool -pmt_is_true(pmt_t obj) +is_true(pmt_t obj) { return obj != PMT_F; } bool -pmt_is_false(pmt_t obj) +is_false(pmt_t obj) { return obj == PMT_F; } bool -pmt_is_bool(pmt_t obj) +is_bool(pmt_t obj) { return obj->is_bool(); } pmt_t -pmt_from_bool(bool val) +from_bool(bool val) { return val ? PMT_T : PMT_F; } bool -pmt_to_bool(pmt_t val) +to_bool(pmt_t val) { if (val == PMT_T) return true; if (val == PMT_F) return false; - throw pmt_wrong_type("pmt_to_bool", val); + throw wrong_type("pmt_to_bool", val); } //////////////////////////////////////////////////////////////////////////// @@ -230,13 +230,13 @@ hash_string(const std::string &s) } bool -pmt_is_symbol(const pmt_t& obj) +is_symbol(const pmt_t& obj) { return obj->is_symbol(); } pmt_t -pmt_string_to_symbol(const std::string &name) +string_to_symbol(const std::string &name) { unsigned hash = hash_string(name) % SYMBOL_HASH_TABLE_SIZE; @@ -255,16 +255,16 @@ pmt_string_to_symbol(const std::string &name) // alias... pmt_t -pmt_intern(const std::string &name) +intern(const std::string &name) { - return pmt_string_to_symbol(name); + return string_to_symbol(name); } const std::string -pmt_symbol_to_string(const pmt_t& sym) +symbol_to_string(const pmt_t& sym) { if (!sym->is_symbol()) - throw pmt_wrong_type("pmt_symbol_to_string", sym); + throw wrong_type("pmt_symbol_to_string", sym); return _symbol(sym)->name(); } @@ -276,7 +276,7 @@ pmt_symbol_to_string(const pmt_t& sym) //////////////////////////////////////////////////////////////////////////// bool -pmt_is_number(pmt_t x) +is_number(pmt_t x) { return x->is_number(); } @@ -288,26 +288,26 @@ pmt_is_number(pmt_t x) pmt_integer::pmt_integer(long value) : d_value(value) {} bool -pmt_is_integer(pmt_t x) +is_integer(pmt_t x) { return x->is_integer(); } pmt_t -pmt_from_long(long x) +from_long(long x) { return pmt_t(new pmt_integer(x)); } long -pmt_to_long(pmt_t x) +to_long(pmt_t x) { pmt_integer* i = dynamic_cast<pmt_integer*>(x.get()); if ( i ) return i->value(); - throw pmt_wrong_type("pmt_to_long", x); + throw wrong_type("pmt_to_long", x); } //////////////////////////////////////////////////////////////////////////// @@ -317,20 +317,20 @@ pmt_to_long(pmt_t x) pmt_uint64::pmt_uint64(uint64_t value) : d_value(value) {} bool -pmt_is_uint64(pmt_t x) +is_uint64(pmt_t x) { return x->is_uint64(); } pmt_t -pmt_from_uint64(uint64_t x) +from_uint64(uint64_t x) { return pmt_t(new pmt_uint64(x)); } uint64_t -pmt_to_uint64(pmt_t x) +to_uint64(pmt_t x) { if(x->is_uint64()) return _uint64(x)->value(); @@ -341,7 +341,7 @@ pmt_to_uint64(pmt_t x) return (uint64_t) tmp; } - throw pmt_wrong_type("pmt_to_uint64", x); + throw wrong_type("pmt_to_uint64", x); } //////////////////////////////////////////////////////////////////////////// @@ -351,26 +351,26 @@ pmt_to_uint64(pmt_t x) pmt_real::pmt_real(double value) : d_value(value) {} bool -pmt_is_real(pmt_t x) +is_real(pmt_t x) { return x->is_real(); } pmt_t -pmt_from_double(double x) +from_double(double x) { return pmt_t(new pmt_real(x)); } double -pmt_to_double(pmt_t x) +to_double(pmt_t x) { if (x->is_real()) return _real(x)->value(); if (x->is_integer()) return _integer(x)->value(); - throw pmt_wrong_type("pmt_to_double", x); + throw wrong_type("pmt_to_double", x); } //////////////////////////////////////////////////////////////////////////// @@ -380,13 +380,19 @@ pmt_to_double(pmt_t x) pmt_complex::pmt_complex(std::complex<double> value) : d_value(value) {} bool -pmt_is_complex(pmt_t x) +is_complex(pmt_t x) { return x->is_complex(); } pmt_t -pmt_make_rectangular(double re, double im) +make_rectangular(double re, double im) +{ + return from_complex(re, im); +} + +pmt_t +from_complex(double re, double im) { return pmt_from_complex(re, im); } @@ -396,13 +402,14 @@ pmt_t pmt_from_complex(double re, double im) return pmt_t(new pmt_complex(std::complex<double>(re, im))); } -pmt_t pmt_from_complex(const std::complex<double> &z) +pmt_t +from_complex(const std::complex<double> &z) { return pmt_t(new pmt_complex(z)); } std::complex<double> -pmt_to_complex(pmt_t x) +to_complex(pmt_t x) { if (x->is_complex()) return _complex(x)->value(); @@ -411,7 +418,7 @@ pmt_to_complex(pmt_t x) if (x->is_integer()) return _integer(x)->value(); - throw pmt_wrong_type("pmt_to_complex", x); + throw wrong_type("pmt_to_complex", x); } //////////////////////////////////////////////////////////////////////////// @@ -422,59 +429,59 @@ pmt_null::pmt_null() {} pmt_pair::pmt_pair(const pmt_t& car, const pmt_t& cdr) : d_car(car), d_cdr(cdr) {} bool -pmt_is_null(const pmt_t& x) +is_null(const pmt_t& x) { return x == PMT_NIL; } bool -pmt_is_pair(const pmt_t& obj) +is_pair(const pmt_t& obj) { return obj->is_pair(); } pmt_t -pmt_cons(const pmt_t& x, const pmt_t& y) +cons(const pmt_t& x, const pmt_t& y) { return pmt_t(new pmt_pair(x, y)); } pmt_t -pmt_car(const pmt_t& pair) +car(const pmt_t& pair) { pmt_pair* p = dynamic_cast<pmt_pair*>(pair.get()); if ( p ) return p->car(); - throw pmt_wrong_type("pmt_car", pair); + throw wrong_type("pmt_car", pair); } pmt_t -pmt_cdr(const pmt_t& pair) +cdr(const pmt_t& pair) { pmt_pair* p = dynamic_cast<pmt_pair*>(pair.get()); if ( p ) return p->cdr(); - throw pmt_wrong_type("pmt_cdr", pair); + throw wrong_type("pmt_cdr", pair); } void -pmt_set_car(pmt_t pair, pmt_t obj) +set_car(pmt_t pair, pmt_t obj) { if (pair->is_pair()) _pair(pair)->set_car(obj); else - throw pmt_wrong_type("pmt_set_car", pair); + throw wrong_type("pmt_set_car", pair); } void -pmt_set_cdr(pmt_t pair, pmt_t obj) +set_cdr(pmt_t pair, pmt_t obj) { if (pair->is_pair()) _pair(pair)->set_cdr(obj); else - throw pmt_wrong_type("pmt_set_cdr", pair); + throw wrong_type("pmt_set_cdr", pair); } //////////////////////////////////////////////////////////////////////////// @@ -492,7 +499,7 @@ pmt_t pmt_vector::ref(size_t k) const { if (k >= length()) - throw pmt_out_of_range("pmt_vector_ref", pmt_from_long(k)); + throw out_of_range("pmt_vector_ref", from_long(k)); return d_v[k]; } @@ -500,7 +507,7 @@ void pmt_vector::set(size_t k, pmt_t obj) { if (k >= length()) - throw pmt_out_of_range("pmt_vector_set", pmt_from_long(k)); + throw out_of_range("pmt_vector_set", from_long(k)); d_v[k] = obj; } @@ -512,38 +519,38 @@ pmt_vector::fill(pmt_t obj) } bool -pmt_is_vector(pmt_t obj) +is_vector(pmt_t obj) { return obj->is_vector(); } pmt_t -pmt_make_vector(size_t k, pmt_t fill) +make_vector(size_t k, pmt_t fill) { return pmt_t(new pmt_vector(k, fill)); } pmt_t -pmt_vector_ref(pmt_t vector, size_t k) +vector_ref(pmt_t vector, size_t k) { if (!vector->is_vector()) - throw pmt_wrong_type("pmt_vector_ref", vector); + throw wrong_type("pmt_vector_ref", vector); return _vector(vector)->ref(k); } void -pmt_vector_set(pmt_t vector, size_t k, pmt_t obj) +vector_set(pmt_t vector, size_t k, pmt_t obj) { if (!vector->is_vector()) - throw pmt_wrong_type("pmt_vector_set", vector); + throw wrong_type("pmt_vector_set", vector); _vector(vector)->set(k, obj); } void -pmt_vector_fill(pmt_t vector, pmt_t obj) +vector_fill(pmt_t vector, pmt_t obj) { if (!vector->is_vector()) - throw pmt_wrong_type("pmt_vector_set", vector); + throw wrong_type("pmt_vector_set", vector); _vector(vector)->fill(obj); } @@ -560,21 +567,21 @@ pmt_t pmt_tuple::ref(size_t k) const { if (k >= length()) - throw pmt_out_of_range("pmt_tuple_ref", pmt_from_long(k)); + throw out_of_range("pmt_tuple_ref", from_long(k)); return d_v[k]; } bool -pmt_is_tuple(pmt_t obj) +is_tuple(pmt_t obj) { return obj->is_tuple(); } pmt_t -pmt_tuple_ref(const pmt_t &tuple, size_t k) +tuple_ref(const pmt_t &tuple, size_t k) { if (!tuple->is_tuple()) - throw pmt_wrong_type("pmt_tuple_ref", tuple); + throw wrong_type("pmt_tuple_ref", tuple); return _tuple(tuple)->ref(k); } @@ -582,13 +589,13 @@ pmt_tuple_ref(const pmt_t &tuple, size_t k) // make_constructor() pmt_t -pmt_make_tuple() +make_tuple() { return pmt_t(new pmt_tuple(0)); } pmt_t -pmt_make_tuple(const pmt_t &e0) +make_tuple(const pmt_t &e0) { pmt_tuple *t = new pmt_tuple(1); t->_set(0, e0); @@ -596,7 +603,7 @@ pmt_make_tuple(const pmt_t &e0) } pmt_t -pmt_make_tuple(const pmt_t &e0, const pmt_t &e1) +make_tuple(const pmt_t &e0, const pmt_t &e1) { pmt_tuple *t = new pmt_tuple(2); t->_set(0, e0); @@ -605,7 +612,7 @@ pmt_make_tuple(const pmt_t &e0, const pmt_t &e1) } pmt_t -pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2) +make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2) { pmt_tuple *t = new pmt_tuple(3); t->_set(0, e0); @@ -615,7 +622,7 @@ pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2) } pmt_t -pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3) +make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3) { pmt_tuple *t = new pmt_tuple(4); t->_set(0, e0); @@ -626,7 +633,7 @@ pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e } pmt_t -pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4) +make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4) { pmt_tuple *t = new pmt_tuple(5); t->_set(0, e0); @@ -638,7 +645,7 @@ pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e } pmt_t -pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5) +make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5) { pmt_tuple *t = new pmt_tuple(6); t->_set(0, e0); @@ -651,7 +658,7 @@ pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e } pmt_t -pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6) +make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6) { pmt_tuple *t = new pmt_tuple(7); t->_set(0, e0); @@ -665,7 +672,7 @@ pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e } pmt_t -pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7) +make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7) { pmt_tuple *t = new pmt_tuple(8); t->_set(0, e0); @@ -680,7 +687,7 @@ pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e } pmt_t -pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8) +make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8) { pmt_tuple *t = new pmt_tuple(9); t->_set(0, e0); @@ -696,7 +703,7 @@ pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e } pmt_t -pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8, const pmt_t &e9) +make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8, const pmt_t &e9) { pmt_tuple *t = new pmt_tuple(10); t->_set(0, e0); @@ -713,12 +720,12 @@ pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e } pmt_t -pmt_to_tuple(const pmt_t &x) +to_tuple(const pmt_t &x) { if (x->is_tuple()) // already one return x; - size_t len = pmt_length(x); + size_t len = length(x); pmt_tuple *t = new pmt_tuple(len); pmt_t r = pmt_t(t); @@ -731,13 +738,13 @@ pmt_to_tuple(const pmt_t &x) if (x->is_pair()){ pmt_t y = x; for (size_t i = 0; i < len; i++){ - t->_set(i, pmt_car(y)); - y = pmt_cdr(y); + t->_set(i, car(y)); + y = cdr(y); } return r; } - throw pmt_wrong_type("pmt_to_tuple", x); + throw wrong_type("pmt_to_tuple", x); } @@ -747,24 +754,24 @@ pmt_to_tuple(const pmt_t &x) //////////////////////////////////////////////////////////////////////////// bool -pmt_is_uniform_vector(pmt_t x) +is_uniform_vector(pmt_t x) { return x->is_uniform_vector(); } const void * -pmt_uniform_vector_elements(pmt_t vector, size_t &len) +uniform_vector_elements(pmt_t vector, size_t &len) { if (!vector->is_uniform_vector()) - throw pmt_wrong_type("pmt_uniform_vector_elements", vector); + throw wrong_type("pmt_uniform_vector_elements", vector); return _uniform_vector(vector)->uniform_elements(len); } void * -pmt_uniform_vector_writable_elements(pmt_t vector, size_t &len) +uniform_vector_writable_elements(pmt_t vector, size_t &len) { if (!vector->is_uniform_vector()) - throw pmt_wrong_type("pmt_uniform_vector_writable_elements", vector); + throw wrong_type("pmt_uniform_vector_writable_elements", vector); return _uniform_vector(vector)->uniform_writable_elements(len); } @@ -781,82 +788,82 @@ pmt_uniform_vector_writable_elements(pmt_t vector, size_t &len) */ bool -pmt_is_dict(const pmt_t &obj) +is_dict(const pmt_t &obj) { - return pmt_is_null(obj) || pmt_is_pair(obj); + return is_null(obj) || is_pair(obj); } pmt_t -pmt_make_dict() +make_dict() { return PMT_NIL; } pmt_t -pmt_dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value) +dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value) { - if (pmt_is_null(dict)) - return pmt_acons(key, value, PMT_NIL); + if (is_null(dict)) + return acons(key, value, PMT_NIL); - if (pmt_dict_has_key(dict, key)) - return pmt_acons(key, value, pmt_dict_delete(dict, key)); + if (dict_has_key(dict, key)) + return acons(key, value, dict_delete(dict, key)); - return pmt_acons(key, value, dict); + return acons(key, value, dict); } pmt_t -pmt_dict_delete(const pmt_t &dict, const pmt_t &key) +dict_delete(const pmt_t &dict, const pmt_t &key) { - if (pmt_is_null(dict)) + if (is_null(dict)) return dict; - if (pmt_eqv(pmt_caar(dict), key)) - return pmt_cdr(dict); + if (eqv(caar(dict), key)) + return cdr(dict); - return pmt_cons(pmt_car(dict), pmt_dict_delete(pmt_cdr(dict), key)); + return cons(car(dict), dict_delete(cdr(dict), key)); } pmt_t -pmt_dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t ¬_found) +dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t ¬_found) { - pmt_t p = pmt_assv(key, dict); // look for (key . value) pair - if (pmt_is_pair(p)) - return pmt_cdr(p); + pmt_t p = assv(key, dict); // look for (key . value) pair + if (is_pair(p)) + return cdr(p); else return not_found; } bool -pmt_dict_has_key(const pmt_t &dict, const pmt_t &key) +dict_has_key(const pmt_t &dict, const pmt_t &key) { - return pmt_is_pair(pmt_assv(key, dict)); + return is_pair(assv(key, dict)); } pmt_t -pmt_dict_items(pmt_t dict) +dict_items(pmt_t dict) { - if (!pmt_is_dict(dict)) - throw pmt_wrong_type("pmt_dict_values", dict); + if (!is_dict(dict)) + throw wrong_type("pmt_dict_values", dict); return dict; // equivalent to dict in the a-list case } pmt_t -pmt_dict_keys(pmt_t dict) +dict_keys(pmt_t dict) { - if (!pmt_is_dict(dict)) - throw pmt_wrong_type("pmt_dict_keys", dict); + if (!is_dict(dict)) + throw wrong_type("pmt_dict_keys", dict); - return pmt_map(pmt_car, dict); + return map(car, dict); } pmt_t -pmt_dict_values(pmt_t dict) +dict_values(pmt_t dict) { - if (!pmt_is_dict(dict)) - throw pmt_wrong_type("pmt_dict_keys", dict); + if (!is_dict(dict)) + throw wrong_type("pmt_dict_keys", dict); - return pmt_map(pmt_cdr, dict); + return map(cdr, dict); } //////////////////////////////////////////////////////////////////////////// @@ -866,30 +873,30 @@ pmt_dict_values(pmt_t dict) pmt_any::pmt_any(const boost::any &any) : d_any(any) {} bool -pmt_is_any(pmt_t obj) +is_any(pmt_t obj) { return obj->is_any(); } pmt_t -pmt_make_any(const boost::any &any) +make_any(const boost::any &any) { return pmt_t(new pmt_any(any)); } boost::any -pmt_any_ref(pmt_t obj) +any_ref(pmt_t obj) { if (!obj->is_any()) - throw pmt_wrong_type("pmt_any_ref", obj); + throw wrong_type("pmt_any_ref", obj); return _any(obj)->ref(); } void -pmt_any_set(pmt_t obj, const boost::any &any) +any_set(pmt_t obj, const boost::any &any) { if (!obj->is_any()) - throw pmt_wrong_type("pmt_any_set", obj); + throw wrong_type("pmt_any_set", obj); _any(obj)->set(any); } @@ -898,31 +905,31 @@ pmt_any_set(pmt_t obj, const boost::any &any) //////////////////////////////////////////////////////////////////////////// bool -pmt_is_msg_accepter(const pmt_t &obj) +is_msg_accepter(const pmt_t &obj) { - if (!pmt_is_any(obj)) + if (!is_any(obj)) return false; - boost::any r = pmt_any_ref(obj); + boost::any r = any_ref(obj); return boost::any_cast<gruel::msg_accepter_sptr>(&r) != 0; } //! make a msg_accepter pmt_t -pmt_make_msg_accepter(gruel::msg_accepter_sptr ma) +make_msg_accepter(gruel::msg_accepter_sptr ma) { - return pmt_make_any(ma); + return make_any(ma); } //! Return underlying msg_accepter gruel::msg_accepter_sptr -pmt_msg_accepter_ref(const pmt_t &obj) +msg_accepter_ref(const pmt_t &obj) { try { - return boost::any_cast<gruel::msg_accepter_sptr>(pmt_any_ref(obj)); + return boost::any_cast<gruel::msg_accepter_sptr>(any_ref(obj)); } catch (boost::bad_any_cast &e){ - throw pmt_wrong_type("pmt_msg_accepter_ref", obj); + throw wrong_type("pmt_msg_accepter_ref", obj); } } @@ -932,30 +939,30 @@ pmt_msg_accepter_ref(const pmt_t &obj) //////////////////////////////////////////////////////////////////////////// bool -pmt_is_blob(pmt_t x) +is_blob(pmt_t x) { - // return pmt_is_u8vector(x); - return pmt_is_uniform_vector(x); + // return is_u8vector(x); + return is_uniform_vector(x); } pmt_t -pmt_make_blob(const void *buf, size_t len_in_bytes) +make_blob(const void *buf, size_t len_in_bytes) { - return pmt_init_u8vector(len_in_bytes, (const uint8_t *) buf); + return init_u8vector(len_in_bytes, (const uint8_t *) buf); } const void * -pmt_blob_data(pmt_t blob) +blob_data(pmt_t blob) { size_t len; - return pmt_uniform_vector_elements(blob, len); + return uniform_vector_elements(blob, len); } size_t -pmt_blob_length(pmt_t blob) +blob_length(pmt_t blob) { size_t len; - pmt_uniform_vector_elements(blob, len); + uniform_vector_elements(blob, len); return len; } @@ -965,13 +972,13 @@ pmt_blob_length(pmt_t blob) //////////////////////////////////////////////////////////////////////////// bool -pmt_eq(const pmt_t& x, const pmt_t& y) +eq(const pmt_t& x, const pmt_t& y) { return x == y; } bool -pmt_eqv(const pmt_t& x, const pmt_t& y) +eqv(const pmt_t& x, const pmt_t& y) { if (x == y) return true; @@ -992,7 +999,7 @@ pmt_eqv(const pmt_t& x, const pmt_t& y) } bool -pmt_eqv_raw(pmt_base *x, pmt_base *y) +eqv_raw(pmt_base *x, pmt_base *y) { if (x == y) return true; @@ -1013,13 +1020,13 @@ pmt_eqv_raw(pmt_base *x, pmt_base *y) } bool -pmt_equal(const pmt_t& x, const pmt_t& y) +equal(const pmt_t& x, const pmt_t& y) { - if (pmt_eqv(x, y)) + if (eqv(x, y)) return true; if (x->is_pair() && y->is_pair()) - return pmt_equal(pmt_car(x), pmt_car(y)) && pmt_equal(pmt_cdr(x), pmt_cdr(y)); + return equal(car(x), car(y)) && equal(cdr(x), cdr(y)); if (x->is_vector() && y->is_vector()){ pmt_vector *xv = _vector(x); @@ -1028,7 +1035,7 @@ pmt_equal(const pmt_t& x, const pmt_t& y) return false; for (unsigned i = 0; i < xv->length(); i++) - if (!pmt_equal(xv->_ref(i), yv->_ref(i))) + if (!equal(xv->_ref(i), yv->_ref(i))) return false; return true; @@ -1041,7 +1048,7 @@ pmt_equal(const pmt_t& x, const pmt_t& y) return false; for (unsigned i = 0; i < xv->length(); i++) - if (!pmt_equal(xv->_ref(i), yv->_ref(i))) + if (!equal(xv->_ref(i), yv->_ref(i))) return false; return true; @@ -1068,7 +1075,7 @@ pmt_equal(const pmt_t& x, const pmt_t& y) } size_t -pmt_length(const pmt_t& x) +length(const pmt_t& x) { if (x->is_vector()) return _vector(x)->length(); @@ -1084,35 +1091,35 @@ pmt_length(const pmt_t& x) if (x->is_pair()) { size_t length=1; - pmt_t it = pmt_cdr(x); - while (pmt_is_pair(it)){ + pmt_t it = cdr(x); + while (is_pair(it)){ length++; - it = pmt_cdr(it); + it = cdr(it); } - if (pmt_is_null(it)) + if (is_null(it)) return length; // not a proper list - throw pmt_wrong_type("pmt_length", x); + throw wrong_type("pmt_length", x); } // FIXME dictionary length (number of entries) - throw pmt_wrong_type("pmt_length", x); + throw wrong_type("pmt_length", x); } pmt_t -pmt_assq(pmt_t obj, pmt_t alist) +assq(pmt_t obj, pmt_t alist) { - while (pmt_is_pair(alist)){ - pmt_t p = pmt_car(alist); - if (!pmt_is_pair(p)) // malformed alist + while (is_pair(alist)){ + pmt_t p = car(alist); + if (!is_pair(p)) // malformed alist return PMT_F; - if (pmt_eq(obj, pmt_car(p))) + if (eq(obj, car(p))) return p; - alist = pmt_cdr(alist); + alist = cdr(alist); } return PMT_F; } @@ -1121,14 +1128,14 @@ pmt_assq(pmt_t obj, pmt_t alist) * This avoids a bunch of shared_pointer reference count manipulation. */ pmt_t -pmt_assv_raw(pmt_base *obj, pmt_base *alist) +assv_raw(pmt_base *obj, pmt_base *alist) { while (alist->is_pair()){ pmt_base *p = ((pmt_pair *)alist)->d_car.get(); if (!p->is_pair()) // malformed alist return PMT_F; - if (pmt_eqv_raw(obj, ((pmt_pair *)p)->d_car.get())) + if (eqv_raw(obj, ((pmt_pair *)p)->d_car.get())) return ((pmt_pair *)alist)->d_car; alist = (((pmt_pair *)alist)->d_cdr).get(); @@ -1139,25 +1146,25 @@ pmt_assv_raw(pmt_base *obj, pmt_base *alist) #if 1 pmt_t -pmt_assv(pmt_t obj, pmt_t alist) +assv(pmt_t obj, pmt_t alist) { - return pmt_assv_raw(obj.get(), alist.get()); + return assv_raw(obj.get(), alist.get()); } #else pmt_t -pmt_assv(pmt_t obj, pmt_t alist) +assv(pmt_t obj, pmt_t alist) { - while (pmt_is_pair(alist)){ - pmt_t p = pmt_car(alist); - if (!pmt_is_pair(p)) // malformed alist + while (is_pair(alist)){ + pmt_t p = car(alist); + if (!is_pair(p)) // malformed alist return PMT_F; - if (pmt_eqv(obj, pmt_car(p))) + if (eqv(obj, car(p))) return p; - alist = pmt_cdr(alist); + alist = cdr(alist); } return PMT_F; } @@ -1166,184 +1173,184 @@ pmt_assv(pmt_t obj, pmt_t alist) pmt_t -pmt_assoc(pmt_t obj, pmt_t alist) +assoc(pmt_t obj, pmt_t alist) { - while (pmt_is_pair(alist)){ - pmt_t p = pmt_car(alist); - if (!pmt_is_pair(p)) // malformed alist + while (is_pair(alist)){ + pmt_t p = car(alist); + if (!is_pair(p)) // malformed alist return PMT_F; - if (pmt_equal(obj, pmt_car(p))) + if (equal(obj, car(p))) return p; - alist = pmt_cdr(alist); + alist = cdr(alist); } return PMT_F; } pmt_t -pmt_map(pmt_t proc(const pmt_t&), pmt_t list) +map(pmt_t proc(const pmt_t&), pmt_t list) { pmt_t r = PMT_NIL; - while(pmt_is_pair(list)){ - r = pmt_cons(proc(pmt_car(list)), r); - list = pmt_cdr(list); + while(is_pair(list)){ + r = cons(proc(car(list)), r); + list = cdr(list); } - return pmt_reverse_x(r); + return reverse_x(r); } pmt_t -pmt_reverse(pmt_t listx) +reverse(pmt_t listx) { pmt_t list = listx; pmt_t r = PMT_NIL; - while(pmt_is_pair(list)){ - r = pmt_cons(pmt_car(list), r); - list = pmt_cdr(list); + while(is_pair(list)){ + r = cons(car(list), r); + list = cdr(list); } - if (pmt_is_null(list)) + if (is_null(list)) return r; else - throw pmt_wrong_type("pmt_reverse", listx); + throw wrong_type("pmt_reverse", listx); } pmt_t -pmt_reverse_x(pmt_t list) +reverse_x(pmt_t list) { // FIXME do it destructively - return pmt_reverse(list); + return reverse(list); } pmt_t -pmt_nth(size_t n, pmt_t list) +nth(size_t n, pmt_t list) { - pmt_t t = pmt_nthcdr(n, list); - if (pmt_is_pair(t)) - return pmt_car(t); + pmt_t t = nthcdr(n, list); + if (is_pair(t)) + return car(t); else return PMT_NIL; } pmt_t -pmt_nthcdr(size_t n, pmt_t list) +nthcdr(size_t n, pmt_t list) { - if (!(pmt_is_pair(list) || pmt_is_null(list))) - throw pmt_wrong_type("pmt_nthcdr", list); + if (!(is_pair(list) || is_null(list))) + throw wrong_type("pmt_nthcdr", list); while (n > 0){ - if (pmt_is_pair(list)){ - list = pmt_cdr(list); + if (is_pair(list)){ + list = cdr(list); n--; continue; } - if (pmt_is_null(list)) + if (is_null(list)) return PMT_NIL; else - throw pmt_wrong_type("pmt_nthcdr: not a LIST", list); + throw wrong_type("pmt_nthcdr: not a LIST", list); } return list; } pmt_t -pmt_memq(pmt_t obj, pmt_t list) +memq(pmt_t obj, pmt_t list) { - while (pmt_is_pair(list)){ - if (pmt_eq(obj, pmt_car(list))) + while (is_pair(list)){ + if (eq(obj, car(list))) return list; - list = pmt_cdr(list); + list = cdr(list); } return PMT_F; } pmt_t -pmt_memv(pmt_t obj, pmt_t list) +memv(pmt_t obj, pmt_t list) { - while (pmt_is_pair(list)){ - if (pmt_eqv(obj, pmt_car(list))) + while (is_pair(list)){ + if (eqv(obj, car(list))) return list; - list = pmt_cdr(list); + list = cdr(list); } return PMT_F; } pmt_t -pmt_member(pmt_t obj, pmt_t list) +member(pmt_t obj, pmt_t list) { - while (pmt_is_pair(list)){ - if (pmt_equal(obj, pmt_car(list))) + while (is_pair(list)){ + if (equal(obj, car(list))) return list; - list = pmt_cdr(list); + list = cdr(list); } return PMT_F; } bool -pmt_subsetp(pmt_t list1, pmt_t list2) +subsetp(pmt_t list1, pmt_t list2) { - while (pmt_is_pair(list1)){ - pmt_t p = pmt_car(list1); - if (pmt_is_false(pmt_memv(p, list2))) + while (is_pair(list1)){ + pmt_t p = car(list1); + if (is_false(memv(p, list2))) return false; - list1 = pmt_cdr(list1); + list1 = cdr(list1); } return true; } pmt_t -pmt_list1(const pmt_t& x1) +list1(const pmt_t& x1) { - return pmt_cons(x1, PMT_NIL); + return cons(x1, PMT_NIL); } pmt_t -pmt_list2(const pmt_t& x1, const pmt_t& x2) +list2(const pmt_t& x1, const pmt_t& x2) { - return pmt_cons(x1, pmt_cons(x2, PMT_NIL)); + return cons(x1, cons(x2, PMT_NIL)); } pmt_t -pmt_list3(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3) +list3(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3) { - return pmt_cons(x1, pmt_cons(x2, pmt_cons(x3, PMT_NIL))); + return cons(x1, cons(x2, cons(x3, PMT_NIL))); } pmt_t -pmt_list4(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4) +list4(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4) { - return pmt_cons(x1, pmt_cons(x2, pmt_cons(x3, pmt_cons(x4, PMT_NIL)))); + return cons(x1, cons(x2, cons(x3, cons(x4, PMT_NIL)))); } pmt_t -pmt_list5(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5) +list5(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5) { - return pmt_cons(x1, pmt_cons(x2, pmt_cons(x3, pmt_cons(x4, pmt_cons(x5, PMT_NIL))))); + return cons(x1, cons(x2, cons(x3, cons(x4, cons(x5, PMT_NIL))))); } pmt_t -pmt_list6(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5, const pmt_t& x6) +list6(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5, const pmt_t& x6) { - return pmt_cons(x1, pmt_cons(x2, pmt_cons(x3, pmt_cons(x4, pmt_cons(x5, pmt_cons(x6, PMT_NIL)))))); + return cons(x1, cons(x2, cons(x3, cons(x4, cons(x5, cons(x6, PMT_NIL)))))); } pmt_t -pmt_list_add(pmt_t list, const pmt_t& item) +list_add(pmt_t list, const pmt_t& item) { - return pmt_reverse(pmt_cons(item, pmt_reverse(list))); + return reverse(cons(item, reverse(list))); } pmt_t -pmt_list_rm(pmt_t list, const pmt_t& item) +list_rm(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 pmt_cons(left, pmt_list_rm(right, item)); + if(is_pair(list)){ + pmt_t left = car(list); + pmt_t right = cdr(list); + if(!equal(left, item)){ + return cons(left, list_rm(right, item)); } else { - return pmt_list_rm(right, item); + return list_rm(right, item); } } else { return list; @@ -1351,65 +1358,65 @@ pmt_list_rm(pmt_t list, const pmt_t& item) } bool -pmt_list_has(pmt_t list, const pmt_t& item) +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)) + if(is_pair(list)){ + pmt_t left = car(list); + pmt_t right = cdr(list); + if(equal(left,item)) return true; - return pmt_list_has(right, item); + return list_has(right, item); } else { - if(pmt_is_null(list)) + if(is_null(list)) return false; throw std::runtime_error("list contains invalid format!"); } } pmt_t -pmt_caar(pmt_t pair) +caar(pmt_t pair) { - return (pmt_car(pmt_car(pair))); + return (car(car(pair))); } pmt_t -pmt_cadr(pmt_t pair) +cadr(pmt_t pair) { - return pmt_car(pmt_cdr(pair)); + return car(cdr(pair)); } pmt_t -pmt_cdar(pmt_t pair) +cdar(pmt_t pair) { - return pmt_cdr(pmt_car(pair)); + return cdr(car(pair)); } pmt_t -pmt_cddr(pmt_t pair) +cddr(pmt_t pair) { - return pmt_cdr(pmt_cdr(pair)); + return cdr(cdr(pair)); } pmt_t -pmt_caddr(pmt_t pair) +caddr(pmt_t pair) { - return pmt_car(pmt_cdr(pmt_cdr(pair))); + return car(cdr(cdr(pair))); } pmt_t -pmt_cadddr(pmt_t pair) +cadddr(pmt_t pair) { - return pmt_car(pmt_cdr(pmt_cdr(pmt_cdr(pair)))); + return car(cdr(cdr(cdr(pair)))); } bool -pmt_is_eof_object(pmt_t obj) +is_eof_object(pmt_t obj) { - return pmt_eq(obj, PMT_EOF); + return eq(obj, PMT_EOF); } void -pmt_dump_sizeof() +dump_sizeof() { printf("sizeof(pmt_t) = %3zd\n", sizeof(pmt_t)); printf("sizeof(pmt_base) = %3zd\n", sizeof(pmt_base)); diff --git a/gruel/src/lib/pmt/pmt_io.cc b/gruel/src/lib/pmt/pmt_io.cc index 4bac4a0ecb..2e853b9147 100644 --- a/gruel/src/lib/pmt/pmt_io.cc +++ b/gruel/src/lib/pmt/pmt_io.cc @@ -31,84 +31,84 @@ namespace pmt { static void -pmt_write_list_tail(pmt_t obj, std::ostream &port) +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 + write(car(obj), port); // write the car + obj = cdr(obj); // step to cdr - if (pmt_is_null(obj)) // () + if (is_null(obj)) // () port << ")"; - else if (pmt_is_pair(obj)){ // normal list + else if (is_pair(obj)){ // normal list port << " "; - pmt_write_list_tail(obj, port); + write_list_tail(obj, port); } else { // dotted pair port << " . "; - pmt_write(obj, port); + write(obj, port); port << ")"; } } void -pmt_write(pmt_t obj, std::ostream &port) +write(pmt_t obj, std::ostream &port) { - if (pmt_is_bool(obj)){ - if (pmt_is_true(obj)) + if (is_bool(obj)){ + if (is_true(obj)) port << "#t"; else port << "#f"; } - else if (pmt_is_symbol(obj)){ - port << pmt_symbol_to_string(obj); + else if (is_symbol(obj)){ + port << symbol_to_string(obj); } - 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)){ - std::complex<double> c = pmt_to_complex(obj); + else if (is_number(obj)){ + if (is_integer(obj)) + port << to_long(obj); + else if (is_uint64(obj)) + port << to_uint64(obj); + else if (is_real(obj)) + port << to_double(obj); + else if (is_complex(obj)){ + std::complex<double> c = to_complex(obj); port << c.real() << '+' << c.imag() << 'i'; } else goto error; } - else if (pmt_is_null(obj)){ + else if (is_null(obj)){ port << "()"; } - else if (pmt_is_pair(obj)){ + else if (is_pair(obj)){ port << "("; - pmt_write_list_tail(obj, port); + write_list_tail(obj, port); } - else if (pmt_is_tuple(obj)){ + else if (is_tuple(obj)){ port << "{"; - size_t len = pmt_length(obj); + size_t len = length(obj); if (len > 0){ - port << pmt_tuple_ref(obj, 0); + port << tuple_ref(obj, 0); for (size_t i = 1; i < len; i++) - port << " " << pmt_tuple_ref(obj, i); + port << " " << tuple_ref(obj, i); } port << "}"; } - else if (pmt_is_vector(obj)){ + else if (is_vector(obj)){ port << "#("; - size_t len = pmt_length(obj); + size_t len = length(obj); if (len > 0){ - port << pmt_vector_ref(obj, 0); + port << vector_ref(obj, 0); for (size_t i = 1; i < len; i++) - port << " " << pmt_vector_ref(obj, i); + port << " " << vector_ref(obj, i); } port << ")"; } - else if (pmt_is_dict(obj)){ + else if (is_dict(obj)){ // FIXME // port << "#<dict " << obj << ">"; port << "#<dict>"; } - else if (pmt_is_uniform_vector(obj)){ + else if (is_uniform_vector(obj)){ // FIXME // port << "#<uniform-vector " << obj << ">"; port << "#<uniform-vector>"; @@ -123,12 +123,12 @@ pmt_write(pmt_t obj, std::ostream &port) std::ostream& operator<<(std::ostream &os, pmt_t obj) { - pmt_write(obj, os); + write(obj, os); return os; } std::string -pmt_write_string(pmt_t obj) +write_string(pmt_t obj) { std::ostringstream s; s << obj; @@ -136,33 +136,33 @@ pmt_write_string(pmt_t obj) } pmt_t -pmt_read(std::istream &port) +read(std::istream &port) { - throw pmt_notimplemented("notimplemented: pmt_read", PMT_NIL); + throw notimplemented("notimplemented: pmt::read", PMT_NIL); } void -pmt_serialize(pmt_t obj, std::ostream &sink) +serialize(pmt_t obj, std::ostream &sink) { - throw pmt_notimplemented("notimplemented: pmt_serialize", obj); + throw notimplemented("notimplemented: pmt::serialize", obj); } /*! * \brief Create obj from portable byte-serial representation */ pmt_t -pmt_deserialize(std::istream &source) +deserialize(std::istream &source) { - throw pmt_notimplemented("notimplemented: pmt_deserialize", PMT_NIL); + throw notimplemented("notimplemented: pmt::deserialize", PMT_NIL); } } /* namespace pmt */ void -pmt::pmt_print(pmt_t v) +pmt::print(pmt_t v) { - std::cout << pmt_write_string(v) << std::endl; + std::cout << write_string(v) << std::endl; } diff --git a/gruel/src/lib/pmt/pmt_serialize.cc b/gruel/src/lib/pmt/pmt_serialize.cc index 24be6b772c..2c74f30b01 100644 --- a/gruel/src/lib/pmt/pmt_serialize.cc +++ b/gruel/src/lib/pmt/pmt_serialize.cc @@ -219,15 +219,16 @@ deserialize_tuple(pmt_t *tuple, std::streambuf &sb) uint32_t nitems; bool ok = deserialize_untagged_u32(&nitems, sb); pmt_t list(PMT_NIL); - for(uint32_t i=0; i<nitems; i++){ - pmt_t item = pmt_deserialize( sb ); - if(pmt_eq(list, PMT_NIL)){ - list = pmt_list1(item); - } else { - list = pmt_list_add(list, item); - } + for(uint32_t i=0; i<nitems; i++) { + pmt_t item = deserialize(sb); + if(eq(list, PMT_NIL)) { + list = list1(item); + } + else { + list = list_add(list, item); + } } - (*tuple) = pmt_to_tuple(list); + (*tuple) = to_tuple(list); return ok; } @@ -238,92 +239,93 @@ deserialize_tuple(pmt_t *tuple, std::streambuf &sb) * N.B., Circular structures cause infinite recursion. */ bool -pmt_serialize(pmt_t obj, std::streambuf &sb) +serialize(pmt_t obj, std::streambuf &sb) { bool ok = true; tail_recursion: - if (pmt_is_bool(obj)){ - if (pmt_eq(obj, PMT_T)) + if(is_bool(obj)) { + if(eq(obj, PMT_T)) return serialize_untagged_u8(PST_TRUE, sb); else return serialize_untagged_u8(PST_FALSE, sb); } - if (pmt_is_null(obj)) + if(is_null(obj)) return serialize_untagged_u8(PST_NULL, sb); - if (pmt_is_symbol(obj)){ - const std::string s = pmt_symbol_to_string(obj); + if(is_symbol(obj)) { + const std::string s = symbol_to_string(obj); size_t len = s.size(); ok = serialize_untagged_u8(PST_SYMBOL, sb); ok &= serialize_untagged_u16(len, sb); - for (size_t i = 0; i < len; i++) + for(size_t i = 0; i < len; i++) ok &= serialize_untagged_u8(s[i], sb); return ok; } - if (pmt_is_pair(obj)){ + if(is_pair(obj)) { ok = serialize_untagged_u8(PST_PAIR, sb); - ok &= pmt_serialize(pmt_car(obj), sb); - if (!ok) + ok &= serialize(car(obj), sb); + if(!ok) return false; - obj = pmt_cdr(obj); + obj = cdr(obj); goto tail_recursion; } - if (pmt_is_number(obj)){ + if(is_number(obj)) { - if (pmt_is_uint64(obj)){ - uint64_t i = pmt_to_uint64(obj); + if(is_uint64(obj)) { + uint64_t i = to_uint64(obj); ok = serialize_untagged_u8(PST_UINT64, sb); ok &= serialize_untagged_u64(i, sb); return ok; - } else - if (pmt_is_integer(obj)){ - long i = pmt_to_long(obj); - if (sizeof(long) > 4){ - if (i < -2147483647 || i > 2147483647) - throw pmt_notimplemented("pmt_serialize (64-bit integers)", obj); + } + else { + if(is_integer(obj)) { + long i = to_long(obj); + if(sizeof(long) > 4) { + if(i < -2147483647 || i > 2147483647) + throw notimplemented("pmt::serialize (64-bit integers)", obj); + } + ok = serialize_untagged_u8(PST_INT32, sb); + ok &= serialize_untagged_u32(i, sb); + return ok; } - ok = serialize_untagged_u8(PST_INT32, sb); - ok &= serialize_untagged_u32(i, sb); - return ok; } - if (pmt_is_real(obj)){ - float i = pmt_to_double(obj); + if(is_real(obj)) { + float i = to_double(obj); ok = serialize_untagged_u8(PST_DOUBLE, sb); ok &= serialize_untagged_f64(i, sb); return ok; } - if (pmt_is_complex(obj)){ - std::complex<double> i = pmt_to_complex(obj); + if(is_complex(obj)) { + std::complex<double> i = to_complex(obj); ok = serialize_untagged_u8(PST_COMPLEX, sb); ok &= serialize_untagged_f64(i.real(), sb); ok &= serialize_untagged_f64(i.imag(), sb); return ok; } - } - if (pmt_is_vector(obj)) { - size_t vec_len = pmt::pmt_length(obj); + if(is_vector(obj)) { + size_t vec_len = pmt::length(obj); ok = serialize_untagged_u8(PST_VECTOR, sb); ok &= serialize_untagged_u32(vec_len, sb); for(size_t i=0; i<vec_len; i++) { - ok &= pmt_serialize(pmt_vector_ref(obj, i), sb); + ok &= serialize(vector_ref(obj, i), sb); } return ok; } - if (pmt_is_uniform_vector(obj)) { + if(is_uniform_vector(obj)) { size_t npad = 1; - size_t vec_len = pmt::pmt_length(obj); + size_t vec_len = pmt::length(obj); - if(pmt_is_u8vector(obj)) { + if(is_u8vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_U8, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -332,12 +334,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_u8(pmt_u8vector_ref(obj, i), sb); + ok &= serialize_untagged_u8(u8vector_ref(obj, i), sb); } return ok; } - if(pmt_is_s8vector(obj)) { + if(is_s8vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_S8, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -346,12 +348,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_u8(pmt_s8vector_ref(obj, i), sb); + ok &= serialize_untagged_u8(s8vector_ref(obj, i), sb); } return ok; } - if(pmt_is_u16vector(obj)) { + if(is_u16vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_U16, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -360,12 +362,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_u16(pmt_u16vector_ref(obj, i), sb); + ok &= serialize_untagged_u16(u16vector_ref(obj, i), sb); } return ok; } - if(pmt_is_s16vector(obj)) { + if(is_s16vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_S16, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -374,12 +376,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_u16(pmt_s16vector_ref(obj, i), sb); + ok &= serialize_untagged_u16(s16vector_ref(obj, i), sb); } return ok; } - if(pmt_is_u32vector(obj)) { + if(is_u32vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_U32, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -388,12 +390,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_u32(pmt_u32vector_ref(obj, i), sb); + ok &= serialize_untagged_u32(u32vector_ref(obj, i), sb); } return ok; } - if(pmt_is_s32vector(obj)) { + if(is_s32vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_S32, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -402,12 +404,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_u32(pmt_s32vector_ref(obj, i), sb); + ok &= serialize_untagged_u32(s32vector_ref(obj, i), sb); } return ok; } - if(pmt_is_u64vector(obj)) { + if(is_u64vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_U64, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -416,12 +418,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_u64(pmt_u64vector_ref(obj, i), sb); + ok &= serialize_untagged_u64(u64vector_ref(obj, i), sb); } return ok; } - if(pmt_is_s64vector(obj)) { + if(is_s64vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_S64, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -430,12 +432,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_u64(pmt_s64vector_ref(obj, i), sb); + ok &= serialize_untagged_u64(s64vector_ref(obj, i), sb); } return ok; } - if(pmt_is_f32vector(obj)) { + if(is_f32vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_F32, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -444,12 +446,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_f64(pmt_f32vector_ref(obj, i), sb); + ok &= serialize_untagged_f64(f32vector_ref(obj, i), sb); } return ok; } - if(pmt_is_f64vector(obj)) { + if(is_f64vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_F64, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -458,12 +460,12 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - ok &= serialize_untagged_f64(pmt_f64vector_ref(obj, i), sb); + ok &= serialize_untagged_f64(f64vector_ref(obj, i), sb); } return ok; } - if(pmt_is_c32vector(obj)) { + if(is_c32vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_C32, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -472,14 +474,14 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - std::complex<float> c = pmt_c32vector_ref(obj, i); + std::complex<float> c = c32vector_ref(obj, i); ok &= serialize_untagged_f64(c.real(), sb); ok &= serialize_untagged_f64(c.imag(), sb); } return ok; } - if(pmt_is_c64vector(obj)) { + if(is_c64vector(obj)) { ok = serialize_untagged_u8(PST_UNIFORM_VECTOR, sb); ok &= serialize_untagged_u8(UVI_C64, sb); ok &= serialize_untagged_u32(vec_len, sb); @@ -488,7 +490,7 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) ok &= serialize_untagged_u8(0, sb); } for(size_t i=0; i<vec_len; i++) { - std::complex<double> c = pmt_c64vector_ref(obj, i); + std::complex<double> c = c64vector_ref(obj, i); ok &= serialize_untagged_f64(c.real(), sb); ok &= serialize_untagged_f64(c.imag(), sb); } @@ -496,21 +498,21 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) } } - if (pmt_is_dict(obj)) - throw pmt_notimplemented("pmt_serialize (dict)", obj); + if (is_dict(obj)) + throw notimplemented("pmt::serialize (dict)", obj); - if (pmt_is_tuple(obj)){ - size_t tuple_len = pmt::pmt_length(obj); + if (is_tuple(obj)){ + size_t tuple_len = pmt::length(obj); ok = serialize_untagged_u8(PST_TUPLE, sb); ok &= serialize_untagged_u32(tuple_len, sb); for(size_t i=0; i<tuple_len; i++){ - ok &= pmt_serialize(pmt_tuple_ref(obj, i), sb); + ok &= serialize(tuple_ref(obj, i), sb); } return ok; } - //throw pmt_notimplemented("pmt_serialize (tuple)", obj); + //throw pmt_notimplemented("pmt::serialize (tuple)", obj); - throw pmt_notimplemented("pmt_serialize (?)", obj); + throw notimplemented("pmt::serialize (?)", obj); } /* @@ -520,7 +522,7 @@ pmt_serialize(pmt_t obj, std::streambuf &sb) * Throws exception on malformed input. */ pmt_t -pmt_deserialize(std::streambuf &sb) +deserialize(std::streambuf &sb) { uint8_t tag; uint8_t u8; @@ -547,21 +549,21 @@ pmt_deserialize(std::streambuf &sb) if (!deserialize_untagged_u16(&u16, sb)) goto error; if (u16 > sizeof(tmpbuf)) - throw pmt_notimplemented("pmt_deserialize: very long symbol", - PMT_F); + throw notimplemented("pmt::deserialize: very long symbol", + PMT_F); if (sb.sgetn(tmpbuf, u16) != u16) goto error; - return pmt_intern(std::string(tmpbuf, u16)); + return intern(std::string(tmpbuf, u16)); case PST_INT32: if (!deserialize_untagged_u32(&u32, sb)) goto error; - return pmt_from_long((int32_t) u32); + return from_long((int32_t) u32); case PST_UINT64: if(!deserialize_untagged_u64(&u64, sb)) goto error; - return pmt_from_uint64(u64); + return from_uint64(u64); case PST_PAIR: return parse_pair(sb); @@ -569,14 +571,14 @@ pmt_deserialize(std::streambuf &sb) case PST_DOUBLE: if(!deserialize_untagged_f64(&f64, sb)) goto error; - return pmt_from_double( f64 ); + return from_double( f64 ); case PST_COMPLEX: { double r,i; if(!deserialize_untagged_f64(&r, sb) && !deserialize_untagged_f64(&i, sb)) goto error; - return pmt_make_rectangular( r,i ); + return make_rectangular( r,i ); } case PST_TUPLE: @@ -593,10 +595,10 @@ pmt_deserialize(std::streambuf &sb) uint32_t nitems; if(!deserialize_untagged_u32(&nitems, sb)) goto error; - pmt_t vec = pmt_make_vector(nitems, PMT_NIL); + pmt_t vec = make_vector(nitems, PMT_NIL); for(uint32_t i=0; i<nitems; i++) { - pmt_t item = pmt_deserialize(sb); - pmt_vector_set(vec, i, item); + pmt_t item = deserialize(sb); + vector_set(vec, i, item); } return vec; } @@ -619,149 +621,150 @@ pmt_deserialize(std::streambuf &sb) switch(utag) { case(UVI_U8): { - pmt_t vec = pmt_make_u8vector(nitems, 0); + pmt_t vec = make_u8vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_u8(&u8, sb); - pmt_u8vector_set(vec, i, u8); + u8vector_set(vec, i, u8); } return vec; } case(UVI_S8): { - pmt_t vec = pmt_make_s8vector(nitems, 0); + pmt_t vec = make_s8vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_u8(&u8, sb); - pmt_s8vector_set(vec, i, u8); + s8vector_set(vec, i, u8); } return vec; } case(UVI_U16): { - pmt_t vec = pmt_make_u16vector(nitems, 0); + pmt_t vec = make_u16vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_u16(&u16, sb); - pmt_u16vector_set(vec, i, u16); + u16vector_set(vec, i, u16); } return vec; } case(UVI_S16): { - pmt_t vec = pmt_make_s16vector(nitems, 0); + pmt_t vec = make_s16vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_u16(&u16, sb); - pmt_s16vector_set(vec, i, u16); + s16vector_set(vec, i, u16); } return vec; } case(UVI_U32): { - pmt_t vec = pmt_make_u32vector(nitems, 0); + pmt_t vec = make_u32vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_u32(&u32, sb); - pmt_u32vector_set(vec, i, u32); + u32vector_set(vec, i, u32); } return vec; } case(UVI_S32): { - pmt_t vec = pmt_make_s32vector(nitems, 0); + pmt_t vec = make_s32vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_u32(&u32, sb); - pmt_s32vector_set(vec, i, u32); + s32vector_set(vec, i, u32); } return vec; } case(UVI_U64): { - pmt_t vec = pmt_make_u64vector(nitems, 0); + pmt_t vec = make_u64vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_u64(&u64, sb); - pmt_u64vector_set(vec, i, u64); + u64vector_set(vec, i, u64); } return vec; } case(UVI_S64): { - pmt_t vec = pmt_make_s64vector(nitems, 0); + pmt_t vec = make_s64vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_u64(&u64, sb); - pmt_s64vector_set(vec, i, u64); + s64vector_set(vec, i, u64); } return vec; } case(UVI_F32): { - pmt_t vec = pmt_make_f32vector(nitems, 0); + pmt_t vec = make_f32vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_f64(&f64, sb); - pmt_f32vector_set(vec, i, static_cast<float>(f64)); + f32vector_set(vec, i, static_cast<float>(f64)); } return vec; } case(UVI_F64): { - pmt_t vec = pmt_make_f64vector(nitems, 0); + pmt_t vec = make_f64vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { deserialize_untagged_f64(&f64, sb); - pmt_f64vector_set(vec, i, f64); + f64vector_set(vec, i, f64); } return vec; } case(UVI_C32): { - pmt_t vec = pmt_make_c32vector(nitems, 0); + pmt_t vec = make_c32vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { float re, im; deserialize_untagged_f64(&f64, sb); re = static_cast<float>(f64); deserialize_untagged_f64(&f64, sb); im = static_cast<float>(f64); - pmt_c32vector_set(vec, i, std::complex<float>(re, im)); + c32vector_set(vec, i, std::complex<float>(re, im)); } return vec; } case(UVI_C64): { - pmt_t vec = pmt_make_c64vector(nitems, 0); + pmt_t vec = make_c64vector(nitems, 0); for(uint32_t i=0; i<nitems; i++) { double re, im; deserialize_untagged_f64(&f64, sb); re = f64; deserialize_untagged_f64(&f64, sb); im = f64; - pmt_c64vector_set(vec, i, std::complex<double>(re, im)); + c64vector_set(vec, i, std::complex<double>(re, im)); } return vec; } default: - throw pmt_exception("pmt_deserialize: malformed input stream, tag value = ", - pmt_from_long(tag)); + throw exception("pmt::deserialize: malformed input stream, tag value = ", + from_long(tag)); } } case PST_DICT: case PST_COMMENT: - throw pmt_notimplemented("pmt_deserialize: tag value = ", - pmt_from_long(tag)); + throw notimplemented("pmt::deserialize: tag value = ", + from_long(tag)); default: - throw pmt_exception("pmt_deserialize: malformed input stream, tag value = ", - pmt_from_long(tag)); + throw exception("pmt::deserialize: malformed input stream, tag value = ", + from_long(tag)); } error: - throw pmt_exception("pmt_deserialize: malformed input stream", PMT_F); + throw exception("pmt::deserialize: malformed input stream", PMT_F); } /* * provide a simple string accessor to the serialized pmt form */ -std::string pmt_serialize_str(pmt_t obj){ +std::string +serialize_str(pmt_t obj){ std::stringbuf sb; - pmt_serialize(obj, sb); + serialize(obj, sb); return sb.str(); } @@ -769,9 +772,10 @@ std::string pmt_serialize_str(pmt_t obj){ /* * provide a simple string accessor to the deserialized pmt form */ -pmt_t pmt_deserialize_str(std::string s){ +pmt_t +deserialize_str(std::string s){ std::stringbuf sb(s); - return pmt_deserialize(sb); + return deserialize(sb); } @@ -792,17 +796,17 @@ parse_pair(std::streambuf &sb) // lastnptr = PMT_NIL; while (1){ - expr = pmt_deserialize(sb); // read the car + expr = deserialize(sb); // read the car - nptr = pmt_cons(expr, PMT_NIL); // build new cell - if (pmt_is_null(lastnptr)) + nptr = cons(expr, PMT_NIL); // build new cell + if (is_null(lastnptr)) val = nptr; else - pmt_set_cdr(lastnptr, nptr); + set_cdr(lastnptr, nptr); lastnptr = nptr; if (!deserialize_untagged_u8(&tag, sb)) // get tag of cdr - throw pmt_exception("pmt_deserialize: malformed input stream", PMT_F); + throw exception("pmt::deserialize: malformed input stream", PMT_F); if (tag == PST_PAIR) continue; // keep on looping... @@ -816,14 +820,14 @@ parse_pair(std::streambuf &sb) // default: push tag back and use pmt_deserialize to get the cdr // sb.sungetc(); - expr = pmt_deserialize(sb); + expr = deserialize(sb); break; } // // At this point, expr contains the value of the final cdr in the list. // - pmt_set_cdr(lastnptr, expr); + set_cdr(lastnptr, expr); return val; } diff --git a/gruel/src/lib/pmt/qa_pmt_prims.cc b/gruel/src/lib/pmt/qa_pmt_prims.cc index 3ae4d70b6d..85d29cf78f 100644 --- a/gruel/src/lib/pmt/qa_pmt_prims.cc +++ b/gruel/src/lib/pmt/qa_pmt_prims.cc @@ -28,35 +28,33 @@ #include <cstring> #include <sstream> -using namespace pmt; - void qa_pmt_prims::test_symbols() { - CPPUNIT_ASSERT(!pmt_is_symbol(PMT_T)); - CPPUNIT_ASSERT(!pmt_is_symbol(PMT_F)); - CPPUNIT_ASSERT_THROW(pmt_symbol_to_string(PMT_F), pmt_wrong_type); - - pmt_t sym1 = mp("test"); - CPPUNIT_ASSERT(pmt_is_symbol(sym1)); - CPPUNIT_ASSERT_EQUAL(std::string("test"), pmt_symbol_to_string(sym1)); - CPPUNIT_ASSERT(pmt_is_true(sym1)); - CPPUNIT_ASSERT(!pmt_is_false(sym1)); - - pmt_t sym2 = mp("foo"); - pmt_t sym3 = mp("test"); + CPPUNIT_ASSERT(!pmt::is_symbol(pmt::PMT_T)); + CPPUNIT_ASSERT(!pmt::is_symbol(pmt::PMT_F)); + CPPUNIT_ASSERT_THROW(pmt::symbol_to_string(pmt::PMT_F), pmt::wrong_type); + + pmt::pmt_t sym1 = pmt::mp("test"); + CPPUNIT_ASSERT(pmt::is_symbol(sym1)); + CPPUNIT_ASSERT_EQUAL(std::string("test"), pmt::symbol_to_string(sym1)); + CPPUNIT_ASSERT(pmt::is_true(sym1)); + CPPUNIT_ASSERT(!pmt::is_false(sym1)); + + pmt::pmt_t sym2 = pmt::mp("foo"); + pmt::pmt_t sym3 = pmt::mp("test"); CPPUNIT_ASSERT_EQUAL(sym1, sym3); CPPUNIT_ASSERT(sym1 != sym2); CPPUNIT_ASSERT(sym1 == sym3); static const int N = 2048; - std::vector<pmt_t> v1(N); - std::vector<pmt_t> v2(N); + std::vector<pmt::pmt_t> v1(N); + std::vector<pmt::pmt_t> v2(N); // generate a bunch of symbols for (int i = 0; i < N; i++){ std::string buf = str(boost::format("test-%d") % i); - v1[i] = mp(buf.c_str()); + v1[i] = pmt::mp(buf.c_str()); } // confirm that they are all unique @@ -67,7 +65,7 @@ qa_pmt_prims::test_symbols() // generate the same symbols again for (int i = 0; i < N; i++){ std::string buf = str(boost::format("test-%d") % i); - v2[i] = mp(buf.c_str()); + v2[i] = pmt::mp(buf.c_str()); } // confirm that we get the same ones back @@ -78,355 +76,355 @@ qa_pmt_prims::test_symbols() void qa_pmt_prims::test_booleans() { - pmt_t sym = mp("test"); - CPPUNIT_ASSERT(pmt_is_bool(PMT_T)); - CPPUNIT_ASSERT(pmt_is_bool(PMT_F)); - CPPUNIT_ASSERT(!pmt_is_bool(sym)); - CPPUNIT_ASSERT_EQUAL(pmt_from_bool(false), PMT_F); - CPPUNIT_ASSERT_EQUAL(pmt_from_bool(true), PMT_T); - CPPUNIT_ASSERT_EQUAL(false, pmt_to_bool(PMT_F)); - CPPUNIT_ASSERT_EQUAL(true, pmt_to_bool(PMT_T)); - CPPUNIT_ASSERT_THROW(pmt_to_bool(sym), pmt_wrong_type); + pmt::pmt_t sym = pmt::mp("test"); + CPPUNIT_ASSERT(pmt::is_bool(pmt::PMT_T)); + CPPUNIT_ASSERT(pmt::is_bool(pmt::PMT_F)); + CPPUNIT_ASSERT(!pmt::is_bool(sym)); + CPPUNIT_ASSERT_EQUAL(pmt::from_bool(false), pmt::PMT_F); + CPPUNIT_ASSERT_EQUAL(pmt::from_bool(true), pmt::PMT_T); + CPPUNIT_ASSERT_EQUAL(false, pmt::to_bool(pmt::PMT_F)); + CPPUNIT_ASSERT_EQUAL(true, pmt::to_bool(pmt::PMT_T)); + CPPUNIT_ASSERT_THROW(pmt::to_bool(sym), pmt::wrong_type); } void qa_pmt_prims::test_integers() { - pmt_t p1 = pmt_from_long(1); - pmt_t m1 = pmt_from_long(-1); - CPPUNIT_ASSERT(!pmt_is_integer(PMT_T)); - CPPUNIT_ASSERT(pmt_is_integer(p1)); - CPPUNIT_ASSERT(pmt_is_integer(m1)); - CPPUNIT_ASSERT_THROW(pmt_to_long(PMT_T), pmt_wrong_type); - CPPUNIT_ASSERT_EQUAL(-1L, pmt_to_long(m1)); - CPPUNIT_ASSERT_EQUAL(1L, pmt_to_long(p1)); + pmt::pmt_t p1 = pmt::from_long(1); + pmt::pmt_t m1 = pmt::from_long(-1); + CPPUNIT_ASSERT(!pmt::is_integer(pmt::PMT_T)); + CPPUNIT_ASSERT(pmt::is_integer(p1)); + CPPUNIT_ASSERT(pmt::is_integer(m1)); + CPPUNIT_ASSERT_THROW(pmt::to_long(pmt::PMT_T), pmt::wrong_type); + CPPUNIT_ASSERT_EQUAL(-1L, pmt::to_long(m1)); + CPPUNIT_ASSERT_EQUAL(1L, pmt::to_long(p1)); } void qa_pmt_prims::test_uint64s() { - pmt_t p1 = pmt_from_uint64((uint64_t)1); - pmt_t m1 = pmt_from_uint64((uint64_t)8589934592ULL); - CPPUNIT_ASSERT(!pmt_is_uint64(PMT_T)); - CPPUNIT_ASSERT(pmt_is_uint64(p1)); - CPPUNIT_ASSERT(pmt_is_uint64(m1)); - CPPUNIT_ASSERT_THROW(pmt_to_uint64(PMT_T), pmt_wrong_type); - CPPUNIT_ASSERT_EQUAL((uint64_t)8589934592ULL, (uint64_t)pmt_to_uint64(m1)); - CPPUNIT_ASSERT_EQUAL((uint64_t)1ULL, (uint64_t)pmt_to_uint64(p1)); + pmt::pmt_t p1 = pmt::from_uint64((uint64_t)1); + pmt::pmt_t m1 = pmt::from_uint64((uint64_t)8589934592ULL); + CPPUNIT_ASSERT(!pmt::is_uint64(pmt::PMT_T)); + CPPUNIT_ASSERT(pmt::is_uint64(p1)); + CPPUNIT_ASSERT(pmt::is_uint64(m1)); + CPPUNIT_ASSERT_THROW(pmt::to_uint64(pmt::PMT_T), pmt::wrong_type); + CPPUNIT_ASSERT_EQUAL((uint64_t)8589934592ULL, (uint64_t)pmt::to_uint64(m1)); + CPPUNIT_ASSERT_EQUAL((uint64_t)1ULL, (uint64_t)pmt::to_uint64(p1)); } void qa_pmt_prims::test_reals() { - pmt_t p1 = pmt_from_double(1); - pmt_t m1 = pmt_from_double(-1); - CPPUNIT_ASSERT(!pmt_is_real(PMT_T)); - CPPUNIT_ASSERT(pmt_is_real(p1)); - CPPUNIT_ASSERT(pmt_is_real(m1)); - CPPUNIT_ASSERT_THROW(pmt_to_double(PMT_T), pmt_wrong_type); - CPPUNIT_ASSERT_EQUAL(-1.0, pmt_to_double(m1)); - CPPUNIT_ASSERT_EQUAL(1.0, pmt_to_double(p1)); - CPPUNIT_ASSERT_EQUAL(1.0, pmt_to_double(pmt_from_long(1))); + pmt::pmt_t p1 = pmt::from_double(1); + pmt::pmt_t m1 = pmt::from_double(-1); + CPPUNIT_ASSERT(!pmt::is_real(pmt::PMT_T)); + CPPUNIT_ASSERT(pmt::is_real(p1)); + CPPUNIT_ASSERT(pmt::is_real(m1)); + CPPUNIT_ASSERT_THROW(pmt::to_double(pmt::PMT_T), pmt::wrong_type); + CPPUNIT_ASSERT_EQUAL(-1.0, pmt::to_double(m1)); + CPPUNIT_ASSERT_EQUAL(1.0, pmt::to_double(p1)); + CPPUNIT_ASSERT_EQUAL(1.0, pmt::to_double(pmt::from_long(1))); } void qa_pmt_prims::test_complexes() { - pmt_t p1 = pmt_make_rectangular(2, -3); - pmt_t m1 = pmt_make_rectangular(-3, 2); - pmt_t p2 = pmt_from_complex(2, -3); - pmt_t m2 = pmt_from_complex(-3, 2); - pmt_t p3 = pmt_from_complex(std::complex<double>(2, -3)); - pmt_t m3 = pmt_from_complex(std::complex<double>(-3, 2)); - CPPUNIT_ASSERT(!pmt_is_complex(PMT_T)); - CPPUNIT_ASSERT(pmt_is_complex(p1)); - CPPUNIT_ASSERT(pmt_is_complex(m1)); - CPPUNIT_ASSERT(pmt_is_complex(p2)); - CPPUNIT_ASSERT(pmt_is_complex(m2)); - CPPUNIT_ASSERT(pmt_is_complex(p3)); - CPPUNIT_ASSERT(pmt_is_complex(m3)); - CPPUNIT_ASSERT_THROW(pmt_to_complex(PMT_T), pmt_wrong_type); - CPPUNIT_ASSERT_EQUAL(std::complex<double>(2, -3), pmt_to_complex(p1)); - CPPUNIT_ASSERT_EQUAL(std::complex<double>(-3, 2), pmt_to_complex(m1)); - CPPUNIT_ASSERT_EQUAL(std::complex<double>(2, -3), pmt_to_complex(p2)); - CPPUNIT_ASSERT_EQUAL(std::complex<double>(-3, 2), pmt_to_complex(m2)); - CPPUNIT_ASSERT_EQUAL(std::complex<double>(2, -3), pmt_to_complex(p3)); - CPPUNIT_ASSERT_EQUAL(std::complex<double>(-3, 2), pmt_to_complex(m3)); - CPPUNIT_ASSERT_EQUAL(std::complex<double>(1.0, 0), pmt_to_complex(pmt_from_long(1))); - CPPUNIT_ASSERT_EQUAL(std::complex<double>(1.0, 0), pmt_to_complex(pmt_from_double(1.0))); + pmt::pmt_t p1 = pmt::make_rectangular(2, -3); + pmt::pmt_t m1 = pmt::make_rectangular(-3, 2); + pmt::pmt_t p2 = pmt::from_complex(2, -3); + pmt::pmt_t m2 = pmt::from_complex(-3, 2); + pmt::pmt_t p3 = pmt::from_complex(std::complex<double>(2, -3)); + pmt::pmt_t m3 = pmt::from_complex(std::complex<double>(-3, 2)); + CPPUNIT_ASSERT(!pmt::is_complex(pmt::PMT_T)); + CPPUNIT_ASSERT(pmt::is_complex(p1)); + CPPUNIT_ASSERT(pmt::is_complex(m1)); + CPPUNIT_ASSERT(pmt::is_complex(p2)); + CPPUNIT_ASSERT(pmt::is_complex(m2)); + CPPUNIT_ASSERT(pmt::is_complex(p3)); + CPPUNIT_ASSERT(pmt::is_complex(m3)); + CPPUNIT_ASSERT_THROW(pmt::to_complex(pmt::PMT_T), pmt::wrong_type); + CPPUNIT_ASSERT_EQUAL(std::complex<double>(2, -3), pmt::to_complex(p1)); + CPPUNIT_ASSERT_EQUAL(std::complex<double>(-3, 2), pmt::to_complex(m1)); + CPPUNIT_ASSERT_EQUAL(std::complex<double>(2, -3), pmt::to_complex(p2)); + CPPUNIT_ASSERT_EQUAL(std::complex<double>(-3, 2), pmt::to_complex(m2)); + CPPUNIT_ASSERT_EQUAL(std::complex<double>(2, -3), pmt::to_complex(p3)); + CPPUNIT_ASSERT_EQUAL(std::complex<double>(-3, 2), pmt::to_complex(m3)); + CPPUNIT_ASSERT_EQUAL(std::complex<double>(1.0, 0), pmt::to_complex(pmt::from_long(1))); + CPPUNIT_ASSERT_EQUAL(std::complex<double>(1.0, 0), pmt::to_complex(pmt::from_double(1.0))); } void qa_pmt_prims::test_pairs() { - CPPUNIT_ASSERT(pmt_is_null(PMT_NIL)); - CPPUNIT_ASSERT(!pmt_is_pair(PMT_NIL)); - pmt_t s1 = mp("s1"); - pmt_t s2 = mp("s2"); - pmt_t s3 = mp("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); - pmt_set_cdr(c1, c2); - 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); - CPPUNIT_ASSERT_THROW(pmt_set_car(s1, PMT_NIL), pmt_wrong_type); - CPPUNIT_ASSERT_THROW(pmt_set_cdr(s1, PMT_NIL), pmt_wrong_type); + CPPUNIT_ASSERT(pmt::is_null(pmt::PMT_NIL)); + CPPUNIT_ASSERT(!pmt::is_pair(pmt::PMT_NIL)); + pmt::pmt_t s1 = pmt::mp("s1"); + pmt::pmt_t s2 = pmt::mp("s2"); + pmt::pmt_t s3 = pmt::mp("s3"); + + + CPPUNIT_ASSERT_EQUAL((size_t)0, pmt::length(pmt::PMT_NIL)); + CPPUNIT_ASSERT_THROW(pmt::length(s1), pmt::wrong_type); + CPPUNIT_ASSERT_THROW(pmt::length(pmt::from_double(42)), pmt::wrong_type); + + pmt::pmt_t c1 = pmt::cons(s1, pmt::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::PMT_NIL, pmt::cdr(c1)); + CPPUNIT_ASSERT_EQUAL((size_t) 1, pmt::length(c1)); + + pmt::pmt_t c3 = pmt::cons(s3, pmt::PMT_NIL); + pmt::pmt_t c2 = pmt::cons(s2, c3); + pmt::set_cdr(c1, c2); + 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::PMT_NIL), pmt::wrong_type); + CPPUNIT_ASSERT_THROW(pmt::car(pmt::PMT_NIL), pmt::wrong_type); + CPPUNIT_ASSERT_THROW(pmt::set_car(s1, pmt::PMT_NIL), pmt::wrong_type); + CPPUNIT_ASSERT_THROW(pmt::set_cdr(s1, pmt::PMT_NIL), pmt::wrong_type); } void qa_pmt_prims::test_vectors() { static const size_t N = 3; - pmt_t v1 = pmt_make_vector(N, PMT_NIL); - CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1)); - pmt_t s0 = mp("s0"); - pmt_t s1 = mp("s1"); - pmt_t s2 = mp("s2"); + pmt::pmt_t v1 = pmt::make_vector(N, pmt::PMT_NIL); + CPPUNIT_ASSERT_EQUAL(N, pmt::length(v1)); + pmt::pmt_t s0 = pmt::mp("s0"); + pmt::pmt_t s1 = pmt::mp("s1"); + pmt::pmt_t s2 = pmt::mp("s2"); - pmt_vector_set(v1, 0, s0); - pmt_vector_set(v1, 1, s1); - pmt_vector_set(v1, 2, s2); + pmt::vector_set(v1, 0, s0); + pmt::vector_set(v1, 1, s1); + pmt::vector_set(v1, 2, s2); - CPPUNIT_ASSERT_EQUAL(s0, pmt_vector_ref(v1, 0)); - CPPUNIT_ASSERT_EQUAL(s1, pmt_vector_ref(v1, 1)); - CPPUNIT_ASSERT_EQUAL(s2, pmt_vector_ref(v1, 2)); + CPPUNIT_ASSERT_EQUAL(s0, pmt::vector_ref(v1, 0)); + CPPUNIT_ASSERT_EQUAL(s1, pmt::vector_ref(v1, 1)); + CPPUNIT_ASSERT_EQUAL(s2, pmt::vector_ref(v1, 2)); - CPPUNIT_ASSERT_THROW(pmt_vector_ref(v1, N), pmt_out_of_range); - CPPUNIT_ASSERT_THROW(pmt_vector_set(v1, N, PMT_NIL), pmt_out_of_range); + CPPUNIT_ASSERT_THROW(pmt::vector_ref(v1, N), pmt::out_of_range); + CPPUNIT_ASSERT_THROW(pmt::vector_set(v1, N, pmt::PMT_NIL), pmt::out_of_range); - pmt_vector_fill(v1, s0); + pmt::vector_fill(v1, s0); for (size_t i = 0; i < N; i++) - CPPUNIT_ASSERT_EQUAL(s0, pmt_vector_ref(v1, i)); + CPPUNIT_ASSERT_EQUAL(s0, pmt::vector_ref(v1, i)); } static void -check_tuple(size_t len, const std::vector<pmt_t> &s, pmt_t t) +check_tuple(size_t len, const std::vector<pmt::pmt_t> &s, pmt::pmt_t t) { - CPPUNIT_ASSERT_EQUAL(true, pmt_is_tuple(t)); - CPPUNIT_ASSERT_EQUAL(len, pmt_length(t)); + CPPUNIT_ASSERT_EQUAL(true, pmt::is_tuple(t)); + CPPUNIT_ASSERT_EQUAL(len, pmt::length(t)); for (size_t i = 0; i < len; i++) - CPPUNIT_ASSERT_EQUAL(s[i], pmt_tuple_ref(t, i)); + CPPUNIT_ASSERT_EQUAL(s[i], pmt::tuple_ref(t, i)); } void qa_pmt_prims::test_tuples() { - pmt_t v = pmt_make_vector(10, PMT_NIL); - std::vector<pmt_t> s(10); + pmt::pmt_t v = pmt::make_vector(10, pmt::PMT_NIL); + std::vector<pmt::pmt_t> s(10); for (size_t i = 0; i < 10; i++){ std::ostringstream os; os << "s" << i; - s[i] = mp(os.str()); - pmt_vector_set(v, i, s[i]); + s[i] = pmt::mp(os.str()); + pmt::vector_set(v, i, s[i]); } - pmt_t t; + pmt::pmt_t t; - t = pmt_make_tuple(); + t = pmt::make_tuple(); check_tuple(0, s, t); - t = pmt_make_tuple(s[0]); + t = pmt::make_tuple(s[0]); check_tuple(1, s, t); - CPPUNIT_ASSERT(pmt_is_vector(v)); - CPPUNIT_ASSERT(!pmt_is_tuple(v)); - CPPUNIT_ASSERT(pmt_is_tuple(t)); - CPPUNIT_ASSERT(!pmt_is_vector(t)); + CPPUNIT_ASSERT(pmt::is_vector(v)); + CPPUNIT_ASSERT(!pmt::is_tuple(v)); + CPPUNIT_ASSERT(pmt::is_tuple(t)); + CPPUNIT_ASSERT(!pmt::is_vector(t)); - t = pmt_make_tuple(s[0], s[1]); + t = pmt::make_tuple(s[0], s[1]); check_tuple(2, s, t); - t = pmt_make_tuple(s[0], s[1], s[2]); + t = pmt::make_tuple(s[0], s[1], s[2]); check_tuple(3, s, t); - t = pmt_make_tuple(s[0], s[1], s[2], s[3]); + t = pmt::make_tuple(s[0], s[1], s[2], s[3]); check_tuple(4, s, t); - t = pmt_make_tuple(s[0], s[1], s[2], s[3], s[4]); + t = pmt::make_tuple(s[0], s[1], s[2], s[3], s[4]); check_tuple(5, s, t); - t = pmt_make_tuple(s[0], s[1], s[2], s[3], s[4], s[5]); + t = pmt::make_tuple(s[0], s[1], s[2], s[3], s[4], s[5]); check_tuple(6, s, t); - t = pmt_make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6]); + t = pmt::make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6]); check_tuple(7, s, t); - t = pmt_make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7]); + t = pmt::make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7]); check_tuple(8, s, t); - t = pmt_make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8]); + t = pmt::make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8]); check_tuple(9, s, t); - t = pmt_make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], s[9]); + t = pmt::make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], s[9]); check_tuple(10, s, t); - t = pmt_make_tuple(s[0], s[1], s[2]); - CPPUNIT_ASSERT_THROW(pmt_tuple_ref(t, 3), pmt_out_of_range); - CPPUNIT_ASSERT_THROW(pmt_vector_ref(t, 0), pmt_wrong_type); - CPPUNIT_ASSERT_THROW(pmt_tuple_ref(v, 0), pmt_wrong_type); + t = pmt::make_tuple(s[0], s[1], s[2]); + CPPUNIT_ASSERT_THROW(pmt::tuple_ref(t, 3), pmt::out_of_range); + CPPUNIT_ASSERT_THROW(pmt::vector_ref(t, 0), pmt::wrong_type); + CPPUNIT_ASSERT_THROW(pmt::tuple_ref(v, 0), pmt::wrong_type); - t = pmt_make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], s[9]); - pmt_t t2 = pmt_to_tuple(v); - CPPUNIT_ASSERT_EQUAL(size_t(10), pmt_length(v)); - CPPUNIT_ASSERT(pmt_equal(t, t2)); + t = pmt::make_tuple(s[0], s[1], s[2], s[3], s[4], s[5], s[6], s[7], s[8], s[9]); + pmt::pmt_t t2 = pmt::to_tuple(v); + CPPUNIT_ASSERT_EQUAL(size_t(10), pmt::length(v)); + CPPUNIT_ASSERT(pmt::equal(t, t2)); //std::cout << v << std::endl; //std::cout << t2 << std::endl; - t = pmt_make_tuple(s[0], s[1], s[2]); - pmt_t list0 = pmt_list3(s[0], s[1], s[2]); - CPPUNIT_ASSERT_EQUAL(size_t(3), pmt_length(list0)); - t2 = pmt_to_tuple(list0); - CPPUNIT_ASSERT_EQUAL(size_t(3), pmt_length(t2)); - CPPUNIT_ASSERT(pmt_equal(t, t2)); + t = pmt::make_tuple(s[0], s[1], s[2]); + pmt::pmt_t list0 = pmt::list3(s[0], s[1], s[2]); + CPPUNIT_ASSERT_EQUAL(size_t(3), pmt::length(list0)); + t2 = pmt::to_tuple(list0); + CPPUNIT_ASSERT_EQUAL(size_t(3), pmt::length(t2)); + CPPUNIT_ASSERT(pmt::equal(t, t2)); } void qa_pmt_prims::test_equivalence() { - pmt_t s0 = mp("s0"); - pmt_t s1 = mp("s1"); - pmt_t s2 = mp("s2"); - pmt_t list0 = pmt_cons(s0, pmt_cons(s1, pmt_cons(s2, PMT_NIL))); - pmt_t list1 = pmt_cons(s0, pmt_cons(s1, pmt_cons(s2, PMT_NIL))); - pmt_t i0 = pmt_from_long(42); - pmt_t i1 = pmt_from_long(42); - pmt_t r0 = pmt_from_double(42); - pmt_t r1 = pmt_from_double(42); - pmt_t r2 = pmt_from_double(43); - - CPPUNIT_ASSERT(pmt_eq(s0, s0)); - CPPUNIT_ASSERT(!pmt_eq(s0, s1)); - CPPUNIT_ASSERT(pmt_eqv(s0, s0)); - CPPUNIT_ASSERT(!pmt_eqv(s0, s1)); - - CPPUNIT_ASSERT(pmt_eqv(i0, i1)); - CPPUNIT_ASSERT(pmt_eqv(r0, r1)); - CPPUNIT_ASSERT(!pmt_eqv(r0, r2)); - CPPUNIT_ASSERT(!pmt_eqv(i0, r0)); - - CPPUNIT_ASSERT(!pmt_eq(list0, list1)); - CPPUNIT_ASSERT(!pmt_eqv(list0, list1)); - CPPUNIT_ASSERT(pmt_equal(list0, list1)); - - pmt_t v0 = pmt_make_vector(3, s0); - pmt_t v1 = pmt_make_vector(3, s0); - pmt_t v2 = pmt_make_vector(4, s0); - CPPUNIT_ASSERT(!pmt_eqv(v0, v1)); - CPPUNIT_ASSERT(pmt_equal(v0, v1)); - CPPUNIT_ASSERT(!pmt_equal(v0, v2)); - - pmt_vector_set(v0, 0, list0); - pmt_vector_set(v0, 1, list0); - pmt_vector_set(v1, 0, list1); - pmt_vector_set(v1, 1, list1); - CPPUNIT_ASSERT(pmt_equal(v0, v1)); + pmt::pmt_t s0 = pmt::mp("s0"); + pmt::pmt_t s1 = pmt::mp("s1"); + pmt::pmt_t s2 = pmt::mp("s2"); + pmt::pmt_t list0 = pmt::cons(s0, pmt::cons(s1, pmt::cons(s2, pmt::PMT_NIL))); + pmt::pmt_t list1 = pmt::cons(s0, pmt::cons(s1, pmt::cons(s2, pmt::PMT_NIL))); + pmt::pmt_t i0 = pmt::from_long(42); + pmt::pmt_t i1 = pmt::from_long(42); + pmt::pmt_t r0 = pmt::from_double(42); + pmt::pmt_t r1 = pmt::from_double(42); + pmt::pmt_t r2 = pmt::from_double(43); + + CPPUNIT_ASSERT(pmt::eq(s0, s0)); + CPPUNIT_ASSERT(!pmt::eq(s0, s1)); + CPPUNIT_ASSERT(pmt::eqv(s0, s0)); + CPPUNIT_ASSERT(!pmt::eqv(s0, s1)); + + CPPUNIT_ASSERT(pmt::eqv(i0, i1)); + CPPUNIT_ASSERT(pmt::eqv(r0, r1)); + CPPUNIT_ASSERT(!pmt::eqv(r0, r2)); + CPPUNIT_ASSERT(!pmt::eqv(i0, r0)); + + CPPUNIT_ASSERT(!pmt::eq(list0, list1)); + CPPUNIT_ASSERT(!pmt::eqv(list0, list1)); + CPPUNIT_ASSERT(pmt::equal(list0, list1)); + + pmt::pmt_t v0 = pmt::make_vector(3, s0); + pmt::pmt_t v1 = pmt::make_vector(3, s0); + pmt::pmt_t v2 = pmt::make_vector(4, s0); + CPPUNIT_ASSERT(!pmt::eqv(v0, v1)); + CPPUNIT_ASSERT(pmt::equal(v0, v1)); + CPPUNIT_ASSERT(!pmt::equal(v0, v2)); + + pmt::vector_set(v0, 0, list0); + pmt::vector_set(v0, 1, list0); + pmt::vector_set(v1, 0, list1); + pmt::vector_set(v1, 1, list1); + CPPUNIT_ASSERT(pmt::equal(v0, v1)); } void qa_pmt_prims::test_misc() { - pmt_t k0 = mp("k0"); - pmt_t k1 = mp("k1"); - pmt_t k2 = mp("k2"); - pmt_t k3 = mp("k3"); - pmt_t v0 = mp("v0"); - pmt_t v1 = mp("v1"); - pmt_t v2 = mp("v2"); - pmt_t p0 = pmt_cons(k0, v0); - pmt_t p1 = pmt_cons(k1, v1); - pmt_t p2 = pmt_cons(k2, v2); - - pmt_t alist = pmt_cons(p0, pmt_cons(p1, pmt_cons(p2, PMT_NIL))); - CPPUNIT_ASSERT(pmt_eq(p1, pmt_assv(k1, alist))); - CPPUNIT_ASSERT(pmt_eq(PMT_F, pmt_assv(k3, alist))); - - pmt_t keys = pmt_cons(k0, pmt_cons(k1, pmt_cons(k2, PMT_NIL))); - pmt_t vals = pmt_cons(v0, pmt_cons(v1, pmt_cons(v2, PMT_NIL))); - CPPUNIT_ASSERT(pmt_equal(keys, pmt_map(pmt_car, alist))); - CPPUNIT_ASSERT(pmt_equal(vals, pmt_map(pmt_cdr, alist))); + pmt::pmt_t k0 = pmt::mp("k0"); + pmt::pmt_t k1 = pmt::mp("k1"); + pmt::pmt_t k2 = pmt::mp("k2"); + pmt::pmt_t k3 = pmt::mp("k3"); + pmt::pmt_t v0 = pmt::mp("v0"); + pmt::pmt_t v1 = pmt::mp("v1"); + pmt::pmt_t v2 = pmt::mp("v2"); + pmt::pmt_t p0 = pmt::cons(k0, v0); + pmt::pmt_t p1 = pmt::cons(k1, v1); + pmt::pmt_t p2 = pmt::cons(k2, v2); + + pmt::pmt_t alist = pmt::cons(p0, pmt::cons(p1, pmt::cons(p2, pmt::PMT_NIL))); + CPPUNIT_ASSERT(pmt::eq(p1, pmt::assv(k1, alist))); + CPPUNIT_ASSERT(pmt::eq(pmt::PMT_F, pmt::assv(k3, alist))); + + pmt::pmt_t keys = pmt::cons(k0, pmt::cons(k1, pmt::cons(k2, pmt::PMT_NIL))); + pmt::pmt_t vals = pmt::cons(v0, pmt::cons(v1, pmt::cons(v2, pmt::PMT_NIL))); + 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 = mp("k0"); - pmt_t k1 = mp("k1"); - pmt_t k2 = mp("k2"); - pmt_t k3 = mp("k3"); - pmt_t v0 = mp("v0"); - pmt_t v1 = mp("v1"); - pmt_t v2 = mp("v2"); - pmt_t v3 = mp("v3"); - pmt_t not_found = pmt_cons(PMT_NIL, PMT_NIL); - - CPPUNIT_ASSERT(!pmt_dict_has_key(dict, k0)); - dict = pmt_dict_add(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)); - dict = pmt_dict_add(dict, k1, v1); - dict = pmt_dict_add(dict, k2, v2); - CPPUNIT_ASSERT(pmt_eqv(pmt_dict_ref(dict, k1, not_found), v1)); - dict = pmt_dict_add(dict, k1, v3); - CPPUNIT_ASSERT(pmt_eqv(pmt_dict_ref(dict, k1, not_found), v3)); - - pmt_t keys = pmt_list3(k1, k2, k0); - pmt_t vals = pmt_list3(v3, v2, v0); - //std::cout << "pmt_dict_keys: " << pmt_dict_keys(dict) << std::endl; - //std::cout << "pmt_dict_values: " << pmt_dict_values(dict) << std::endl; - CPPUNIT_ASSERT(pmt_equal(keys, pmt_dict_keys(dict))); - CPPUNIT_ASSERT(pmt_equal(vals, pmt_dict_values(dict))); + pmt::pmt_t dict = pmt::make_dict(); + CPPUNIT_ASSERT(pmt::is_dict(dict)); + + pmt::pmt_t k0 = pmt::mp("k0"); + pmt::pmt_t k1 = pmt::mp("k1"); + pmt::pmt_t k2 = pmt::mp("k2"); + pmt::pmt_t k3 = pmt::mp("k3"); + pmt::pmt_t v0 = pmt::mp("v0"); + pmt::pmt_t v1 = pmt::mp("v1"); + pmt::pmt_t v2 = pmt::mp("v2"); + pmt::pmt_t v3 = pmt::mp("v3"); + pmt::pmt_t not_found = pmt::cons(pmt::PMT_NIL, pmt::PMT_NIL); + + CPPUNIT_ASSERT(!pmt::dict_has_key(dict, k0)); + dict = pmt::dict_add(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)); + dict = pmt::dict_add(dict, k1, v1); + dict = pmt::dict_add(dict, k2, v2); + CPPUNIT_ASSERT(pmt::eqv(pmt::dict_ref(dict, k1, not_found), v1)); + dict = pmt::dict_add(dict, k1, v3); + CPPUNIT_ASSERT(pmt::eqv(pmt::dict_ref(dict, k1, not_found), v3)); + + pmt::pmt_t keys = pmt::list3(k1, k2, k0); + pmt::pmt_t vals = pmt::list3(v3, v2, v0); + //std::cout << "pmt::dict_keys: " << pmt::dict_keys(dict) << std::endl; + //std::cout << "pmt::dict_values: " << pmt::dict_values(dict) << std::endl; + CPPUNIT_ASSERT(pmt::equal(keys, pmt::dict_keys(dict))); + CPPUNIT_ASSERT(pmt::equal(vals, pmt::dict_values(dict))); } void qa_pmt_prims::test_io() { - pmt_t k0 = mp("k0"); - pmt_t k1 = mp("k1"); - pmt_t k2 = mp("k2"); - pmt_t k3 = mp("k3"); + pmt::pmt_t k0 = pmt::mp("k0"); + pmt::pmt_t k1 = pmt::mp("k1"); + pmt::pmt_t k2 = pmt::mp("k2"); + pmt::pmt_t k3 = pmt::mp("k3"); - CPPUNIT_ASSERT_EQUAL(std::string("k0"), pmt_write_string(k0)); + CPPUNIT_ASSERT_EQUAL(std::string("k0"), pmt::write_string(k0)); } void qa_pmt_prims::test_lists() { - pmt_t s0 = mp("s0"); - pmt_t s1 = mp("s1"); - pmt_t s2 = mp("s2"); - pmt_t s3 = mp("s3"); - - pmt_t l1 = pmt_list4(s0, s1, s2, s3); - pmt_t l2 = pmt_list3(s0, s1, s2); - pmt_t l3 = pmt_list_add(l2, s3); - CPPUNIT_ASSERT(pmt_equal(l1, l3)); + pmt::pmt_t s0 = pmt::mp("s0"); + pmt::pmt_t s1 = pmt::mp("s1"); + pmt::pmt_t s2 = pmt::mp("s2"); + pmt::pmt_t s3 = pmt::mp("s3"); + + pmt::pmt_t l1 = pmt::list4(s0, s1, s2, s3); + pmt::pmt_t l2 = pmt::list3(s0, s1, s2); + pmt::pmt_t l3 = pmt::list_add(l2, s3); + CPPUNIT_ASSERT(pmt::equal(l1, l3)); } // ------------------------------------------------------------------------ @@ -464,18 +462,18 @@ qa_pmt_prims::test_any() a1 = 42; a2 = foo(3.250, 21); - pmt_t p0 = pmt_make_any(a0); - pmt_t p1 = pmt_make_any(a1); - pmt_t p2 = pmt_make_any(a2); + pmt::pmt_t p0 = pmt::make_any(a0); + pmt::pmt_t p1 = pmt::make_any(a1); + pmt::pmt_t p2 = pmt::make_any(a2); CPPUNIT_ASSERT_EQUAL(std::string("Hello!"), - boost::any_cast<std::string>(pmt_any_ref(p0))); + boost::any_cast<std::string>(pmt::any_ref(p0))); CPPUNIT_ASSERT_EQUAL(42, - boost::any_cast<int>(pmt_any_ref(p1))); + boost::any_cast<int>(pmt::any_ref(p1))); CPPUNIT_ASSERT_EQUAL(foo(3.250, 21), - boost::any_cast<foo>(pmt_any_ref(p2))); + boost::any_cast<foo>(pmt::any_ref(p2))); } // ------------------------------------------------------------------------ @@ -484,7 +482,7 @@ class qa_pmt_msg_accepter_nop : public gruel::msg_accepter { public: qa_pmt_msg_accepter_nop(){}; ~qa_pmt_msg_accepter_nop(); - void post(pmt_t,pmt_t){}; + void post(pmt::pmt_t,pmt::pmt_t){}; }; qa_pmt_msg_accepter_nop::~qa_pmt_msg_accepter_nop(){} @@ -492,22 +490,22 @@ qa_pmt_msg_accepter_nop::~qa_pmt_msg_accepter_nop(){} void qa_pmt_prims::test_msg_accepter() { - pmt_t sym = mp("my-symbol"); + pmt::pmt_t sym = pmt::mp("my-symbol"); boost::any a0; a0 = std::string("Hello!"); - pmt_t p0 = pmt_make_any(a0); + pmt::pmt_t p0 = pmt::make_any(a0); gruel::msg_accepter_sptr ma0 = gruel::msg_accepter_sptr(new qa_pmt_msg_accepter_nop()); - pmt_t p1 = pmt_make_msg_accepter(ma0); + pmt::pmt_t p1 = pmt::make_msg_accepter(ma0); - CPPUNIT_ASSERT_EQUAL(ma0.get(), pmt_msg_accepter_ref(p1).get()); + CPPUNIT_ASSERT_EQUAL(ma0.get(), pmt::msg_accepter_ref(p1).get()); - CPPUNIT_ASSERT_THROW(pmt_msg_accepter_ref(sym), pmt_wrong_type); - CPPUNIT_ASSERT_THROW(pmt_msg_accepter_ref(p0), pmt_wrong_type); + CPPUNIT_ASSERT_THROW(pmt::msg_accepter_ref(sym), pmt::wrong_type); + CPPUNIT_ASSERT_THROW(pmt::msg_accepter_ref(p0), pmt::wrong_type); // just confirm interfaces on send are OK - pmt_t port(pmt_intern("port")); + pmt::pmt_t port(pmt::intern("port")); gruel::send(ma0.get(), port, sym); gruel::send(ma0, port, sym); gruel::send(p1, port, sym); @@ -520,43 +518,43 @@ void qa_pmt_prims::test_serialize() { std::stringbuf sb; // fake channel - pmt_t a = mp("a"); - pmt_t b = mp("b"); - pmt_t c = mp("c"); + pmt::pmt_t a = pmt::mp("a"); + pmt::pmt_t b = pmt::mp("b"); + pmt::pmt_t c = pmt::mp("c"); sb.str(""); // reset channel to empty // write stuff to channel - pmt_serialize(PMT_NIL, sb); - pmt_serialize(mp("foobarvia"), sb); - pmt_serialize(pmt_from_long(123456789), sb); - pmt_serialize(pmt_from_long(-123456789), sb); - pmt_serialize(pmt_cons(PMT_NIL, PMT_NIL), sb); - pmt_serialize(pmt_cons(a, b), sb); - pmt_serialize(pmt_list1(a), sb); - pmt_serialize(pmt_list2(a, b), sb); - pmt_serialize(pmt_list3(a, b, c), sb); - pmt_serialize(pmt_list3(a, pmt_list3(c, b, a), c), sb); - pmt_serialize(PMT_T, sb); - pmt_serialize(PMT_F, sb); + pmt::serialize(pmt::PMT_NIL, sb); + pmt::serialize(pmt::mp("foobarvia"), sb); + pmt::serialize(pmt::from_long(123456789), sb); + pmt::serialize(pmt::from_long(-123456789), sb); + pmt::serialize(pmt::cons(pmt::PMT_NIL, pmt::PMT_NIL), sb); + pmt::serialize(pmt::cons(a, b), sb); + pmt::serialize(pmt::list1(a), sb); + pmt::serialize(pmt::list2(a, b), sb); + pmt::serialize(pmt::list3(a, b, c), sb); + pmt::serialize(pmt::list3(a, pmt::list3(c, b, a), c), sb); + pmt::serialize(pmt::PMT_T, sb); + pmt::serialize(pmt::PMT_F, sb); // read it back - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), PMT_NIL)); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), mp("foobarvia"))); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), pmt_from_long(123456789))); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), pmt_from_long(-123456789))); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), pmt_cons(PMT_NIL, PMT_NIL))); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), pmt_cons(a, b))); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), pmt_list1(a))); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), pmt_list2(a, b))); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), pmt_list3(a, b, c))); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), pmt_list3(a, pmt_list3(c, b, a), c))); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), PMT_T)); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), PMT_F)); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::PMT_NIL)); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::mp("foobarvia"))); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::from_long(123456789))); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::from_long(-123456789))); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::cons(pmt::PMT_NIL, pmt::PMT_NIL))); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::cons(a, b))); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::list1(a))); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::list2(a, b))); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::list3(a, b, c))); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::list3(a, pmt::list3(c, b, a), c))); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::PMT_T)); + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::PMT_F)); - CPPUNIT_ASSERT(pmt_equal(pmt_deserialize(sb), PMT_EOF)); // last item + CPPUNIT_ASSERT(pmt::equal(pmt::deserialize(sb), pmt::PMT_EOF)); // last item // FIXME add tests for real, complex, vector, uniform-vector, dict @@ -567,37 +565,37 @@ qa_pmt_prims::test_serialize() void qa_pmt_prims::test_sets() { - pmt_t s1 = mp("s1"); - pmt_t s2 = mp("s2"); - pmt_t s3 = mp("s3"); - - pmt_t l1 = pmt_list1(s1); - pmt_t l2 = pmt_list2(s2,s3); - pmt_t l3 = pmt_list3(s1,s2,s3); - - CPPUNIT_ASSERT(pmt_is_pair(pmt_memq(s1,l1))); - CPPUNIT_ASSERT(pmt_is_false(pmt_memq(s3,l1))); - - CPPUNIT_ASSERT(pmt_subsetp(l1,l3)); - CPPUNIT_ASSERT(pmt_subsetp(l2,l3)); - CPPUNIT_ASSERT(!pmt_subsetp(l1,l2)); - CPPUNIT_ASSERT(!pmt_subsetp(l2,l1)); - CPPUNIT_ASSERT(!pmt_subsetp(l3,l2)); + pmt::pmt_t s1 = pmt::mp("s1"); + pmt::pmt_t s2 = pmt::mp("s2"); + pmt::pmt_t s3 = pmt::mp("s3"); + + pmt::pmt_t l1 = pmt::list1(s1); + pmt::pmt_t l2 = pmt::list2(s2,s3); + pmt::pmt_t l3 = pmt::list3(s1,s2,s3); + + CPPUNIT_ASSERT(pmt::is_pair(pmt::memq(s1,l1))); + CPPUNIT_ASSERT(pmt::is_false(pmt::memq(s3,l1))); + + CPPUNIT_ASSERT(pmt::subsetp(l1,l3)); + CPPUNIT_ASSERT(pmt::subsetp(l2,l3)); + CPPUNIT_ASSERT(!pmt::subsetp(l1,l2)); + CPPUNIT_ASSERT(!pmt::subsetp(l2,l1)); + CPPUNIT_ASSERT(!pmt::subsetp(l3,l2)); } void qa_pmt_prims::test_sugar() { - CPPUNIT_ASSERT(pmt_is_symbol(mp("my-symbol"))); - CPPUNIT_ASSERT_EQUAL((long) 10, pmt_to_long(mp(10))); - CPPUNIT_ASSERT_EQUAL((double) 1e6, pmt_to_double(mp(1e6))); + CPPUNIT_ASSERT(pmt::is_symbol(pmt::mp("my-symbol"))); + CPPUNIT_ASSERT_EQUAL((long) 10, pmt::to_long(pmt::mp(10))); + CPPUNIT_ASSERT_EQUAL((double) 1e6, pmt::to_double(pmt::mp(1e6))); CPPUNIT_ASSERT_EQUAL(std::complex<double>(2, 3), - pmt_to_complex(mp(std::complex<double>(2, 3)))); + pmt::to_complex(pmt::mp(std::complex<double>(2, 3)))); int buf[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - pmt_t blob = mp(buf, sizeof(buf)); - const void *data = pmt_blob_data(blob); - size_t nbytes = pmt_blob_length(blob); + pmt::pmt_t blob = pmt::mp(buf, sizeof(buf)); + const void *data = pmt::blob_data(blob); + size_t nbytes = pmt::blob_length(blob); CPPUNIT_ASSERT_EQUAL(sizeof(buf), nbytes); CPPUNIT_ASSERT(memcmp(buf, data, nbytes) == 0); } diff --git a/gruel/src/lib/pmt/unv_qa_template.cc.t b/gruel/src/lib/pmt/unv_qa_template.cc.t index 1e2c8e8eb5..a04d532b4e 100644 --- a/gruel/src/lib/pmt/unv_qa_template.cc.t +++ b/gruel/src/lib/pmt/unv_qa_template.cc.t @@ -2,31 +2,31 @@ void qa_pmt_unv::test_@TAG@vector() { static const size_t N = 3; - pmt_t v1 = pmt_make_@TAG@vector(N, 0); - CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1)); + pmt_t v1 = pmt::make_@TAG@vector(N, 0); + CPPUNIT_ASSERT_EQUAL(N, pmt::length(v1)); @TYPE@ s0 = @TYPE@(10); @TYPE@ s1 = @TYPE@(20); @TYPE@ s2 = @TYPE@(30); - pmt_@TAG@vector_set(v1, 0, s0); - pmt_@TAG@vector_set(v1, 1, s1); - pmt_@TAG@vector_set(v1, 2, s2); + pmt::@TAG@vector_set(v1, 0, s0); + pmt::@TAG@vector_set(v1, 1, s1); + pmt::@TAG@vector_set(v1, 2, s2); - CPPUNIT_ASSERT_EQUAL(s0, pmt_@TAG@vector_ref(v1, 0)); - CPPUNIT_ASSERT_EQUAL(s1, pmt_@TAG@vector_ref(v1, 1)); - CPPUNIT_ASSERT_EQUAL(s2, pmt_@TAG@vector_ref(v1, 2)); + CPPUNIT_ASSERT_EQUAL(s0, pmt::@TAG@vector_ref(v1, 0)); + CPPUNIT_ASSERT_EQUAL(s1, pmt::@TAG@vector_ref(v1, 1)); + CPPUNIT_ASSERT_EQUAL(s2, pmt::@TAG@vector_ref(v1, 2)); - CPPUNIT_ASSERT_THROW(pmt_@TAG@vector_ref(v1, N), pmt_out_of_range); - CPPUNIT_ASSERT_THROW(pmt_@TAG@vector_set(v1, N, @TYPE@(0)), pmt_out_of_range); + CPPUNIT_ASSERT_THROW(pmt::@TAG@vector_ref(v1, N), pmt::out_of_range); + CPPUNIT_ASSERT_THROW(pmt::@TAG@vector_set(v1, N, @TYPE@(0)), pmt::out_of_range); size_t len; - const @TYPE@ *rd = pmt_@TAG@vector_elements(v1, len); + const @TYPE@ *rd = pmt::@TAG@vector_elements(v1, len); CPPUNIT_ASSERT_EQUAL(len, N); CPPUNIT_ASSERT_EQUAL(s0, rd[0]); CPPUNIT_ASSERT_EQUAL(s1, rd[1]); CPPUNIT_ASSERT_EQUAL(s2, rd[2]); - @TYPE@ *wr = pmt_@TAG@vector_writable_elements(v1, len); + @TYPE@ *wr = pmt::@TAG@vector_writable_elements(v1, len); CPPUNIT_ASSERT_EQUAL(len, N); wr[0] = @TYPE@(0); CPPUNIT_ASSERT_EQUAL(@TYPE@(0), wr[0]); diff --git a/gruel/src/lib/pmt/unv_template.cc.t b/gruel/src/lib/pmt/unv_template.cc.t index 1ed505e29a..8678894973 100644 --- a/gruel/src/lib/pmt/unv_template.cc.t +++ b/gruel/src/lib/pmt/unv_template.cc.t @@ -29,7 +29,7 @@ pmt_@TAG@vector::pmt_@TAG@vector(size_t k, const @TYPE@ *data) pmt_@TAG@vector::ref(size_t k) const { if (k >= length()) - throw pmt_out_of_range("pmt_@TAG@vector_ref", pmt_from_long(k)); + throw out_of_range("pmt_@TAG@vector_ref", from_long(k)); return d_v[k]; } @@ -37,7 +37,7 @@ void pmt_@TAG@vector::set(size_t k, @TYPE@ x) { if (k >= length()) - throw pmt_out_of_range("pmt_@TAG@vector_set", pmt_from_long(k)); + throw out_of_range("pmt_@TAG@vector_set", from_long(k)); d_v[k] = x; } @@ -70,59 +70,59 @@ pmt_@TAG@vector::uniform_writable_elements(size_t &len) } bool -pmt_is_@TAG@vector(pmt_t obj) +is_@TAG@vector(pmt_t obj) { return obj->is_@TAG@vector(); } pmt_t -pmt_make_@TAG@vector(size_t k, @TYPE@ fill) +make_@TAG@vector(size_t k, @TYPE@ fill) { return pmt_t(new pmt_@TAG@vector(k, fill)); } pmt_t -pmt_init_@TAG@vector(size_t k, const @TYPE@ *data) +init_@TAG@vector(size_t k, const @TYPE@ *data) { return pmt_t(new pmt_@TAG@vector(k, data)); } pmt_t -pmt_init_@TAG@vector(size_t k, const std::vector< @TYPE@ > &data) +init_@TAG@vector(size_t k, const std::vector< @TYPE@ > &data) { return pmt_t(new pmt_@TAG@vector(k, &data[0])); } @TYPE@ -pmt_@TAG@vector_ref(pmt_t vector, size_t k) +@TAG@vector_ref(pmt_t vector, size_t k) { if (!vector->is_@TAG@vector()) - throw pmt_wrong_type("pmt_@TAG@vector_ref", vector); + throw wrong_type("pmt_@TAG@vector_ref", vector); return _@TAG@vector(vector)->ref(k); } void -pmt_@TAG@vector_set(pmt_t vector, size_t k, @TYPE@ obj) +@TAG@vector_set(pmt_t vector, size_t k, @TYPE@ obj) { if (!vector->is_@TAG@vector()) - throw pmt_wrong_type("pmt_@TAG@vector_set", vector); + throw wrong_type("pmt_@TAG@vector_set", vector); _@TAG@vector(vector)->set(k, obj); } const @TYPE@ * -pmt_@TAG@vector_elements(pmt_t vector, size_t &len) +@TAG@vector_elements(pmt_t vector, size_t &len) { if (!vector->is_@TAG@vector()) - throw pmt_wrong_type("pmt_@TAG@vector_elements", vector); + throw wrong_type("pmt_@TAG@vector_elements", vector); return _@TAG@vector(vector)->elements(len); } const std::vector< @TYPE@ > -pmt_@TAG@vector_elements(pmt_t vector) +@TAG@vector_elements(pmt_t vector) { if (!vector->is_@TAG@vector()) - throw pmt_wrong_type("pmt_@TAG@vector_elements", vector); + throw wrong_type("pmt_@TAG@vector_elements", vector); size_t len; const @TYPE@ *array = _@TAG@vector(vector)->elements(len); const std::vector< @TYPE@ > vec(array, array+len); @@ -131,10 +131,10 @@ pmt_@TAG@vector_elements(pmt_t vector) @TYPE@ * -pmt_@TAG@vector_writable_elements(pmt_t vector, size_t &len) +@TAG@vector_writable_elements(pmt_t vector, size_t &len) { if (!vector->is_@TAG@vector()) - throw pmt_wrong_type("pmt_@TAG@vector_writable_elements", vector); + throw wrong_type("pmt_@TAG@vector_writable_elements", vector); return _@TAG@vector(vector)->writable_elements(len); } diff --git a/gruel/src/python/qa_pmt.py b/gruel/src/python/qa_pmt.py index 59a5725fc4..c8d3df93b2 100755 --- a/gruel/src/python/qa_pmt.py +++ b/gruel/src/python/qa_pmt.py @@ -25,78 +25,78 @@ import pmt_swig as pmt class test_gruel_pmt(unittest.TestCase): - def test01 (self): - a = pmt.pmt_intern("a") - b = pmt.pmt_from_double(123765) - d1 = pmt.pmt_make_dict() - d2 = pmt.pmt_dict_add(d1, a, b) - pmt.pmt_print(d2) + def test01(self): + a = pmt.intern("a") + b = pmt.from_double(123765) + d1 = pmt.make_dict() + d2 = pmt.dict_add(d1, a, b) + print d2 - def test02 (self): + def test02(self): const = 123765 - x_pmt = pmt.pmt_from_double(const) - x_int = pmt.pmt_to_double(x_pmt) + x_pmt = pmt.from_double(const) + x_int = pmt.to_double(x_pmt) self.assertEqual(x_int, const) def test03(self): - v = pmt.pmt_init_f32vector(3, [11, -22, 33]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_f32vector(3, [11, -22, 33]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) def test04(self): - v = pmt.pmt_init_f64vector(3, [11, -22, 33]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_f64vector(3, [11, -22, 33]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) def test05(self): - v = pmt.pmt_init_u8vector(3, [11, 22, 33]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_u8vector(3, [11, 22, 33]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) def test06(self): - v = pmt.pmt_init_s8vector(3, [11, -22, 33]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_s8vector(3, [11, -22, 33]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) def test07(self): - v = pmt.pmt_init_u16vector(3, [11, 22, 33]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_u16vector(3, [11, 22, 33]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) def test08(self): - v = pmt.pmt_init_s16vector(3, [11, -22, 33]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_s16vector(3, [11, -22, 33]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) def test09(self): - v = pmt.pmt_init_u32vector(3, [11, 22, 33]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_u32vector(3, [11, 22, 33]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) def test10(self): - v = pmt.pmt_init_s32vector(3, [11, -22, 33]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_s32vector(3, [11, -22, 33]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) def test11(self): - v = pmt.pmt_init_c32vector(3, [11 + -101j, -22 + 202j, 33 + -303j]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_c32vector(3, [11 + -101j, -22 + 202j, 33 + -303j]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) def test12(self): - v = pmt.pmt_init_c64vector(3, [11 + -101j, -22 + 202j, 33 + -303j]) - s = pmt.pmt_serialize_str(v) - d = pmt.pmt_deserialize_str(s) - self.assertTrue(pmt.pmt_equal(v, d)) + v = pmt.init_c64vector(3, [11 + -101j, -22 + 202j, 33 + -303j]) + s = pmt.serialize_str(v) + d = pmt.deserialize_str(s) + self.assertTrue(pmt.equal(v, d)) if __name__ == '__main__': unittest.main() diff --git a/gruel/src/swig/CMakeLists.txt b/gruel/src/swig/CMakeLists.txt index a5e3f93994..b1d4090af0 100644 --- a/gruel/src/swig/CMakeLists.txt +++ b/gruel/src/swig/CMakeLists.txt @@ -34,7 +34,7 @@ GR_SWIG_MAKE(pmt_swig pmt_swig.i) GR_SWIG_INSTALL( TARGETS pmt_swig - DESTINATION ${GR_PYTHON_DIR}/gruel/pmt + DESTINATION ${GR_PYTHON_DIR}/pmt COMPONENT "gruel_python" ) diff --git a/gruel/src/swig/pmt_swig.i b/gruel/src/swig/pmt_swig.i index 84f48b099a..ba16511114 100644 --- a/gruel/src/swig/pmt_swig.i +++ b/gruel/src/swig/pmt_swig.i @@ -73,720 +73,223 @@ namespace pmt{ namespace pmt{ -typedef boost::intrusive_ptr<pmt_base> pmt_t; - -/* - * ------------------------------------------------------------------------ - * Booleans. Two constants, #t and #f. - * - * In predicates, anything that is not #f is considered true. - * I.e., there is a single false value, #f. - * ------------------------------------------------------------------------ - */ -extern const pmt_t PMT_T; -extern const pmt_t PMT_F; - -//! Return true if obj is \#t or \#f, else return false. -bool pmt_is_bool(pmt_t obj); - -//! Return false if obj is \#f, else return true. -bool pmt_is_true(pmt_t obj); - -//! Return true if obj is \#f, else return true. -bool pmt_is_false(pmt_t obj); - -//! Return \#f is val is false, else return \#t. -pmt_t pmt_from_bool(bool val); - -//! Return true if val is PMT_T, return false when val is PMT_F, -// else raise wrong_type exception. -bool pmt_to_bool(pmt_t val); - -/* - * ------------------------------------------------------------------------ - * Symbols - * ------------------------------------------------------------------------ - */ - -//! Return true if obj is a symbol, else false. -bool pmt_is_symbol(const pmt_t& obj); - -//! Return the symbol whose name is \p s. -pmt_t pmt_string_to_symbol(const std::string &s); - -//! Alias for pmt_string_to_symbol -pmt_t pmt_intern(const std::string &s); - - -/*! - * If \p is a symbol, return the name of the symbol as a string. - * Otherwise, raise the wrong_type exception. - */ -const std::string pmt_symbol_to_string(const pmt_t& sym); - -/* - * ------------------------------------------------------------------------ - * Numbers: we support integer, real and complex - * ------------------------------------------------------------------------ - */ - -//! Return true if obj is any kind of number, else false. -bool pmt_is_number(pmt_t obj); - -/* - * ------------------------------------------------------------------------ - * Integers - * ------------------------------------------------------------------------ - */ - -//! Return true if \p x is an integer number, else false -bool pmt_is_integer(pmt_t x); - -//! Return the pmt value that represents the integer \p x. -pmt_t pmt_from_long(long x); - -/*! - * \brief Convert pmt to long if possible. - * - * When \p x represents an exact integer that fits in a long, - * return that integer. Else raise an exception, either wrong_type - * when x is not an exact integer, or out_of_range when it doesn't fit. - */ -long pmt_to_long(pmt_t x); - -/* - * ------------------------------------------------------------------------ - * uint64_t - * ------------------------------------------------------------------------ - */ - -//! Return true if \p x is an uint64 number, else false -bool pmt_is_uint64(pmt_t x); - -//! Return the pmt value that represents the uint64 \p x. -pmt_t pmt_from_uint64(uint64_t x); - -/*! - * \brief Convert pmt to uint64 if possible. - * - * When \p x represents an exact integer that fits in a uint64, - * return that uint64. Else raise an exception, either wrong_type - * when x is not an exact uint64, or out_of_range when it doesn't fit. - */ -uint64_t pmt_to_uint64(pmt_t x); - -/* - * ------------------------------------------------------------------------ - * Reals - * ------------------------------------------------------------------------ - */ - -/* - * \brief Return true if \p obj is a real number, else false. - */ -bool pmt_is_real(pmt_t obj); - -//! Return the pmt value that represents double \p x. -pmt_t pmt_from_double(double x); - -/*! - * \brief Convert pmt to double if possible. - * - * Returns the number closest to \p val that is representable - * as a double. The argument \p val must be a real or integer, otherwise - * a wrong_type exception is raised. - */ -double pmt_to_double(pmt_t x); - -/* - * ------------------------------------------------------------------------ - * Complex - * ------------------------------------------------------------------------ - */ - -/*! - * \brief return true if \p obj is a complex number, false otherwise. - */ -bool pmt_is_complex(pmt_t obj); - -//! Return a complex number constructed of the given real and imaginary parts. -pmt_t pmt_make_rectangular(double re, double im); - -pmt_t pmt_from_complex(const std::complex<double> &z); - -/*! - * If \p z is complex, real or integer, return the closest complex<double>. - * Otherwise, raise the wrong_type exception. - */ -std::complex<double> pmt_to_complex(pmt_t z); - -/* - * ------------------------------------------------------------------------ - * Pairs - * ------------------------------------------------------------------------ - */ - -extern const pmt_t PMT_NIL; //< the empty list - -//! Return true if \p x is the empty list, otherwise return false. -bool pmt_is_null(const pmt_t& x); - -//! Return true if \p obj is a pair, else false. -bool pmt_is_pair(const pmt_t& obj); - -//! Return a newly allocated pair whose car is \p x and whose cdr is \p y. -pmt_t pmt_cons(const pmt_t& x, const pmt_t& y); - -//! If \p pair is a pair, return the car of the \p pair, otherwise raise wrong_type. -pmt_t pmt_car(const pmt_t& pair); - -//! If \p pair is a pair, return the cdr of the \p pair, otherwise raise wrong_type. -pmt_t pmt_cdr(const pmt_t& pair); - -//! Stores \p value in the car field of \p pair. -void pmt_set_car(pmt_t pair, pmt_t value); - -//! Stores \p value in the cdr field of \p pair. -void pmt_set_cdr(pmt_t pair, pmt_t value); - -pmt_t pmt_caar(pmt_t pair); -pmt_t pmt_cadr(pmt_t pair); -pmt_t pmt_cdar(pmt_t pair); -pmt_t pmt_cddr(pmt_t pair); -pmt_t pmt_caddr(pmt_t pair); -pmt_t pmt_cadddr(pmt_t pair); - -/* - * ------------------------------------------------------------------------ - * Tuples - * - * Store a fixed number of objects. Tuples are not modifiable, and thus - * are excellent for use as messages. Indexing is zero based. - * Access time to an element is O(1). - * ------------------------------------------------------------------------ - */ - -//! Return true if \p x is a tuple, othewise false. -bool pmt_is_tuple(pmt_t x); - -pmt_t pmt_make_tuple(); -pmt_t pmt_make_tuple(const pmt_t &e0); -pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1); -pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2); -pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3); -pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4); -pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5); -pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6); -pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7); -pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8); -pmt_t pmt_make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8, const pmt_t &e9); - -/*! - * If \p x is a vector or proper list, return a tuple containing the elements of x - */ -pmt_t pmt_to_tuple(const pmt_t &x); - -/*! - * Return the contents of position \p k of \p tuple. - * \p k must be a valid index of \p tuple. - */ -pmt_t pmt_tuple_ref(const pmt_t &tuple, size_t k); - -/* - * ------------------------------------------------------------------------ - * Vectors - * - * These vectors can hold any kind of objects. Indexing is zero based. - * ------------------------------------------------------------------------ - */ - -//! Return true if \p x is a vector, othewise false. -bool pmt_is_vector(pmt_t x); - -//! Make a vector of length \p k, with initial values set to \p fill -pmt_t pmt_make_vector(size_t k, pmt_t fill); - -/*! - * Return the contents of position \p k of \p vector. - * \p k must be a valid index of \p vector. - */ -pmt_t pmt_vector_ref(pmt_t vector, size_t k); - -//! Store \p obj in position \p k. -void pmt_vector_set(pmt_t vector, size_t k, pmt_t obj); - -//! Store \p fill in every position of \p vector -void pmt_vector_fill(pmt_t vector, pmt_t fill); - -/* - * ------------------------------------------------------------------------ - * Binary Large Objects (BLOBs) - * - * Handy for passing around uninterpreted chunks of memory. - * ------------------------------------------------------------------------ - */ - -//! Return true if \p x is a blob, othewise false. -bool pmt_is_blob(pmt_t x); - -/*! - * \brief Make a blob given a pointer and length in bytes - * - * \param buf is the pointer to data to use to create blob - * \param len is the size of the data in bytes. - * - * The data is copied into the blob. - */ -pmt_t pmt_make_blob(const void *buf, size_t len); - -//! Return a pointer to the blob's data -const void *pmt_blob_data(pmt_t blob); - -//! Return the blob's length in bytes -size_t pmt_blob_length(pmt_t blob); - -/*! - * <pre> - * ------------------------------------------------------------------------ - * Uniform Numeric Vectors - * - * A uniform numeric vector is a vector whose elements are all of single - * numeric type. pmt offers uniform numeric vectors for signed and - * unsigned 8-bit, 16-bit, 32-bit, and 64-bit integers, two sizes of - * floating point values, and complex floating-point numbers of these - * two sizes. Indexing is zero based. - * - * The names of the functions include these tags in their names: - * - * u8 unsigned 8-bit integers - * s8 signed 8-bit integers - * u16 unsigned 16-bit integers - * s16 signed 16-bit integers - * u32 unsigned 32-bit integers - * s32 signed 32-bit integers - * u64 unsigned 64-bit integers - * s64 signed 64-bit integers - * f32 the C++ type float - * f64 the C++ type double - * c32 the C++ type complex<float> - * c64 the C++ type complex<double> - * ------------------------------------------------------------------------ - * </pre> - */ - -//! true if \p x is any kind of uniform numeric vector -bool pmt_is_uniform_vector(pmt_t x); - -bool pmt_is_u8vector(pmt_t x); -bool pmt_is_s8vector(pmt_t x); -bool pmt_is_u16vector(pmt_t x); -bool pmt_is_s16vector(pmt_t x); -bool pmt_is_u32vector(pmt_t x); -bool pmt_is_s32vector(pmt_t x); -bool pmt_is_u64vector(pmt_t x); -bool pmt_is_s64vector(pmt_t x); -bool pmt_is_f32vector(pmt_t x); -bool pmt_is_f64vector(pmt_t x); -bool pmt_is_c32vector(pmt_t x); -bool pmt_is_c64vector(pmt_t x); - -pmt_t pmt_make_u8vector(size_t k, uint8_t fill); -pmt_t pmt_make_s8vector(size_t k, int8_t fill); -pmt_t pmt_make_u16vector(size_t k, uint16_t fill); -pmt_t pmt_make_s16vector(size_t k, int16_t fill); -pmt_t pmt_make_u32vector(size_t k, uint32_t fill); -pmt_t pmt_make_s32vector(size_t k, int32_t fill); -pmt_t pmt_make_u64vector(size_t k, uint64_t fill); -pmt_t pmt_make_s64vector(size_t k, int64_t fill); -pmt_t pmt_make_f32vector(size_t k, float fill); -pmt_t pmt_make_f64vector(size_t k, double fill); -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, const std::vector<uint8_t> &data); -pmt_t pmt_init_s8vector(size_t k, const std::vector<int8_t> &data); -pmt_t pmt_init_u16vector(size_t k, const std::vector<uint16_t> &data); -pmt_t pmt_init_s16vector(size_t k, const std::vector<int16_t> &data); -pmt_t pmt_init_u32vector(size_t k, const std::vector<uint32_t> &data); -pmt_t pmt_init_s32vector(size_t k, const std::vector<int32_t> &data); -pmt_t pmt_init_f32vector(size_t k, const std::vector<float> &data); -pmt_t pmt_init_f64vector(size_t k, const std::vector<double> &data); -pmt_t pmt_init_c32vector(size_t k, const std::vector<std::complex<float> > &data); -pmt_t pmt_init_c64vector(size_t k, const std::vector<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); -int16_t pmt_s16vector_ref(pmt_t v, size_t k); -uint32_t pmt_u32vector_ref(pmt_t v, size_t k); -int32_t pmt_s32vector_ref(pmt_t v, size_t k); -uint64_t pmt_u64vector_ref(pmt_t v, size_t k); -int64_t pmt_s64vector_ref(pmt_t v, size_t k); -float pmt_f32vector_ref(pmt_t v, size_t k); -double pmt_f64vector_ref(pmt_t v, size_t k); -std::complex<float> pmt_c32vector_ref(pmt_t v, size_t k); -std::complex<double> pmt_c64vector_ref(pmt_t v, size_t k); - -void pmt_u8vector_set(pmt_t v, size_t k, uint8_t x); //< v[k] = x -void pmt_s8vector_set(pmt_t v, size_t k, int8_t x); -void pmt_u16vector_set(pmt_t v, size_t k, uint16_t x); -void pmt_s16vector_set(pmt_t v, size_t k, int16_t x); -void pmt_u32vector_set(pmt_t v, size_t k, uint32_t x); -void pmt_s32vector_set(pmt_t v, size_t k, int32_t x); -void pmt_u64vector_set(pmt_t v, size_t k, uint64_t x); -void pmt_s64vector_set(pmt_t v, size_t k, int64_t x); -void pmt_f32vector_set(pmt_t v, size_t k, float x); -void pmt_f64vector_set(pmt_t v, size_t k, double x); -void pmt_c32vector_set(pmt_t v, size_t k, std::complex<float> x); -void pmt_c64vector_set(pmt_t v, size_t k, std::complex<double> x); - -// Return const pointers to the elements - -%apply size_t & INOUT { size_t &len }; - -// works with any; len is in bytes -// Returns an opaque Python type -const void *pmt_uniform_vector_elements(pmt_t v, size_t &len); - -// Returns a Python tuple -const std::vector<uint8_t> pmt_u8vector_elements(pmt_t v); -const std::vector<int8_t> pmt_s8vector_elements(pmt_t v); -const std::vector<uint16_t> pmt_u16vector_elements(pmt_t v); -const std::vector<int16_t> pmt_s16vector_elements(pmt_t v); -const std::vector<uint32_t> pmt_u32vector_elements(pmt_t v); -const std::vector<int32_t> pmt_s32vector_elements(pmt_t v); -const std::vector<float> pmt_f32vector_elements(pmt_t v); -const std::vector<double> pmt_f64vector_elements(pmt_t v); -const std::vector<std::complex<float> > pmt_c32vector_elements(pmt_t v); -const std::vector<std::complex<double> > pmt_c64vector_elements(pmt_t v); - -/* - * ------------------------------------------------------------------------ - * Dictionary (a.k.a associative array, hash, map) - * - * This is a functional data structure that is persistent. Updating a - * functional data structure does not destroy the existing version, but - * rather creates a new version that coexists with the old. - * ------------------------------------------------------------------------ - */ - -//! Return true if \p obj is a dictionary -bool pmt_is_dict(const pmt_t &obj); - -//! Make an empty dictionary -pmt_t pmt_make_dict(); - -//! Return a new dictionary with \p key associated with \p value. -pmt_t pmt_dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value); - -//! Return a new dictionary with \p key removed. -pmt_t pmt_dict_delete(const pmt_t &dict, const pmt_t &key); - -//! Return true if \p key exists in \p dict -bool pmt_dict_has_key(const pmt_t &dict, const pmt_t &key); - -//! If \p key exists in \p dict, return associated value; otherwise return \p not_found. -pmt_t pmt_dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t ¬_found); - -//! Return list of (key . value) pairs -pmt_t pmt_dict_items(pmt_t dict); - -//! Return list of keys -pmt_t pmt_dict_keys(pmt_t dict); - -//! Return list of values -pmt_t pmt_dict_values(pmt_t dict); - -/* - * ------------------------------------------------------------------------ - * Any (wraps boost::any -- can be used to wrap pretty much anything) - * - * Cannot be serialized or used across process boundaries. - * See http://www.boost.org/doc/html/any.html - * ------------------------------------------------------------------------ - */ - -//! Return true if \p obj is an any -bool pmt_is_any(pmt_t obj); - -//! make an any -pmt_t pmt_make_any(const boost::any &any); - -//! Return underlying boost::any -boost::any pmt_any_ref(pmt_t obj); - -//! Store \p any in \p obj -void pmt_any_set(pmt_t obj, const boost::any &any); - - -/* - * ------------------------------------------------------------------------ - * msg_accepter -- pmt representation of gruel::msg_accepter - * ------------------------------------------------------------------------ - */ -//! Return true if \p obj is a msg_accepter -bool pmt_is_msg_accepter(const pmt_t &obj); - -//! make a msg_accepter -pmt_t pmt_make_msg_accepter(boost::shared_ptr<gruel::msg_accepter> ma); - -//! Return underlying msg_accepter -boost::shared_ptr<gruel::msg_accepter> pmt_msg_accepter_ref(const pmt_t &obj); - -/* - * ------------------------------------------------------------------------ - * General functions - * ------------------------------------------------------------------------ - */ - -//! Return true if x and y are the same object; otherwise return false. -bool pmt_eq(const pmt_t& x, const pmt_t& y); - -/*! - * \brief Return true if x and y should normally be regarded as the same object, else false. - * - * <pre> - * eqv returns true if: - * x and y are the same object. - * x and y are both \#t or both \#f. - * x and y are both symbols and their names are the same. - * x and y are both numbers, and are numerically equal. - * x and y are both the empty list (nil). - * x and y are pairs or vectors that denote same location in store. - * </pre> - */ -bool pmt_eqv(const pmt_t& x, const pmt_t& y); - -/*! - * pmt_equal recursively compares the contents of pairs and vectors, - * applying pmt_eqv on other objects such as numbers and symbols. - * pmt_equal may fail to terminate if its arguments are circular data - * structures. - */ -bool pmt_equal(const pmt_t& x, const pmt_t& y); - - -//! Return the number of elements in v -size_t pmt_length(const pmt_t& v); - -/*! - * \brief Find the first pair in \p alist whose car field is \p obj - * and return that pair. - * - * \p alist (for "association list") must be a list of pairs. If no pair - * in \p alist has \p obj as its car then \#f is returned. - * Uses pmt_eq to compare \p obj with car fields of the pairs in \p alist. - */ -pmt_t pmt_assq(pmt_t obj, pmt_t alist); - -/*! - * \brief Find the first pair in \p alist whose car field is \p obj - * and return that pair. - * - * \p alist (for "association list") must be a list of pairs. If no pair - * in \p alist has \p obj as its car then \#f is returned. - * Uses pmt_eqv to compare \p obj with car fields of the pairs in \p alist. - */ -pmt_t pmt_assv(pmt_t obj, pmt_t alist); - -/*! - * \brief Find the first pair in \p alist whose car field is \p obj - * and return that pair. - * - * \p alist (for "association list") must be a list of pairs. If no pair - * in \p alist has \p obj as its car then \#f is returned. - * Uses pmt_equal to compare \p obj with car fields of the pairs in \p alist. - */ -pmt_t pmt_assoc(pmt_t obj, pmt_t alist); - -/*! - * \brief Apply \p proc element-wise to the elements of list and returns - * a list of the results, in order. - * - * \p list must be a list. The dynamic order in which \p proc is - * applied to the elements of \p list is unspecified. - */ -pmt_t pmt_map(pmt_t proc(const pmt_t&), pmt_t list); - -/*! - * \brief reverse \p list. - * - * \p list must be a proper list. - */ -pmt_t pmt_reverse(pmt_t list); - -/*! - * \brief destructively reverse \p list. - * - * \p list must be a proper list. - */ -pmt_t pmt_reverse_x(pmt_t list); - -/*! - * \brief (acons x y a) == (cons (cons x y) a) - */ -inline static pmt_t -pmt_acons(pmt_t x, pmt_t y, pmt_t a) -{ - return pmt_cons(pmt_cons(x, y), a); -} - -/*! - * \brief locates \p nth element of \n list where the car is the 'zeroth' element. - */ -pmt_t pmt_nth(size_t n, pmt_t list); - -/*! - * \brief returns the tail of \p list that would be obtained by calling - * cdr \p n times in succession. - */ -pmt_t pmt_nthcdr(size_t n, pmt_t list); - -/*! - * \brief Return the first sublist of \p list whose car is \p obj. - * If \p obj does not occur in \p list, then \#f is returned. - * pmt_memq use pmt_eq to compare \p obj with the elements of \p list. - */ -pmt_t pmt_memq(pmt_t obj, pmt_t list); - -/*! - * \brief Return the first sublist of \p list whose car is \p obj. - * If \p obj does not occur in \p list, then \#f is returned. - * pmt_memv use pmt_eqv to compare \p obj with the elements of \p list. - */ -pmt_t pmt_memv(pmt_t obj, pmt_t list); - -/*! - * \brief Return the first sublist of \p list whose car is \p obj. - * If \p obj does not occur in \p list, then \#f is returned. - * pmt_member use pmt_equal to compare \p obj with the elements of \p list. - */ -pmt_t pmt_member(pmt_t obj, pmt_t list); - -/*! - * \brief Return true if every element of \p list1 appears in \p list2, and false otherwise. - * Comparisons are done with pmt_eqv. - */ -bool pmt_subsetp(pmt_t list1, pmt_t list2); - -/*! - * \brief Return a list of length 1 containing \p x1 - */ -pmt_t pmt_list1(const pmt_t& x1); - -/*! - * \brief Return a list of length 2 containing \p x1, \p x2 - */ -pmt_t pmt_list2(const pmt_t& x1, const pmt_t& x2); - -/*! - * \brief Return a list of length 3 containing \p x1, \p x2, \p x3 - */ -pmt_t pmt_list3(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3); - -/*! - * \brief Return a list of length 4 containing \p x1, \p x2, \p x3, \p x4 - */ -pmt_t pmt_list4(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4); - -/*! - * \brief Return a list of length 5 containing \p x1, \p x2, \p x3, \p x4, \p x5 - */ -pmt_t pmt_list5(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5); - -/*! - * \brief Return a list of length 6 containing \p x1, \p x2, \p x3, \p x4, \p - * x5, \p x6 - */ -pmt_t pmt_list6(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5, const pmt_t& x6); - -/*! - * \brief Return \p list with \p item added to it. - */ -pmt_t pmt_list_add(pmt_t list, const pmt_t& item); - -/*! - * \brief Return \p list with \p item removed - */ -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 - * ------------------------------------------------------------------------ - */ -extern const pmt_t PMT_EOF; //< The end of file object - -//! return true if obj is the EOF object, otherwise return false. -bool pmt_is_eof_object(pmt_t obj); - -/*! - * read converts external representations of pmt objects into the - * objects themselves. Read returns the next object parsable from - * the given input port, updating port to point to the first - * character past the end of the external representation of the - * object. - * - * If an end of file is encountered in the input before any - * characters are found that can begin an object, then an end of file - * object is returned. The port remains open, and further attempts - * to read will also return an end of file object. If an end of file - * is encountered after the beginning of an object's external - * representation, but the external representation is incomplete and - * therefore not parsable, an error is signaled. - */ -pmt_t pmt_read(std::istream &port); - -/*! - * Write a written representation of \p obj to the given \p port. - */ -void pmt_write(pmt_t obj, std::ostream &port); - -/*! - * Return a string representation of \p obj. - * This is the same output as would be generated by pmt_write. - */ -std::string pmt_write_string(pmt_t obj); - - -/*! - * \brief Write pmt string representation to stdout. - */ -void pmt_print(pmt_t v); - - -/* - * ------------------------------------------------------------------------ - * portable byte stream representation - * ------------------------------------------------------------------------ - */ -/*! - * \brief Write portable byte-serial representation of \p obj to \p sink - */ -bool pmt_serialize(pmt_t obj, std::streambuf &sink); - -/*! - * \brief Create obj from portable byte-serial representation - */ -pmt_t pmt_deserialize(std::streambuf &source); - - -void pmt_dump_sizeof(); // debugging - -/*! - * \brief Provide a simple string generating interface to pmt's serialize function - */ -std::string pmt_serialize_str(pmt_t obj); - -/*! - * \brief Provide a simple string generating interface to pmt's deserialize function - */ -pmt_t pmt_deserialize_str(std::string str); + typedef boost::intrusive_ptr<pmt_base> pmt_t; + + // Allows Python to directly print a PMT object + %pythoncode + %{ + swig_int_ptr.__repr__ = lambda self: write_string(self) + %} + + + extern const pmt_t PMT_T; + extern const pmt_t PMT_F; + extern const pmt_t PMT_NIL; + extern const pmt_t PMT_EOF; + + bool is_bool(pmt_t obj); + bool is_true(pmt_t obj); + bool is_false(pmt_t obj); + pmt_t from_bool(bool val); + bool to_bool(pmt_t val); + + bool is_symbol(const pmt_t& obj); + pmt_t string_to_symbol(const std::string &s); + pmt_t intern(const std::string &s); + const std::string symbol_to_string(const pmt_t& sym); + + bool is_number(pmt_t obj); + bool is_integer(pmt_t x); + pmt_t from_long(long x); + long to_long(pmt_t x); + + bool is_uint64(pmt_t x); + pmt_t from_uint64(uint64_t x); + uint64_t to_uint64(pmt_t x); + + bool is_real(pmt_t obj); + pmt_t from_double(double x); + double to_double(pmt_t x); + + bool is_complex(pmt_t obj); + pmt_t make_rectangular(double re, double im); + pmt_t from_complex(const std::complex<double> &z); + std::complex<double> to_complex(pmt_t z); + + bool is_null(const pmt_t& x); + bool is_pair(const pmt_t& obj); + pmt_t cons(const pmt_t& x, const pmt_t& y); + pmt_t car(const pmt_t& pair); + pmt_t cdr(const pmt_t& pair); + void set_car(pmt_t pair, pmt_t value); + void set_cdr(pmt_t pair, pmt_t value); + + pmt_t caar(pmt_t pair); + pmt_t cadr(pmt_t pair); + pmt_t cdar(pmt_t pair); + pmt_t cddr(pmt_t pair); + pmt_t caddr(pmt_t pair); + pmt_t cadddr(pmt_t pair); + + bool is_tuple(pmt_t x); + pmt_t make_tuple(); + pmt_t make_tuple(const pmt_t &e0); + pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1); + pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2); + pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3); + pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4); + pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5); + pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6); + pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7); + pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8); + pmt_t make_tuple(const pmt_t &e0, const pmt_t &e1, const pmt_t &e2, const pmt_t &e3, const pmt_t &e4, const pmt_t &e5, const pmt_t &e6, const pmt_t &e7, const pmt_t &e8, const pmt_t &e9); + + pmt_t to_tuple(const pmt_t &x); + pmt_t tuple_ref(const pmt_t &tuple, size_t k); + + bool is_vector(pmt_t x); + pmt_t make_vector(size_t k, pmt_t fill); + pmt_t vector_ref(pmt_t vector, size_t k); + void vector_set(pmt_t vector, size_t k, pmt_t obj); + void vector_fill(pmt_t vector, pmt_t fill); + + bool is_blob(pmt_t x); + pmt_t make_blob(const void *buf, size_t len); + const void *blob_data(pmt_t blob); + size_t blob_length(pmt_t blob); + + bool is_uniform_vector(pmt_t x); + bool is_u8vector(pmt_t x); + bool is_s8vector(pmt_t x); + bool is_u16vector(pmt_t x); + bool is_s16vector(pmt_t x); + bool is_u32vector(pmt_t x); + bool is_s32vector(pmt_t x); + bool is_u64vector(pmt_t x); + bool is_s64vector(pmt_t x); + bool is_f32vector(pmt_t x); + bool is_f64vector(pmt_t x); + bool is_c32vector(pmt_t x); + bool is_c64vector(pmt_t x); + pmt_t make_u8vector(size_t k, uint8_t fill); + pmt_t make_s8vector(size_t k, int8_t fill); + pmt_t make_u16vector(size_t k, uint16_t fill); + pmt_t make_s16vector(size_t k, int16_t fill); + pmt_t make_u32vector(size_t k, uint32_t fill); + pmt_t make_s32vector(size_t k, int32_t fill); + pmt_t make_u64vector(size_t k, uint64_t fill); + pmt_t make_s64vector(size_t k, int64_t fill); + pmt_t make_f32vector(size_t k, float fill); + pmt_t make_f64vector(size_t k, double fill); + pmt_t make_c32vector(size_t k, std::complex<float> fill); + pmt_t make_c64vector(size_t k, std::complex<double> fill); + pmt_t init_u8vector(size_t k, const std::vector<uint8_t> &data); + pmt_t init_s8vector(size_t k, const std::vector<int8_t> &data); + pmt_t init_u16vector(size_t k, const std::vector<uint16_t> &data); + pmt_t init_s16vector(size_t k, const std::vector<int16_t> &data); + pmt_t init_u32vector(size_t k, const std::vector<uint32_t> &data); + pmt_t init_s32vector(size_t k, const std::vector<int32_t> &data); + pmt_t init_f32vector(size_t k, const std::vector<float> &data); + pmt_t init_f64vector(size_t k, const std::vector<double> &data); + pmt_t init_c32vector(size_t k, const std::vector<std::complex<float> > &data); + pmt_t init_c64vector(size_t k, const std::vector<std::complex<double> > &data); + uint8_t u8vector_ref(pmt_t v, size_t k); + int8_t s8vector_ref(pmt_t v, size_t k); + uint16_t u16vector_ref(pmt_t v, size_t k); + int16_t s16vector_ref(pmt_t v, size_t k); + uint32_t u32vector_ref(pmt_t v, size_t k); + int32_t s32vector_ref(pmt_t v, size_t k); + uint64_t u64vector_ref(pmt_t v, size_t k); + int64_t s64vector_ref(pmt_t v, size_t k); + float f32vector_ref(pmt_t v, size_t k); + double f64vector_ref(pmt_t v, size_t k); + std::complex<float> c32vector_ref(pmt_t v, size_t k); + std::complex<double> c64vector_ref(pmt_t v, size_t k); + void u8vector_set(pmt_t v, size_t k, uint8_t x); //< v[k] = x + void s8vector_set(pmt_t v, size_t k, int8_t x); + void u16vector_set(pmt_t v, size_t k, uint16_t x); + void s16vector_set(pmt_t v, size_t k, int16_t x); + void u32vector_set(pmt_t v, size_t k, uint32_t x); + void s32vector_set(pmt_t v, size_t k, int32_t x); + void u64vector_set(pmt_t v, size_t k, uint64_t x); + void s64vector_set(pmt_t v, size_t k, int64_t x); + void f32vector_set(pmt_t v, size_t k, float x); + void f64vector_set(pmt_t v, size_t k, double x); + void c32vector_set(pmt_t v, size_t k, std::complex<float> x); + void c64vector_set(pmt_t v, size_t k, std::complex<double> x); + + %apply size_t & INOUT { size_t &len }; + const void *uniform_vector_elements(pmt_t v, size_t &len); + + const std::vector<uint8_t> u8vector_elements(pmt_t v); + const std::vector<int8_t> s8vector_elements(pmt_t v); + const std::vector<uint16_t> u16vector_elements(pmt_t v); + const std::vector<int16_t> s16vector_elements(pmt_t v); + const std::vector<uint32_t> u32vector_elements(pmt_t v); + const std::vector<int32_t> s32vector_elements(pmt_t v); + const std::vector<float> f32vector_elements(pmt_t v); + const std::vector<double> f64vector_elements(pmt_t v); + const std::vector<std::complex<float> > c32vector_elements(pmt_t v); + const std::vector<std::complex<double> > c64vector_elements(pmt_t v); + + bool is_dict(const pmt_t &obj); + pmt_t make_dict(); + pmt_t dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value); + pmt_t dict_delete(const pmt_t &dict, const pmt_t &key); + bool dict_has_key(const pmt_t &dict, const pmt_t &key); + pmt_t dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t ¬_found); + pmt_t dict_items(pmt_t dict); + pmt_t dict_keys(pmt_t dict); + pmt_t dict_values(pmt_t dict); + + bool is_any(pmt_t obj); + pmt_t make_any(const boost::any &any); + boost::any any_ref(pmt_t obj); + void any_set(pmt_t obj, const boost::any &any); + + bool is_msg_accepter(const pmt_t &obj); + pmt_t make_msg_accepter(boost::shared_ptr<gruel::msg_accepter> ma); + boost::shared_ptr<gruel::msg_accepter> msg_accepter_ref(const pmt_t &obj); + + bool eq(const pmt_t& x, const pmt_t& y); + bool eqv(const pmt_t& x, const pmt_t& y); + bool equal(const pmt_t& x, const pmt_t& y); + size_t length(const pmt_t& v); + pmt_t assq(pmt_t obj, pmt_t alist); + pmt_t assv(pmt_t obj, pmt_t alist); + pmt_t assoc(pmt_t obj, pmt_t alist); + pmt_t map(pmt_t proc(const pmt_t&), pmt_t list); + pmt_t reverse(pmt_t list); + pmt_t reverse_x(pmt_t list); + inline static pmt_t acons(pmt_t x, pmt_t y, pmt_t a); + pmt_t nth(size_t n, pmt_t list); + pmt_t nthcdr(size_t n, pmt_t list); + pmt_t memq(pmt_t obj, pmt_t list); + pmt_t memv(pmt_t obj, pmt_t list); + pmt_t member(pmt_t obj, pmt_t list); + bool subsetp(pmt_t list1, pmt_t list2); + + pmt_t list1(const pmt_t& x1); + pmt_t list2(const pmt_t& x1, const pmt_t& x2); + pmt_t list3(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3); + pmt_t list4(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4); + pmt_t list5(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5); + pmt_t list6(const pmt_t& x1, const pmt_t& x2, const pmt_t& x3, const pmt_t& x4, const pmt_t& x5, const pmt_t& x6); + pmt_t list_add(pmt_t list, const pmt_t& item); + pmt_t list_rm(pmt_t list, const pmt_t& item); + bool list_has(pmt_t list, const pmt_t& item); + + bool is_eof_object(pmt_t obj); + pmt_t read(std::istream &port); + void write(pmt_t obj, std::ostream &port); + std::string write_string(pmt_t obj); + + //void pmt_print(pmt_t v); + + bool serialize(pmt_t obj, std::streambuf &sink); + pmt_t deserialize(std::streambuf &source); + void dump_sizeof(); + std::string serialize_str(pmt_t obj); + pmt_t deserialize_str(std::string str); } //namespace pmt |