aboutsummaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2020-01-18 07:47:50 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2020-01-18 07:47:50 +0100
commit571133c41903bca1bb0273009c40ba17ede295d4 (patch)
treeb8a7e1f74d096601354ae4efd0d0904c6018c465
parent9de1ef7831324ff2a0827afdb8090bdb8b40c99b (diff)
VkBool32 IConvertible, csproj review
-rw-r--r--.gitignore1
-rw-r--r--Directory.Build.props9
-rw-r--r--VK/Structs.cs10
-rw-r--r--VK/VkBool32.cs59
-rw-r--r--VK/vulkan.csproj109
-rw-r--r--vk.generator/Program.cs7
-rw-r--r--vk.generator/vk.generator.csproj36
-rw-r--r--vk.net.sln46
-rw-r--r--vk.rewrite/vk.rewrite.csproj26
9 files changed, 152 insertions, 151 deletions
diff --git a/.gitignore b/.gitignore
index 1aece0d..4803fb0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/vk.net.sln b/vk.net.sln
index 98c95aa..a4dbd32 100644
--- a/vk.net.sln
+++ b/vk.net.sln
@@ -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