- odr_encode = odr_createmem (ODR_ENCODE);
- odr_decode = odr_createmem (ODR_DECODE);
- odr_print = odr_createmem (ODR_PRINT);
+ m_p = new Rep;
+ m_p->odr_encode = odr_createmem(ODR_ENCODE);
+ m_p->odr_decode = odr_createmem(ODR_DECODE);
+ m_p->odr_print = odr_createmem(ODR_PRINT);
+ m_p->len = 0;
+ m_p->buf = 0;
+}
+
+
+Yaz_Z_Query::Yaz_Z_Query(const Yaz_Z_Query &q)
+{
+ m_p = new Rep;
+
+ m_p->odr_encode = odr_createmem(ODR_ENCODE);
+ m_p->odr_decode = odr_createmem(ODR_DECODE);
+ m_p->odr_print = odr_createmem(ODR_PRINT);
+
+ m_p->len = q.m_p->len;
+ m_p->buf = (char*) odr_malloc(m_p->odr_encode, m_p->len);
+ memcpy(m_p->buf, q.m_p->buf, m_p->len);
+}
+
+Yaz_Z_Query& Yaz_Z_Query::operator=(const Yaz_Z_Query &q)
+{
+ if (this != &q)
+ {
+ odr_reset(m_p->odr_encode);
+ if (!q.m_p->buf)
+ {
+ m_p->buf = 0;
+ m_p->len = 0;
+ }
+ else
+ {
+ m_p->len = q.m_p->len;
+ m_p->buf = (char*) odr_malloc(m_p->odr_encode, m_p->len);
+ memcpy(m_p->buf, q.m_p->buf, m_p->len);
+ }
+ }
+ return *this;
+}
+
+Yaz_Z_Query& Yaz_Z_Query::operator=(const char *rpn)
+{
+ set_rpn(rpn);
+ return *this;