//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (0)
//--------------------------------------------------------------------------------

//--------------------------------------------------------------------------------
// Section: Types (1)
//--------------------------------------------------------------------------------
pub const NV_MEMORY_RANGE = extern struct {
    BaseAddress: ?*anyopaque,
    Length: usize,
};

//--------------------------------------------------------------------------------
// Section: Functions (7)
//--------------------------------------------------------------------------------
pub usingnamespace switch (@import("../../zig.zig").arch) {
    .X64, .Arm64 => struct {
        pub extern "ntdll" fn RtlGetNonVolatileToken(
            // TODO: what to do with BytesParamIndex 1?
            NvBuffer: ?*anyopaque,
            Size: usize,
            NvToken: ?*?*anyopaque,
        ) callconv(@import("std").os.windows.WINAPI) u32;
    },
    else => struct {},
};

pub usingnamespace switch (@import("../../zig.zig").arch) {
    .X64, .Arm64 => struct {
        pub extern "ntdll" fn RtlFreeNonVolatileToken(
            NvToken: ?*anyopaque,
        ) callconv(@import("std").os.windows.WINAPI) u32;
    },
    else => struct {},
};

pub usingnamespace switch (@import("../../zig.zig").arch) {
    .X64, .Arm64 => struct {
        pub extern "ntdll" fn RtlFlushNonVolatileMemory(
            NvToken: ?*anyopaque,
            // TODO: what to do with BytesParamIndex 2?
            NvBuffer: ?*anyopaque,
            Size: usize,
            Flags: u32,
        ) callconv(@import("std").os.windows.WINAPI) u32;
    },
    else => struct {},
};

pub usingnamespace switch (@import("../../zig.zig").arch) {
    .X64, .Arm64 => struct {
        pub extern "ntdll" fn RtlDrainNonVolatileFlush(
            NvToken: ?*anyopaque,
        ) callconv(@import("std").os.windows.WINAPI) u32;
    },
    else => struct {},
};

pub usingnamespace switch (@import("../../zig.zig").arch) {
    .X64, .Arm64 => struct {
        pub extern "ntdll" fn RtlWriteNonVolatileMemory(
            NvToken: ?*anyopaque,
            // TODO: what to do with BytesParamIndex 3?
            NvDestination: ?*anyopaque,
            // TODO: what to do with BytesParamIndex 3?
            Source: ?*const anyopaque,
            Size: usize,
            Flags: u32,
        ) callconv(@import("std").os.windows.WINAPI) u32;
    },
    else => struct {},
};

pub usingnamespace switch (@import("../../zig.zig").arch) {
    .X64, .Arm64 => struct {
        pub extern "ntdll" fn RtlFillNonVolatileMemory(
            NvToken: ?*anyopaque,
            // TODO: what to do with BytesParamIndex 2?
            NvDestination: ?*anyopaque,
            Size: usize,
            Value: u8,
            Flags: u32,
        ) callconv(@import("std").os.windows.WINAPI) u32;
    },
    else => struct {},
};

pub usingnamespace switch (@import("../../zig.zig").arch) {
    .X64, .Arm64 => struct {
        pub extern "ntdll" fn RtlFlushNonVolatileMemoryRanges(
            NvToken: ?*anyopaque,
            NvRanges: [*]NV_MEMORY_RANGE,
            NumRanges: usize,
            Flags: u32,
        ) callconv(@import("std").os.windows.WINAPI) u32;
    },
    else => struct {},
};

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../../zig.zig").unicode_mode) {
    .ansi => struct {},
    .wide => struct {},
    .unspecified => if (@import("builtin").is_test) struct {} else struct {},
};
//--------------------------------------------------------------------------------
// Section: Imports (0)
//--------------------------------------------------------------------------------

test {
    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
