add libFLAC++ equivalent callback-based chain reading/writing and tests
diff --git a/include/FLAC++/metadata.h b/include/FLAC++/metadata.h
index 8a2d082..500b5b1 100644
--- a/include/FLAC++/metadata.h
+++ b/include/FLAC++/metadata.h
@@ -908,7 +908,13 @@
 			Status status();
 
 			bool read(const char *filename);
+			bool read(FLAC__IOHandle handle, FLAC__IOCallbacks callbacks);
+
+			bool check_if_tempfile_needed(bool use_padding);
+
 			bool write(bool use_padding = true, bool preserve_file_stats = false);
+			bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks);
+			bool write(bool use_padding, ::FLAC__IOHandle handle, ::FLAC__IOCallbacks callbacks, ::FLAC__IOHandle temp_handle, ::FLAC__IOCallbacks temp_callbacks);
 
 			void merge_padding();
 			void sort_padding();