是否有广泛使用的I / O流抽象层用于普通C?
I / O流抽象层是指至少允许创建自定义读/写函数的任何层。对于C ++,有标准的iostream和boost :: iostreams。对于glibc用户,可以使用自定义流。如果要求编写可移植的C代码,这些将无济于事。
最好使用广泛使用或易于嵌入源代码的库,或两者兼而有之。
SDL_RWops是SDL的未记录但广泛使用的功能,zziplib可以使用它。但是,为获得此功能而向SDL添加依赖项没有多大意义。
GLib包含一个GIOChannel抽象,但该库又相当大,他们说“对Windows的支持只是部分完成”。
然而,对于小型库,例如解码器,文件格式阅读器和信号处理器,上述情况并不十分令人满意:它们包含许多不必要的东西,LGPL许可证阻止将相关部分嵌入到非GPL代码中。
答案 0 :(得分:3)
BIO abstraction in OpenSSL听起来很合适。
答案 1 :(得分:2)
我认为你回答了自己的问题。
不,没有广泛使用的蒸汽抽象库。那些存在的通常是图书馆的一小部分,大多数人不想依赖或非常专业。
您有什么要求?您正在寻找抽象库中的内容是什么?我不得不承认,每当我看到一个,或者开始编写一个,我通常会回到标准的POSIX接口......还有什么想要的抽象?
答案 2 :(得分:1)
libslack(GNU GPL)可以提供您正在使用的一些功能以及此MIT许可证编辑的输入流包装器:
http://attractivechaos.wordpress.com/2008/10/11/a-generic-buffered-stream-wrapper/
答案 3 :(得分:0)
词法分析器生成器Quex带有POSIX,C ++流等的输入流摘要。它包含从ByteLoader
类派生的类的集合。
只需从ByteLoader
派生并隐含接口,即可轻松适应任何基础架构。请参阅:Link to Code。
不过,“真实的” ByteLoader
仅在生成词法分析器时实例化。