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

//--------------------------------------------------------------------------------
// Section: Types (4)
//--------------------------------------------------------------------------------
pub const OPERATION_START_FLAGS = enum(u32) {
    D = 1,
    _,
    pub fn initFlags(o: struct {
        D: u1 = 0,
    }) OPERATION_START_FLAGS {
        return @as(OPERATION_START_FLAGS, @enumFromInt((if (o.D == 1) @intFromEnum(OPERATION_START_FLAGS.D) else 0)));
    }
};
pub const OPERATION_START_TRACE_CURRENT_THREAD = OPERATION_START_FLAGS.D;

pub const OPERATION_END_PARAMETERS_FLAGS = enum(u32) {
    D = 1,
    _,
    pub fn initFlags(o: struct {
        D: u1 = 0,
    }) OPERATION_END_PARAMETERS_FLAGS {
        return @as(OPERATION_END_PARAMETERS_FLAGS, @enumFromInt((if (o.D == 1) @intFromEnum(OPERATION_END_PARAMETERS_FLAGS.D) else 0)));
    }
};
pub const OPERATION_END_DISCARD = OPERATION_END_PARAMETERS_FLAGS.D;

pub const OPERATION_START_PARAMETERS = extern struct {
    Version: u32,
    OperationId: u32,
    Flags: OPERATION_START_FLAGS,
};

pub const OPERATION_END_PARAMETERS = extern struct {
    Version: u32,
    OperationId: u32,
    Flags: OPERATION_END_PARAMETERS_FLAGS,
};

//--------------------------------------------------------------------------------
// Section: Functions (2)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows8.0'
pub extern "advapi32" fn OperationStart(
    OperationStartParams: ?*OPERATION_START_PARAMETERS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows8.0'
pub extern "advapi32" fn OperationEnd(
    OperationEndParams: ?*OPERATION_END_PARAMETERS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

//--------------------------------------------------------------------------------
// 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 (1)
//--------------------------------------------------------------------------------
const BOOL = @import("../foundation.zig").BOOL;

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);
        }
    }
}
