Add support for custom types/members attributes parsing in scripting bindings
This commit is contained in:
@@ -130,7 +130,7 @@ namespace Flax.Build.Bindings
|
|||||||
return context.StringCache.ToArray();
|
return context.StringCache.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private struct TagParameter
|
public struct TagParameter
|
||||||
{
|
{
|
||||||
public string Tag;
|
public string Tag;
|
||||||
public string Value;
|
public string Value;
|
||||||
@@ -338,7 +338,12 @@ namespace Flax.Build.Bindings
|
|||||||
currentParam.Attributes = tag.Value;
|
currentParam.Attributes = tag.Value;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Log.Warning($"Unknown or not supported tag parameter {tag} used on {"function parameter"} at line {context.Tokenizer.CurrentLine}");
|
bool valid = false;
|
||||||
|
ParseFunctionParameterTag?.Invoke(ref valid, tag, ref currentParam);
|
||||||
|
if (valid)
|
||||||
|
break;
|
||||||
|
var location = "function parameter";
|
||||||
|
Log.Warning($"Unknown or not supported tag parameter {tag} used on {location} at line {context.Tokenizer.CurrentLine}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -597,6 +602,10 @@ namespace Flax.Build.Bindings
|
|||||||
desc.Namespace = tag.Value;
|
desc.Namespace = tag.Value;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
bool valid = false;
|
||||||
|
ParseTypeTag?.Invoke(ref valid, tag, desc);
|
||||||
|
if (valid)
|
||||||
|
break;
|
||||||
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -678,6 +687,10 @@ namespace Flax.Build.Bindings
|
|||||||
desc.Namespace = tag.Value;
|
desc.Namespace = tag.Value;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
bool valid = false;
|
||||||
|
ParseTypeTag?.Invoke(ref valid, tag, desc);
|
||||||
|
if (valid)
|
||||||
|
break;
|
||||||
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -805,6 +818,10 @@ namespace Flax.Build.Bindings
|
|||||||
desc.IsHidden = true;
|
desc.IsHidden = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
bool valid = false;
|
||||||
|
ParseMemberTag?.Invoke(ref valid, tag, desc);
|
||||||
|
if (valid)
|
||||||
|
break;
|
||||||
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1062,6 +1079,10 @@ namespace Flax.Build.Bindings
|
|||||||
desc.Namespace = tag.Value;
|
desc.Namespace = tag.Value;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
bool valid = false;
|
||||||
|
ParseTypeTag?.Invoke(ref valid, tag, desc);
|
||||||
|
if (valid)
|
||||||
|
break;
|
||||||
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1129,6 +1150,10 @@ namespace Flax.Build.Bindings
|
|||||||
desc.Namespace = tag.Value;
|
desc.Namespace = tag.Value;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
bool valid = false;
|
||||||
|
ParseTypeTag?.Invoke(ref valid, tag, desc);
|
||||||
|
if (valid)
|
||||||
|
break;
|
||||||
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1252,6 +1277,10 @@ namespace Flax.Build.Bindings
|
|||||||
desc.NoArray = true;
|
desc.NoArray = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
bool valid = false;
|
||||||
|
ParseMemberTag?.Invoke(ref valid, tag, desc);
|
||||||
|
if (valid)
|
||||||
|
break;
|
||||||
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1314,6 +1343,10 @@ namespace Flax.Build.Bindings
|
|||||||
desc.IsHidden = true;
|
desc.IsHidden = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
bool valid = false;
|
||||||
|
ParseMemberTag?.Invoke(ref valid, tag, desc);
|
||||||
|
if (valid)
|
||||||
|
break;
|
||||||
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1379,6 +1412,10 @@ namespace Flax.Build.Bindings
|
|||||||
desc.Namespace = tag.Value;
|
desc.Namespace = tag.Value;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
bool valid = false;
|
||||||
|
ParseTypeTag?.Invoke(ref valid, tag, desc);
|
||||||
|
if (valid)
|
||||||
|
break;
|
||||||
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
Log.Warning($"Unknown or not supported tag parameter {tag} used on {desc.Name} at line {context.Tokenizer.CurrentLine}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,11 +43,16 @@ namespace Flax.Build.Bindings
|
|||||||
}
|
}
|
||||||
|
|
||||||
public delegate void GenerateModuleBindingsDelegate(BuildData buildData, IGrouping<string, Module> binaryModule);
|
public delegate void GenerateModuleBindingsDelegate(BuildData buildData, IGrouping<string, Module> binaryModule);
|
||||||
|
|
||||||
public delegate void GenerateBinaryModuleBindingsDelegate(BuildData buildData, ModuleInfo moduleInfo, ref BindingsResult bindings);
|
public delegate void GenerateBinaryModuleBindingsDelegate(BuildData buildData, ModuleInfo moduleInfo, ref BindingsResult bindings);
|
||||||
|
public delegate void ParseTypeTagDelegate(ref bool valid, TagParameter tag, ApiTypeInfo typeInfo);
|
||||||
|
public delegate void ParseMemberTagDelegate(ref bool valid, TagParameter tag, MemberInfo memberInfo);
|
||||||
|
public delegate void ParseFunctionParameterTagDelegate(ref bool valid, TagParameter tag, ref FunctionInfo.ParameterInfo parameterInfo);
|
||||||
|
|
||||||
public static event GenerateModuleBindingsDelegate GenerateModuleBindings;
|
public static event GenerateModuleBindingsDelegate GenerateModuleBindings;
|
||||||
public static event GenerateBinaryModuleBindingsDelegate GenerateBinaryModuleBindings;
|
public static event GenerateBinaryModuleBindingsDelegate GenerateBinaryModuleBindings;
|
||||||
|
public static event ParseTypeTagDelegate ParseTypeTag;
|
||||||
|
public static event ParseMemberTagDelegate ParseMemberTag;
|
||||||
|
public static event ParseFunctionParameterTagDelegate ParseFunctionParameterTag;
|
||||||
public static ModuleInfo CurrentModule;
|
public static ModuleInfo CurrentModule;
|
||||||
|
|
||||||
public static ModuleInfo ParseModule(BuildData buildData, Module module, BuildOptions moduleOptions = null)
|
public static ModuleInfo ParseModule(BuildData buildData, Module module, BuildOptions moduleOptions = null)
|
||||||
|
|||||||
Reference in New Issue
Block a user