00001 #ifndef _dev_w3_org__2001_blindfold_bytestream_implementation_h
00002 #define _dev_w3_org__2001_blindfold_bytestream_implementation_h
00003 
00004 #include "bytestream.h"
00005 
00029 typedef size_t (ByteReadFunction)(bytesource *self, 
00030                   void *buf, size_t count);
00031 
00033 typedef size_t (ByteWriteFunction)(ByteSink *self, 
00034                   void *buf, size_t count);
00035 
00037 typedef bytesource *(bytesourceSetFunction)(bytesource *source);
00038 
00040 typedef ByteSink *(ByteSinkSetFunction)(ByteSink *sink);
00041 
00042 
00043 
00044 
00045 
00046 
00047 struct byte_source {
00052     ByteReadFunction *read;
00053 
00059     bytesourceSetFunction *attach_sink;
00060     
00062     ReleaseFunction *release;
00063 };
00064 
00066 struct byte_sink {
00068     ByteWriteFunction *write;
00069 
00071     ReleaseFunction *release;
00072 };
00073