23 #ifndef INCLUDED_PMT_H
24 #define INCLUDED_PMT_H
27 #include <boost/intrusive_ptr.hpp>
28 #include <boost/shared_ptr.hpp>
29 #include <boost/any.hpp>
60 typedef boost::intrusive_ptr<pmt_base>
pmt_t;
GRUEL_API pmt_t pmt_intern(const std::string &s)
Alias for pmt_string_to_symbol.
GRUEL_API std::complex< double > * pmt_c64vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_assq(pmt_t obj, pmt_t alist)
Find the first pair in alist whose car field is obj and return that pair.
GRUEL_API pmt_t pmt_init_s8vector(size_t k, const int8_t *data)
GRUEL_API int32_t * pmt_s32vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_list_add(pmt_t list, const pmt_t &item)
Return list with item added to it.
GRUEL_API pmt_t pmt_assoc(pmt_t obj, pmt_t alist)
Find the first pair in alist whose car field is obj and return that pair.
GRUEL_API const std::complex< float > * pmt_c32vector_elements(pmt_t v, size_t &len)
#define GRUEL_API
Definition: gruel/src/include/gruel/api.h:30
GRUEL_API bool pmt_is_u64vector(pmt_t x)
GRUEL_API void pmt_s16vector_set(pmt_t v, size_t k, int16_t x)
GRUEL_API pmt_t pmt_init_s64vector(size_t k, const int64_t *data)
GRUEL_API uint64_t pmt_to_uint64(pmt_t x)
Convert pmt to uint64 if possible.
Provide a comparator function object to allow pmt use in stl types.
Definition: pmt.h:854
GRUEL_API void pmt_u8vector_set(pmt_t v, size_t k, uint8_t x)
GRUEL_API bool pmt_to_bool(pmt_t val)
Return true if val is PMT_T, return false when val is PMT_F,.
GRUEL_API size_t pmt_blob_length(pmt_t blob)
Return the blob's length in bytes.
GRUEL_API bool pmt_serialize(pmt_t obj, std::streambuf &sink)
Write portable byte-serial representation of obj to sink.
GRUEL_API std::complex< float > pmt_c32vector_ref(pmt_t v, size_t k)
GRUEL_API bool pmt_equal(const pmt_t &x, const pmt_t &y)
GRUEL_API pmt_t pmt_deserialize_str(std::string str)
Provide a simple string generating interface to pmt's deserialize function.
GRUEL_API pmt_t pmt_make_tuple()
GRUEL_API std::string pmt_serialize_str(pmt_t obj)
Provide a simple string generating interface to pmt's serialize function.
GRUEL_API uint8_t * pmt_u8vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API bool pmt_is_s16vector(pmt_t x)
GRUEL_API void pmt_print(pmt_t v)
Write pmt string representation to stdout.
GRUEL_API pmt_t pmt_init_f64vector(size_t k, const double *data)
GRUEL_API bool pmt_is_uint64(pmt_t x)
Return true if x is an uint64 number, else false.
GRUEL_API const pmt_t PMT_F
GRUEL_API void pmt_set_car(pmt_t pair, pmt_t value)
Stores value in the car field of pair.
GRUEL_API std::complex< double > pmt_to_complex(pmt_t z)
GRUEL_API uint16_t pmt_u16vector_ref(pmt_t v, size_t k)
GRUEL_API pmt_t pmt_init_u16vector(size_t k, const uint16_t *data)
GRUEL_API uint8_t pmt_u8vector_ref(pmt_t v, size_t k)
GRUEL_API bool pmt_eq(const pmt_t &x, const pmt_t &y)
Return true if x and y are the same object; otherwise return false.
GRUEL_API pmt_t pmt_list1(const pmt_t &x1)
Return a list of length 1 containing x1.
GRUEL_API boost::any pmt_any_ref(pmt_t obj)
Return underlying boost::any.
GRUEL_API pmt_t pmt_from_bool(bool val)
Return #f is val is false, else return #t.
GRUEL_API pmt_t pmt_from_long(long x)
Return the pmt value that represents the integer x.
GRUEL_API bool pmt_is_true(pmt_t obj)
Return false if obj is #f, else return true.
GRUEL_API pmt_t pmt_from_complex(double re, double im)
Return a complex number constructed of the given real and imaginary parts.
GRUEL_API int8_t * pmt_s8vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_to_tuple(const pmt_t &x)
GRUEL_API pmt_t pmt_tuple_ref(const pmt_t &tuple, size_t k)
GRUEL_API const double * pmt_f64vector_elements(pmt_t v, size_t &len)
GRUEL_API float pmt_f32vector_ref(pmt_t v, size_t k)
GRUEL_API bool pmt_is_tuple(pmt_t x)
Return true if x is a tuple, othewise false.
GRUEL_API bool pmt_is_number(pmt_t obj)
Return true if obj is any kind of number, else false.
GRUEL_API pmt_t pmt_cddr(pmt_t pair)
GRUEL_API pmt_t pmt_assv(pmt_t obj, pmt_t alist)
Find the first pair in alist whose car field is obj and return that pair.
GRUEL_API double pmt_f64vector_ref(pmt_t v, size_t k)
unsigned short uint16_t
Definition: stdint.h:79
GRUEL_API const uint64_t * pmt_u64vector_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_dict_ref(const pmt_t &dict, const pmt_t &key, const pmt_t ¬_found)
If key exists in dict, return associated value; otherwise return not_found.
GRUEL_API bool pmt_is_false(pmt_t obj)
Return true if obj is #f, else return true.
GRUEL_API pmt_t pmt_init_c32vector(size_t k, const std::complex< float > *data)
GRUEL_API uint32_t pmt_u32vector_ref(pmt_t v, size_t k)
GRUEL_API bool pmt_is_pair(const pmt_t &obj)
Return true if obj is a pair, else false.
GRUEL_API bool pmt_is_real(pmt_t obj)
GRUEL_API std::complex< double > pmt_c64vector_ref(pmt_t v, size_t k)
GRUEL_API uint32_t * pmt_u32vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API bool pmt_is_s64vector(pmt_t x)
GRUEL_API void pmt_f64vector_set(pmt_t v, size_t k, double x)
unsigned char uint8_t
Definition: stdint.h:78
GRUEL_API void pmt_u64vector_set(pmt_t v, size_t k, uint64_t x)
GRUEL_API bool pmt_is_u16vector(pmt_t x)
GRUEL_API pmt_t pmt_caddr(pmt_t pair)
GRUEL_API bool pmt_eqv(const pmt_t &x, const pmt_t &y)
Return true if x and y should normally be regarded as the same object, else false.
GRUEL_API int16_t pmt_s16vector_ref(pmt_t v, size_t k)
GRUEL_API pmt_t pmt_cons(const pmt_t &x, const pmt_t &y)
Return a newly allocated pair whose car is x and whose cdr is y.
GRUEL_API pmt_t pmt_init_s32vector(size_t k, const int32_t *data)
GRUEL_API pmt_t pmt_reverse_x(pmt_t list)
destructively reverse list.
GRUEL_API pmt_t pmt_caar(pmt_t pair)
GRUEL_API pmt_t pmt_make_c64vector(size_t k, std::complex< double > fill)
GRUEL_API pmt_t pmt_cadr(pmt_t pair)
GRUEL_API pmt_t pmt_make_s32vector(size_t k, int32_t fill)
GRUEL_API std::complex< float > * pmt_c32vector_writable_elements(pmt_t v, size_t &len)
shared_ptr documentation stub
Definition: shared_ptr_docstub.h:15
GRUEL_API bool pmt_is_any(pmt_t obj)
Return true if obj is an any.
GRUEL_API const uint32_t * pmt_u32vector_elements(pmt_t v, size_t &len)
GRUEL_API bool pmt_is_symbol(const pmt_t &obj)
Return true if obj is a symbol, else false.
GRUEL_API pmt_t pmt_list3(const pmt_t &x1, const pmt_t &x2, const pmt_t &x3)
Return a list of length 3 containing x1, x2, x3.
GRUEL_API bool pmt_is_f32vector(pmt_t x)
GRUEL_API pmt_t pmt_make_s16vector(size_t k, int16_t fill)
GRUEL_API const std::complex< double > * pmt_c64vector_elements(pmt_t v, size_t &len)
GRUEL_API int32_t pmt_s32vector_ref(pmt_t v, size_t k)
GRUEL_API const void * pmt_blob_data(pmt_t blob)
Return a pointer to the blob's data.
GRUEL_API pmt_t pmt_make_msg_accepter(boost::shared_ptr< gruel::msg_accepter > ma)
make a msg_accepter
GRUEL_API boost::shared_ptr< gruel::msg_accepter > pmt_msg_accepter_ref(const pmt_t &obj)
Return underlying msg_accepter.
GRUEL_API pmt_t pmt_dict_values(pmt_t dict)
Return list of values.
GRUEL_API int64_t pmt_s64vector_ref(pmt_t v, size_t k)
GRUEL_API pmt_t pmt_string_to_symbol(const std::string &s)
Return the symbol whose name is s.
GRUEL_API bool pmt_list_has(pmt_t list, const pmt_t &item)
Return bool of list contains item.
GRUEL_API pmt_t pmt_memq(pmt_t obj, pmt_t list)
Return the first sublist of list whose car is obj. If obj does not occur in list, then #f is returned...
GRUEL_API void pmt_dump_sizeof()
unsigned int uint32_t
Definition: stdint.h:80
GRUEL_API pmt_t pmt_from_uint64(uint64_t x)
Return the pmt value that represents the uint64 x.
GRUEL_API const pmt_t PMT_T
signed short int16_t
Definition: stdint.h:76
GRUEL_API pmt_t pmt_nthcdr(size_t n, pmt_t list)
returns the tail of list that would be obtained by calling cdr n times in succession.
GRUEL_API void pmt_s32vector_set(pmt_t v, size_t k, int32_t x)
GRUEL_API const int16_t * pmt_s16vector_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_make_vector(size_t k, pmt_t fill)
Make a vector of length k, with initial values set to fill.
GRUEL_API pmt_t pmt_from_double(double x)
Return the pmt value that represents double x.
GRUEL_API bool pmt_is_s8vector(pmt_t x)
GRUEL_API bool pmt_is_bool(pmt_t obj)
Return true if obj is #t or #f, else return false.
unsigned __int64 uint64_t
Definition: stdint.h:90
GRUEL_API pmt_t pmt_dict_delete(const pmt_t &dict, const pmt_t &key)
Return a new dictionary with key removed.
GRUEL_API bool pmt_dict_has_key(const pmt_t &dict, const pmt_t &key)
Return true if key exists in dict.
GRUEL_API bool pmt_is_s32vector(pmt_t x)
GRUEL_API size_t pmt_length(const pmt_t &v)
Return the number of elements in v.
GRUEL_API pmt_t pmt_memv(pmt_t obj, pmt_t list)
Return the first sublist of list whose car is obj. If obj does not occur in list, then #f is returned...
GRUEL_API pmt_t pmt_make_c32vector(size_t k, std::complex< float > fill)
GRUEL_API pmt_t pmt_reverse(pmt_t list)
reverse list.
GRUEL_API const std::string pmt_symbol_to_string(const pmt_t &sym)
GRUEL_API pmt_t pmt_dict_items(pmt_t dict)
Return list of (key . value) pairs.
GRUEL_API double pmt_to_double(pmt_t x)
Convert pmt to double if possible.
GRUEL_API void pmt_set_cdr(pmt_t pair, pmt_t value)
Stores value in the cdr field of pair.
signed char int8_t
Definition: stdint.h:75
GRUEL_API bool pmt_is_f64vector(pmt_t x)
GRUEL_API void pmt_vector_fill(pmt_t vector, pmt_t fill)
Store fill in every position of vector.
GRUEL_API pmt_t pmt_list4(const pmt_t &x1, const pmt_t &x2, const pmt_t &x3, const pmt_t &x4)
Return a list of length 4 containing x1, x2, x3, x4.
GRUEL_API pmt_t pmt_make_dict()
Make an empty dictionary.
GRUEL_API bool pmt_is_vector(pmt_t x)
Return true if x is a vector, othewise false.
GRUEL_API pmt_t pmt_init_c64vector(size_t k, const std::complex< double > *data)
GRUEL_API const int32_t * pmt_s32vector_elements(pmt_t v, size_t &len)
GRUEL_API void pmt_any_set(pmt_t obj, const boost::any &any)
Store any in obj.
GRUEL_API bool pmt_is_u8vector(pmt_t x)
GRUEL_API void pmt_c32vector_set(pmt_t v, size_t k, std::complex< float > x)
GRUEL_API bool pmt_is_integer(pmt_t x)
Return true if x is an integer number, else false.
GRUEL_API pmt_t pmt_make_u8vector(size_t k, uint8_t fill)
GRUEL_API pmt_t pmt_make_f64vector(size_t k, double fill)
GRUEL_API const float * pmt_f32vector_elements(pmt_t v, size_t &len)
GRUEL_API void * pmt_uniform_vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API std::string pmt_write_string(pmt_t obj)
GRUEL_API bool pmt_is_u32vector(pmt_t x)
GRUEL_API pmt_t pmt_init_u64vector(size_t k, const uint64_t *data)
GRUEL_API pmt_t pmt_member(pmt_t obj, pmt_t list)
Return the first sublist of list whose car is obj. If obj does not occur in list, then #f is returned...
GRUEL_API pmt_t pmt_init_u8vector(size_t k, const uint8_t *data)
GRUEL_API pmt_t pmt_map(pmt_t proc(const pmt_t &), pmt_t list)
Apply proc element-wise to the elements of list and returns a list of the results, in order.
GRUEL_API void pmt_c64vector_set(pmt_t v, size_t k, std::complex< double > x)
GRUEL_API pmt_t pmt_init_s16vector(size_t k, const int16_t *data)
GRUEL_API pmt_t pmt_make_u32vector(size_t k, uint32_t fill)
GRUEL_API float * pmt_f32vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API bool pmt_is_uniform_vector(pmt_t x)
true if x is any kind of uniform numeric vector
GRUEL_API bool pmt_is_msg_accepter(const pmt_t &obj)
Return true if obj is a msg_accepter.
GRUEL_API pmt_t pmt_cdar(pmt_t pair)
GRUEL_API void pmt_u32vector_set(pmt_t v, size_t k, uint32_t x)
bool operator()(pmt::pmt_t const &p1, pmt::pmt_t const &p2) const
Definition: pmt.h:856
GRUEL_API const uint16_t * pmt_u16vector_elements(pmt_t v, size_t &len)
GRUEL_API const uint8_t * pmt_u8vector_elements(pmt_t v, size_t &len)
GRUEL_API const void * pmt_uniform_vector_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_vector_ref(pmt_t vector, size_t k)
GRUEL_API void pmt_s8vector_set(pmt_t v, size_t k, int8_t x)
GRUEL_API pmt_t pmt_make_rectangular(double re, double im)
Return a complex number constructed of the given real and imaginary parts.
GRUEL_API pmt_t pmt_car(const pmt_t &pair)
If pair is a pair, return the car of the pair, otherwise raise wrong_type.
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)
Return a list of length 6 containing x1, x2, x3, x4, x5, x6.
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)
Return a list of length 5 containing x1, x2, x3, x4, x5.
GRUEL_API bool pmt_is_c32vector(pmt_t x)
GRUEL_API pmt_t pmt_make_f32vector(size_t k, float fill)
GRUEL_API const pmt_t PMT_NIL
signed __int64 int64_t
Definition: stdint.h:89
GRUEL_API uint16_t * pmt_u16vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_list2(const pmt_t &x1, const pmt_t &x2)
Return a list of length 2 containing x1, x2.
GRUEL_API pmt_t pmt_cadddr(pmt_t pair)
GRUEL_API const int64_t * pmt_s64vector_elements(pmt_t v, size_t &len)
GRUEL_API uint64_t pmt_u64vector_ref(pmt_t v, size_t k)
GRUEL_API pmt_t pmt_make_s8vector(size_t k, int8_t fill)
GRUEL_API bool pmt_is_blob(pmt_t x)
Return true if x is a blob, othewise false.
GRUEL_API int8_t pmt_s8vector_ref(pmt_t v, size_t k)
GRUEL_API pmt_t pmt_dict_add(const pmt_t &dict, const pmt_t &key, const pmt_t &value)
Return a new dictionary with key associated with value.
GRUEL_API void intrusive_ptr_release(pmt_base *)
GRUEL_API bool pmt_is_complex(pmt_t obj)
return true if obj is a complex number, false otherwise.
GRUEL_API void intrusive_ptr_add_ref(pmt_base *)
GRUEL_API pmt_t pmt_make_u16vector(size_t k, uint16_t fill)
GRUEL_API bool pmt_subsetp(pmt_t list1, pmt_t list2)
Return true if every element of list1 appears in list2, and false otherwise. Comparisons are done wit...
GRUEL_API const int8_t * pmt_s8vector_elements(pmt_t v, size_t &len)
static pmt_t pmt_acons(pmt_t x, pmt_t y, pmt_t a)
(acons x y a) == (cons (cons x y) a)
Definition: pmt.h:686
GRUEL_API pmt_t pmt_nth(size_t n, pmt_t list)
locates nth element of list where the car is the 'zeroth' element.
GRUEL_API void pmt_vector_set(pmt_t vector, size_t k, pmt_t obj)
Store obj in position k.
GRUEL_API void pmt_f32vector_set(pmt_t v, size_t k, float x)
GRUEL_API bool pmt_is_eof_object(pmt_t obj)
return true if obj is the EOF object, otherwise return false.
boost::intrusive_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting). See http://www.boost.org/libs/smart_ptr/smart_ptr.htm
Definition: pmt.h:54
GRUEL_API pmt_t pmt_cdr(const pmt_t &pair)
If pair is a pair, return the cdr of the pair, otherwise raise wrong_type.
signed int int32_t
Definition: stdint.h:77
GRUEL_API pmt_t pmt_make_u64vector(size_t k, uint64_t fill)
GRUEL_API int64_t * pmt_s64vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_dict_keys(pmt_t dict)
Return list of keys.
GRUEL_API pmt_t pmt_make_blob(const void *buf, size_t len)
Make a blob given a pointer and length in bytes.
GRUEL_API void pmt_s64vector_set(pmt_t v, size_t k, int64_t x)
GRUEL_API const pmt_t PMT_EOF
GRUEL_API bool pmt_is_dict(const pmt_t &obj)
Return true if obj is a dictionary.
GRUEL_API pmt_t pmt_init_f32vector(size_t k, const float *data)
GRUEL_API long pmt_to_long(pmt_t x)
Convert pmt to long if possible.
GRUEL_API double * pmt_f64vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_init_u32vector(size_t k, const uint32_t *data)
GRUEL_API std::ostream & operator<<(std::ostream &os, pmt_t obj)
GRUEL_API pmt_t pmt_deserialize(std::streambuf &source)
Create obj from portable byte-serial representation.
GRUEL_API uint64_t * pmt_u64vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API void pmt_u16vector_set(pmt_t v, size_t k, uint16_t x)
GRUEL_API pmt_t pmt_make_s64vector(size_t k, int64_t fill)
GRUEL_API bool pmt_is_c64vector(pmt_t x)
GRUEL_API void pmt_write(pmt_t obj, std::ostream &port)
GRUEL_API bool pmt_is_null(const pmt_t &x)
Return true if x is the empty list, otherwise return false.
GRUEL_API pmt_t pmt_read(std::istream &port)
GRUEL_API int16_t * pmt_s16vector_writable_elements(pmt_t v, size_t &len)
GRUEL_API pmt_t pmt_list_rm(pmt_t list, const pmt_t &item)
Return list with item removed from it.
GRUEL_API pmt_t pmt_make_any(const boost::any &any)
make an any