Changeset 881:fdf97832f81f in roaraudio for libroar/vio.c


Ignore:
Timestamp:
11/16/08 00:31:12 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

redesigned the VIO abstarction layer a lot

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio.c

    r690 r881  
    4141 memset((void*)calls, 0, sizeof(struct roar_vio_calls)); 
    4242 
     43/* 
    4344 calls->read  = (ssize_t (*)(int fd, void *buf, size_t count,      void * inst))read; 
    4445 calls->write = (ssize_t (*)(int fd, void *buf, size_t count,      void * inst))write; 
    4546 calls->lseek = (off_t   (*)(int fildes, off_t offset, int whence, void * inst))lseek; 
     47*/ 
     48 
     49 calls->read  = roar_vio_basic_read; 
     50 calls->write = roar_vio_basic_write; 
     51 calls->lseek = roar_vio_basic_lseek; 
    4652 
    4753 return 0; 
    4854} 
    4955 
     56int roar_vio_set_inst (struct roar_vio_calls * vio, void * inst) { 
     57 if ( vio == NULL ) 
     58  return -1; 
     59 
     60 vio->inst = inst; 
     61 
     62 return 0; 
     63} 
     64 
     65int roar_vio_set_fh   (struct roar_vio_calls * vio, int fh) { 
     66 return roar_vio_set_inst(vio, (void*)(fh + 1)); 
     67} 
     68 
     69int roar_vio_get_fh   (struct roar_vio_calls * vio) { 
     70 if ( vio == NULL ) 
     71  return -1; 
     72 
     73 return ((int)vio->inst) - 1; 
     74} 
     75 
     76 
     77ssize_t roar_vio_read (struct roar_vio_calls * vio, void *buf, size_t count) { 
     78 if ( vio == NULL ) 
     79  return -1; 
     80 
     81 if ( vio->read == NULL ) 
     82  return -1; 
     83 
     84 return vio->read(vio, buf, count); 
     85} 
     86 
     87ssize_t roar_vio_write(struct roar_vio_calls * vio, void *buf, size_t count) { 
     88 if ( vio == NULL ) 
     89  return -1; 
     90 
     91 if ( vio->write == NULL ) 
     92  return -1; 
     93 
     94 return vio->write(vio, buf, count); 
     95} 
     96 
     97off_t   roar_vio_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 
     98 if ( vio == NULL ) 
     99  return -1; 
     100 
     101 if ( vio->lseek == NULL ) 
     102  return -1; 
     103 
     104 return vio->lseek(vio, offset, whence); 
     105} 
     106 
     107 
     108ssize_t roar_vio_basic_read (struct roar_vio_calls * vio, void *buf, size_t count) { 
     109 return read(roar_vio_get_fh(vio), buf, count); 
     110} 
     111 
     112ssize_t roar_vio_basic_write(struct roar_vio_calls * vio, void *buf, size_t count) { 
     113 return write(roar_vio_get_fh(vio), buf, count); 
     114} 
     115 
     116off_t   roar_vio_basic_lseek(struct roar_vio_calls * vio, off_t offset, int whence) { 
     117 return lseek(roar_vio_get_fh(vio), offset, whence); 
     118} 
     119 
    50120//ll 
Note: See TracChangeset for help on using the changeset viewer.