Я не знаю такой обертки, но не думаю, что было бы слишком сложно сделать свою собственную. Это потому, что подход C к файловому вводу-выводу скрывает все за FILE*
интерфейсом, что фактически делает его хорошо объектно-ориентированным.
Поскольку вы используете C, а не C ++, я бы предложил использовать макросы препроцессора для замены каждого экземпляра fopen()
, fclose()
и fread()
на MEM_fopen()
и т. Д., Которые являются подпрограммами, которые вы определите. Вам нужно будет определить свой собственный FILE
тип, для которого вы можете просто использовать следующее:
typedef unsigned char *FILE;
(Если вам нужно управлять EOF, вместо этого вам нужно, чтобы FILE
был struct
с дополнительным полем length
.)
Тогда ваша MEM_fread()
функция будет выглядеть примерно так:
int MEM_fread(unsigned char *buf, size_t size, size_t n, FILE *f) {
memcpy(buf, *f, size * n);
*f += size * n;
return n;
}
Подпись для MEM_fopen()
«конструктора», возможно, потребуется немного изменить, так как идентификатор, который вам нужен, теперь является адресом памяти, а не именем файла.
person
j_random_hacker
schedule
04.05.2010