Move unicode_funcs to buffer
diff --git a/src/hb-buffer.c b/src/hb-buffer.c
index 93b51e5..1b5f2fb 100644
--- a/src/hb-buffer.c
+++ b/src/hb-buffer.c
@@ -31,7 +31,9 @@
 
 
 static hb_buffer_t _hb_buffer_nil = {
-  HB_REFERENCE_COUNT_INVALID /* ref_count */
+  HB_REFERENCE_COUNT_INVALID, /* ref_count */
+
+  &_hb_unicode_funcs_nil  /* unicode */
 };
 
 /* Here is how the buffer works internally:
@@ -84,6 +86,8 @@
   if (pre_alloc_size)
     hb_buffer_ensure(buffer, pre_alloc_size);
 
+  buffer->unicode = &_hb_unicode_funcs_nil;
+
   return buffer;
 }
 
@@ -104,12 +108,45 @@
 {
   HB_OBJECT_DO_DESTROY (buffer);
 
+  hb_unicode_funcs_destroy (buffer->unicode);
+
   free (buffer->in_string);
   free (buffer->positions);
 
   free (buffer);
 }
 
+
+void
+hb_buffer_set_unicode_funcs (hb_buffer_t        *buffer,
+			     hb_unicode_funcs_t *unicode)
+{
+  hb_unicode_funcs_reference (unicode);
+  hb_unicode_funcs_destroy (buffer->unicode);
+  buffer->unicode = unicode;
+}
+
+hb_unicode_funcs_t *
+hb_buffer_get_unicode_funcs (hb_buffer_t        *buffer)
+{
+  return buffer->unicode;
+}
+
+void
+hb_buffer_set_direction (hb_buffer_t    *buffer,
+			 hb_direction_t  direction)
+
+{
+  buffer->direction = direction;
+}
+
+hb_direction_t
+hb_buffer_get_direction (hb_buffer_t    *buffer)
+{
+  return buffer->direction;
+}
+
+
 void
 hb_buffer_clear (hb_buffer_t *buffer)
 {
@@ -171,14 +208,6 @@
   buffer->in_length++;
 }
 
-void
-hb_buffer_set_direction (hb_buffer_t    *buffer,
-			 hb_direction_t  direction)
-
-{
-  buffer->direction = direction;
-}
-
 
 /* HarfBuzz-Internal API */