Happy new year
[yaz-moved-to-github.git] / include / yaz / record_conv.h
index acf1c82..c038197 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2012 Index Data.
+ * Copyright (C) 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:
@@ -44,13 +44,24 @@ YAZ_BEGIN_CDECL
 /** record conversion handle  */
 typedef struct yaz_record_conv_struct *yaz_record_conv_t;
 
+/** creates record handle
+    \return record handle
+*/
+YAZ_EXPORT yaz_record_conv_t yaz_record_conv_create(void);
+
+/** destroys record handle
+    \param p record conversion handle
+*/
+YAZ_EXPORT void yaz_record_conv_destroy(yaz_record_conv_t p);
+
+#if YAZ_HAVE_XML2
 /** record conversion type */
 struct yaz_record_conv_type {
-    /** \brief internal; no need to set */
+    /** \brief pointer to next type ; NULL for last */
     struct yaz_record_conv_type *next;
 
     /** \brief construct and configure a type of ours */
-    void * (*construct)(yaz_record_conv_t , const xmlNode *, const char *path,
+    void * (*construct)(const xmlNode *, const char *path,
                         WRBUF error_msg);
 
     /** \brief converts a record */
@@ -60,17 +71,6 @@ struct yaz_record_conv_type {
     void (*destroy)(void *info);
 };
 
-/** creates record handle
-    \return record handle
-*/
-YAZ_EXPORT yaz_record_conv_t yaz_record_conv_create(void);
-
-/** destroys record handle
-    \param p record conversion handle
-*/
-YAZ_EXPORT void yaz_record_conv_destroy(yaz_record_conv_t p);
-
-#if YAZ_HAVE_XML2
 /** configures record conversion
     \param p record conversion handle
     \param node xmlNode pointer (root element of XML config)
@@ -78,7 +78,7 @@ YAZ_EXPORT void yaz_record_conv_destroy(yaz_record_conv_t p);
     \retval -1 failure
 
     On failure, use yaz_record_conv_get_error to get error string.
-    
+
     \verbatim
     <backend syntax='xml'>
       <xslt stylesheet="dc2marcxml.xsl"/>
@@ -96,6 +96,19 @@ YAZ_EXPORT void yaz_record_conv_destroy(yaz_record_conv_t p);
 */
 YAZ_EXPORT
 int yaz_record_conv_configure(yaz_record_conv_t p, const xmlNode *node);
+
+/** configures record conversion with user-defined conversion types
+    \param p record conversion handle
+    \param node xmlNode pointer (root element of XML config)
+    \param types conversion types
+    \retval 0 success
+    \retval -1 failure
+
+*/
+YAZ_EXPORT
+int yaz_record_conv_configure_t(yaz_record_conv_t p, const xmlNode *node,
+                                struct yaz_record_conv_type *types);
+
 #endif
 
 /** performs record conversion on record buffer (OCTET aligned)
@@ -131,7 +144,7 @@ int yaz_record_conv_opac_record(yaz_record_conv_t p,
 /** returns error string (for last error)
     \param p record conversion handle
     \return error string
-*/    
+*/
 YAZ_EXPORT
 const char *yaz_record_conv_get_error(yaz_record_conv_t p);
 
@@ -139,18 +152,10 @@ const char *yaz_record_conv_get_error(yaz_record_conv_t p);
 /** set path for opening stylesheets etc.
     \param p record conversion handle
     \param path file path (UNIX style with : / Windows with ;)
-*/    
+*/
 YAZ_EXPORT
 void yaz_record_conv_set_path(yaz_record_conv_t p, const char *path);
 
-/** adds a type to our conversion handler
-    \param p record conversion handle
-    \param type info
-*/    
-YAZ_EXPORT
-void yaz_record_conv_add_type(yaz_record_conv_t p,
-                              struct yaz_record_conv_type *type);
-
 YAZ_END_CDECL
 
 #endif