python: Allow to read from buffers.

This commit is contained in:
José Fonseca
2008-11-20 01:01:48 +09:00
parent 8a9e06257f
commit 2f153b5487
2 changed files with 31 additions and 1 deletions

View File

@@ -57,6 +57,8 @@
%include "typemaps.i"
%include "cstring.i"
%include "carrays.i"
%array_class(unsigned char, ByteArray);
%array_class(int, IntArray);

View File

@@ -179,7 +179,35 @@ struct st_buffer {
st_buffer_destroy($self);
}
void write( const char *STRING, unsigned LENGTH, unsigned offset = 0) {
unsigned __len__(void)
{
assert($self->buffer->refcount);
return $self->buffer->size;
}
%cstring_output_allocate_size(char **STRING, int *LENGTH, free(*$1));
void read(char **STRING, int *LENGTH)
{
struct pipe_screen *screen = $self->st_dev->screen;
const char *map;
assert($self->buffer->refcount);
*LENGTH = $self->buffer->size;
*STRING = (char *) malloc($self->buffer->size);
if(!*STRING)
return;
map = pipe_buffer_map(screen, $self->buffer, PIPE_BUFFER_USAGE_CPU_READ);
if(map) {
memcpy(*STRING, map, $self->buffer->size);
pipe_buffer_unmap(screen, $self->buffer);
}
}
%cstring_input_binary(const char *STRING, unsigned LENGTH);
void write(const char *STRING, unsigned LENGTH, unsigned offset = 0)
{
struct pipe_screen *screen = $self->st_dev->screen;
char *map;