Remove buffer module as it is no longer needed
This commit is contained in:
-63
@@ -1,63 +0,0 @@
|
||||
#include "buffer.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
typedef enum {
|
||||
BUFFER_FILE,
|
||||
BUFFER_STRING
|
||||
} BufferType;
|
||||
|
||||
struct Buffer {
|
||||
BufferType type;
|
||||
union {
|
||||
FILE* file;
|
||||
struct {
|
||||
const char* data;
|
||||
size_t pos;
|
||||
} string;
|
||||
} source;
|
||||
};
|
||||
|
||||
Buffer* buffer_open_file(const char* path) {
|
||||
FILE* f = fopen(path, "r");
|
||||
if (f == NULL)
|
||||
return NULL;
|
||||
Buffer* buf = malloc(sizeof(Buffer));
|
||||
if (buf == NULL) {
|
||||
fclose(f);
|
||||
return NULL;
|
||||
}
|
||||
buf->type = BUFFER_FILE;
|
||||
buf->source.file = f;
|
||||
return buf;
|
||||
}
|
||||
|
||||
Buffer* buffer_open_string(const char* string) {
|
||||
Buffer* buf = malloc(sizeof(Buffer));
|
||||
if (buf == NULL)
|
||||
return NULL;
|
||||
buf->type = BUFFER_STRING;
|
||||
buf->source.string.data = string;
|
||||
buf->source.string.pos = 0;
|
||||
return buf;
|
||||
}
|
||||
|
||||
void buffer_close(Buffer* buffer) {
|
||||
if (buffer->type == BUFFER_FILE)
|
||||
fclose(buffer->source.file);
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
char buffer_read(Buffer* buffer) {
|
||||
if (buffer->type == BUFFER_FILE) {
|
||||
int c = fgetc(buffer->source.file);
|
||||
return c == EOF ? (char)-1 : (char)c;
|
||||
} else {
|
||||
char c = buffer->source.string.data[buffer->source.string.pos];
|
||||
if (c == '\0')
|
||||
return (char)-1;
|
||||
buffer->source.string.pos++;
|
||||
return c;
|
||||
}
|
||||
}
|
||||
-50
@@ -1,50 +0,0 @@
|
||||
/**
|
||||
* An interface that wraps files and strings.
|
||||
* Allows stream–like reading from it.
|
||||
*/
|
||||
#ifndef BUFFER_H
|
||||
#define BUFFER_H
|
||||
|
||||
/**
|
||||
* An interface to a source of textual data.
|
||||
*/
|
||||
typedef struct Buffer Buffer;
|
||||
|
||||
/**
|
||||
* Opens a file.
|
||||
*
|
||||
* @param path The path to the file.
|
||||
* @returns The newly–opened buffer.
|
||||
*/
|
||||
Buffer* buffer_open_file(const char* path);
|
||||
|
||||
/**
|
||||
* Opens a string.
|
||||
*
|
||||
* The string is not copied, and must not be free'd until the
|
||||
* buffer itself has been closed.
|
||||
*
|
||||
* @param string The contents stored in the buffer.
|
||||
* @returns A newly–opened buffer that reads from the string.
|
||||
*/
|
||||
Buffer* buffer_open_string(const char* string);
|
||||
|
||||
/**
|
||||
* Closes the buffer.
|
||||
*
|
||||
* @param buffer The buffer to close.
|
||||
*/
|
||||
void buffer_close(Buffer* buffer);
|
||||
|
||||
/**
|
||||
* Reads a single character from the buffer.
|
||||
*
|
||||
* If there are no more characters in the buffer,
|
||||
* this returns `-1`.
|
||||
*
|
||||
* @param buffer The buffer to read from.
|
||||
* @returns the next character in the buffer.
|
||||
*/
|
||||
char buffer_read(Buffer* buffer);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user