X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=ucw%2Fdoc%2Ffastbuf.txt;h=d94fffe90cf44cef4cf9f12024d7f7e1acbb8ba0;hb=25541ea3bb96e9f143f0e23f8ac5b432f2f6f47a;hp=df803a084622f735088dac2d07bdf568eb74ffc1;hpb=91972e1a8200da60d621b5341fc2e672a6d9f77b;p=libucw.git diff --git a/ucw/doc/fastbuf.txt b/ucw/doc/fastbuf.txt index df803a08..d94fffe9 100644 --- a/ucw/doc/fastbuf.txt +++ b/ucw/doc/fastbuf.txt @@ -1,12 +1,63 @@ Fastbufs ======== -Fastbufs are stream and file abstractions. They work with normal -files, network sockets, memory buffers or just any file descriptor. It -should be easy to implement other types by providing functions to -refill and read the buffer. +A *fastbuf* is a stream (or file) abstraction optimized for both speed +and flexibility. -Apart from abstraction, they are very fast. +Fastbufs can represent many different kinds of objects: regular files, network +sockets, file descriptors in general, or various memory buffers. These objects +are handled by different fastbuf *back-ends.* + +Once you have a fastbuf, you can access it by fuctions similar to those of +`stdio.h`, or you can use a variety of fastbuf *front-ends* providing various +formatted operations. + +Please keep in mind that fastbufs do not allow arbitrary mixing of reads and +writes on the same stream. If you need to mix them, you have to call @bflush() +inbetween and remember that the file position reported by @btell() points after +the flushed buffer, which is not necessarily the same as after the data you've +really read. + +.Back-ends: +- <> +- <> +- <> +- <> +- <> +- <> +- <> +- <> +- <> + +.Front-ends: +- <> + +.Other reading: +- <> +- <> + +ucw/fastbuf.h +------------- -The main iclude file is +ucw/fastbuf.h+: + !!ucw/fastbuf.h + +ucw/fb-socket.h +--------------- + +Fastbufs on network sockets with timeouts. + +!!ucw/fb-socket.h + +ucw/ff-unicode.h +---------------- + +Reading and writing of unicode characters. + +Invalid codes are replaced by `UNI_REPLACEMENT` when reading. + +!!ucw/ff-unicode.h + +ucw/ff-binary.h +--------------- + +!!ucw/ff-binary.h