From 847e56d9e696b813d1cdf3da6d54df5e7b389eae Mon Sep 17 00:00:00 2001
From: David Robillard <d@drobilla.net>
Date: Fri, 30 Dec 2011 08:10:23 +0000
Subject: Add serd_node_new_blob and serd_base64_decode for handling arbitrary
 binary data via base64 encoding.

git-svn-id: http://svn.drobilla.net/serd/trunk@280 490d8e77-9747-427b-9fa3-0b8f29cee8a0
---
 serd/serd.h | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

(limited to 'serd')

diff --git a/serd/serd.h b/serd/serd.h
index 3e84c302..2380c03e 100644
--- a/serd/serd.h
+++ b/serd/serd.h
@@ -277,6 +277,20 @@ SERD_API
 double
 serd_strtod(const char* str, char** endptr);
 
+/**
+   Decode a base64 string.
+   This function can be used to deserialise a blob node created with
+   serd_node_new_blob().
+
+   @param str Base64 string to decode.
+   @param len The length of @c str.
+   @param size Set to the size of the returned blob in bytes.
+   @return A newly allocated blob which must be freed with free().
+*/
+SERD_API
+void*
+serd_base64_decode(const uint8_t* str, size_t len, size_t* size);
+
 /**
    @}
    @name URI
@@ -415,6 +429,18 @@ SERD_API
 SerdNode
 serd_node_new_integer(long i);
 
+/**
+   Create a node by serialising @c buf into an xsd:base64Binary string.
+   This function can be used to make a serialisable node out of arbitrary
+   binary data, which can be decoded using serd_base64_decode().
+
+   @param wrap_lines If true lines are wrapped at 76 characters to conform
+   to RFC 2045.
+*/
+SERD_API
+SerdNode
+serd_node_new_blob(const void* buf, size_t size, bool wrap_lines);
+
 /**
    Free any data owned by @c node.
 
-- 
cgit v1.2.1