authorgravatar for viridianmeow@gmail.comviri <viridianmeow@gmail.com> 2021-06-11 03:19:35-06:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2021-06-11 12:19:35+03:00
log2ce033f4159409db66866e28a3591256ea0dfadc
treea96322d7452a5e36b634eb40f4e8de3be1e3f699
parent961d556570e19c2fca1ba5ad1aadd843f012b7ed
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

std.os.windows: implement <timeapi.h> (#8801)


2 files changed, 74 insertions(+), 0 deletions(-)

lib/std/os/windows.zig+1
...@@ -25,6 +25,7 @@ pub const shell32 = @import("windows/shell32.zig");...@@ -25,6 +25,7 @@ pub const shell32 = @import("windows/shell32.zig");
25pub const user32 = @import("windows/user32.zig");25pub const user32 = @import("windows/user32.zig");
26pub const ws2_32 = @import("windows/ws2_32.zig");26pub const ws2_32 = @import("windows/ws2_32.zig");
27pub const gdi32 = @import("windows/gdi32.zig");27pub const gdi32 = @import("windows/gdi32.zig");
28pub const winmm = @import("windows/winmm.zig");
2829
29pub usingnamespace @import("windows/bits.zig");30pub usingnamespace @import("windows/bits.zig");
3031
lib/std/os/windows/winmm.zig created+73
...@@ -0,0 +1,73 @@
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2015-2021 Zig Contributors
3// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
4// The MIT license requires this copyright notice to be included in all copies
5// and substantial portions of the software.
6usingnamespace @import("bits.zig");
7
8pub const MMRESULT = UINT;
9pub const MMSYSERR_BASE = 0;
10pub const TIMERR_BASE = 96;
11pub const MMSYSERR_ERROR = MMSYSERR_BASE + 1;
12pub const MMSYSERR_BADDEVICEID = MMSYSERR_BASE + 2;
13pub const MMSYSERR_NOTENABLED = MMSYSERR_BASE + 3;
14pub const MMSYSERR_ALLOCATED = MMSYSERR_BASE + 4;
15pub const MMSYSERR_INVALHANDLE = MMSYSERR_BASE + 5;
16pub const MMSYSERR_NODRIVER = MMSYSERR_BASE + 6;
17pub const MMSYSERR_NOMEM = MMSYSERR_BASE + 7;
18pub const MMSYSERR_NOTSUPPORTED = MMSYSERR_BASE + 8;
19pub const MMSYSERR_BADERRNUM = MMSYSERR_BASE + 9;
20pub const MMSYSERR_INVALFLAG = MMSYSERR_BASE + 10;
21pub const MMSYSERR_INVALPARAM = MMSYSERR_BASE + 11;
22pub const MMSYSERR_HANDLEBUSY = MMSYSERR_BASE + 12;
23pub const MMSYSERR_INVALIDALIAS = MMSYSERR_BASE + 13;
24pub const MMSYSERR_BADDB = MMSYSERR_BASE + 14;
25pub const MMSYSERR_KEYNOTFOUND = MMSYSERR_BASE + 15;
26pub const MMSYSERR_READERROR = MMSYSERR_BASE + 16;
27pub const MMSYSERR_WRITEERROR = MMSYSERR_BASE + 17;
28pub const MMSYSERR_DELETEERROR = MMSYSERR_BASE + 18;
29pub const MMSYSERR_VALNOTFOUND = MMSYSERR_BASE + 19;
30pub const MMSYSERR_NODRIVERCB = MMSYSERR_BASE + 20;
31pub const MMSYSERR_MOREDATA = MMSYSERR_BASE + 21;
32pub const MMSYSERR_LASTERROR = MMSYSERR_BASE + 21;
33
34pub const MMTIME = extern struct {
35 wType: UINT,
36 u: extern union {
37 ms: DWORD,
38 sample: DWORD,
39 cb: DWORD,
40 ticks: DWORD,
41 smpte: extern struct {
42 hour: BYTE,
43 min: BYTE,
44 sec: BYTE,
45 frame: BYTE,
46 fps: BYTE,
47 dummy: BYTE,
48 pad: [2]BYTE,
49 },
50 midi: extern struct {
51 songptrpos: DWORD,
52 },
53 },
54};
55pub const LPMMTIME = *MMTIME;
56pub const TIME_MS = 0x0001;
57pub const TIME_SAMPLES = 0x0002;
58pub const TIME_BYTES = 0x0004;
59pub const TIME_SMPTE = 0x0008;
60pub const TIME_MIDI = 0x0010;
61pub const TIME_TICKS = 0x0020;
62
63// timeapi.h
64pub const TIMECAPS = extern struct { wPeriodMin: UINT, wPeriodMax: UINT };
65pub const LPTIMECAPS = *TIMECAPS;
66pub const TIMERR_NOERROR = 0;
67pub const TIMERR_NOCANDO = TIMERR_BASE + 1;
68pub const TIMERR_STRUCT = TIMERR_BASE + 33;
69pub extern "winmm" fn timeBeginPeriod(uPeriod: UINT) callconv(WINAPI) MMRESULT;
70pub extern "winmm" fn timeEndPeriod(uPeriod: UINT) callconv(WINAPI) MMRESULT;
71pub extern "winmm" fn timeGetDevCaps(ptc: LPTIMECAPS, cbtc: UINT) callconv(WINAPI) MMRESULT;
72pub extern "winmm" fn timeGetSystemTime(pmmt: LPMMTIME, cbmmt: UINT) callconv(WINAPI) MMRESULT;
73pub extern "winmm" fn timeGetTime() callconv(WINAPI) DWORD;