Можно, и я бы посоветовал посмотреть на две вещи.
1. MiniZip. Настоящие виртуальные потоки, написанные на чистом Си!
Кстати, у нас на работе есть библиотека MiniZipPort, представляющая собой тупой перевод MiniZip на виртуальные потоки и шаблонные контейнеры — две строчки Си превращались в одну строчку на «крестах». К тому же для хранения каталога я использовал уже имевшийся самописный AccuStream (что-то вроде std::deque, только в виде потока).
2. Doom. Самый первый, 1993–94 года. Там тоже ухитрились делать объектно — правда, другими методами.