builtin: add voidptr.vbytes(len) and byteptr.vbytes(len)
							parent
							
								
									2473f65278
								
							
						
					
					
						commit
						1891f55c72
					
				|  | @ -720,3 +720,21 @@ pub fn (a array) pointers() []voidptr { | |||
| 	} | ||||
| 	return res | ||||
| } | ||||
| 
 | ||||
| // voidptr.vbytes() - makes a V []byte structure from a C style memory buffer. NB: the data is reused, NOT copied!
 | ||||
| [unsafe] | ||||
| pub fn (data voidptr) vbytes(len int) []byte { | ||||
| 	res := array{ | ||||
| 		element_size: 1 | ||||
| 		data: data | ||||
| 		len: len | ||||
| 		cap: len | ||||
| 	} | ||||
| 	return res | ||||
| } | ||||
| 
 | ||||
| // byteptr.vbytes() - makes a V []byte structure from a C style memory buffer. NB: the data is reused, NOT copied!
 | ||||
| [unsafe] | ||||
| pub fn (data byteptr) vbytes(len int) []byte { | ||||
| 	return unsafe {voidptr(data).vbytes(len)} | ||||
| } | ||||
|  |  | |||
|  | @ -1058,3 +1058,37 @@ fn test_multidimensional_array_initialization_with_consts() { | |||
| 	assert data[0][0][0] == cell_value | ||||
| 	assert data[1][1][1] == cell_value | ||||
| } | ||||
| 
 | ||||
| fn test_byteptr_vbytes() { | ||||
| 	unsafe { | ||||
| 		bp := malloc(5) | ||||
| 		bp[0] = 1 | ||||
| 		bp[1] = 2 | ||||
| 		bp[2] = 3 | ||||
| 		bp[3] = 4 | ||||
| 		bp[4] = 255 | ||||
| 		bytes := bp.vbytes(5) | ||||
| 		println(bytes) | ||||
| 		assert bytes.len == 5 | ||||
| 		assert bytes[0] == 1 | ||||
| 		assert bytes[1] == 2 | ||||
| 		assert bytes[2] == 3 | ||||
| 		assert bytes[3] == 4 | ||||
| 		assert bytes[4] == 255 | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| fn test_voidptr_vbytes() { | ||||
| 	unsafe { | ||||
| 		bp := malloc(3) | ||||
| 		bp[0] = 4 | ||||
| 		bp[1] = 5 | ||||
| 		bp[2] = 6 | ||||
| 		bytes := voidptr(bp).vbytes(3) | ||||
| 		assert bytes.len == 3 | ||||
| 		assert bytes[0] == 4 | ||||
| 		assert bytes[1] == 5 | ||||
| 		assert bytes[2] == 6 | ||||
| 		println(bytes) | ||||
| 	} | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue