diff options
author | Tom Rondeau <trondeau@vt.edu> | 2012-12-20 22:56:56 -0500 |
---|---|---|
committer | Tom Rondeau <trondeau@vt.edu> | 2012-12-21 12:43:30 -0500 |
commit | 275add3ae70d648dfb0ce14eb7df99b0e9adecbd (patch) | |
tree | 43e567446cc81e20627326682b0ec19684678da4 /gruel | |
parent | f0bff01c27c793952f41344c62b4ea6a7cb5bdf1 (diff) |
gruel: Renaming PMT function to get rid of pmt_ prefix.
Also cleans up Python interface. Removed pmt.print statement from swig but overloaded __repr__ attribute of PMTs for easy printing.
Diffstat (limited to 'gruel')
-rw-r--r-- | gruel/src/include/gruel/msg_passing.h | 4 | ||||
-rw-r--r-- | gruel/src/include/gruel/pmt.h | 506 | ||||
-rw-r--r-- | gruel/src/include/gruel/pmt_sugar.h | 40 | ||||
-rw-r--r-- | gruel/src/lib/pmt/pmt.cc | 532 | ||||
-rw-r--r-- | gruel/src/lib/pmt/pmt_io.cc | 88 | ||||
-rw-r--r-- | gruel/src/lib/pmt/pmt_serialize.cc | 254 | ||||
-rw-r--r-- | gruel/src/lib/pmt/qa_pmt_prims.cc | 644 | ||||
-rw-r--r-- | gruel/src/lib/pmt/unv_qa_template.cc.t | 24 | ||||
-rw-r--r-- | gruel/src/lib/pmt/unv_template.cc.t | 32 | ||||
-rw-r--r-- | gruel/src/swig/CMakeLists.txt | 2 | ||||
-rw-r--r-- | gruel/src/swig/pmt_swig.i | 933 |
11 files changed, 1283 insertions, 1776 deletions
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..1a6cd0ec50 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,22 +218,22 @@ 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 pmt_from_complex(double re, double im); +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 pmt_from_complex(const std::complex<double> &z); +GRUEL_API pmt_t 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 +244,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 +282,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 +316,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 +342,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 +352,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,132 +390,132 @@ 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> pmt_u8vector_elements(pmt_t v); -GRUEL_API const std::vector<int8_t> pmt_s8vector_elements(pmt_t v); -GRUEL_API const std::vector<uint16_t> pmt_u16vector_elements(pmt_t v); -GRUEL_API const std::vector<int16_t> pmt_s16vector_elements(pmt_t v); -GRUEL_API const std::vector<uint32_t> pmt_u32vector_elements(pmt_t v); -GRUEL_API const std::vector<int32_t> pmt_s32vector_elements(pmt_t v); -GRUEL_API const std::vector<uint64_t> pmt_u64vector_elements(pmt_t v); -GRUEL_API const std::vector<int64_t> pmt_s64vector_elements(pmt_t v); -GRUEL_API const std::vector<float> pmt_f32vector_elements(pmt_t v); -GRUEL_API const std::vector<double> pmt_f64vector_elements(pmt_t v); -GRUEL_API const std::vector<std::complex<float> > pmt_c32vector_elements(pmt_t v); -GRUEL_API const std::vector<std::complex<double> > pmt_c64vector_elements(pmt_t v); +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); // 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 +528,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 +564,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 +582,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 +597,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 +612,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 +632,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 +642,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 +652,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 +663,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 +781,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 +798,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 +817,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 +828,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..bb1866d562 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,29 +380,31 @@ 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 pmt_from_complex(re, im); + return from_complex(re, im); } -pmt_t pmt_from_complex(double re, double im) +pmt_t +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 +413,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 +424,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 +494,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 +502,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 +514,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 +562,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 +584,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 +598,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 +607,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 +617,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 +628,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 +640,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 +653,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 +667,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 +682,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 +698,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 +715,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 +733,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 +749,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 +783,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 +868,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 +900,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 +934,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 +967,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 +994,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 +1015,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 +1030,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 +1043,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 +1070,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 +1086,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 +1123,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 +1141,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 +1168,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 +1353,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/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 |