- odr_encode = odr_createmem (ODR_ENCODE);
- odr_decode = odr_createmem (ODR_DECODE);
- odr_print = odr_createmem (ODR_PRINT);
+ odr_encode = odr_createmem(ODR_ENCODE);
+ odr_decode = odr_createmem(ODR_DECODE);
+ odr_print = odr_createmem(ODR_PRINT);
+}
+
+
+Yaz_Z_Query::Yaz_Z_Query(const Yaz_Z_Query &q)
+{
+ odr_encode = odr_createmem(ODR_ENCODE);
+ odr_decode = odr_createmem(ODR_DECODE);
+ odr_print = odr_createmem(ODR_PRINT);
+
+ m_len = q.m_len;
+ m_buf = (char*) odr_malloc(odr_encode, m_len);
+ memcpy(m_buf, q.m_buf, m_len);
+}
+
+Yaz_Z_Query& Yaz_Z_Query::operator=(const Yaz_Z_Query &q)
+{
+ if (this != &q)
+ {
+ odr_reset(odr_encode);
+ if (!q.m_buf)
+ {
+ m_buf = 0;
+ m_len = 0;
+ }
+ else
+ {
+ m_len = q.m_len;
+ m_buf = (char*) odr_malloc(odr_encode, m_len);
+ memcpy(m_buf, q.m_buf, m_len);
+ }
+ }
+ return *this;