);

// Double check that the struct info was generated from the right header.
// (The include directory option of gen_struct_info.py affects this.)
if (!('WGPUINTERNAL__HAVE_EMDAWNWEBGPU_HEADER' in structInfo32.structs)) {
    throw new Error('struct_info32 generation error - need webgpu.h from Dawn, got it from Emscripten');
}
if (!('WGPUINTERNAL__HAVE_EMDAWNWEBGPU_HEADER' in structInfo64.structs)) {
    throw new Error('struct_info64 generation error - need webgpu.h from Dawn, got it from Emscripten');
}

// Make sure we aren't inheriting any of the webgpu.h struct info from
// Emscripten's copy.
for (const k of Object.keys(C_STRUCTS)) {
    if (k.startsWith('WGPU')) {
        delete C_STRUCTS[k];
    }
}

const WGPU_STRUCTS = (MEMORY64 ? structInfo64 : structInfo32).structs;
for (const [k, v] of Object.entries(WGPU_STRUCTS)) {
    C_STRUCTS[k] = v;
}
globalThis.__HAVE_EMDAWNWEBGPU_STRUCT_INFO = true;

null;
}}}
