GodotMemberData.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System.Collections.Immutable;
  2. using Microsoft.CodeAnalysis;
  3. namespace Godot.SourceGenerators
  4. {
  5. public readonly struct GodotMethodData
  6. {
  7. public GodotMethodData(IMethodSymbol method, ImmutableArray<MarshalType> paramTypes,
  8. ImmutableArray<ITypeSymbol> paramTypeSymbols, (MarshalType MarshalType, ITypeSymbol TypeSymbol)? retType)
  9. {
  10. Method = method;
  11. ParamTypes = paramTypes;
  12. ParamTypeSymbols = paramTypeSymbols;
  13. RetType = retType;
  14. }
  15. public IMethodSymbol Method { get; }
  16. public ImmutableArray<MarshalType> ParamTypes { get; }
  17. public ImmutableArray<ITypeSymbol> ParamTypeSymbols { get; }
  18. public (MarshalType MarshalType, ITypeSymbol TypeSymbol)? RetType { get; }
  19. }
  20. public readonly struct GodotSignalDelegateData
  21. {
  22. public GodotSignalDelegateData(string name, INamedTypeSymbol delegateSymbol, GodotMethodData invokeMethodData)
  23. {
  24. Name = name;
  25. DelegateSymbol = delegateSymbol;
  26. InvokeMethodData = invokeMethodData;
  27. }
  28. public string Name { get; }
  29. public INamedTypeSymbol DelegateSymbol { get; }
  30. public GodotMethodData InvokeMethodData { get; }
  31. }
  32. public readonly struct GodotPropertyData
  33. {
  34. public GodotPropertyData(IPropertySymbol propertySymbol, MarshalType type)
  35. {
  36. PropertySymbol = propertySymbol;
  37. Type = type;
  38. }
  39. public IPropertySymbol PropertySymbol { get; }
  40. public MarshalType Type { get; }
  41. }
  42. public readonly struct GodotFieldData
  43. {
  44. public GodotFieldData(IFieldSymbol fieldSymbol, MarshalType type)
  45. {
  46. FieldSymbol = fieldSymbol;
  47. Type = type;
  48. }
  49. public IFieldSymbol FieldSymbol { get; }
  50. public MarshalType Type { get; }
  51. }
  52. public struct GodotPropertyOrFieldData
  53. {
  54. public GodotPropertyOrFieldData(ISymbol symbol, MarshalType type)
  55. {
  56. Symbol = symbol;
  57. Type = type;
  58. }
  59. public GodotPropertyOrFieldData(GodotPropertyData propertyData)
  60. : this(propertyData.PropertySymbol, propertyData.Type)
  61. {
  62. }
  63. public GodotPropertyOrFieldData(GodotFieldData fieldData)
  64. : this(fieldData.FieldSymbol, fieldData.Type)
  65. {
  66. }
  67. public ISymbol Symbol { get; }
  68. public MarshalType Type { get; }
  69. }
  70. }