5 Commits
Author SHA1 Message Date
ds5678 951ae3f5a9 Update project versioning to use VersionPrefix 1.1.0
Replaced <Version> and <AssemblyVersion> with <VersionPrefix> set to 1.1.0 in the project file, standardizing version specification and bumping the version.
2026-08-26 19:06:14 -07:00
ds5678 2da6a26e6c Load required files from the default install directory 2026-08-26 16:22:02 -07:00
ds5678 669b610293 Latest clangsharp 2026-08-26 15:58:50 -07:00
ds5678 95bd100464 Update to .NET 10.0, copyright, and doc settings
Updated target framework from .NET 9.0 to .NET 10.0. Changed copyright year to "2024 - 2026". Removed XML documentation generation properties from project file.
2026-08-26 15:04:45 -07:00
ds5678 99f4083140 Switch to XML-based .slnx solution format
Replaced the traditional .sln file with a new .slnx file using an XML-based format. The new solution organizes structure with "include" and "Solution Items" folders and references the main project file.
2026-08-26 15:03:02 -07:00
58 changed files with 403 additions and 145 deletions

No files matched your search

-42
View File
@@ -1,42 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.35507.96 d17.13
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AssetRipper.Bindings.MsPdbCore", "AssetRipper.Bindings.MsPdbCore\AssetRipper.Bindings.MsPdbCore.csproj", "{EBB175D6-106F-4A44-91CB-70E08858E2AF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "include", "include", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
ProjectSection(SolutionItems) = preProject
include\pdb.h = include\pdb.h
include\README.md = include\README.md
include\vcver.h = include\vcver.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8EC462FD-D22E-90A8-E5CE-7E832BA40C5D}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
.gitignore = .gitignore
generate.bat = generate.bat
generate.rsp = generate.rsp
LICENSE.txt = LICENSE.txt
README.md = README.md
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EBB175D6-106F-4A44-91CB-70E08858E2AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EBB175D6-106F-4A44-91CB-70E08858E2AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EBB175D6-106F-4A44-91CB-70E08858E2AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EBB175D6-106F-4A44-91CB-70E08858E2AF}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BDA49DF3-F340-417D-91A1-C64B37ADFB3A}
EndGlobalSection
EndGlobal
+16
View File
@@ -0,0 +1,16 @@
<Solution>
<Folder Name="/include/">
<File Path="include/pdb.h" />
<File Path="include/README.md" />
<File Path="include/vcver.h" />
</Folder>
<Folder Name="/Solution Items/">
<File Path=".editorconfig" />
<File Path=".gitignore" />
<File Path="generate.bat" />
<File Path="generate.rsp" />
<File Path="LICENSE.txt" />
<File Path="README.md" />
</Folder>
<Project Path="AssetRipper.Bindings.MsPdbCore/AssetRipper.Bindings.MsPdbCore.csproj" />
</Solution>
@@ -1,14 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<IsAotCompatible>true</IsAotCompatible>
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
<Version>1.0.1</Version>
<AssemblyVersion>$(Version)</AssemblyVersion>
<VersionPrefix>1.1.0</VersionPrefix>
<Copyright>Copyright © ds5678</Copyright>
<Authors>ds5678</Authors>
<Company>AssetRipper</Company>
@@ -19,13 +18,11 @@
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<RepositoryType>git</RepositoryType>
<PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl>
<Copyright>Copyright (c) 2024 ds5678</Copyright>
<Copyright>Copyright (c) 2024 - 2026 ds5678</Copyright>
<Description>Managed wrapper library for mspdbcore.dll</Description>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<DocumentationFile>bin\AssetRipper.Bindings.MsPdbCore.xml</DocumentationFile>
<NoWarn>SYSLIB1054;1591</NoWarn>
</PropertyGroup>
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct CV_Column_t
{
}
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct CV_Line_t
{
}
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum DBGTYPE
{
dbgtypeFPO,
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct DBI : DBI.Interface
{
public void** lpVtbl;
@@ -271,16 +273,16 @@ public unsafe partial struct DBI : DBI.Interface
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(33)]
[return: NativeTypeName("AGE")]
public uint QueryAge()
public readonly uint QueryAge()
{
return ((delegate* unmanaged[MemberFunction]<DBI*, uint>)(lpVtbl[33]))((DBI*)Unsafe.AsPointer(ref this));
return ((delegate* unmanaged[MemberFunction]<DBI*, uint>)(lpVtbl[33]))((DBI*)Unsafe.AsPointer(in this));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(34)]
public void* QueryHeader()
public readonly void* QueryHeader()
{
return ((delegate* unmanaged[MemberFunction]<DBI*, void*>)(lpVtbl[34]))((DBI*)Unsafe.AsPointer(ref this));
return ((delegate* unmanaged[MemberFunction]<DBI*, void*>)(lpVtbl[34]))((DBI*)Unsafe.AsPointer(in this));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -348,9 +350,9 @@ public unsafe partial struct DBI : DBI.Interface
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(43)]
public ushort QueryMachineType()
public readonly ushort QueryMachineType()
{
return ((delegate* unmanaged[MemberFunction]<DBI*, ushort>)(lpVtbl[43]))((DBI*)Unsafe.AsPointer(ref this));
return ((delegate* unmanaged[MemberFunction]<DBI*, ushort>)(lpVtbl[43]))((DBI*)Unsafe.AsPointer(in this));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum DOVC
{
dovcNotePdbUsed,
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct Dbg : Dbg.Interface
{
public void** lpVtbl;
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct DbgBlob
{
[NativeTypeName("ULONG")]
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct DbgRvaVaBlob
{
[NativeTypeName("ULONG")]
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct Enum : Enum.Interface
{
public void** lpVtbl;
@@ -1,9 +1,11 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[NativeTypeName("struct EnumContrib : Enum")]
[NativeInheritance("Enum")]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct EnumContrib : EnumContrib.Interface
{
public void** lpVtbl;
@@ -1,9 +1,11 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[NativeTypeName("struct EnumLines : Enum")]
[NativeInheritance("Enum")]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct EnumLines : EnumLines.Interface
{
public void** lpVtbl;
@@ -1,9 +1,11 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[NativeTypeName("struct EnumNameMap : Enum")]
[NativeInheritance("Enum")]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct EnumNameMap : EnumNameMap.Interface
{
public void** lpVtbl;
@@ -1,9 +1,11 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[NativeTypeName("struct EnumSrc : Enum")]
[NativeInheritance("Enum")]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct EnumSrc : EnumSrc.Interface
{
public void** lpVtbl;
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct EnumStreamNames
{
}
@@ -1,9 +1,11 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[NativeTypeName("struct EnumSyms : Enum")]
[NativeInheritance("Enum")]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct EnumSyms : EnumSyms.Interface
{
public void** lpVtbl;
@@ -1,9 +1,11 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[NativeTypeName("struct EnumThunk : Enum")]
[NativeInheritance("Enum")]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct EnumThunk : EnumThunk.Interface
{
public void** lpVtbl;
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct GSI : GSI.Interface
{
public void** lpVtbl;
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct IPDBError : IPDBError.Interface
{
public void** lpVtbl;
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct IStream
{
}
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct LinkInfo
{
[NativeTypeName("ULONG")]
@@ -1,7 +1,10 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[NativeTypeName("struct LinkInfoW : LinkInfo")]
[NativeInheritance("LinkInfo")]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct LinkInfoW
{
public LinkInfo Base;
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct Mod : Mod.Interface
{
public void** lpVtbl;
@@ -1,8 +1,10 @@
using System;
using System.CodeDom.Compiler;
using System.Runtime.InteropServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public static unsafe partial class MsPdbCore
{
public const int wtiSymsNB09 = 0;
@@ -24,7 +26,7 @@ public static unsafe partial class MsPdbCore
[DllImport("mspdbcore", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("BOOL")]
public static extern int PDBOpenValidate4([NativeTypeName("const wchar_t *")] char* wszPDB, [NativeTypeName("const char *")] sbyte* szMode, [NativeTypeName("PCSIG70")] _GUID* pcsig70, [NativeTypeName("SIG")] uint sig, [NativeTypeName("AGE")] uint age, [NativeTypeName("EC *")] int* pec, [NativeTypeName("wchar_t *")] char* wszError, [NativeTypeName("size_t")] nuint cchErrMax, PDB** pppdb);
public static extern int PDBOpenValidate4([NativeTypeName("const wchar_t *")] char* wszPDB, [NativeTypeName("const char *")] sbyte* szMode, [NativeTypeName("PCSIG70")] Guid* pcsig70, [NativeTypeName("SIG")] uint sig, [NativeTypeName("AGE")] uint age, [NativeTypeName("EC *")] int* pec, [NativeTypeName("wchar_t *")] char* wszError, [NativeTypeName("size_t")] nuint cchErrMax, PDB** pppdb);
[DllImport("mspdbcore", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("BOOL")]
@@ -68,7 +70,7 @@ public static unsafe partial class MsPdbCore
[DllImport("mspdbcore", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("BOOL")]
public static extern int PDBQuerySignature2(PDB* ppdb, [NativeTypeName("PSIG70")] _GUID* psig70);
public static extern int PDBQuerySignature2(PDB* ppdb, [NativeTypeName("PSIG70")] Guid* psig70);
[DllImport("mspdbcore", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
[return: NativeTypeName("AGE")]
@@ -1,8 +1,10 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct NameMap : NameMap.Interface
{
public void** lpVtbl;
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct OffMap
{
[NativeTypeName("ULONG")]
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum PCC
{
pccFilterPublics,
@@ -1,8 +1,11 @@
using System;
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct PDB : PDB.Interface
{
public void** lpVtbl;
@@ -17,7 +20,7 @@ public unsafe partial struct PDB : PDB.Interface
[DllImport("mspdbcore", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?OpenValidate4@PDB@@SAHPEB_WPEBDPEBU_GUID@@KKPEAJPEA_W_KPEAPEAU1@@Z", ExactSpelling = true)]
[return: NativeTypeName("BOOL")]
public static extern int OpenValidate4([NativeTypeName("const wchar_t *")] char* wszPDB, [NativeTypeName("const char *")] sbyte* szMode, [NativeTypeName("PCSIG70")] _GUID* pcsig70, [NativeTypeName("SIG")] uint sig, [NativeTypeName("AGE")] uint age, [NativeTypeName("EC *")] int* pec, [NativeTypeName("wchar_t *")] char* wszError, [NativeTypeName("size_t")] nuint cchErrMax, PDB** pppdb);
public static extern int OpenValidate4([NativeTypeName("const wchar_t *")] char* wszPDB, [NativeTypeName("const char *")] sbyte* szMode, [NativeTypeName("PCSIG70")] Guid* pcsig70, [NativeTypeName("SIG")] uint sig, [NativeTypeName("AGE")] uint age, [NativeTypeName("EC *")] int* pec, [NativeTypeName("wchar_t *")] char* wszError, [NativeTypeName("size_t")] nuint cchErrMax, PDB** pppdb);
[DllImport("mspdbcore", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?OpenValidate5@PDB@@SAHPEB_W0PEAXP6AP6AHXZ1W4POVC@@@ZPEAJPEA_W_KPEAPEAU1@@Z", ExactSpelling = true)]
[return: NativeTypeName("BOOL")]
@@ -243,9 +246,9 @@ public unsafe partial struct PDB : PDB.Interface
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(21)]
[return: NativeTypeName("BOOL")]
public int QuerySignature2([NativeTypeName("PSIG70")] _GUID* psig70)
public int QuerySignature2([NativeTypeName("PSIG70")] Guid* psig70)
{
return ((delegate* unmanaged[MemberFunction]<PDB*, _GUID*, int>)(lpVtbl[21]))((PDB*)Unsafe.AsPointer(ref this), psig70);
return ((delegate* unmanaged[MemberFunction]<PDB*, Guid*, int>)(lpVtbl[21]))((PDB*)Unsafe.AsPointer(ref this), psig70);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -259,9 +262,9 @@ public unsafe partial struct PDB : PDB.Interface
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(23)]
[return: NativeTypeName("BOOL")]
public int fIsSZPDB()
public readonly int fIsSZPDB()
{
return ((delegate* unmanaged[MemberFunction]<PDB*, int>)(lpVtbl[23]))((PDB*)Unsafe.AsPointer(ref this));
return ((delegate* unmanaged[MemberFunction]<PDB*, int>)(lpVtbl[23]))((PDB*)Unsafe.AsPointer(in this));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -408,7 +411,7 @@ public unsafe partial struct PDB : PDB.Interface
[VtblIndex(21)]
[return: NativeTypeName("BOOL")]
int QuerySignature2([NativeTypeName("PSIG70")] _GUID* psig70);
int QuerySignature2([NativeTypeName("PSIG70")] Guid* psig70);
[VtblIndex(22)]
[return: NativeTypeName("BOOL")]
@@ -514,7 +517,7 @@ public unsafe partial struct PDB : PDB.Interface
public delegate* unmanaged[MemberFunction]<TSelf*, char*, nuint, char*> QueryPDBNameExW;
[NativeTypeName("BOOL (PSIG70)")]
public delegate* unmanaged[MemberFunction]<TSelf*, _GUID*, int> QuerySignature2;
public delegate* unmanaged[MemberFunction]<TSelf*, Guid*, int> QuerySignature2;
[NativeTypeName("BOOL (const wchar_t *, DWORD, DWORD)")]
public delegate* unmanaged[MemberFunction]<TSelf*, char*, uint, uint, int> CopyToW;
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum PDBConsts
{
niNil = 0,
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum PDBErrors
{
EC_OK,
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum PDBIMPV
{
PDBImpvVC2 = 19941610,
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum PDBINTV
{
PDBIntv110 = 20091201,
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum POVC
{
povcNotifyDebugDir,
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct SO
{
[NativeTypeName("long")]
+12 -10
View File
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct Src : Src.Interface
{
public void** lpVtbl;
@@ -29,30 +31,30 @@ public unsafe partial struct Src : Src.Interface
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(3)]
public bool QueryByName([NativeTypeName("SZ_CONST")] sbyte* szFile, [NativeTypeName("PSrcHeaderOut")] SrcHeaderOut* psrcheaderOut)
public readonly bool QueryByName([NativeTypeName("SZ_CONST")] sbyte* szFile, [NativeTypeName("PSrcHeaderOut")] SrcHeaderOut* psrcheaderOut)
{
return ((delegate* unmanaged[MemberFunction]<Src*, sbyte*, SrcHeaderOut*, bool>)(lpVtbl[3]))((Src*)Unsafe.AsPointer(ref this), szFile, psrcheaderOut);
return ((delegate* unmanaged[MemberFunction]<Src*, sbyte*, SrcHeaderOut*, bool>)(lpVtbl[3]))((Src*)Unsafe.AsPointer(in this), szFile, psrcheaderOut);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(4)]
public bool GetData([NativeTypeName("PCSrcHeaderOut")] SrcHeaderOut* pcsrcheader, void* pvData)
public readonly bool GetData([NativeTypeName("PCSrcHeaderOut")] SrcHeaderOut* pcsrcheader, void* pvData)
{
return ((delegate* unmanaged[MemberFunction]<Src*, SrcHeaderOut*, void*, bool>)(lpVtbl[4]))((Src*)Unsafe.AsPointer(ref this), pcsrcheader, pvData);
return ((delegate* unmanaged[MemberFunction]<Src*, SrcHeaderOut*, void*, bool>)(lpVtbl[4]))((Src*)Unsafe.AsPointer(in this), pcsrcheader, pvData);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(5)]
public bool GetEnum(EnumSrc** ppenum)
public readonly bool GetEnum(EnumSrc** ppenum)
{
return ((delegate* unmanaged[MemberFunction]<Src*, EnumSrc**, bool>)(lpVtbl[5]))((Src*)Unsafe.AsPointer(ref this), ppenum);
return ((delegate* unmanaged[MemberFunction]<Src*, EnumSrc**, bool>)(lpVtbl[5]))((Src*)Unsafe.AsPointer(in this), ppenum);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(6)]
public bool GetHeaderBlock([NativeTypeName("SrcHeaderBlock &")] SrcHeaderBlock* shb)
public readonly bool GetHeaderBlock([NativeTypeName("SrcHeaderBlock &")] SrcHeaderBlock* shb)
{
return ((delegate* unmanaged[MemberFunction]<Src*, SrcHeaderBlock*, bool>)(lpVtbl[6]))((Src*)Unsafe.AsPointer(ref this), shb);
return ((delegate* unmanaged[MemberFunction]<Src*, SrcHeaderBlock*, bool>)(lpVtbl[6]))((Src*)Unsafe.AsPointer(in this), shb);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -64,9 +66,9 @@ public unsafe partial struct Src : Src.Interface
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(8)]
public bool QueryByNameW([NativeTypeName("wchar_t *")] char* wcsFile, [NativeTypeName("PSrcHeaderOut")] SrcHeaderOut* psrcheaderOut)
public readonly bool QueryByNameW([NativeTypeName("wchar_t *")] char* wcsFile, [NativeTypeName("PSrcHeaderOut")] SrcHeaderOut* psrcheaderOut)
{
return ((delegate* unmanaged[MemberFunction]<Src*, char*, SrcHeaderOut*, bool>)(lpVtbl[8]))((Src*)Unsafe.AsPointer(ref this), wcsFile, psrcheaderOut);
return ((delegate* unmanaged[MemberFunction]<Src*, char*, SrcHeaderOut*, bool>)(lpVtbl[8]))((Src*)Unsafe.AsPointer(in this), wcsFile, psrcheaderOut);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum SrcCompress
{
srccompressNone,
@@ -1,15 +1,18 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct SrcHash : SrcHash.Interface
{
public void** lpVtbl;
[DllImport("mspdbcore", CallingConvention = CallingConvention.Cdecl, EntryPoint = "?FCreateSrcHash@SrcHash@@SA_NAEAPEAU1@W4HID@1@@Z", ExactSpelling = true)]
public static extern bool FCreateSrcHash([NativeTypeName("PSrcHash &")] SrcHash** param0, [NativeTypeName("SrcHash::HID")] HID hid);
public static extern bool FCreateSrcHash([NativeTypeName("PSrcHash &")] SrcHash** param0, [NativeTypeName("SrcHash::HID")] SrcHash.HID hid);
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum TriState
{
tsYes,
@@ -17,6 +20,7 @@ public unsafe partial struct SrcHash : SrcHash.Interface
tsMaybe,
}
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum HID
{
hidNone,
@@ -36,32 +40,32 @@ public unsafe partial struct SrcHash : SrcHash.Interface
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(1)]
[return: NativeTypeName("SrcHash::HashID_t")]
public int HashID()
public readonly int HashID()
{
return ((delegate* unmanaged[MemberFunction]<SrcHash*, int>)(lpVtbl[1]))((SrcHash*)Unsafe.AsPointer(ref this));
return ((delegate* unmanaged[MemberFunction]<SrcHash*, int>)(lpVtbl[1]))((SrcHash*)Unsafe.AsPointer(in this));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(2)]
[return: NativeTypeName("SrcHash::CbHash_t")]
public uint CbHash()
public readonly uint CbHash()
{
return ((delegate* unmanaged[MemberFunction]<SrcHash*, uint>)(lpVtbl[2]))((SrcHash*)Unsafe.AsPointer(ref this));
return ((delegate* unmanaged[MemberFunction]<SrcHash*, uint>)(lpVtbl[2]))((SrcHash*)Unsafe.AsPointer(in this));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(3)]
public bool FGetHash([NativeTypeName("PV")] void* pvHash, [NativeTypeName("SrcHash::CbHash_t")] uint cbHash)
public readonly bool FGetHash([NativeTypeName("PV")] void* pvHash, [NativeTypeName("SrcHash::CbHash_t")] uint cbHash)
{
return ((delegate* unmanaged[MemberFunction]<SrcHash*, void*, uint, bool>)(lpVtbl[3]))((SrcHash*)Unsafe.AsPointer(ref this), pvHash, cbHash);
return ((delegate* unmanaged[MemberFunction]<SrcHash*, void*, uint, bool>)(lpVtbl[3]))((SrcHash*)Unsafe.AsPointer(in this), pvHash, cbHash);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
[VtblIndex(4)]
[return: NativeTypeName("SrcHash::TriState")]
public TriState TsVerifyHash([NativeTypeName("SrcHash::HID")] HID param0, [NativeTypeName("SrcHash::CbHash_t")] uint cbHash, [NativeTypeName("PCV")] void* pvHash, [NativeTypeName("size_t")] nuint cbBuf, [NativeTypeName("PCV")] void* pvBuf)
public SrcHash.TriState TsVerifyHash([NativeTypeName("SrcHash::HID")] SrcHash.HID param0, [NativeTypeName("SrcHash::CbHash_t")] uint cbHash, [NativeTypeName("PCV")] void* pvHash, [NativeTypeName("size_t")] nuint cbBuf, [NativeTypeName("PCV")] void* pvBuf)
{
return ((delegate* unmanaged[MemberFunction]<SrcHash*, HID, uint, void*, nuint, void*, TriState>)(lpVtbl[4]))((SrcHash*)Unsafe.AsPointer(ref this), param0, cbHash, pvHash, cbBuf, pvBuf);
return ((delegate* unmanaged[MemberFunction]<SrcHash*, SrcHash.HID, uint, void*, nuint, void*, SrcHash.TriState>)(lpVtbl[4]))((SrcHash*)Unsafe.AsPointer(ref this), param0, cbHash, pvHash, cbBuf, pvBuf);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
@@ -96,7 +100,7 @@ public unsafe partial struct SrcHash : SrcHash.Interface
[VtblIndex(4)]
[return: NativeTypeName("SrcHash::TriState")]
TriState TsVerifyHash([NativeTypeName("SrcHash::HID")] HID param0, [NativeTypeName("SrcHash::CbHash_t")] uint cbHash, [NativeTypeName("PCV")] void* pvHash, [NativeTypeName("size_t")] nuint cbBuf, [NativeTypeName("PCV")] void* pvBuf);
SrcHash.TriState TsVerifyHash([NativeTypeName("SrcHash::HID")] SrcHash.HID param0, [NativeTypeName("SrcHash::CbHash_t")] uint cbHash, [NativeTypeName("PCV")] void* pvHash, [NativeTypeName("size_t")] nuint cbBuf, [NativeTypeName("PCV")] void* pvBuf);
[VtblIndex(5)]
bool FReset();
@@ -121,7 +125,7 @@ public unsafe partial struct SrcHash : SrcHash.Interface
public delegate* unmanaged[MemberFunction]<TSelf*, void*, uint, bool> FGetHash;
[NativeTypeName("TriState (HID, CbHash_t, PCV, size_t, PCV)")]
public delegate* unmanaged[MemberFunction]<TSelf*, HID, uint, void*, nuint, void*, TriState> TsVerifyHash;
public delegate* unmanaged[MemberFunction]<TSelf*, SrcHash.HID, uint, void*, nuint, void*, SrcHash.TriState> TsVerifyHash;
[NativeTypeName("bool ()")]
public delegate* unmanaged[MemberFunction]<TSelf*, bool> FReset;
@@ -1,10 +1,12 @@
using System;
using System.CodeDom.Compiler;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct SrcHeader
{
[NativeTypeName("unsigned long")]
@@ -28,7 +30,48 @@ public partial struct SrcHeader
[NativeTypeName("unsigned char[1]")]
public _szNames_e__FixedBuffer szNames;
[UnscopedRef]
public ref byte grFlags
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
{
return ref Anonymous.grFlags;
}
}
public byte fVirtual
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
readonly get
{
return Anonymous.Anonymous.fVirtual;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
set
{
Anonymous.Anonymous.fVirtual = value;
}
}
public byte pad
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
readonly get
{
return Anonymous.Anonymous.pad;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
set
{
Anonymous.Anonymous.pad = value;
}
}
[StructLayout(LayoutKind.Explicit)]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct _Anonymous_e__Union
{
[FieldOffset(0)]
@@ -39,6 +82,7 @@ public partial struct SrcHeader
[NativeTypeName("__AnonymousRecord_pdb_L594_C9")]
public _Anonymous_e__Struct Anonymous;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct _Anonymous_e__Struct
{
[NativeBitfield("fVirtual", offset: 0, length: 1)]
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct SrcHeaderBlock
{
public int ver;
@@ -16,6 +18,7 @@ public partial struct SrcHeaderBlock
[NativeTypeName("BYTE[44]")]
public _rgbPad_e__FixedBuffer rgbPad;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct _ft_e__Struct
{
[NativeTypeName("DWORD")]
@@ -1,8 +1,11 @@
using System.CodeDom.Compiler;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct SrcHeaderOut
{
[NativeTypeName("unsigned long")]
@@ -37,7 +40,68 @@ public unsafe partial struct SrcHeaderOut
[NativeTypeName("__AnonymousRecord_pdb_L652_C5")]
public _Anonymous2_e__Union Anonymous2;
[UnscopedRef]
public ref byte grFlags
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
{
return ref Anonymous1.grFlags;
}
}
public byte fVirtual
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
readonly get
{
return Anonymous1.Anonymous.fVirtual;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
set
{
Anonymous1.Anonymous.fVirtual = value;
}
}
public byte pad
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
readonly get
{
return Anonymous1.Anonymous.pad;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
set
{
Anonymous1.Anonymous.pad = value;
}
}
[UnscopedRef]
public ref void* pvReserved1
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
{
return ref Anonymous2.pvReserved1;
}
}
[UnscopedRef]
public ref long pv64Reserved2
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
{
return ref Anonymous2.pv64Reserved2;
}
}
[StructLayout(LayoutKind.Explicit)]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct _Anonymous1_e__Union
{
[FieldOffset(0)]
@@ -48,6 +112,7 @@ public unsafe partial struct SrcHeaderOut
[NativeTypeName("__AnonymousRecord_pdb_L646_C9")]
public _Anonymous_e__Struct Anonymous;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct _Anonymous_e__Struct
{
[NativeBitfield("fVirtual", offset: 0, length: 1)]
@@ -89,6 +154,7 @@ public unsafe partial struct SrcHeaderOut
}
[StructLayout(LayoutKind.Explicit)]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct _Anonymous2_e__Union
{
[FieldOffset(0)]
@@ -1,10 +1,12 @@
using System;
using System.CodeDom.Compiler;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct SrcHeaderW
{
[NativeTypeName("unsigned long")]
@@ -28,7 +30,48 @@ public partial struct SrcHeaderW
[NativeTypeName("wchar_t[1]")]
public _szNames_e__FixedBuffer szNames;
[UnscopedRef]
public ref byte grFlags
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
{
return ref Anonymous.grFlags;
}
}
public byte fVirtual
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
readonly get
{
return Anonymous.Anonymous.fVirtual;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
set
{
Anonymous.Anonymous.fVirtual = value;
}
}
public byte pad
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
readonly get
{
return Anonymous.Anonymous.pad;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
set
{
Anonymous.Anonymous.pad = value;
}
}
[StructLayout(LayoutKind.Explicit)]
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct _Anonymous_e__Union
{
[FieldOffset(0)]
@@ -39,6 +82,7 @@ public partial struct SrcHeaderW
[NativeTypeName("__AnonymousRecord_pdb_L618_C9")]
public _Anonymous_e__Struct Anonymous;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct _Anonymous_e__Struct
{
[NativeBitfield("fVirtual", offset: 0, length: 1)]
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum SrcVer
{
srcverOne = 19980827,
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct Stream : Stream.Interface
{
public void** lpVtbl;
@@ -1,8 +1,10 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct StreamImage : StreamImage.Interface
{
public void** lpVtbl;
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct SymConvertInfo
{
[NativeTypeName("ULONG")]
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct TPI : TPI.Interface
{
public void** lpVtbl;
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum VerDataBlob
{
vdbOne = 1,
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public enum VerLinkInfo
{
vliOne = 1,
@@ -1,8 +1,10 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct WidenTi : WidenTi.Interface
{
public void** lpVtbl;
@@ -1,24 +0,0 @@
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
public partial struct _GUID
{
[NativeTypeName("DWORD")]
public uint Data1;
[NativeTypeName("WORD")]
public ushort Data2;
[NativeTypeName("WORD")]
public ushort Data3;
[NativeTypeName("BYTE[8]")]
public _Data4_e__FixedBuffer Data4;
[InlineArray(8)]
public partial struct _Data4_e__FixedBuffer
{
public byte e0;
}
}
@@ -1,5 +1,8 @@
using System.CodeDom.Compiler;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public partial struct _IMAGE_DEBUG_DIRECTORY
{
}
@@ -1,7 +1,9 @@
using System.CodeDom.Compiler;
using System.Runtime.CompilerServices;
namespace AssetRipper.Bindings.MsPdbCore;
[GeneratedCode("ClangSharp", "21.1.8.4")]
public unsafe partial struct _tagSEARCHDEBUGINFO
{
[NativeTypeName("DWORD")]
+30 -1
View File
@@ -1,4 +1,6 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
namespace AssetRipper.Bindings.MsPdbCore;
@@ -67,8 +69,35 @@ public static unsafe partial class MsPdbCore
public static bool PDBQuerySignature2(PDB* ppdb, out Guid guid)
{
fixed (Guid* guidPtr = &guid)
return PDBQuerySignature2(ppdb, (_GUID*)guidPtr).ToBoolean();
return PDBQuerySignature2(ppdb, guidPtr).ToBoolean();
}
private static bool ToBoolean(this int value) => value != 0;
static MsPdbCore()
{
if (!OperatingSystem.IsWindows())
{
return;
}
NativeLibrary.SetDllImportResolver(typeof(MsPdbCore).Assembly, (libraryName, assembly, searchPath) =>
{
if (!libraryName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase))
{
libraryName += ".dll";
}
foreach (string visualStudioVersion in new[] { "18", "2022" })
{
foreach (string edition in new[] { "Enterprise", "Professional", "Community", "Insiders" })
{
string libraryPath = Path.Join(@"C:\Program Files\Microsoft Visual Studio", visualStudioVersion, edition, "Common7", "IDE", libraryName);
if (File.Exists(libraryPath) && NativeLibrary.TryLoad(libraryPath, out IntPtr handle))
{
return handle;
}
}
}
return IntPtr.Zero;
});
}
}
+3 -1
View File
@@ -4,10 +4,12 @@ These are bindings over `mspdbcore.dll` which is shipped with Visual Studio.
## Required Files
You need to manually copy the following Microsoft-provided libraries from Visual Studio (or other build tools) for this wrapping library. They cannot be redistributed because the license on them is not clear.
You may need to manually copy the following Microsoft-provided libraries from Visual Studio (or other build tools) for this wrapping library. They cannot be redistributed because the license on them is not clear.
* `mspdbcore.dll`
* `msobj140.dll`
* `tbbmalloc.dll`
These need to be placed next to the built executable file. Use file search to find `mspdbcore` in the Visual Studio install directory. By default, they are in `C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\`.
This library attempts to resolve the dependencies automatically, but if it fails, you can manually copy the files to the output directory of your project.
+5 -5
View File
@@ -1,6 +1,6 @@
dotnet tool install --global ClangSharpPInvokeGenerator --version 18.1.0.2
cd AssetRipper.Bindings.MsPdbCore
if not exist "Generated" mkdir "Generated"
rmdir /s /q Generated
cd ..
dotnet tool install --global ClangSharpPInvokeGenerator
cd AssetRipper.Bindings.MsPdbCore
if not exist "Generated" mkdir "Generated"
rmdir /s /q Generated
cd ..
ClangSharpPInvokeGenerator @generate.rsp
+33 -29
View File
@@ -2,39 +2,43 @@
pdb.h
--file-directory
./include/
--methodClassName
--method-class-name
MsPdbCore
--namespace
AssetRipper.Bindings.MsPdbCore
--output
./AssetRipper.Bindings.MsPdbCore/Generated
--libraryPath
--library-path
mspdbcore
--log
visited-files
exclusions
--exclude
_GUID
--config
exclude-anonymous-field-helpers
exclude-com-proxies
exclude-enum-operators
exclude-funcs-with-body
exclude-using-statics-for-enums
generate-aggressive-inlining
generate-callconv-member-function
generate-cpp-attributes
generate-disable-runtime-marshalling
generate-file-scoped-namespaces
generate-guid-member
generate-helper-types
generate-macro-bindings
generate-marker-interfaces
generate-native-bitfield-attribute
generate-native-inheritance-attribute
generate-setslastsystemerror-attribute
generate-template-bindings
generate-unmanaged-constants
generate-vtbl-index-attribute
strip-enum-member-type-name
log-exclusions
log-visited-files
multi-file
preview-codegen
trimmable-vtbls
windows-types
codegen=latest
file=multi
types=windows
vtbls=trimmable
--generate
aggressive-inlining
callconv-member-function
cpp-attributes
disable-runtime-marshalling
enum-member-type-name=false
enum-operators=false
file-scoped-namespaces
funcs-with-body=false
generated-code=type
guid-member
helper-types
macro-bindings
marker-interfaces
native-bitfield-attribute
native-inheritance-attribute
setslastsystemerror-attribute
template-bindings
unmanaged-constants
using-statics-for-enums=false
using-statics-for-guid-members=false
vtbl-index-attribute