mirror of
https://github.com/AssetRipper/NativeFileDialogs.NET.git
synced 2026-11-13 18:07:38 -10:00
String marshalling fix (#3)
This commit is contained in:
23 files changed
+624
-243
No files matched your search
+2
-2
@@ -1,4 +1,4 @@
|
||||
[submodule "nativefiledialog-extended"]
|
||||
path = nativefiledialog-extended
|
||||
url = ssh://[email protected]/Speykious/nativefiledialog-extended
|
||||
branch = dynamic
|
||||
url = ssh://[email protected]/btzy/nativefiledialog-extended.git
|
||||
branch = master
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
@@ -13,7 +13,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) Speykious
|
||||
// Copyright (c) Speykious
|
||||
// This file is part of NativeFileDialogs.NET.
|
||||
// NativeFileDialogs.NET is licensed under the Zlib License. See LICENSE for details.
|
||||
|
||||
@@ -9,14 +9,14 @@ unsafe
|
||||
{
|
||||
nfd.NFD_Init();
|
||||
|
||||
NfdnfilteritemT[] filterItem = new[]
|
||||
Nfdu8filteritemT[] filterItem = new[]
|
||||
{
|
||||
new NfdnfilteritemT
|
||||
new Nfdu8filteritemT
|
||||
{
|
||||
Name = "Source code",
|
||||
Spec = "c,cpp,cc",
|
||||
},
|
||||
new NfdnfilteritemT
|
||||
new Nfdu8filteritemT
|
||||
{
|
||||
Name = "Headers",
|
||||
Spec = "h,hpp",
|
||||
@@ -24,7 +24,7 @@ unsafe
|
||||
};
|
||||
|
||||
sbyte* outPathPtr;
|
||||
NfdresultT result = nfd.NFD_OpenDialogN(&outPathPtr, filterItem, (uint)filterItem.Length, null);
|
||||
NfdresultT result = nfd.NFD_OpenDialogU8(&outPathPtr, filterItem, (uint)filterItem.Length, null);
|
||||
switch (result)
|
||||
{
|
||||
case NfdresultT.NFD_OKAY:
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
@@ -13,7 +13,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) Speykious
|
||||
// Copyright (c) Speykious
|
||||
// This file is part of NativeFileDialogs.NET.
|
||||
// NativeFileDialogs.NET is licensed under the Zlib License. See LICENSE for details.
|
||||
|
||||
@@ -9,14 +9,14 @@ unsafe
|
||||
{
|
||||
nfd.NFD_Init();
|
||||
|
||||
NfdnfilteritemT[] filterItems = new[]
|
||||
Nfdu8filteritemT[] filterItems = new[]
|
||||
{
|
||||
new NfdnfilteritemT
|
||||
new Nfdu8filteritemT
|
||||
{
|
||||
Name = "Source code",
|
||||
Spec = "c,cpp,cc",
|
||||
},
|
||||
new NfdnfilteritemT
|
||||
new Nfdu8filteritemT
|
||||
{
|
||||
Name = "Headers",
|
||||
Spec = "h,hpp",
|
||||
@@ -24,7 +24,7 @@ unsafe
|
||||
};
|
||||
|
||||
IntPtr pathSet;
|
||||
NfdresultT result = nfd.NFD_OpenDialogMultipleN(&pathSet, filterItems, (uint)filterItems.Length, null);
|
||||
NfdresultT result = nfd.NFD_OpenDialogMultipleU8(&pathSet, filterItems, (uint)filterItems.Length, null);
|
||||
switch (result)
|
||||
{
|
||||
case NfdresultT.NFD_OKAY:
|
||||
@@ -36,7 +36,7 @@ unsafe
|
||||
for (uint i = 0; i < count; i++)
|
||||
{
|
||||
sbyte* pathPtr;
|
||||
nfd.NFD_PathSetGetPathN(pathSet, i, &pathPtr);
|
||||
nfd.NFD_PathSetGetPathU8(pathSet, i, &pathPtr);
|
||||
outPaths[i] = new string(pathPtr);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
@@ -13,7 +13,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) Speykious
|
||||
// Copyright (c) Speykious
|
||||
// This file is part of NativeFileDialogs.NET.
|
||||
// NativeFileDialogs.NET is licensed under the Zlib License. See LICENSE for details.
|
||||
|
||||
@@ -10,7 +10,7 @@ unsafe
|
||||
nfd.NFD_Init();
|
||||
|
||||
sbyte* outPathPtr;
|
||||
NfdresultT result = nfd.NFD_PickFolderN(&outPathPtr, null);
|
||||
NfdresultT result = nfd.NFD_PickFolderU8(&outPathPtr, null);
|
||||
switch (result)
|
||||
{
|
||||
case NfdresultT.NFD_OKAY:
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
@@ -13,7 +13,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) Speykious
|
||||
// Copyright (c) Speykious
|
||||
// This file is part of NativeFileDialogs.NET.
|
||||
// NativeFileDialogs.NET is licensed under the Zlib License. See LICENSE for details.
|
||||
|
||||
@@ -9,14 +9,14 @@ unsafe
|
||||
{
|
||||
nfd.NFD_Init();
|
||||
|
||||
NfdnfilteritemT[] filterItem = new[]
|
||||
Nfdu8filteritemT[] filterItem = new[]
|
||||
{
|
||||
new NfdnfilteritemT
|
||||
new Nfdu8filteritemT
|
||||
{
|
||||
Name = "Source code",
|
||||
Spec = "c,cpp,cc",
|
||||
},
|
||||
new NfdnfilteritemT
|
||||
new Nfdu8filteritemT
|
||||
{
|
||||
Name = "Headers",
|
||||
Spec = "h,hpp",
|
||||
@@ -24,7 +24,7 @@ unsafe
|
||||
};
|
||||
|
||||
sbyte* savePathPtr;
|
||||
NfdresultT result = nfd.NFD_SaveDialogN(&savePathPtr, filterItem, (uint)filterItem.Length, null, "Untitled.c");
|
||||
NfdresultT result = nfd.NFD_SaveDialogU8(&savePathPtr, filterItem, (uint)filterItem.Length, null, "Untitled.c");
|
||||
switch (result)
|
||||
{
|
||||
case NfdresultT.NFD_OKAY:
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
@@ -12,7 +12,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
@@ -12,7 +12,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
@@ -12,7 +12,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
@@ -12,7 +12,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -2,4 +2,5 @@
|
||||
#include <new>
|
||||
|
||||
nfdpathsetenum_t& (nfdpathsetenum_t::*_0)(nfdpathsetenum_t&&) = &nfdpathsetenum_t::operator=;
|
||||
nfdnfilteritem_t& (nfdnfilteritem_t::*_1)(nfdnfilteritem_t&&) = &nfdnfilteritem_t::operator=;
|
||||
nfdu8filteritem_t& (nfdu8filteritem_t::*_1)(nfdu8filteritem_t&&) = &nfdu8filteritem_t::operator=;
|
||||
nfdnfilteritem_t& (nfdnfilteritem_t::*_2)(nfdnfilteritem_t&&) = &nfdnfilteritem_t::operator=;
|
||||
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
@@ -17,16 +17,13 @@
|
||||
<Title>NativeFileDialogs.AutoGen</Title>
|
||||
<Description>Auto-generated .NET bindings for NativeFileDialogs (Extended)</Description>
|
||||
<Copyright>2022 Speykious</Copyright>
|
||||
<RepositoryUrl>https://github.com/Speykious/NativeFileDialogs.NET</RepositoryUrl>
|
||||
<PackageProjectUrl>https://github.com/Speykious/NativeFileDialogs.NET</PackageProjectUrl>
|
||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="CppSharp.Runtime" Version="1.0.3" />
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="CppSharp.Runtime" Version="1.1.5.3168" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Documents">
|
||||
|
||||
@@ -12,3 +12,5 @@ using __CallingConvention = global::System.Runtime.InteropServices.CallingConven
|
||||
using __IntPtr = global::System.IntPtr;
|
||||
[assembly:InternalsVisibleTo("nfd")]
|
||||
|
||||
#pragma warning disable CS0109 // Member does not hide an inherited member; new keyword is not required
|
||||
|
||||
+526
-175
@@ -10,105 +10,20 @@ using System.Security;
|
||||
using __CallingConvention = global::System.Runtime.InteropServices.CallingConvention;
|
||||
using __IntPtr = global::System.IntPtr;
|
||||
|
||||
#pragma warning disable CS0109 // Member does not hide an inherited member; new keyword is not required
|
||||
|
||||
namespace NativeFileDialogs.AutoGen
|
||||
{
|
||||
public enum NfdresultT : uint
|
||||
public enum NfdresultT
|
||||
{
|
||||
/// <summary>Programmatic error</summary>
|
||||
NFD_ERROR = 0,
|
||||
/// <summary>User pressed okay, or successful return</summary>
|
||||
NFD_OKAY = 1,
|
||||
/// <summary>User pressed cancel</summary>
|
||||
NFD_CANCEL = 2
|
||||
}
|
||||
|
||||
public unsafe partial class MaxAlignT : IDisposable
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential, Size = 32)]
|
||||
public partial struct __Internal
|
||||
{
|
||||
internal long __clang_max_align_nonce1;
|
||||
internal fixed byte __clang_max_align_nonce2[128];
|
||||
}
|
||||
|
||||
public __IntPtr __Instance { get; protected set; }
|
||||
|
||||
internal static readonly global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.MaxAlignT> NativeToManagedMap = new global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.MaxAlignT>();
|
||||
|
||||
protected bool __ownsNativeInstance;
|
||||
|
||||
internal static MaxAlignT __CreateInstance(__IntPtr native, bool skipVTables = false)
|
||||
{
|
||||
return new MaxAlignT(native.ToPointer(), skipVTables);
|
||||
}
|
||||
|
||||
internal static MaxAlignT __GetOrCreateInstance(__IntPtr native, bool saveInstance = false, bool skipVTables = false)
|
||||
{
|
||||
if (native == __IntPtr.Zero)
|
||||
return null;
|
||||
if (NativeToManagedMap.TryGetValue(native, out var managed))
|
||||
return (MaxAlignT)managed;
|
||||
var result = __CreateInstance(native, skipVTables);
|
||||
if (saveInstance)
|
||||
NativeToManagedMap[native] = result;
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static MaxAlignT __CreateInstance(__Internal native, bool skipVTables = false)
|
||||
{
|
||||
return new MaxAlignT(native, skipVTables);
|
||||
}
|
||||
|
||||
private static void* __CopyValue(__Internal native)
|
||||
{
|
||||
var ret = Marshal.AllocHGlobal(sizeof(__Internal));
|
||||
*(__Internal*) ret = native;
|
||||
return ret.ToPointer();
|
||||
}
|
||||
|
||||
private MaxAlignT(__Internal native, bool skipVTables = false)
|
||||
: this(__CopyValue(native), skipVTables)
|
||||
{
|
||||
__ownsNativeInstance = true;
|
||||
NativeToManagedMap[__Instance] = this;
|
||||
}
|
||||
|
||||
protected MaxAlignT(void* native, bool skipVTables = false)
|
||||
{
|
||||
if (native == null)
|
||||
return;
|
||||
__Instance = new __IntPtr(native);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(disposing: true, callNativeDtor : __ownsNativeInstance );
|
||||
}
|
||||
|
||||
partial void DisposePartial(bool disposing);
|
||||
|
||||
internal protected virtual void Dispose(bool disposing, bool callNativeDtor )
|
||||
{
|
||||
if (__Instance == IntPtr.Zero)
|
||||
return;
|
||||
NativeToManagedMap.TryRemove(__Instance, out _);
|
||||
DisposePartial(disposing);
|
||||
if (__ownsNativeInstance)
|
||||
Marshal.FreeHGlobal(__Instance);
|
||||
__Instance = IntPtr.Zero;
|
||||
}
|
||||
|
||||
public long ClangMaxAlignNonce1
|
||||
{
|
||||
get
|
||||
{
|
||||
return ((__Internal*)__Instance)->__clang_max_align_nonce1;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
((__Internal*)__Instance)->__clang_max_align_nonce1 = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe partial class NfdpathsetenumT : IDisposable
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential, Size = 8)]
|
||||
@@ -116,18 +31,32 @@ namespace NativeFileDialogs.AutoGen
|
||||
{
|
||||
internal __IntPtr ptr;
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "_ZN16nfdpathsetenum_tC2ERKS_", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern void cctor(__IntPtr __instance, __IntPtr __0);
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "??0nfdpathsetenum_t@@QEAA@AEBU0@@Z", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern __IntPtr cctor(__IntPtr __instance, __IntPtr _0);
|
||||
}
|
||||
|
||||
public __IntPtr __Instance { get; protected set; }
|
||||
|
||||
internal static readonly global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.NfdpathsetenumT> NativeToManagedMap = new global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.NfdpathsetenumT>();
|
||||
internal static readonly new global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.NfdpathsetenumT> NativeToManagedMap =
|
||||
new global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.NfdpathsetenumT>();
|
||||
|
||||
internal static void __RecordNativeToManagedMapping(IntPtr native, global::NativeFileDialogs.AutoGen.NfdpathsetenumT managed)
|
||||
{
|
||||
NativeToManagedMap[native] = managed;
|
||||
}
|
||||
|
||||
internal static bool __TryGetNativeToManagedMapping(IntPtr native, out global::NativeFileDialogs.AutoGen.NfdpathsetenumT managed)
|
||||
{
|
||||
|
||||
return NativeToManagedMap.TryGetValue(native, out managed);
|
||||
}
|
||||
|
||||
protected bool __ownsNativeInstance;
|
||||
|
||||
internal static NfdpathsetenumT __CreateInstance(__IntPtr native, bool skipVTables = false)
|
||||
{
|
||||
if (native == __IntPtr.Zero)
|
||||
return null;
|
||||
return new NfdpathsetenumT(native.ToPointer(), skipVTables);
|
||||
}
|
||||
|
||||
@@ -135,11 +64,11 @@ namespace NativeFileDialogs.AutoGen
|
||||
{
|
||||
if (native == __IntPtr.Zero)
|
||||
return null;
|
||||
if (NativeToManagedMap.TryGetValue(native, out var managed))
|
||||
if (__TryGetNativeToManagedMapping(native, out var managed))
|
||||
return (NfdpathsetenumT)managed;
|
||||
var result = __CreateInstance(native, skipVTables);
|
||||
if (saveInstance)
|
||||
NativeToManagedMap[native] = result;
|
||||
__RecordNativeToManagedMapping(native, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -159,7 +88,7 @@ namespace NativeFileDialogs.AutoGen
|
||||
: this(__CopyValue(native), skipVTables)
|
||||
{
|
||||
__ownsNativeInstance = true;
|
||||
NativeToManagedMap[__Instance] = this;
|
||||
__RecordNativeToManagedMapping(__Instance, this);
|
||||
}
|
||||
|
||||
protected NfdpathsetenumT(void* native, bool skipVTables = false)
|
||||
@@ -173,15 +102,15 @@ namespace NativeFileDialogs.AutoGen
|
||||
{
|
||||
__Instance = Marshal.AllocHGlobal(sizeof(global::NativeFileDialogs.AutoGen.NfdpathsetenumT.__Internal));
|
||||
__ownsNativeInstance = true;
|
||||
NativeToManagedMap[__Instance] = this;
|
||||
__RecordNativeToManagedMapping(__Instance, this);
|
||||
}
|
||||
|
||||
public NfdpathsetenumT(global::NativeFileDialogs.AutoGen.NfdpathsetenumT __0)
|
||||
public NfdpathsetenumT(global::NativeFileDialogs.AutoGen.NfdpathsetenumT _0)
|
||||
{
|
||||
__Instance = Marshal.AllocHGlobal(sizeof(global::NativeFileDialogs.AutoGen.NfdpathsetenumT.__Internal));
|
||||
__ownsNativeInstance = true;
|
||||
NativeToManagedMap[__Instance] = this;
|
||||
*((global::NativeFileDialogs.AutoGen.NfdpathsetenumT.__Internal*) __Instance) = *((global::NativeFileDialogs.AutoGen.NfdpathsetenumT.__Internal*) __0.__Instance);
|
||||
__RecordNativeToManagedMapping(__Instance, this);
|
||||
*((global::NativeFileDialogs.AutoGen.NfdpathsetenumT.__Internal*) __Instance) = *((global::NativeFileDialogs.AutoGen.NfdpathsetenumT.__Internal*) _0.__Instance);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
@@ -216,7 +145,7 @@ namespace NativeFileDialogs.AutoGen
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe partial class NfdnfilteritemT : IDisposable
|
||||
public unsafe partial class Nfdu8filteritemT : IDisposable
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential, Size = 16)]
|
||||
public partial struct __Internal
|
||||
@@ -224,38 +153,52 @@ namespace NativeFileDialogs.AutoGen
|
||||
internal __IntPtr name;
|
||||
internal __IntPtr spec;
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "_ZN16nfdnfilteritem_tC2ERKS_", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern void cctor(__IntPtr __instance, __IntPtr __0);
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "??0nfdu8filteritem_t@@QEAA@AEBU0@@Z", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern __IntPtr cctor(__IntPtr __instance, __IntPtr _0);
|
||||
}
|
||||
|
||||
public __IntPtr __Instance { get; protected set; }
|
||||
|
||||
internal static readonly global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.NfdnfilteritemT> NativeToManagedMap = new global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.NfdnfilteritemT>();
|
||||
internal static readonly new global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.Nfdu8filteritemT> NativeToManagedMap =
|
||||
new global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.Nfdu8filteritemT>();
|
||||
|
||||
internal static void __RecordNativeToManagedMapping(IntPtr native, global::NativeFileDialogs.AutoGen.Nfdu8filteritemT managed)
|
||||
{
|
||||
NativeToManagedMap[native] = managed;
|
||||
}
|
||||
|
||||
internal static bool __TryGetNativeToManagedMapping(IntPtr native, out global::NativeFileDialogs.AutoGen.Nfdu8filteritemT managed)
|
||||
{
|
||||
|
||||
return NativeToManagedMap.TryGetValue(native, out managed);
|
||||
}
|
||||
|
||||
private bool __name_OwnsNativeMemory = false;
|
||||
private bool __spec_OwnsNativeMemory = false;
|
||||
protected bool __ownsNativeInstance;
|
||||
|
||||
internal static NfdnfilteritemT __CreateInstance(__IntPtr native, bool skipVTables = false)
|
||||
{
|
||||
return new NfdnfilteritemT(native.ToPointer(), skipVTables);
|
||||
}
|
||||
|
||||
internal static NfdnfilteritemT __GetOrCreateInstance(__IntPtr native, bool saveInstance = false, bool skipVTables = false)
|
||||
internal static Nfdu8filteritemT __CreateInstance(__IntPtr native, bool skipVTables = false)
|
||||
{
|
||||
if (native == __IntPtr.Zero)
|
||||
return null;
|
||||
if (NativeToManagedMap.TryGetValue(native, out var managed))
|
||||
return (NfdnfilteritemT)managed;
|
||||
return new Nfdu8filteritemT(native.ToPointer(), skipVTables);
|
||||
}
|
||||
|
||||
internal static Nfdu8filteritemT __GetOrCreateInstance(__IntPtr native, bool saveInstance = false, bool skipVTables = false)
|
||||
{
|
||||
if (native == __IntPtr.Zero)
|
||||
return null;
|
||||
if (__TryGetNativeToManagedMapping(native, out var managed))
|
||||
return (Nfdu8filteritemT)managed;
|
||||
var result = __CreateInstance(native, skipVTables);
|
||||
if (saveInstance)
|
||||
NativeToManagedMap[native] = result;
|
||||
__RecordNativeToManagedMapping(native, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static NfdnfilteritemT __CreateInstance(__Internal native, bool skipVTables = false)
|
||||
internal static Nfdu8filteritemT __CreateInstance(__Internal native, bool skipVTables = false)
|
||||
{
|
||||
return new NfdnfilteritemT(native, skipVTables);
|
||||
return new Nfdu8filteritemT(native, skipVTables);
|
||||
}
|
||||
|
||||
private static void* __CopyValue(__Internal native)
|
||||
@@ -265,37 +208,37 @@ namespace NativeFileDialogs.AutoGen
|
||||
return ret.ToPointer();
|
||||
}
|
||||
|
||||
private NfdnfilteritemT(__Internal native, bool skipVTables = false)
|
||||
private Nfdu8filteritemT(__Internal native, bool skipVTables = false)
|
||||
: this(__CopyValue(native), skipVTables)
|
||||
{
|
||||
__ownsNativeInstance = true;
|
||||
NativeToManagedMap[__Instance] = this;
|
||||
__RecordNativeToManagedMapping(__Instance, this);
|
||||
}
|
||||
|
||||
protected NfdnfilteritemT(void* native, bool skipVTables = false)
|
||||
protected Nfdu8filteritemT(void* native, bool skipVTables = false)
|
||||
{
|
||||
if (native == null)
|
||||
return;
|
||||
__Instance = new __IntPtr(native);
|
||||
}
|
||||
|
||||
public NfdnfilteritemT()
|
||||
public Nfdu8filteritemT()
|
||||
{
|
||||
__Instance = Marshal.AllocHGlobal(sizeof(global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal));
|
||||
__Instance = Marshal.AllocHGlobal(sizeof(global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal));
|
||||
__ownsNativeInstance = true;
|
||||
NativeToManagedMap[__Instance] = this;
|
||||
__RecordNativeToManagedMapping(__Instance, this);
|
||||
}
|
||||
|
||||
public NfdnfilteritemT(global::NativeFileDialogs.AutoGen.NfdnfilteritemT __0)
|
||||
public Nfdu8filteritemT(global::NativeFileDialogs.AutoGen.Nfdu8filteritemT _0)
|
||||
{
|
||||
__Instance = Marshal.AllocHGlobal(sizeof(global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal));
|
||||
__Instance = Marshal.AllocHGlobal(sizeof(global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal));
|
||||
__ownsNativeInstance = true;
|
||||
NativeToManagedMap[__Instance] = this;
|
||||
*((global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal*) __Instance) = *((global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal*) __0.__Instance);
|
||||
if (__0.__name_OwnsNativeMemory)
|
||||
this.Name = __0.Name;
|
||||
if (__0.__spec_OwnsNativeMemory)
|
||||
this.Spec = __0.Spec;
|
||||
__RecordNativeToManagedMapping(__Instance, this);
|
||||
*((global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal*) __Instance) = *((global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal*) _0.__Instance);
|
||||
if (_0.__name_OwnsNativeMemory)
|
||||
this.Name = _0.Name;
|
||||
if (_0.__spec_OwnsNativeMemory)
|
||||
this.Spec = _0.Spec;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
@@ -371,12 +314,179 @@ namespace NativeFileDialogs.AutoGen
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
|
||||
public unsafe partial class NfdnfilteritemT : IDisposable
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential, Size = 16)]
|
||||
public partial struct __Internal
|
||||
{
|
||||
internal __IntPtr name;
|
||||
internal __IntPtr spec;
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "??0nfdnfilteritem_t@@QEAA@AEBU0@@Z", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern __IntPtr cctor(__IntPtr __instance, __IntPtr _0);
|
||||
}
|
||||
|
||||
public __IntPtr __Instance { get; protected set; }
|
||||
|
||||
internal static readonly new global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.NfdnfilteritemT> NativeToManagedMap =
|
||||
new global::System.Collections.Concurrent.ConcurrentDictionary<IntPtr, global::NativeFileDialogs.AutoGen.NfdnfilteritemT>();
|
||||
|
||||
internal static void __RecordNativeToManagedMapping(IntPtr native, global::NativeFileDialogs.AutoGen.NfdnfilteritemT managed)
|
||||
{
|
||||
NativeToManagedMap[native] = managed;
|
||||
}
|
||||
|
||||
internal static bool __TryGetNativeToManagedMapping(IntPtr native, out global::NativeFileDialogs.AutoGen.NfdnfilteritemT managed)
|
||||
{
|
||||
|
||||
return NativeToManagedMap.TryGetValue(native, out managed);
|
||||
}
|
||||
|
||||
private bool __name_OwnsNativeMemory = false;
|
||||
private bool __spec_OwnsNativeMemory = false;
|
||||
protected bool __ownsNativeInstance;
|
||||
|
||||
internal static NfdnfilteritemT __CreateInstance(__IntPtr native, bool skipVTables = false)
|
||||
{
|
||||
if (native == __IntPtr.Zero)
|
||||
return null;
|
||||
return new NfdnfilteritemT(native.ToPointer(), skipVTables);
|
||||
}
|
||||
|
||||
internal static NfdnfilteritemT __GetOrCreateInstance(__IntPtr native, bool saveInstance = false, bool skipVTables = false)
|
||||
{
|
||||
if (native == __IntPtr.Zero)
|
||||
return null;
|
||||
if (__TryGetNativeToManagedMapping(native, out var managed))
|
||||
return (NfdnfilteritemT)managed;
|
||||
var result = __CreateInstance(native, skipVTables);
|
||||
if (saveInstance)
|
||||
__RecordNativeToManagedMapping(native, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
internal static NfdnfilteritemT __CreateInstance(__Internal native, bool skipVTables = false)
|
||||
{
|
||||
return new NfdnfilteritemT(native, skipVTables);
|
||||
}
|
||||
|
||||
private static void* __CopyValue(__Internal native)
|
||||
{
|
||||
var ret = Marshal.AllocHGlobal(sizeof(__Internal));
|
||||
*(__Internal*) ret = native;
|
||||
return ret.ToPointer();
|
||||
}
|
||||
|
||||
private NfdnfilteritemT(__Internal native, bool skipVTables = false)
|
||||
: this(__CopyValue(native), skipVTables)
|
||||
{
|
||||
__ownsNativeInstance = true;
|
||||
__RecordNativeToManagedMapping(__Instance, this);
|
||||
}
|
||||
|
||||
protected NfdnfilteritemT(void* native, bool skipVTables = false)
|
||||
{
|
||||
if (native == null)
|
||||
return;
|
||||
__Instance = new __IntPtr(native);
|
||||
}
|
||||
|
||||
public NfdnfilteritemT()
|
||||
{
|
||||
__Instance = Marshal.AllocHGlobal(sizeof(global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal));
|
||||
__ownsNativeInstance = true;
|
||||
__RecordNativeToManagedMapping(__Instance, this);
|
||||
}
|
||||
|
||||
public NfdnfilteritemT(global::NativeFileDialogs.AutoGen.NfdnfilteritemT _0)
|
||||
{
|
||||
__Instance = Marshal.AllocHGlobal(sizeof(global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal));
|
||||
__ownsNativeInstance = true;
|
||||
__RecordNativeToManagedMapping(__Instance, this);
|
||||
*((global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal*) __Instance) = *((global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal*) _0.__Instance);
|
||||
if (_0.__name_OwnsNativeMemory)
|
||||
this.Name = _0.Name;
|
||||
if (_0.__spec_OwnsNativeMemory)
|
||||
this.Spec = _0.Spec;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(disposing: true, callNativeDtor : __ownsNativeInstance );
|
||||
}
|
||||
|
||||
partial void DisposePartial(bool disposing);
|
||||
|
||||
internal protected virtual void Dispose(bool disposing, bool callNativeDtor )
|
||||
{
|
||||
if (__Instance == IntPtr.Zero)
|
||||
return;
|
||||
NativeToManagedMap.TryRemove(__Instance, out _);
|
||||
DisposePartial(disposing);
|
||||
if (__name_OwnsNativeMemory)
|
||||
Marshal.FreeHGlobal(((__Internal*)__Instance)->name);
|
||||
if (__spec_OwnsNativeMemory)
|
||||
Marshal.FreeHGlobal(((__Internal*)__Instance)->spec);
|
||||
if (__ownsNativeInstance)
|
||||
Marshal.FreeHGlobal(__Instance);
|
||||
__Instance = IntPtr.Zero;
|
||||
}
|
||||
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return CppSharp.Runtime.MarshalUtil.GetString(global::System.Text.Encoding.Unicode, ((__Internal*)__Instance)->name);
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (__name_OwnsNativeMemory)
|
||||
Marshal.FreeHGlobal(((__Internal*)__Instance)->name);
|
||||
__name_OwnsNativeMemory = true;
|
||||
if (value == null)
|
||||
{
|
||||
((__Internal*)__Instance)->name = global::System.IntPtr.Zero;
|
||||
return;
|
||||
}
|
||||
var __bytePtr0 = Marshal.StringToHGlobalUni(value);
|
||||
((__Internal*)__Instance)->name = (__IntPtr) __bytePtr0;
|
||||
}
|
||||
}
|
||||
|
||||
public string Spec
|
||||
{
|
||||
get
|
||||
{
|
||||
return CppSharp.Runtime.MarshalUtil.GetString(global::System.Text.Encoding.Unicode, ((__Internal*)__Instance)->spec);
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (__spec_OwnsNativeMemory)
|
||||
Marshal.FreeHGlobal(((__Internal*)__Instance)->spec);
|
||||
__spec_OwnsNativeMemory = true;
|
||||
if (value == null)
|
||||
{
|
||||
((__Internal*)__Instance)->spec = global::System.IntPtr.Zero;
|
||||
return;
|
||||
}
|
||||
var __bytePtr0 = Marshal.StringToHGlobalUni(value);
|
||||
((__Internal*)__Instance)->spec = (__IntPtr) __bytePtr0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe partial class nfd
|
||||
{
|
||||
public partial struct __Internal
|
||||
{
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_FreePathN", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern void NFD_FreePathN(sbyte* filePath);
|
||||
internal static extern void NFD_FreePathN(char* filePath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_FreePathU8", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern void NFD_FreePathU8(sbyte* filePath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_Init", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_Init();
|
||||
@@ -385,16 +495,28 @@ namespace NativeFileDialogs.AutoGen
|
||||
internal static extern void NFD_Quit();
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_OpenDialogN", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogN(sbyte** outPath, global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal[] filterList, uint filterCount, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultPath);
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogN(char** outPath, global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal* filterList, uint filterCount, [MarshalAs(UnmanagedType.LPWStr)] string defaultPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_OpenDialogU8", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogU8(sbyte** outPath, global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal* filterList, uint filterCount, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_OpenDialogMultipleN", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogMultipleN(__IntPtr* outPaths, global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal[] filterList, uint filterCount, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultPath);
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogMultipleN(__IntPtr* outPaths, global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal* filterList, uint filterCount, [MarshalAs(UnmanagedType.LPWStr)] string defaultPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_OpenDialogMultipleU8", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogMultipleU8(__IntPtr* outPaths, global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal* filterList, uint filterCount, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_SaveDialogN", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_SaveDialogN(sbyte** outPath, global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal[] filterList, uint filterCount, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultPath, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultName);
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_SaveDialogN(char** outPath, global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal* filterList, uint filterCount, [MarshalAs(UnmanagedType.LPWStr)] string defaultPath, [MarshalAs(UnmanagedType.LPWStr)] string defaultName);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_SaveDialogU8", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_SaveDialogU8(sbyte** outPath, global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal* filterList, uint filterCount, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultPath, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultName);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PickFolderN", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PickFolderN(sbyte** outPath, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultPath);
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PickFolderN(char** outPath, [MarshalAs(UnmanagedType.LPWStr)] string defaultPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PickFolderU8", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PickFolderU8(sbyte** outPath, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string defaultPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_GetError", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern __IntPtr NFD_GetError();
|
||||
@@ -406,10 +528,16 @@ namespace NativeFileDialogs.AutoGen
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetCount(__IntPtr pathSet, uint* count);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PathSet_GetPathN", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetPathN(__IntPtr pathSet, uint index, sbyte** outPath);
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetPathN(__IntPtr pathSet, uint index, char** outPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PathSet_GetPathU8", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetPathU8(__IntPtr pathSet, uint index, sbyte** outPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PathSet_FreePathN", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern void NFD_PathSetFreePathN([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string filePath);
|
||||
internal static extern void NFD_PathSetFreePathN([MarshalAs(UnmanagedType.LPWStr)] string filePath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PathSet_FreePathU8", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern void NFD_PathSetFreePathU8([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(CppSharp.Runtime.UTF8Marshaller))] string filePath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PathSet_GetEnum", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetEnum(__IntPtr pathSet, __IntPtr outEnumerator);
|
||||
@@ -418,32 +546,58 @@ namespace NativeFileDialogs.AutoGen
|
||||
internal static extern void NFD_PathSetFreeEnum(__IntPtr enumerator);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PathSet_EnumNextN", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetEnumNextN(__IntPtr enumerator, sbyte** outPath);
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetEnumNextN(__IntPtr enumerator, char** outPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PathSet_EnumNextU8", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetEnumNextU8(__IntPtr enumerator, sbyte** outPath);
|
||||
|
||||
[SuppressUnmanagedCodeSecurity, DllImport("nfd", EntryPoint = "NFD_PathSet_Free", CallingConvention = __CallingConvention.Cdecl)]
|
||||
internal static extern void NFD_PathSetFree(__IntPtr pathSet);
|
||||
}
|
||||
|
||||
public static void NFD_FreePathN(sbyte* filePath)
|
||||
/// <summary>Free a file path that was returned by the dialogs.</summary>
|
||||
/// <remarks>Note: use NFD_PathSet_FreePathN() to free path from pathset instead of this function.</remarks>
|
||||
[global::System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
|
||||
public static void NFD_FreePathN(char* filePath)
|
||||
{
|
||||
__Internal.NFD_FreePathN(filePath);
|
||||
}
|
||||
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_Init()
|
||||
/// <summary>Free a file path that was returned by the dialogs.</summary>
|
||||
/// <remarks>Note: use NFD_PathSet_FreePathU8() to free path from pathset instead of this function.</remarks>
|
||||
public static void NFD_FreePathU8(sbyte* filePath)
|
||||
{
|
||||
var __ret = __Internal.NFD_Init();
|
||||
return __ret;
|
||||
__Internal.NFD_FreePathU8(filePath);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <para>Initialize NFD. Call this for every thread that might use NFD, before calling any other NFD</para>
|
||||
/// <para>functions on that thread.</para>
|
||||
/// </summary>
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_Init()
|
||||
{
|
||||
var ___ret = __Internal.NFD_Init();
|
||||
return ___ret;
|
||||
}
|
||||
|
||||
/// <summary>Call this to de-initialize NFD, if NFD_Init returned NFD_OKAY.</summary>
|
||||
public static void NFD_Quit()
|
||||
{
|
||||
__Internal.NFD_Quit();
|
||||
}
|
||||
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogN(sbyte** outPath, global::NativeFileDialogs.AutoGen.NfdnfilteritemT[] filterList, uint filterCount, string defaultPath)
|
||||
/// <summary>Single file open dialog</summary>
|
||||
/// <param name="filterCount">If zero, filterList is ignored (you can use null).</param>
|
||||
/// <param name="defaultPath">If null, the operating system will decide.</param>
|
||||
/// <remarks>
|
||||
/// <para>It's the caller's responsibility to free `outPath` via NFD_FreePathN() if this function returns</para>
|
||||
/// <para>NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
[global::System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogN(char** outPath, Span<global::NativeFileDialogs.AutoGen.NfdnfilteritemT> filterList, uint filterCount, string defaultPath)
|
||||
{
|
||||
global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal[] __filterList;
|
||||
if (filterList is null)
|
||||
Span<global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal> __filterList;
|
||||
if (filterList == null)
|
||||
__filterList = null;
|
||||
else
|
||||
{
|
||||
@@ -454,15 +608,55 @@ namespace NativeFileDialogs.AutoGen
|
||||
__filterList[i] = __element is null ? new global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal() : *(global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal*) __element.__Instance;
|
||||
}
|
||||
}
|
||||
var __arg1 = __filterList;
|
||||
var __ret = __Internal.NFD_OpenDialogN(outPath, __arg1, filterCount, defaultPath);
|
||||
return __ret;
|
||||
fixed (global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal* ____filterList1 = &MemoryMarshal.GetReference(__filterList))
|
||||
{
|
||||
var __arg1 = ____filterList1;
|
||||
var ___ret = __Internal.NFD_OpenDialogN(outPath, __arg1, filterCount, defaultPath);
|
||||
return ___ret;
|
||||
}
|
||||
}
|
||||
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogMultipleN(__IntPtr* outPaths, global::NativeFileDialogs.AutoGen.NfdnfilteritemT[] filterList, uint filterCount, string defaultPath)
|
||||
/// <summary>Single file open dialog</summary>
|
||||
/// <param name="filterCount">If zero, filterList is ignored (you can use null).</param>
|
||||
/// <param name="defaultPath">If null, the operating system will decide.</param>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `outPath` via NFD_FreePathU8() if this function</para>
|
||||
/// <para>returns NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogU8(sbyte** outPath, Span<global::NativeFileDialogs.AutoGen.Nfdu8filteritemT> filterList, uint filterCount, string defaultPath)
|
||||
{
|
||||
global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal[] __filterList;
|
||||
if (filterList is null)
|
||||
Span<global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal> __filterList;
|
||||
if (filterList == null)
|
||||
__filterList = null;
|
||||
else
|
||||
{
|
||||
__filterList = new global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal[filterList.Length];
|
||||
for (int i = 0; i < __filterList.Length; i++)
|
||||
{
|
||||
var __element = filterList[i];
|
||||
__filterList[i] = __element is null ? new global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal() : *(global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal*) __element.__Instance;
|
||||
}
|
||||
}
|
||||
fixed (global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal* ____filterList1 = &MemoryMarshal.GetReference(__filterList))
|
||||
{
|
||||
var __arg1 = ____filterList1;
|
||||
var ___ret = __Internal.NFD_OpenDialogU8(outPath, __arg1, filterCount, defaultPath);
|
||||
return ___ret;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Multiple file open dialog</summary>
|
||||
/// <param name="filterCount">If zero, filterList is ignored (you can use null).</param>
|
||||
/// <param name="defaultPath">If null, the operating system will decide.</param>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `outPaths` via NFD_PathSet_FreeN() if this function</para>
|
||||
/// <para>returns NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
[global::System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogMultipleN(__IntPtr* outPaths, Span<global::NativeFileDialogs.AutoGen.NfdnfilteritemT> filterList, uint filterCount, string defaultPath)
|
||||
{
|
||||
Span<global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal> __filterList;
|
||||
if (filterList == null)
|
||||
__filterList = null;
|
||||
else
|
||||
{
|
||||
@@ -473,15 +667,55 @@ namespace NativeFileDialogs.AutoGen
|
||||
__filterList[i] = __element is null ? new global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal() : *(global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal*) __element.__Instance;
|
||||
}
|
||||
}
|
||||
var __arg1 = __filterList;
|
||||
var __ret = __Internal.NFD_OpenDialogMultipleN(outPaths, __arg1, filterCount, defaultPath);
|
||||
return __ret;
|
||||
fixed (global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal* ____filterList1 = &MemoryMarshal.GetReference(__filterList))
|
||||
{
|
||||
var __arg1 = ____filterList1;
|
||||
var ___ret = __Internal.NFD_OpenDialogMultipleN(outPaths, __arg1, filterCount, defaultPath);
|
||||
return ___ret;
|
||||
}
|
||||
}
|
||||
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_SaveDialogN(sbyte** outPath, global::NativeFileDialogs.AutoGen.NfdnfilteritemT[] filterList, uint filterCount, string defaultPath, string defaultName)
|
||||
/// <summary>Multiple file open dialog</summary>
|
||||
/// <param name="filterCount">If zero, filterList is ignored (you can use null).</param>
|
||||
/// <param name="defaultPath">If null, the operating system will decide.</param>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `outPaths` via NFD_PathSet_FreeU8() if this function</para>
|
||||
/// <para>returns NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_OpenDialogMultipleU8(__IntPtr* outPaths, Span<global::NativeFileDialogs.AutoGen.Nfdu8filteritemT> filterList, uint filterCount, string defaultPath)
|
||||
{
|
||||
global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal[] __filterList;
|
||||
if (filterList is null)
|
||||
Span<global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal> __filterList;
|
||||
if (filterList == null)
|
||||
__filterList = null;
|
||||
else
|
||||
{
|
||||
__filterList = new global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal[filterList.Length];
|
||||
for (int i = 0; i < __filterList.Length; i++)
|
||||
{
|
||||
var __element = filterList[i];
|
||||
__filterList[i] = __element is null ? new global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal() : *(global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal*) __element.__Instance;
|
||||
}
|
||||
}
|
||||
fixed (global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal* ____filterList1 = &MemoryMarshal.GetReference(__filterList))
|
||||
{
|
||||
var __arg1 = ____filterList1;
|
||||
var ___ret = __Internal.NFD_OpenDialogMultipleU8(outPaths, __arg1, filterCount, defaultPath);
|
||||
return ___ret;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Save dialog</summary>
|
||||
/// <param name="filterCount">If zero, filterList is ignored (you can use null).</param>
|
||||
/// <param name="defaultPath">If null, the operating system will decide.</param>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `outPath` via NFD_FreePathN() if this function returns</para>
|
||||
/// <para>NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
[global::System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_SaveDialogN(char** outPath, Span<global::NativeFileDialogs.AutoGen.NfdnfilteritemT> filterList, uint filterCount, string defaultPath, string defaultName)
|
||||
{
|
||||
Span<global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal> __filterList;
|
||||
if (filterList == null)
|
||||
__filterList = null;
|
||||
else
|
||||
{
|
||||
@@ -492,69 +726,186 @@ namespace NativeFileDialogs.AutoGen
|
||||
__filterList[i] = __element is null ? new global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal() : *(global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal*) __element.__Instance;
|
||||
}
|
||||
}
|
||||
var __arg1 = __filterList;
|
||||
var __ret = __Internal.NFD_SaveDialogN(outPath, __arg1, filterCount, defaultPath, defaultName);
|
||||
return __ret;
|
||||
fixed (global::NativeFileDialogs.AutoGen.NfdnfilteritemT.__Internal* ____filterList1 = &MemoryMarshal.GetReference(__filterList))
|
||||
{
|
||||
var __arg1 = ____filterList1;
|
||||
var ___ret = __Internal.NFD_SaveDialogN(outPath, __arg1, filterCount, defaultPath, defaultName);
|
||||
return ___ret;
|
||||
}
|
||||
}
|
||||
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PickFolderN(sbyte** outPath, string defaultPath)
|
||||
/// <summary>Save dialog</summary>
|
||||
/// <param name="filterCount">If zero, filterList is ignored (you can use null).</param>
|
||||
/// <param name="defaultPath">If null, the operating system will decide.</param>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `outPath` via NFD_FreePathU8() if this function</para>
|
||||
/// <para>returns NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_SaveDialogU8(sbyte** outPath, Span<global::NativeFileDialogs.AutoGen.Nfdu8filteritemT> filterList, uint filterCount, string defaultPath, string defaultName)
|
||||
{
|
||||
var __ret = __Internal.NFD_PickFolderN(outPath, defaultPath);
|
||||
return __ret;
|
||||
Span<global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal> __filterList;
|
||||
if (filterList == null)
|
||||
__filterList = null;
|
||||
else
|
||||
{
|
||||
__filterList = new global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal[filterList.Length];
|
||||
for (int i = 0; i < __filterList.Length; i++)
|
||||
{
|
||||
var __element = filterList[i];
|
||||
__filterList[i] = __element is null ? new global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal() : *(global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal*) __element.__Instance;
|
||||
}
|
||||
}
|
||||
fixed (global::NativeFileDialogs.AutoGen.Nfdu8filteritemT.__Internal* ____filterList1 = &MemoryMarshal.GetReference(__filterList))
|
||||
{
|
||||
var __arg1 = ____filterList1;
|
||||
var ___ret = __Internal.NFD_SaveDialogU8(outPath, __arg1, filterCount, defaultPath, defaultName);
|
||||
return ___ret;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Select folder dialog</summary>
|
||||
/// <param name="defaultPath">If null, the operating system will decide.</param>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `outPath` via NFD_FreePathN() if this function returns</para>
|
||||
/// <para>NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
[global::System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PickFolderN(char** outPath, string defaultPath)
|
||||
{
|
||||
var ___ret = __Internal.NFD_PickFolderN(outPath, defaultPath);
|
||||
return ___ret;
|
||||
}
|
||||
|
||||
/// <summary>Select folder dialog</summary>
|
||||
/// <param name="defaultPath">If null, the operating system will decide.</param>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `outPath` via NFD_FreePathU8() if this function</para>
|
||||
/// <para>returns NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PickFolderU8(sbyte** outPath, string defaultPath)
|
||||
{
|
||||
var ___ret = __Internal.NFD_PickFolderU8(outPath, defaultPath);
|
||||
return ___ret;
|
||||
}
|
||||
|
||||
/// <summary>Get the last error</summary>
|
||||
/// <returns>The last error that was set, or null if there is no error.</returns>
|
||||
/// <remarks>
|
||||
/// <para>This is set when a function returns NFD_ERROR.</para>
|
||||
/// <para>The memory is owned by NFD and should not be freed by user code.</para>
|
||||
/// <para>This is *always* ASCII printable characters, so it can be interpreted as UTF-8 without any</para>
|
||||
/// <para>conversion.</para>
|
||||
/// </remarks>
|
||||
public static string NFD_GetError()
|
||||
{
|
||||
var __ret = __Internal.NFD_GetError();
|
||||
return CppSharp.Runtime.MarshalUtil.GetString(global::System.Text.Encoding.UTF8, __ret);
|
||||
var ___ret = __Internal.NFD_GetError();
|
||||
return CppSharp.Runtime.MarshalUtil.GetString(global::System.Text.Encoding.UTF8, ___ret);
|
||||
}
|
||||
|
||||
/// <summary>Clear the error.</summary>
|
||||
public static void NFD_ClearError()
|
||||
{
|
||||
__Internal.NFD_ClearError();
|
||||
}
|
||||
|
||||
/// <summary>Get the number of entries stored in pathSet.</summary>
|
||||
/// <remarks>
|
||||
/// <para>Note: some paths might be invalid (NFD_ERROR will be returned by NFD_PathSet_GetPath),</para>
|
||||
/// <para>so we might not actually have this number of usable paths.</para>
|
||||
/// </remarks>
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetCount(__IntPtr pathSet, ref uint count)
|
||||
{
|
||||
fixed (uint* __count1 = &count)
|
||||
{
|
||||
var __arg1 = __count1;
|
||||
var __ret = __Internal.NFD_PathSetGetCount(pathSet, __arg1);
|
||||
return __ret;
|
||||
var ___ret = __Internal.NFD_PathSetGetCount(pathSet, __arg1);
|
||||
return ___ret;
|
||||
}
|
||||
}
|
||||
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetPathN(__IntPtr pathSet, uint index, sbyte** outPath)
|
||||
/// <summary>Get the UTF-8 path at offset index.</summary>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `outPath` via NFD_PathSet_FreePathN() if this function</para>
|
||||
/// <para>returns NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
[global::System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetPathN(__IntPtr pathSet, uint index, char** outPath)
|
||||
{
|
||||
var __ret = __Internal.NFD_PathSetGetPathN(pathSet, index, outPath);
|
||||
return __ret;
|
||||
var ___ret = __Internal.NFD_PathSetGetPathN(pathSet, index, outPath);
|
||||
return ___ret;
|
||||
}
|
||||
|
||||
/// <summary>Get the native path at offset index.</summary>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `outPath` via NFD_PathSet_FreePathU8() if this</para>
|
||||
/// <para>function returns NFD_OKAY.</para>
|
||||
/// </remarks>
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetPathU8(__IntPtr pathSet, uint index, sbyte** outPath)
|
||||
{
|
||||
var ___ret = __Internal.NFD_PathSetGetPathU8(pathSet, index, outPath);
|
||||
return ___ret;
|
||||
}
|
||||
|
||||
/// <summary>Free the path gotten by NFD_PathSet_GetPathN().</summary>
|
||||
[global::System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
|
||||
public static void NFD_PathSetFreePathN(string filePath)
|
||||
{
|
||||
__Internal.NFD_PathSetFreePathN(filePath);
|
||||
}
|
||||
|
||||
/// <summary>Free the path gotten by NFD_PathSet_GetPathU8().</summary>
|
||||
public static void NFD_PathSetFreePathU8(string filePath)
|
||||
{
|
||||
__Internal.NFD_PathSetFreePathU8(filePath);
|
||||
}
|
||||
|
||||
/// <summary>Gets an enumerator of the path set.</summary>
|
||||
/// <remarks>
|
||||
/// <para>It is the caller's responsibility to free `enumerator` via NFD_PathSet_FreeEnum()</para>
|
||||
/// <para>if this function returns NFD_OKAY, and it should be freed before freeing the pathset.</para>
|
||||
/// </remarks>
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetGetEnum(__IntPtr pathSet, global::NativeFileDialogs.AutoGen.NfdpathsetenumT outEnumerator)
|
||||
{
|
||||
var __arg1 = outEnumerator is null ? __IntPtr.Zero : outEnumerator.__Instance;
|
||||
var __ret = __Internal.NFD_PathSetGetEnum(pathSet, __arg1);
|
||||
return __ret;
|
||||
var ___ret = __Internal.NFD_PathSetGetEnum(pathSet, __arg1);
|
||||
return ___ret;
|
||||
}
|
||||
|
||||
/// <summary>Frees an enumerator of the path set.</summary>
|
||||
public static void NFD_PathSetFreeEnum(global::NativeFileDialogs.AutoGen.NfdpathsetenumT enumerator)
|
||||
{
|
||||
var __arg0 = enumerator is null ? __IntPtr.Zero : enumerator.__Instance;
|
||||
__Internal.NFD_PathSetFreeEnum(__arg0);
|
||||
}
|
||||
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetEnumNextN(global::NativeFileDialogs.AutoGen.NfdpathsetenumT enumerator, sbyte** outPath)
|
||||
/// <summary>Gets the next item from the path set enumerator.</summary>
|
||||
/// <remarks>
|
||||
/// <para>If there are no more items, then *outPaths will be set to null.</para>
|
||||
/// <para>It is the caller's responsibility to free `*outPath` via NFD_PathSet_FreePathN()</para>
|
||||
/// <para>if this function returns NFD_OKAY and `*outPath` is not null.</para>
|
||||
/// </remarks>
|
||||
[global::System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetEnumNextN(global::NativeFileDialogs.AutoGen.NfdpathsetenumT enumerator, char** outPath)
|
||||
{
|
||||
var __arg0 = enumerator is null ? __IntPtr.Zero : enumerator.__Instance;
|
||||
var __ret = __Internal.NFD_PathSetEnumNextN(__arg0, outPath);
|
||||
return __ret;
|
||||
var ___ret = __Internal.NFD_PathSetEnumNextN(__arg0, outPath);
|
||||
return ___ret;
|
||||
}
|
||||
|
||||
/// <summary>Gets the next item from the path set enumerator.</summary>
|
||||
/// <remarks>
|
||||
/// <para>If there are no more items, then *outPaths will be set to null.</para>
|
||||
/// <para>It is the caller's responsibility to free `*outPath` via NFD_PathSet_FreePathU8()</para>
|
||||
/// <para>if this function returns NFD_OKAY and `*outPath` is not null.</para>
|
||||
/// </remarks>
|
||||
public static global::NativeFileDialogs.AutoGen.NfdresultT NFD_PathSetEnumNextU8(global::NativeFileDialogs.AutoGen.NfdpathsetenumT enumerator, sbyte** outPath)
|
||||
{
|
||||
var __arg0 = enumerator is null ? __IntPtr.Zero : enumerator.__Instance;
|
||||
var ___ret = __Internal.NFD_PathSetEnumNextU8(__arg0, outPath);
|
||||
return ___ret;
|
||||
}
|
||||
|
||||
/// <summary>Free the pathSet</summary>
|
||||
public static void NFD_PathSetFree(__IntPtr pathSet)
|
||||
{
|
||||
__Internal.NFD_PathSetFree(pathSet);
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="CppSharp" Version="1.0.1" />
|
||||
<PackageReference Include="CppSharp" Version="1.1.5.3168" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -6,20 +6,35 @@ using CppSharp;
|
||||
using CppSharp.AST;
|
||||
using CppSharp.Generators;
|
||||
using CppSharp.Passes;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.Versioning;
|
||||
|
||||
namespace NativeFileDialogs.CppSharpGenerator;
|
||||
|
||||
public class NativeFileDialogsLibrary : ILibrary
|
||||
{
|
||||
private const string lib_name = "NativeFileDialogs";
|
||||
private const string include_directory = "./include";
|
||||
|
||||
public void Setup(Driver driver)
|
||||
{
|
||||
Directory.CreateDirectory(include_directory);
|
||||
|
||||
string fileText = File.ReadAllText(@"../nativefiledialog-extended/src/include/nfd.h")
|
||||
.Replace("const nfdnfilteritem_t* filterList,", "const nfdnfilteritem_t filterList[],")
|
||||
.Replace("const nfdu8filteritem_t* filterList,", "const nfdu8filteritem_t filterList[],");
|
||||
//These replacements are necessary because CppSharp incorrectly generates the former as an object reference.
|
||||
|
||||
File.WriteAllText(include_directory + "/nfd.h", fileText);
|
||||
|
||||
DriverOptions options = driver.Options;
|
||||
options.GeneratorKind = GeneratorKind.CSharp;
|
||||
options.OutputDir = $"../{lib_name}.AutoGen";
|
||||
options.UseSpan = true;
|
||||
var module = options.AddModule("nfd");
|
||||
module.IncludeDirs.Add(@"../nativefiledialog-extended/src/include");
|
||||
module.IncludeDirs.Add(include_directory);
|
||||
module.Headers.Add("nfd.h");
|
||||
module.OutputNamespace = $"{lib_name}.AutoGen";
|
||||
}
|
||||
@@ -35,5 +50,19 @@ public class NativeFileDialogsLibrary : ILibrary
|
||||
|
||||
public void Postprocess(Driver driver, ASTContext ctx)
|
||||
{
|
||||
foreach (var function in ctx.TranslationUnits.SelectMany(t => t.Functions).Where(f => f.Name.EndsWith('N')))
|
||||
{
|
||||
AddWindowsOnlyAttribute(function);
|
||||
}
|
||||
AddWindowsOnlyAttribute(ctx.FindClass("NfdnfilteritemT").First());
|
||||
}
|
||||
|
||||
public void GenerateCode(Driver driver, List<GeneratorOutput> outputs)
|
||||
{
|
||||
}
|
||||
|
||||
private static void AddWindowsOnlyAttribute(Declaration declaration)
|
||||
{
|
||||
declaration.Attributes.Add(new Attribute() { Type = typeof(SupportedOSPlatformAttribute), Value = "\"windows\"" });
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<OutputType>Library</OutputType>
|
||||
<AssemblyTitle>NativeFileDialogs.Net.Runtime</AssemblyTitle>
|
||||
<AssemblyName>NativeFileDialogs.Net.Runtime</AssemblyName>
|
||||
@@ -10,12 +10,13 @@
|
||||
<PropertyGroup Label="Nuget">
|
||||
<IsPackable>true</IsPackable>
|
||||
<PackageId>NativeFileDialogs.Net.Runtime</PackageId>
|
||||
<Version>1.0.0</Version>
|
||||
<Version>1.1.0</Version>
|
||||
<Authors>Speykious</Authors>
|
||||
<PackageTags>Native;File;Dialogs;Portal;Gtk</PackageTags>
|
||||
<Title>NativeFileDialogs.Net.Runtime</Title>
|
||||
<Description>Native runtime libraries for NativeFileDialogs.NET</Description>
|
||||
<Copyright>2022 Speykious</Copyright>
|
||||
<RepositoryUrl>https://github.com/Speykious/NativeFileDialogs.NET</RepositoryUrl>
|
||||
<PackageProjectUrl>https://github.com/Speykious/NativeFileDialogs.NET</PackageProjectUrl>
|
||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||
<IncludeBuildOutput>false</IncludeBuildOutput>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup Label="Project">
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
@@ -17,21 +17,21 @@
|
||||
<Title>NativeFileDialogs.Net</Title>
|
||||
<Description>Full .NET wrapper for NativeFileDialogs (Extended)</Description>
|
||||
<Copyright>2022 Speykious</Copyright>
|
||||
<RepositoryUrl>https://github.com/Speykious/NativeFileDialogs.NET</RepositoryUrl>
|
||||
<PackageProjectUrl>https://github.com/Speykious/NativeFileDialogs.NET</PackageProjectUrl>
|
||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Label="Package References">
|
||||
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NativeFileDialogs.AutoGen" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.0.0" />
|
||||
<PackageReference Include="NativeFileDialogs.Net.Runtime" Version="1.1.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Documents">
|
||||
<None Include="..\LICENSE" Pack="true" PackagePath="" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Label="Project References">
|
||||
<ProjectReference Include="..\NativeFileDialogs.AutoGen\NativeFileDialogs.AutoGen.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -15,13 +15,13 @@ public static class Nfd
|
||||
public static NfdStatus OpenDialog(out string? outPath, IDictionary<string, string>? filters = null, string? defaultPath = null)
|
||||
{
|
||||
manager.PushDialog();
|
||||
NfdnfilteritemT[] filterItems = ToFilterItems(filters);
|
||||
Nfdu8filteritemT[] filterItems = ToFilterItems(filters);
|
||||
NfdStatus status;
|
||||
|
||||
unsafe
|
||||
{
|
||||
sbyte* outPathPtr;
|
||||
status = nfd.NFD_OpenDialogN(&outPathPtr, filterItems, (uint)filterItems.Length, defaultPath).ToNfdStatus();
|
||||
status = nfd.NFD_OpenDialogU8(&outPathPtr, filterItems, (uint)filterItems.Length, defaultPath).ToNfdStatus();
|
||||
outPath = status == NfdStatus.Cancelled ? null : new string(outPathPtr);
|
||||
}
|
||||
|
||||
@@ -32,13 +32,13 @@ public static class Nfd
|
||||
public static NfdStatus OpenDialogMultiple(out string[]? outPaths, IDictionary<string, string>? filters = null, string? defaultPath = null)
|
||||
{
|
||||
manager.PushDialog();
|
||||
NfdnfilteritemT[] filterItems = ToFilterItems(filters);
|
||||
Nfdu8filteritemT[] filterItems = ToFilterItems(filters);
|
||||
NfdStatus status;
|
||||
|
||||
unsafe
|
||||
{
|
||||
IntPtr pathSet;
|
||||
status = nfd.NFD_OpenDialogMultipleN(&pathSet, filterItems, (uint)filterItems.Length, defaultPath).ToNfdStatus();
|
||||
status = nfd.NFD_OpenDialogMultipleU8(&pathSet, filterItems, (uint)filterItems.Length, defaultPath).ToNfdStatus();
|
||||
|
||||
if (status == NfdStatus.Ok)
|
||||
{
|
||||
@@ -49,7 +49,7 @@ public static class Nfd
|
||||
for (uint i = 0; i < count; i++)
|
||||
{
|
||||
sbyte* pathPtr;
|
||||
nfd.NFD_PathSetGetPathN(pathSet, i, &pathPtr);
|
||||
nfd.NFD_PathSetGetPathU8(pathSet, i, &pathPtr);
|
||||
outPaths[i] = new string(pathPtr);
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ public static class Nfd
|
||||
unsafe
|
||||
{
|
||||
sbyte* outPathPtr;
|
||||
status = nfd.NFD_PickFolderN(&outPathPtr, defaultPath).ToNfdStatus();
|
||||
status = nfd.NFD_PickFolderU8(&outPathPtr, defaultPath).ToNfdStatus();
|
||||
outPath = status == NfdStatus.Cancelled ? null : new string(outPathPtr);
|
||||
}
|
||||
|
||||
@@ -84,13 +84,13 @@ public static class Nfd
|
||||
public static NfdStatus SaveDialog(out string? savePath, IDictionary<string, string>? filters = null, string defaultName = "Untitled", string? defaultPath = null)
|
||||
{
|
||||
manager.PushDialog();
|
||||
NfdnfilteritemT[] filterItems = ToFilterItems(filters);
|
||||
Nfdu8filteritemT[] filterItems = ToFilterItems(filters);
|
||||
NfdStatus status;
|
||||
|
||||
unsafe
|
||||
{
|
||||
sbyte* savePathPtr;
|
||||
status = nfd.NFD_SaveDialogN(&savePathPtr, filterItems, (uint)filterItems.Length, defaultPath, defaultName).ToNfdStatus();
|
||||
status = nfd.NFD_SaveDialogU8(&savePathPtr, filterItems, (uint)filterItems.Length, defaultPath, defaultName).ToNfdStatus();
|
||||
savePath = status == NfdStatus.Cancelled ? null : new string(savePathPtr);
|
||||
}
|
||||
|
||||
@@ -98,16 +98,16 @@ public static class Nfd
|
||||
return status;
|
||||
}
|
||||
|
||||
internal static NfdnfilteritemT[] ToFilterItems(IDictionary<string, string>? filters)
|
||||
internal static Nfdu8filteritemT[] ToFilterItems(IDictionary<string, string>? filters)
|
||||
{
|
||||
if (filters == null)
|
||||
return Array.Empty<NfdnfilteritemT>();
|
||||
return Array.Empty<Nfdu8filteritemT>();
|
||||
|
||||
NfdnfilteritemT[] filterItems = new NfdnfilteritemT[filters.Count];
|
||||
Nfdu8filteritemT[] filterItems = new Nfdu8filteritemT[filters.Count];
|
||||
int i = 0;
|
||||
foreach ((string key, string value) in filters)
|
||||
{
|
||||
filterItems[i++] = new NfdnfilteritemT
|
||||
filterItems[i++] = new Nfdu8filteritemT
|
||||
{
|
||||
Name = key,
|
||||
Spec = value,
|
||||
|
||||
Submodule nativefiledialog-extended updated: ab1e78eb54...b73cf4cdfc.
Reference in new issue
Block a user