/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2010 Index Data.
+ * Copyright (C) 1995-2012 Index Data.
* All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
/** \brief destroy yaz_marc_t handle */
YAZ_EXPORT void yaz_marc_destroy(yaz_marc_t mt);
-/** \brief set XML mode YAZ_MARC_LINE, YAZ_MARC_SIMPLEXML, ... */
+/** \brief set XML mode YAZ_MARC_LINE, YAZ_MARCXML, YAZ_MARC_ISO2709 ..
+ \param mt MARC handle
+ \param xmlmode mode.
+
+ This function ONLY affects yaz_marc_write_mode, yaz_marc_write_trailer.
+*/
YAZ_EXPORT void yaz_marc_xml(yaz_marc_t mt, int xmlmode);
/** \brief Output format: Line-format */
/** \brief Output format: MarcXchange (ISO25577) */
#define YAZ_MARC_XCHANGE 5
/** \brief Output format: check only (no marc output) */
-#define YAZ_MARC_CHECK 6
-/** \brief Output format: Turbo MARCXML Index Data format*/
-#define YAZ_MARC_TMARCXML 7
+#define YAZ_MARC_CHECK 6
+/** \brief Output format: Turbo MARC Index Data format (XML based) */
+#define YAZ_MARC_TURBOMARC 7
/** \brief set iconv handle for character set conversion */
YAZ_EXPORT void yaz_marc_iconv(yaz_marc_t mt, yaz_iconv_t cd);
void *client_data);
#if YAZ_HAVE_XML2
-/** \brief parses MARCXML/MarcXchange record from xmlNode pointer
+/** \brief parses MARCXML/MarcXchange/TurboMARC record from xmlNode pointer
\param mt handle
\param ptr is a pointer to root xml node
\retval 0 OK
*/
YAZ_EXPORT int yaz_marc_write_marcxml(yaz_marc_t mt, WRBUF wrbuf);
+/** \brief writes record in TurboMARC format
+ \param mt handle
+ \param wrbuf WRBUF for output
+ \retval 0 OK
+ \retval -1 ERROR
+*/
+YAZ_EXPORT int yaz_marc_write_turbomarc(yaz_marc_t mt, WRBUF wrbuf);
+
/** \brief writes record in MarcXchange XML (ISO25577)
\param mt handle
\param wrbuf WRBUF for output
YAZ_EXPORT
void yaz_marc_add_controlfield_xml(yaz_marc_t mt, const xmlNode *ptr_tag,
const xmlNode *ptr_data);
+
+/** \brief adds controlfield to MARC structure using xml Nodes for data
+ \param mt handle
+ \param tag string tag
+ \param ptr_data value of data (TEXT xmlNode)
+*/
+YAZ_EXPORT
+void yaz_marc_add_controlfield_xml2(yaz_marc_t mt, char *tag,
+ const xmlNode *ptr_data);
#endif
/** \brief adds datafield to MARC structure using strings
YAZ_EXPORT
void yaz_marc_add_datafield_xml(yaz_marc_t mt, const xmlNode *ptr_tag,
const char *indicator, size_t indicator_len);
+
+/** \brief adds datafield to MARC structure using xml Nodes
+ \param mt handle
+ \param tag_value string value (pointer copied verbatim, not strdupped)
+ \param indicators indicator string ; pointer copied verbatim; not strdupped
+*/
+YAZ_EXPORT
+void yaz_marc_add_datafield_xml2(yaz_marc_t mt, char *tag_value,
+ char *indicators);
+
#endif
/** \brief returns memory for MARC handle
\param mt handle
\param r OPAC record
\param wrbuf WRBUF for resulting display string
+
+ This function uses iconv_handle of yaz_marc_t for character set
+ conversion of both OPAC + ISO2709 part.
\*/
YAZ_EXPORT void yaz_opac_decode_wrbuf(yaz_marc_t mt, Z_OPACRecord *r,
WRBUF wrbuf);
+/** \brief Performs "pretty" display of OPAC record to WRBUF using marc_t
+ \param mt handle
+ \param r OPAC record
+ \param wrbuf WRBUF for resulting display string
+ \param cd iconv handle for OPAC content (not ISO2709 part)
+
+ This function uses iconv handle of yaz_marc_t for character set
+ conversion of ISO2709 part and supplied handle (cd) for OPAC part.
+ \*/
+YAZ_EXPORT void yaz_opac_decode_wrbuf2(yaz_marc_t mt, Z_OPACRecord *r,
+ WRBUF wrbuf, yaz_iconv_t cd);
+
/** \brief flushes records
\param mt handle
\param wr WRBUF for output