allocator interface (first pass)
This commit is contained in:
@@ -173,6 +173,9 @@ translate_c_type :: proc(
|
||||
case .C_Longdouble: translated = types.C_LONGDOUBLE
|
||||
case .Pointer:
|
||||
child := translate_c_type(state, result, item.child, pkg, record_mapping, type_mapping)
|
||||
if child == types.VOID {
|
||||
child = types.ANYOPAQUE
|
||||
}
|
||||
if types.is_valid(child) {
|
||||
pointer := types.pointer(&state.module.type_store, child, item.mutable, true)
|
||||
translated = types.optional(&state.module.type_store, pointer)
|
||||
@@ -964,7 +967,7 @@ load_header :: proc(state: ^State, path: string, import_span: source.Span) -> as
|
||||
name = fmt.tprintf("__c_record_%d", len(state.record_types))
|
||||
}
|
||||
record_type = types.named(&state.module.type_store, u32(pkg_id), u32(symbol.intern(state.symbols, name)))
|
||||
_ = types.define_record(&state.module.type_store, record_type, nil, true, true, record.kind == .Union)
|
||||
_ = types.define_record(&state.module.type_store, record_type, nil, false, true, record.kind == .Union)
|
||||
append(&state.record_identities, strings.clone(record.identity, state.allocator))
|
||||
append(&state.record_types, record_type)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user