26 #include "proton/decoder.hpp"
27 #include "proton/encoder.hpp"
28 #include "proton/export.hpp"
29 #include "proton/object.hpp"
42 class data :
public object<pn_data_t> {
44 data(pn_data_t* d=0) : object<pn_data_t>(d) {}
46 PN_CPP_EXTERN
static data create();
49 PN_CPP_EXTERN data& copy(
const data&);
51 template<
class T> data& copy(T &t) { clear(); encoder() << t;
return *
this; }
54 PN_CPP_EXTERN
void clear();
57 PN_CPP_EXTERN
bool empty()
const;
60 PN_CPP_EXTERN
class encoder encoder();
63 PN_CPP_EXTERN
class decoder decoder();
66 PN_CPP_EXTERN uintptr_t point()
const;
69 PN_CPP_EXTERN
void restore(uintptr_t h);
71 PN_CPP_EXTERN
void narrow();
73 PN_CPP_EXTERN
void widen();
75 PN_CPP_EXTERN
int append(data src);
77 PN_CPP_EXTERN
int appendn(data src,
int limit);
79 PN_CPP_EXTERN
bool next()
const;
82 PN_CPP_EXTERN type_id type()
const;
85 template<
class T>
void get(T &t)
const { decoder().rewind(); decoder() >> t; }
87 template<
class T> T
get()
const { T t;
get(t);
return t; }
89 PN_CPP_EXTERN
bool equal(
const data& x)
const;
90 PN_CPP_EXTERN
bool less(
const data& x)
const;
93 friend PN_CPP_EXTERN std::ostream& operator<<(std::ostream&,
const data&);
96 data(pn_ptr<pn_data_t> d) : object<pn_data_t>(d) {}
97 class decoder decoder() const {
return const_cast<data*
>(
this)->decoder(); }