Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/gen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:

strategy:
matrix:
tool: [bindgen, bindings, yml, license, workspace]
tool: [bindings, yml, license, workspace]
steps:
- name: Checkout
uses: actions/checkout@v6
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,11 @@ jobs:
run: echo "LIBCLANG_PATH=${{ env.LLVM_PATH }}/lib" >> "$GITHUB_ENV"
shell: bash
- name: Test
run: cargo test --all --target ${{ matrix.target }} --exclude windows_aarch64_gnullvm --exclude windows_aarch64_msvc --exclude windows_i686_gnu --exclude windows_i686_gnullvm --exclude windows_i686_msvc --exclude windows_x86_64_gnu --exclude windows_x86_64_gnullvm --exclude windows_x86_64_msvc
# The 32-bit i686 test process has a 2 GB user-mode address space; the
# ~110 bindgen fixtures in test_fixtures each load the large default
# winmd and exhaust it at default parallelism, so test_fixtures is
# excluded on that target.
run: cargo test --all --target ${{ matrix.target }} --exclude windows_aarch64_gnullvm --exclude windows_aarch64_msvc --exclude windows_i686_gnu --exclude windows_i686_gnullvm --exclude windows_i686_msvc --exclude windows_x86_64_gnu --exclude windows_x86_64_gnullvm --exclude windows_x86_64_msvc ${{ matrix.target == 'i686-pc-windows-msvc' && '--exclude test_fixtures' || '' }}
- name: Check diff
shell: bash
run: |
Expand Down
19 changes: 19 additions & 0 deletions crates/tests/fixtures/harness/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,25 @@ doctest = false
windows-core = { workspace = true }
windows-link = { workspace = true }
windows-result = { workspace = true }
windows-targets = { workspace = true }

# The compiled goldens (under `cfg(windows)`) reference the umbrella
# `windows` crate and the namespaced `windows-sys` crate. Gate those
# deps to Windows so the harness still builds on non-Windows hosts
# (where `cfg(windows)` skips the `include!`).
[target.'cfg(windows)'.dependencies.windows]
workspace = true
features = [
"Foundation",
"Win32_Foundation",
"Win32_Security",
]

[target.'cfg(windows)'.dependencies.windows-sys]
workspace = true
features = [
"Win32_Gaming",
]

[dev-dependencies]
windows-rdl = { workspace = true }
Expand Down
5 changes: 3 additions & 2 deletions crates/tests/fixtures/harness/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,12 @@ fn main() {
.unwrap();

let expected_rs = fixture_dir.join("expected.rs");
if expected_rs.is_file() {
let no_compile = fixture_dir.join("no-compile").is_file();
if expected_rs.is_file() && !no_compile {
let abs = std::fs::canonicalize(&expected_rs).unwrap_or(expected_rs);
writeln!(
compile,
"#[allow(warnings, clippy::all)]\nmod {test_name} {{\n include!({:?});\n}}",
"#[allow(warnings, clippy::all)]\n#[path = {:?}]\nmod {test_name};",
abs.display().to_string(),
)
.unwrap();
Expand Down
11 changes: 7 additions & 4 deletions crates/tests/fixtures/harness/data/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ parallel `#[test]` execution is preserved.
|-----------|------------------------------|------------------------------------------------------|
| `rdl` | `input.rdl` | RDL → winmd → RDL, diff vs. `expected.rdl` |
| `clang` | `input.h` | Clang → RDL → winmd → RDL, diff vs. `expected.rdl` |
| `bindgen` | `input.rdl` + `fixture.toml` | RDL → winmd → bindgen, diff vs. `expected.rs` |
| `error` | `input.rdl` + `expected.err` (+ optional `defs-*.rdl` for `kind = "writer"`) | reader **or** writer fails with the expected message |
| `bindgen` | `input.rdl` + `fixture.toml` (or `fixture.toml` with `args`) | RDL → winmd → bindgen, diff vs. `expected.rs`. With `args`, skip the RDL stage and pass the args verbatim to `windows_bindgen::bindgen` (typically with `--in default`). |
| `error` | `input.rdl` + `expected.err` (+ optional `defs-*.rdl` for `kind = "writer"`) | reader/writer/bindgen fails with the expected message |
| `merge` | `input-*.rdl` (≥ 2) | each → winmd → merge → RDL, diff vs. `expected.rdl` |
| `winmd_to_rdl` | `fixture.toml` only (`winmd_input` + `filter`) | writer reads a prebuilt winmd, diff vs. `expected.rdl` |

Expand All @@ -43,9 +43,12 @@ Supported keys:
| `no_allow` | bool | bindgen | pass `--no-allow` to bindgen |
| `no_comment` | bool | bindgen | pass `--no-comment` to bindgen |
| `specific_deps` | bool | bindgen | pass `--specific-deps` to bindgen |
| `kind` | string | error | `"reader"` (default), `"reader_no_input"`, or `"writer"` — which stage must fail |
| `kind` | string | error | `"reader"` (default), `"reader_no_input"`, `"writer"`, or `"bindgen"` — which stage must fail |
| `arch_inputs` | string[] | merge | per-input arch tagging, e.g. `["input-x86.rdl=X86", "input-x64.rdl=X64"]`. Arches are `X86`/`X64`/`Arm64` or `\|`-joined. |
| `outputs` | string[] | rdl | run the writer multiple times. Each entry is `"<expected>=<filter[;filter...]>"`; `;` separates multiple `writer.filter(...)` calls. |
| `args` | string | bindgen, error (`kind = "bindgen"`) | raw `windows_bindgen::bindgen` CLI args. For `bindgen`, the synthetic RDL → winmd step is skipped and these args are passed verbatim (with `--out <scratch>/out.rs` appended). For `error`, the call is run under `catch_unwind` and the panic message is diffed against `expected.err`. Supports `{scratch}` and `{setup}` placeholders. |
| `setup` | string | error (`kind = "bindgen"`) | filesystem prep before invoking bindgen: `"create_dir"` (mkdir `{scratch}/setup`) or `"create_file"` (touch `{scratch}/setup`). Exposes the path as `{setup}` in `args`. |
| `error_match` | string | error (`kind = "bindgen"`) | `"exact"` (default) or `"contains"` — for panic messages that embed machine-dependent paths. |

## Adding a fixture

Expand Down Expand Up @@ -78,7 +81,7 @@ API calls, OS-level I/O failures, structural attribute assertions):

- `tests/libs/rdl/tests/{assembly_name, const-underlying, const-underlying-rdl, directory, error, exclusive-to, fn_abi, guid-derive, split, struct_fields, struct_values, writer_errors}.rs`
- `tests/libs/metadata/tests/{empty, struct, attribute, class, interface, reader, load_library, assembly_name}.rs`
- `tests/libs/bindgen/tests/{bool, deps, delegate_*, panic, ref_params}.rs`
- `tests/libs/bindgen/tests/{bool, deps, delegate_cpp_ref, delegate_param, ref_params}.rs`
- `tests/{misc,winrt}/**`

Migrate them as future changes make them expressible as a roundtrip,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter EnableMouseInPointer"
54 changes: 54 additions & 0 deletions crates/tests/fixtures/harness/data/bindgen/bool_event/expected.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#![allow(
non_snake_case,
non_upper_case_globals,
non_camel_case_types,
dead_code,
clippy::all
)]

#[inline]
pub unsafe fn CreateEventW<P3>(
lpeventattributes: Option<*const windows::Win32::Security::SECURITY_ATTRIBUTES>,
bmanualreset: bool,
binitialstate: bool,
lpname: P3,
) -> windows_core::Result<windows::Win32::Foundation::HANDLE>
where
P3: windows_core::Param<windows_core::PCWSTR>,
{
windows_core::link!("kernel32.dll" "system" fn CreateEventW(lpeventattributes : *const windows::Win32::Security:: SECURITY_ATTRIBUTES, bmanualreset : windows_core::BOOL, binitialstate : windows_core::BOOL, lpname : windows_core::PCWSTR) -> windows::Win32::Foundation:: HANDLE);
let result__ = unsafe {
CreateEventW(
lpeventattributes.unwrap_or(core::mem::zeroed()) as _,
bmanualreset.into(),
binitialstate.into(),
lpname.param().abi(),
)
};
(!result__.is_invalid())
.then_some(result__)
.ok_or_else(windows_core::Error::from_thread)
}
#[inline]
pub unsafe fn NtWaitForSingleObject(
handle: windows::Win32::Foundation::HANDLE,
alertable: bool,
timeout: *mut i64,
) -> windows_core::NTSTATUS {
windows_core::link!("ntdll.dll" "system" fn NtWaitForSingleObject(handle : windows::Win32::Foundation:: HANDLE, alertable : bool, timeout : *mut i64) -> windows_core:: NTSTATUS);
unsafe { NtWaitForSingleObject(handle, alertable, timeout as _) }
}
#[inline]
pub unsafe fn SetEvent(hevent: windows::Win32::Foundation::HANDLE) -> windows_core::Result<()> {
windows_core::link!("kernel32.dll" "system" fn SetEvent(hevent : windows::Win32::Foundation:: HANDLE) -> windows_core::BOOL);
unsafe { SetEvent(hevent).ok() }
}
#[inline]
pub unsafe fn WaitForSingleObjectEx(
hhandle: windows::Win32::Foundation::HANDLE,
dwmilliseconds: u32,
balertable: bool,
) -> windows::Win32::Foundation::WAIT_EVENT {
windows_core::link!("kernel32.dll" "system" fn WaitForSingleObjectEx(hhandle : windows::Win32::Foundation:: HANDLE, dwmilliseconds : u32, balertable : windows_core::BOOL) -> windows::Win32::Foundation:: WAIT_EVENT);
unsafe { WaitForSingleObjectEx(hhandle, dwmilliseconds, balertable.into()) }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter CreateEventW SetEvent NtWaitForSingleObject WaitForSingleObjectEx --reference windows,skip-root,Windows"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter CreateEventW SetEvent NtWaitForSingleObject WaitForSingleObjectEx"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter EnableMouseInPointer --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter EnableMouseInPointer --sys --no-deps"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter Deferral"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter WwwFormUrlDecoder --no-deps"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GuidHelper"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter Deferral DeferralCompletedHandler"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--in default --filter GetTickCount --sys --flat"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--in default --filter GetTickCount --sys --flat --no-allow"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --filter CoCreateGuid --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --filter CoCreateGuid --sys --flat"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --filter CoCreateGuid --sys --flat --no-deps"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --filter CoCreateGuid --sys --no-deps"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --filter CoCreateGuid"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --filter CoCreateGuid --flat"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--filter GetTickCount --sys --flat --no-comment"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--filter GetTickCount --sys --flat --no-comment --in default"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter DeferralCompletedHandler"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GetProcAddress EnumWindows"
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#![allow(
non_snake_case,
non_upper_case_globals,
non_camel_case_types,
dead_code,
clippy::all
)]

pub const CLASS_E_CLASSNOTAVAILABLE: windows_core::HRESULT =
windows_core::HRESULT(0x80040111_u32 as _);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct D3D_FEATURE_LEVEL(pub i32);
windows_core::imp::define_interface!(
IActivationFactory,
IActivationFactory_Vtbl,
0x00000035_0000_0000_c000_000000000046
);
windows_core::imp::interface_hierarchy!(
IActivationFactory,
windows_core::IUnknown,
windows_core::IInspectable
);
impl IActivationFactory {
pub unsafe fn ActivateInstance(&self) -> windows_core::Result<windows_core::IInspectable> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).ActivateInstance)(
windows_core::Interface::as_raw(self),
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IActivationFactory_Vtbl {
pub base__: windows_core::IInspectable_Vtbl,
pub ActivateInstance: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
}
pub trait IActivationFactory_Impl: windows_core::IUnknownImpl {
fn ActivateInstance(&self) -> windows_core::Result<windows_core::IInspectable>;
}
impl IActivationFactory_Vtbl {
pub const fn new<Identity: IActivationFactory_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn ActivateInstance<
Identity: IActivationFactory_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
instance: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IActivationFactory_Impl::ActivateInstance(this) {
Ok(ok__) => {
instance.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: windows_core::IInspectable_Vtbl::new::<Identity, IActivationFactory, OFFSET>(),
ActivateInstance: ActivateInstance::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IActivationFactory as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IActivationFactory {}
pub type PFNGETACTIVATIONFACTORY = Option<
unsafe extern "system" fn(
param0: windows_core::Ref<windows_core::HSTRING>,
param1: windows_core::OutRef<IActivationFactory>,
) -> windows_core::HRESULT,
>;
pub type PFN_D3D12_CREATE_DEVICE = Option<
unsafe extern "system" fn(
param0: windows_core::Ref<windows_core::IUnknown>,
param1: D3D_FEATURE_LEVEL,
param2: *const windows_core::GUID,
param3: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
>;
pub const S_OK: windows_core::HRESULT = windows_core::HRESULT(0x0_u32 as _);
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter PFN_D3D12_CREATE_DEVICE PFNGETACTIVATIONFACTORY S_OK CLASS_E_CLASSNOTAVAILABLE"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter EventHandler"
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#![allow(
non_snake_case,
non_upper_case_globals,
non_camel_case_types,
dead_code,
clippy::all
)]

#[inline]
pub unsafe fn SetConsoleCtrlHandler(
handlerroutine: PHANDLER_ROUTINE,
add: bool,
) -> windows_core::Result<()> {
windows_core::link!("kernel32.dll" "system" fn SetConsoleCtrlHandler(handlerroutine : PHANDLER_ROUTINE, add : windows_core::BOOL) -> windows_core::BOOL);
unsafe { SetConsoleCtrlHandler(handlerroutine, add.into()).ok() }
}
pub type PHANDLER_ROUTINE = Option<unsafe extern "system" fn(ctrltype: u32) -> windows_core::BOOL>;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter SetConsoleCtrlHandler"
17 changes: 17 additions & 0 deletions crates/tests/fixtures/harness/data/bindgen/deps/expected.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#![allow(
non_snake_case,
non_upper_case_globals,
non_camel_case_types,
dead_code,
clippy::all
)]

windows_link::link!("kernel32.dll" "system" fn FreeLibrary(hlibmodule : HMODULE) -> windows_sys::core::BOOL);
windows_link::link!("kernel32.dll" "system" fn GetProcAddress(hmodule : HMODULE, lpprocname : windows_sys::core::PCSTR) -> FARPROC);
windows_link::link!("kernel32.dll" "system" fn LoadLibraryExA(lplibfilename : windows_sys::core::PCSTR, hfile : HANDLE, dwflags : LOAD_LIBRARY_FLAGS) -> HMODULE);
pub type FARPROC = Option<unsafe extern "system" fn() -> isize>;
pub type HANDLE = *mut core::ffi::c_void;
pub type HINSTANCE = *mut core::ffi::c_void;
pub type HMODULE = *mut core::ffi::c_void;
pub type LOAD_LIBRARY_FLAGS = u32;
pub const LOAD_LIBRARY_SEARCH_DEFAULT_DIRS: LOAD_LIBRARY_FLAGS = 4096u32;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter FreeLibrary GetProcAddress LoadLibraryExA LOAD_LIBRARY_SEARCH_DEFAULT_DIRS --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter WAIT_EVENT WIN32_ERROR --derive WAIT_EVENT=PartialOrd"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter POINT SIZE --derive POINT=PartialOrd"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter POINT SIZE --sys --derive POINT=Debug"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter POINT SIZE --sys --derive POINT=Debug,Eq,PartialEq,PartialOrd,Ord, SIZE="
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter AsyncStatus CollectionChange --derive AsyncStatus=PartialOrd"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter DateTime TimeSpan --derive DateTime=PartialOrd"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GENERIC_ACCESS_RIGHTS --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GENERIC_ACCESS_RIGHTS"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter SECURITY_LOGON_TYPE --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter SECURITY_LOGON_TYPE"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter WAIT_EVENT --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter WAIT_EVENT"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter ErrorOptions --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter ErrorOptions"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter AsyncStatus --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter AsyncStatus"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter CoInitializeEx --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter CoInitializeEx"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter FatalExit --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter FatalExit"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter SetComputerNameA --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GlobalMemoryStatus --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GlobalMemoryStatus"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GetTickCount --sys"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GetTickCount --sys --sys-fn-extern"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GetTickCount --sys --sys-fn-extern --sys-fn-ptrs"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GetTickCount --sys --sys-fn-ptrs"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GetTickCount --sys --link windows_targets"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter GetTickCount"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter IStringable"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter IDispatch"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter IPersist"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter IPersistFile"
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
args = "--no-comment --in default --flat --filter IPersistFile --sys"
Loading
Loading