encoder& operator<<(encoder& e, const data& v) { if (pn_cast(&e) == pn_cast(&v)) throw encode_error("cannot insert into self"); check(pn_data_append(pn_cast(&e), pn_cast(&v)), pn_cast(&e)); return e; }
int data::append(data src) { return pn_data_append(pn_object(), src.pn_object());}