%module odirectcmodule
%{
#include "odirect.h"
%}

struct odirect_buffer
	{
	char *real_buffer;
	char *aligned_buffer;
	size_t maximum_buffer_size;
	size_t current_buffer_size;
	};

struct odirect_buffer *create_odirect_buffer(void);
void destroy_odirect_buffer(struct odirect_buffer *odirect_buffer);

void odirect_aligned_malloc(int usable_buffer_size, int align_to, struct odirect_buffer *odirect_buffer);
void odirect_aligned_free(struct odirect_buffer *odirect_buffer);
int odirect_open(char *filename, char *ASCII_flags);
char *odirect_read(int file_descriptor, struct odirect_buffer *odirect_buffer);
int odirect_close(int file_descriptor);