2010-06-19 3 views
1

일반 C 용으로 널리 사용되는 I/O 스트림 추상화 레이어가 있습니까? I 적어도 맞춤 읽기/쓰기 기능의 생성을 가능하게하는 모든 층을 의미하는 I/O 스트림을 추상화 계층일반 C 용 입력/출력 스트림 추상화 레이어

. C++의 경우 표준 iostream과 boost :: iostreams가 있습니다. glibc 사용자의 경우 사용자 정의 스트림을 사용할 수 있습니다. 이 코드는 이식 가능한 C 코드를 작성하는 것이면 아무런 도움이되지 않습니다.

그것은 소스 코드, 또는 둘 다 포함 할 널리 사용 또는 쉬운 중 하나 인 라이브러리를 사용하는 것이 좋습니다.

SDL_RWops는 SDL의 문서화되지 않은 있지만, 널리 사용되는 기능이며, zziplib는 사용할 수 있습니다. 그러나이 기능을 사용하기 위해 SDL에 종속성을 추가하는 것은별로 의미가 없습니다.

은 입심은 GIOChannel 추상화 포함되어 있지만 라이브러리가 다시 매우 크고, 그들은 "윈도우에 대한 지원이 부분적으로 만 완료"고 말한다.

그러나 디코더, 파일 형식 판독기 및 신호 프로세서와 같은 작은 라이브러리에는 위의 내용이 만족스럽지 않습니다. 불필요한 내용이 많이 포함되어 있으며 LGPL 라이센스는 관련 부분을 비 GPL 코드에 포함하지 못하게합니다.

답변

2

나는 당신이 당신 자신의 질문에 대답했다고 생각합니다.

아니요, 널리 사용되는 증기 추출 라이브러리는 없습니다. 존재하는 것들은 보통 대부분의 사람들이 의존하고 싶지 않거나 매우 전문화 된 도서관의 작은 부분입니다.

귀하의 요구 사항은 무엇입니까? 추상화 라이브러리에서 찾고있는 것은 무엇입니까? 나는 하나를 보거나 글을 쓰기 시작할 때마다 보통 표준 POSIX 인터페이스로 돌아가는 것을 인정해야한다 ... 더 추상적 인 것은 무엇을 원할 수 있는가?

+0

은 현재 내가 파일 형식 리더 라이브러리를 쓰고 있어요 그 가능한 한 재사용 가능하고 다재다능해야합니다. 예를 들어, 사용자가 메모리, 네트워크, 아카이브 등에서 파일로드를 지원하기 위해 사용자 정의 입력 스트림을 작성하려고 할 수 있습니다. 필자는 자신 만의 작은 SDL_RWops를 작성하는 것을 싫어합니다. zlib이나 libpng가 사용자 자신의 fread와 메모리 할당 함수를 지정하기위한 인터페이스를 제공하지 않는다면, 사람들은 더 적은 것을 사용하게 될 것입니다. 나는 자기 자신을 쓰려고하거나 iostreams를 사용하는 C++로 라이브러리를 만들고 C 인터페이스를 제공 할 것이라고 생각한다. – ahnurmi

+0

비록 동의하지 않지만 때때로 더 많은 추상화가 필요합니다. 오늘날에는 "널리 사용되는 스트림 추상화 라이브러리가 없습니다"라는 정답이 있습니다. – ahnurmi

3

BIO abstraction in OpenSSL은 청구서에 맞는 것 같습니다. 당신이 후에있는 기능이 MIT 라이센스 - 에드 입력 스트림 래퍼의 일부 제공 할 수 libslack (GNU GPL)가

+0

흥미 롭습니다. 그것은 매우 어려운 의존성입니다. 그것은 아파치와 같은 라이센스를 가지고 있으며, 모든 애플 리케이션에서 필요하지 않을 수도 있습니다 네트워킹 물건이 포함되어 있습니다. 그래도 잘 디자인 된 것처럼 보입니다. – ahnurmi