Added ufbx warper
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using Ghost.NativeWrapperGen.Config;
|
||||
|
||||
namespace Ghost.NativeWrapperGen.Transform;
|
||||
|
||||
public sealed class NamingConventions
|
||||
{
|
||||
private readonly WrapperConfig _config;
|
||||
|
||||
public NamingConventions(WrapperConfig config)
|
||||
{
|
||||
_config = config;
|
||||
}
|
||||
|
||||
public string GetWrapperTypeName(string nativeTypeName)
|
||||
{
|
||||
if (_config.TypeNameOverrides.TryGetValue(nativeTypeName, out var overrideName))
|
||||
{
|
||||
return overrideName;
|
||||
}
|
||||
|
||||
return ToPascalCase(StripKnownPrefix(nativeTypeName));
|
||||
}
|
||||
|
||||
public string GetPropertyName(string nativeName)
|
||||
{
|
||||
return ToPascalCase(nativeName);
|
||||
}
|
||||
|
||||
private string StripKnownPrefix(string nativeTypeName)
|
||||
{
|
||||
if (nativeTypeName.StartsWith(_config.NativeTypePrefix, StringComparison.Ordinal))
|
||||
{
|
||||
return nativeTypeName[_config.NativeTypePrefix.Length..];
|
||||
}
|
||||
|
||||
return nativeTypeName;
|
||||
}
|
||||
|
||||
public static string ToPascalCase(string value)
|
||||
{
|
||||
var parts = value.Split('_', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
|
||||
if (parts.Length == 0)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
return string.Concat(parts.Select(static part => char.ToUpperInvariant(part[0]) + part[1..]));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
using Ghost.NativeWrapperGen.Config;
|
||||
using Ghost.NativeWrapperGen.Model;
|
||||
using Ghost.NativeWrapperGen.Parsing;
|
||||
|
||||
namespace Ghost.NativeWrapperGen.Transform;
|
||||
|
||||
public sealed class PublicTypeResolver
|
||||
{
|
||||
private readonly NativeLibrary _library;
|
||||
private readonly WrapperConfig _config;
|
||||
private readonly NamingConventions _naming;
|
||||
|
||||
public PublicTypeResolver(NativeLibrary library, WrapperConfig config, NamingConventions naming)
|
||||
{
|
||||
_library = library;
|
||||
_config = config;
|
||||
_naming = naming;
|
||||
}
|
||||
|
||||
public string GetPublicType(string nativeTypeName)
|
||||
{
|
||||
if (string.Equals(nativeTypeName, "void", StringComparison.Ordinal))
|
||||
{
|
||||
return "void*";
|
||||
}
|
||||
|
||||
if (_config.PublicTypeOverrides.TryGetValue(nativeTypeName, out var overrideType))
|
||||
{
|
||||
return overrideType;
|
||||
}
|
||||
|
||||
var pointerDepth = BindingParser.GetPointerDepth(nativeTypeName);
|
||||
var baseType = BindingParser.TrimPointers(nativeTypeName);
|
||||
|
||||
if (pointerDepth == 0)
|
||||
{
|
||||
return baseType;
|
||||
}
|
||||
|
||||
if (_library.StructsByName.ContainsKey(baseType))
|
||||
{
|
||||
return pointerDepth switch
|
||||
{
|
||||
1 => _naming.GetWrapperTypeName(baseType),
|
||||
_ => nativeTypeName,
|
||||
};
|
||||
}
|
||||
|
||||
return nativeTypeName;
|
||||
}
|
||||
|
||||
public bool HasWrapper(string nativeTypeName)
|
||||
{
|
||||
return _library.StructsByName.ContainsKey(nativeTypeName);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user