+ for (uns i=0;i<ARRAY_SIZE(pos);i++)
+ {
+ bsetpos(f, pos[i]);
+ putchar(bgetc(f));
+ }
+
+ bclose(f);
+ break;
+ }
+ case 'i':
+ {
+ char *data = "Insae";
+ struct fastbuf fb[4];
+ fbbuf_init_read(&fb[0], data, 1, 0);
+ fbbuf_init_read(&fb[1], data + 1, 1, 0);
+ fbbuf_init_read(&fb[2], data + 2, 2, 0);
+ fbbuf_init_read(&fb[3], data + 4, 1, 0);
+
+ struct fastbuf *f = fbmulti_create();
+ fbmulti_append(f, &fb[0]);
+ fbmulti_append(f, &fb[1]);
+ fbmulti_append(f, &fb[2]);
+ fbmulti_append(f, &fb[1]);
+ fbmulti_append(f, &fb[3]);
+
+ char buffer[9];
+ while(bgets(f, buffer, 9))
+ puts(buffer);
+
+ bclose(f);
+ break;
+ }
+ case 'n':
+ {
+ char *data[] = { "Nested", "Data", "As", "In", "Real", "Usage", };
+ struct fastbuf fb[ARRAY_SIZE(data)];
+ for (uns i=0;i<ARRAY_SIZE(data);i++)
+ fbbuf_init_read(&fb[i], data[i], strlen(data[i]), 0);
+
+ struct fastbuf sp;
+ fbbuf_init_read(&sp, " ", 1, 0);
+
+ struct fastbuf nl;
+ fbbuf_init_read(&nl, "\n", 1, 0);
+
+ struct fastbuf *f = fbmulti_create();
+ struct fastbuf *ff;
+
+ ff = fbmulti_create();
+ fbmulti_append(ff, &fb[0]);
+ fbmulti_append(ff, &sp);
+ fbmulti_append(ff, &fb[1]);
+ fbmulti_append(f, ff);
+ fbmulti_append(f, &nl);
+
+ ff = fbmulti_create();
+ fbmulti_append(ff, &fb[2]);
+ fbmulti_append(ff, &sp);
+ fbmulti_append(ff, &fb[3]);
+ fbmulti_append(f, ff);
+ fbmulti_append(f, &nl);
+
+ ff = fbmulti_create();
+ fbmulti_append(ff, &fb[4]);
+ fbmulti_append(ff, &sp);
+ fbmulti_append(ff, &fb[5]);
+ fbmulti_append(f, ff);
+ fbmulti_append(f, &nl);
+
+ char buffer[20];
+ while (bgets(f, buffer, 20))
+ puts(buffer);