Happy new year
[yazpp-moved-to-github.git] / src / gdu.cpp
index 1f660ea..9c6f6dc 100644 (file)
@@ -1,11 +1,12 @@
-/*
- * Copyright (c) 1998-2005, Index Data.
+/* This file is part of the yazpp toolkit.
+ * Copyright (C) Index Data and Mike Taylor
  * See the file LICENSE for details.
- * 
- * $Id: gdu.cpp,v 1.3 2005-10-13 09:56:38 adam Exp $
  */
 
-#include <yaz++/gdu.h>
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <yazpp/gdu.h>
 
 using namespace yazpp_1;
 
@@ -41,13 +42,23 @@ void GDU::base(Z_GDU *gdu, ODR encode)
     {
         int len;
         char *buf = odr_getbuf(encode, &len, 0);
-        
+
         odr_setbuf(m_decode, buf, len, 0);
-        z_GDU(m_decode, &m_gdu, 0, 0);
+        if (!z_GDU(m_decode, &m_gdu, 0, 0))
+            m_gdu = 0;
     }
     odr_destroy(encode);
 }
 
+int GDU::get_size()
+{
+    int len = 0;
+    ODR encode = odr_createmem(ODR_ENCODE);
+    if (m_gdu && z_GDU(encode, &m_gdu, 0, "encode"))
+        odr_getbuf(encode, &len, 0);
+    odr_destroy(encode);
+    return len;
+}
 
 GDU &GDU::operator=(const GDU &g)
 {
@@ -84,6 +95,7 @@ void GDU::move_away_gdu(ODR dst, Z_GDU **gdu)
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab