cgen: map_get/map_set
							parent
							
								
									6c56528cd7
								
							
						
					
					
						commit
						b5cb1b1fe2
					
				|  | @ -65,7 +65,7 @@ pub fn (g mut Gen) typ(t table.Type) string { | |||
| 	if styp.starts_with('C__') { | ||||
| 		styp = styp[3..] | ||||
| 	} | ||||
| 	if styp in ['stat', 'dirent*', 'tm', 'tm*'] { | ||||
| 	if styp in ['stat', 'dirent*', 'tm', 'tm*', 'winsize'] { | ||||
| 		// TODO perf and other C structs
 | ||||
| 		styp = 'struct $styp' | ||||
| 	} | ||||
|  | @ -1261,6 +1261,25 @@ fn (g mut Gen) index_expr(node ast.IndexExpr) { | |||
| 				g.write('))') | ||||
| 			} | ||||
| 		} | ||||
| 		else if sym.kind == .map { | ||||
| 			info := sym.info as table.Map | ||||
| 			elem_type_str := g.typ(info.value_type) | ||||
| 			if g.is_assign_expr { | ||||
| 				g.is_array_set = true | ||||
| 				g.write('map_set(&') | ||||
| 				g.expr(node.left) | ||||
| 				g.write(', ') | ||||
| 				g.expr(node.index) | ||||
| 				g.write(', &($elem_type_str[]) { ') | ||||
| 			} | ||||
| 			else { | ||||
| 				g.write('(*($elem_type_str*)map_get2(') | ||||
| 				g.expr(node.left) | ||||
| 				g.write(', ') | ||||
| 				g.expr(node.index) | ||||
| 				g.write('))') | ||||
| 			} | ||||
| 		} | ||||
| 		else if sym.kind == .string && !table.type_is_ptr(node.container_type) { | ||||
| 			g.write('string_at(') | ||||
| 			g.expr(node.left) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue