mirror of
				https://github.com/vlang/v.git
				synced 2023-08-10 21:13:21 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1019 B
		
	
	
	
		
			V
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1019 B
		
	
	
	
		
			V
		
	
	
	
	
	
| module io
 | |
| 
 | |
| // ReaderWriter represents a stream that can be read from and wrote to
 | |
| pub interface ReaderWriter {
 | |
| 	// from Reader
 | |
| 	read(mut buf []byte) ?int
 | |
| 
 | |
| 	// from Writer
 | |
| 	write(buf []byte) ?int
 | |
| }
 | |
| 
 | |
| // ReaderWriterImpl is a ReaderWriter that can be made from 
 | |
| // a seperate reader and writer (see fn make_readerwriter)
 | |
| struct ReaderWriterImpl {
 | |
| 	r Reader
 | |
| 	w Writer
 | |
| }
 | |
| 
 | |
| pub fn (mut r ReaderWriterImpl) read(mut buf []byte) ?int {
 | |
| 	return r.r.read(mut buf)
 | |
| }
 | |
| 
 | |
| pub fn (mut r ReaderWriterImpl) write(buf []byte) ?int {
 | |
| 	return r.w.write(buf)
 | |
| }
 | |
| 
 | |
| // make_readerwriter takes a rstream and a wstream and makes
 | |
| // an rwstream with them
 | |
| pub fn make_readerwriter(r Reader, w Writer) ReaderWriterImpl {
 | |
| 	return {r: r, w: w}
 | |
| }
 | |
| 
 | |
| struct Zzz_CoerceInterfaceTableGeneration {
 | |
| }
 | |
| 
 | |
| fn (_ Zzz_CoerceInterfaceTableGeneration) write(buf []byte) ?int {
 | |
| }
 | |
| 
 | |
| fn (_ Zzz_CoerceInterfaceTableGeneration) read(mut buf []byte) ?int {
 | |
| }
 | |
| 
 | |
| fn zzz_reader_writer_coerce_compiler() {
 | |
| 	x := Zzz_CoerceInterfaceTableGeneration{}
 | |
| 	_ := make_readerwriter(x, x)
 | |
| }
 | 
