diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2020-01-18 07:47:50 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2020-01-18 07:47:50 +0100 |
| commit | 571133c41903bca1bb0273009c40ba17ede295d4 (patch) | |
| tree | b8a7e1f74d096601354ae4efd0d0904c6018c465 | |
| parent | 9de1ef7831324ff2a0827afdb8090bdb8b40c99b (diff) | |
VkBool32 IConvertible, csproj review
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Directory.Build.props | 9 | ||||
| -rw-r--r-- | VK/Structs.cs | 10 | ||||
| -rw-r--r-- | VK/VkBool32.cs | 59 | ||||
| -rw-r--r-- | VK/vulkan.csproj | 109 | ||||
| -rw-r--r-- | vk.generator/Program.cs | 7 | ||||
| -rw-r--r-- | vk.generator/vk.generator.csproj | 36 | ||||
| -rw-r--r-- | vk.net.sln | 46 | ||||
| -rw-r--r-- | vk.rewrite/vk.rewrite.csproj | 26 |
9 files changed, 152 insertions, 151 deletions
@@ -5,3 +5,4 @@ bin/ obj/ *.user *.userprefs +vk.xml diff --git a/Directory.Build.props b/Directory.Build.props index f93ff3e..0a11101 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,13 +3,16 @@ <RootDirectory>$(MSBuildThisFileDirectory)</RootDirectory> <Deterministic>true</Deterministic> - <!--<TargetFrameworks>net471;netcoreapp2.2</TargetFrameworks>--> - <RepositoryUrl>https://github.com/jpbruyere/vk.net</RepositoryUrl> <License>MIT</License> <Authors>Jean-Philippe Bruyère</Authors> + <Copyright></Copyright> + <Company></Company> + + <IntermediateOutputPath>$(SolutionDir)build\obj\$(Configuration)\</IntermediateOutputPath> + <OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath> <LangVersion>7.2</LangVersion> - + </PropertyGroup> </Project> diff --git a/VK/Structs.cs b/VK/Structs.cs index a485c05..452555e 100644 --- a/VK/Structs.cs +++ b/VK/Structs.cs @@ -169,6 +169,16 @@ namespace Vulkan { pObjectName = IntPtr.Zero; } } + public partial struct VkDebugUtilsObjectNameInfoEXT { + public VkDebugUtilsObjectNameInfoEXT(VkObjectType objectType, ulong handle) + { + sType = VkStructureType.DebugUtilsObjectNameInfoEXT; + pNext = IntPtr.Zero; + this.objectType = objectType; + objectHandle = handle; + pObjectName = IntPtr.Zero; + } + } public partial struct VkDescriptorPoolSize { public VkDescriptorPoolSize (VkDescriptorType descriptorType, uint count = 1) { type = descriptorType; diff --git a/VK/VkBool32.cs b/VK/VkBool32.cs index 814e20d..f424a4b 100644 --- a/VK/VkBool32.cs +++ b/VK/VkBool32.cs @@ -1,5 +1,5 @@ // Copyright (c) 2017 Eric Mellino -// +// Copyright (c) 2019 JP Bruyère // This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) using System; @@ -8,7 +8,7 @@ namespace Vulkan /// <summary> /// A boolean value stored in a 4-byte unsigned integer. /// </summary> - public struct VkBool32 : IEquatable<VkBool32> + public struct VkBool32 : IEquatable<VkBool32>, IConvertible { /// <summary> /// The raw value of the <see cref="VkBool32"/>. A value of 0 represents "false", all other values represent "true". @@ -60,7 +60,60 @@ namespace Vulkan return $"{(this ? "True" : "False")} ({Value})"; } - public static implicit operator bool(VkBool32 b) => b.Value != 0; + public TypeCode GetTypeCode() => TypeCode.Boolean; + + public bool ToBoolean(IFormatProvider provider) => (bool)this; + public byte ToByte(IFormatProvider provider) + { + throw new NotImplementedException(); + } + + public char ToChar(IFormatProvider provider) + { + throw new NotImplementedException(); + } + + public DateTime ToDateTime(IFormatProvider provider) + { + throw new NotImplementedException(); + } + + public decimal ToDecimal(IFormatProvider provider) + { + throw new NotImplementedException(); + } + public double ToDouble(IFormatProvider provider) + { + throw new NotImplementedException(); + } + public short ToInt16(IFormatProvider provider) => (short)Value; + public int ToInt32(IFormatProvider provider) => (int)Value; + public long ToInt64(IFormatProvider provider) => (long)Value; + + public sbyte ToSByte(IFormatProvider provider) + { + throw new NotImplementedException(); + } + + public float ToSingle(IFormatProvider provider) + { + throw new NotImplementedException(); + } + + public string ToString(IFormatProvider provider) => ToString(); + + public object ToType(Type conversionType, IFormatProvider provider) + { + if (conversionType == typeof(bool)) + return ToBoolean(null); + throw new NotImplementedException(); + } + + public ushort ToUInt16(IFormatProvider provider) => (ushort)Value; + public uint ToUInt32(IFormatProvider provider) => Value; + public ulong ToUInt64(IFormatProvider provider) => (ulong)Value; + + public static implicit operator bool(VkBool32 b) => b.Value != 0; public static implicit operator uint(VkBool32 b) => b.Value; public static implicit operator VkBool32(bool b) => b ? True : False; public static implicit operator VkBool32(uint value) => new VkBool32(value); diff --git a/VK/vulkan.csproj b/VK/vulkan.csproj index 6e8fb29..898a7a3 100644 --- a/VK/vulkan.csproj +++ b/VK/vulkan.csproj @@ -1,67 +1,44 @@ +<?xml version="1.0" encoding="utf-8"?> <Project Sdk="Microsoft.NET.Sdk"> - <PropertyGroup> - <TargetFrameworks>netstandard2.0</TargetFrameworks> - <Copyright></Copyright> - <AssemblyVersion>0.1.7</AssemblyVersion> - <AssemblyName>VK</AssemblyName> - <Description>C# vulkan binding</Description> - <Company></Company> - <Product>VK</Product> - <Licence>MIT</Licence> - <PackageLicence>MIT</PackageLicence> - <PackageId>Vulkan</PackageId> - <PackageTags>C# vulkan net binding</PackageTags> - <PackageVersion>$(AssemblyVersion)</PackageVersion> - <GeneratePackageOnBuild>True</GeneratePackageOnBuild> - <PackageProjectUrl>https://github.com/jpbruyere/vk.net/blob/master/README.md</PackageProjectUrl> - <Icon>vk.net-64.png</Icon> - <PackageIcon>vk.net-64.png</PackageIcon> - <SynchReleaseVersion>false</SynchReleaseVersion> - <OutputPath>$(SolutionDir)build\$(Configuration)\</OutputPath> - </PropertyGroup> - <ItemGroup Condition="$(TargetFramework.StartsWith('net4'))"> - <Reference Include="System" /> - </ItemGroup> - - <ItemGroup> - <ProjectReference Include="..\vk.generator\vk.generator.csproj" PrivateAssets="All" /> - <ProjectReference Include="..\vk.rewrite\vk.rewrite.csproj" PrivateAssets="All" /> - </ItemGroup> - <ItemGroup> - <Content Include="vk.net-64.png" Pack="true" PackagePath=""/> - </ItemGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - <DefineConstants>TRACE;NETSTANDARD;NETSTANDARD2_0;DEBUG;NETFRAMEWORK;NET471</DefineConstants> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - </PropertyGroup> - - <Target Name="generate" BeforeTargets="BeforeCompile"> - <Exec Condition="$(OS) == 'Windows_NT'" ConsoleToMSBuild="true" EchoOff="true" - Command="$(SolutionDir)vk.generator/bin/$(Configuration)/net471/vk.generator.exe" - WorkingDirectory="$(SolutionDir)vk.generator/bin/$(Configuration)/net471/"> - <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> - </Exec> - <Exec Condition="$(OS) != 'Windows_NT'" ConsoleToMSBuild="true" EchoOff="true" - Command="mono $(SolutionDir)vk.generator/bin/$(Configuration)/net471/vk.generator.exe" - WorkingDirectory="$(SolutionDir)vk.generator/bin/$(Configuration)/net471/"> - <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> - </Exec> - <CreateItem Include="../vk.generator/bin/$(Configuration)/net471/*.cs"> - <Output TaskParameter="Include" ItemName="Compile" /> - </CreateItem> - </Target> - - <Target Name="rewrite" AfterTargets="CoreBuild"> - <Exec Condition="$(OS) == 'Windows_NT'" Command="$(SolutionDir)vk.rewrite/bin/$(Configuration)/net471/vk.rewrite.exe $(OutputPath)VK.dll" - ConsoleToMSBuild="true" EchoOff="true"> - <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> - </Exec> - <Exec Condition="$(OS) != 'Windows_NT'" Command="mono $(SolutionDir)vk.rewrite/bin/$(Configuration)/net471/vk.rewrite.exe $(OutputPath)VK.dll" - ConsoleToMSBuild="true" EchoOff="true"> - <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> - </Exec> - </Target> -</Project> + <PropertyGroup> + <TargetFrameworks>netstandard2.0</TargetFrameworks> + + <AssemblyVersion>0.2.0</AssemblyVersion> + <AssemblyName>VK</AssemblyName> + <Description>C# vulkan binding</Description> + <Product>VK</Product> + <PackageLicence>MIT</PackageLicence> + <PackageId>Vulkan</PackageId> + <PackageTags>C# vulkan net binding</PackageTags> + <PackageVersion>$(AssemblyVersion)-beta</PackageVersion> + <GeneratePackageOnBuild>True</GeneratePackageOnBuild> + <PackageProjectUrl>https://github.com/jpbruyere/vk.net/blob/master/README.md</PackageProjectUrl> + <Icon>vk.net-64.png</Icon> + <PackageIcon>vk.net-64.png</PackageIcon> + <SynchReleaseVersion>false</SynchReleaseVersion> + </PropertyGroup> + + <ItemGroup> + <Content Include="vk.net-64.png" Pack="true" PackagePath="" /> + <Compile Include="$(SolutionDir)build/generated/*.cs" /> + </ItemGroup> + + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <DefineConstants>TRACE;NETSTANDARD;NETSTANDARD2_0;DEBUG</DefineConstants> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + <DefineConstants>NETSTANDARD;NETSTANDARD2_0</DefineConstants> + </PropertyGroup> + + <Target Name="rewrite" AfterTargets="CoreBuild"> + <Exec Condition="$(OS) == 'Windows_NT'" Command="$(SolutionDir)build/$(Configuration)/net471/vk.rewrite.exe $(TargetPath)" ConsoleToMSBuild="true" EchoOff="true"> + <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> + </Exec> + <Exec Condition="$(OS) != 'Windows_NT'" Command="mono $(SolutionDir)build/$(Configuration)/net471/vk.rewrite.exe $(TargetPath)" ConsoleToMSBuild="true" EchoOff="true"> + <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> + </Exec> + </Target> + +</Project>
\ No newline at end of file diff --git a/vk.generator/Program.cs b/vk.generator/Program.cs index 9fdc005..94edb4a 100644 --- a/vk.generator/Program.cs +++ b/vk.generator/Program.cs @@ -152,7 +152,7 @@ namespace vk.generator { }; - static string[] skipEnums = { "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT" }; + static string[] skipEnums = { "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT", "VK_PIPELINE_CREATE_DISPATCH_BASE" }; static Dictionary<string, string[]> paramTypeAliases = new Dictionary<string, string[]> { { "void*", new string[] {"IntPtr"} }, @@ -311,7 +311,7 @@ namespace vk.generator { public static string GetCSName (string value, string containingType) { string ccValue = value.ConvertUnderscoredUpperCasedNameToCamelCase(); string cType = containingType?.RemoveTagsAndFlagsSuffix(); - return containingType == null || cType != ccValue.Substring(0, cType.Length) ? + return containingType == null || (ccValue.Length > cType.Length && cType != ccValue.Substring(0, cType.Length)) ? ccValue.StartsWith("Vk", StringComparison.Ordinal) ? ccValue.Substring(2) : ccValue : ccValue.RemoveCommonLeadingPart (containingType); } @@ -484,9 +484,6 @@ namespace vk.generator { if (!string.IsNullOrEmpty (ev.unusedComment)) tw.WriteLine ($"[Obsolete(\"{ev.unusedComment}\"]"); - if (enumName == "VkResult") - Debugger.Break(); - uint v; string vName = ev.GetCSName (enumName); diff --git a/vk.generator/vk.generator.csproj b/vk.generator/vk.generator.csproj index 08d6214..7fb509f 100644 --- a/vk.generator/vk.generator.csproj +++ b/vk.generator/vk.generator.csproj @@ -1,16 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> <Project Sdk="Microsoft.NET.Sdk"> - <PropertyGroup> - <TargetFrameworks>net471;netstandard2.0</TargetFrameworks> - <OutputType>Exe</OutputType> - <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - </PropertyGroup> - - <ItemGroup Condition="$(TargetFramework.StartsWith('net4'))"> - <Reference Include="System" /> - </ItemGroup> - <ItemGroup> - <None Update="vk.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - </ItemGroup> -</Project> + <PropertyGroup> + <TargetFrameworks>net471</TargetFrameworks> + <OutputType>Exe</OutputType> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + </PropertyGroup> + <ItemGroup> + <None Update="vk.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> + <Target Name="generate" AfterTargets="CoreBuild"> + <MakeDir Directories="$(SolutionDir)build/generated" /> + <Exec Condition="$(OS) == 'Windows_NT'" Command="$(TargetPath)" WorkingDirectory="$(SolutionDir)build/generated"> + <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> + </Exec> + <Exec Condition="$(OS) != 'Windows_NT'" Command="mono $(TargetPath)" WorkingDirectory="$(SolutionDir)build/generated"> + <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> + </Exec> + </Target> +</Project>
\ No newline at end of file @@ -1,4 +1,3 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vk.generator", "vk.generator\vk.generator.csproj", "{B105512C-9461-4802-B299-A6E7A29CDAEE}" @@ -33,48 +32,7 @@ Global GlobalSection(MonoDevelopProperties) = preSolution Policies = $0 $0.TextStylePolicy = $1 - $1.scope = text/x-csharp - $1.EolMarker = Unix - $0.CSharpFormattingPolicy = $2 - $2.scope = text/x-csharp - $2.NewLinesForBracesInProperties = False - $2.NewLinesForBracesInAccessors = False - $2.NewLinesForBracesInAnonymousMethods = False - $2.NewLinesForBracesInControlBlocks = False - $2.NewLinesForBracesInAnonymousTypes = False - $2.NewLinesForBracesInObjectCollectionArrayInitializers = False - $2.NewLinesForBracesInLambdaExpressionBody = False - $2.NewLineForElse = False - $2.NewLineForCatch = False - $2.NewLineForFinally = False - $2.NewLineForMembersInObjectInit = False - $2.NewLineForMembersInAnonymousTypes = False - $2.NewLineForClausesInQuery = False - $0.DotNetNamingPolicy = $3 - $3.DirectoryNamespaceAssociation = PrefixedHierarchical - $0.TextStylePolicy = $4 - $4.FileWidth = 80 - $4.scope = text/plain - $4.TabsToSpaces = True - $0.TextStylePolicy = $5 - $5.inheritsSet = null - $5.scope = application/config+xml - $0.XmlFormattingPolicy = $6 - $6.inheritsSet = null - $6.scope = application/config+xml - $0.StandardHeader = $7 - $7.Text = @Copyright (c) ${Year} ${AuthorName} <${AuthorEmail}>\n\nThis code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) - $0.TextStylePolicy = $8 - $8.inheritsSet = null - $8.scope = application/x-msbuild - $0.XmlFormattingPolicy = $9 - $9.inheritsSet = null - $9.scope = application/x-msbuild - $0.TextStylePolicy = $10 - $10.FileWidth = 80 - $10.TabsToSpaces = True - $10.scope = application/xml - $0.XmlFormattingPolicy = $11 - $11.scope = application/xml + $1.FileWidth = 80 + $1.scope = text/x-cgsrc EndGlobalSection EndGlobal diff --git a/vk.rewrite/vk.rewrite.csproj b/vk.rewrite/vk.rewrite.csproj index 2c43d1b..d87b4dd 100644 --- a/vk.rewrite/vk.rewrite.csproj +++ b/vk.rewrite/vk.rewrite.csproj @@ -1,16 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> <Project Sdk="Microsoft.NET.Sdk"> - <PropertyGroup> - <TargetFrameworks>net471;netstandard2.0</TargetFrameworks> - <OutputType>Exe</OutputType> - <AllowUnsafeBlocks>true</AllowUnsafeBlocks> - </PropertyGroup> - - <ItemGroup Condition="$(TargetFramework.StartsWith('net4'))"> - <Reference Include="System" /> - </ItemGroup> - - <ItemGroup> - <PackageReference Include="Mono.Cecil" Version="0.10.3" /> - </ItemGroup> -</Project> - + <PropertyGroup> + <TargetFrameworks>net471</TargetFrameworks> + <OutputType>Exe</OutputType> + <AllowUnsafeBlocks>true</AllowUnsafeBlocks> + </PropertyGroup> + <ItemGroup> + <PackageReference Include="Mono.Cecil" Version="0.11.1" /> + </ItemGroup> + +</Project>
\ No newline at end of file |