Reordering
This commit is contained in:
78
src/compiler/NubLang/Generation/BoundDefinitionTable.cs
Normal file
78
src/compiler/NubLang/Generation/BoundDefinitionTable.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using NubLang.Syntax.Binding;
|
||||
using NubLang.Syntax.Binding.Node;
|
||||
|
||||
namespace NubLang.Generation;
|
||||
|
||||
public sealed class BoundDefinitionTable
|
||||
{
|
||||
private readonly List<BoundDefinition> _definitions;
|
||||
|
||||
public BoundDefinitionTable(IEnumerable<BoundSyntaxTree> syntaxTrees)
|
||||
{
|
||||
_definitions = syntaxTrees.SelectMany(x => x.Definitions).ToList();
|
||||
}
|
||||
|
||||
public BoundLocalFunc LookupLocalFunc(string @namespace, string name)
|
||||
{
|
||||
return _definitions
|
||||
.OfType<BoundLocalFunc>()
|
||||
.First(x => x.Namespace == @namespace && x.Name == name);
|
||||
}
|
||||
|
||||
public BoundExternFunc LookupExternFunc(string @namespace, string name)
|
||||
{
|
||||
return _definitions
|
||||
.OfType<BoundExternFunc>()
|
||||
.First(x => x.Namespace == @namespace && x.Name == name);
|
||||
}
|
||||
|
||||
public BoundStruct LookupStruct(string @namespace, string name)
|
||||
{
|
||||
return _definitions
|
||||
.OfType<BoundStruct>()
|
||||
.First(x => x.Namespace == @namespace && x.Name == name);
|
||||
}
|
||||
|
||||
public BoundStructField LookupStructField(BoundStruct @struct, string field)
|
||||
{
|
||||
return @struct.Fields.First(x => x.Name == field);
|
||||
}
|
||||
|
||||
public IEnumerable<BoundTraitImpl> LookupTraitImpls(NubType itemType)
|
||||
{
|
||||
return _definitions
|
||||
.OfType<BoundTraitImpl>()
|
||||
.Where(x => x.ForType == itemType);
|
||||
}
|
||||
|
||||
public BoundTraitFuncImpl LookupTraitFuncImpl(NubType forType, string name)
|
||||
{
|
||||
return _definitions
|
||||
.OfType<BoundTraitImpl>()
|
||||
.Where(x => x.ForType == forType)
|
||||
.SelectMany(x => x.Functions)
|
||||
.First(x => x.Name == name);
|
||||
}
|
||||
|
||||
public BoundTrait LookupTrait(string @namespace, string name)
|
||||
{
|
||||
return _definitions
|
||||
.OfType<BoundTrait>()
|
||||
.First(x => x.Namespace == @namespace && x.Name == name);
|
||||
}
|
||||
|
||||
public BoundTraitFunc LookupTraitFunc(BoundTrait trait, string name)
|
||||
{
|
||||
return trait.Functions.First(x => x.Name == name);
|
||||
}
|
||||
|
||||
public IEnumerable<BoundStruct> GetStructs()
|
||||
{
|
||||
return _definitions.OfType<BoundStruct>();
|
||||
}
|
||||
|
||||
public IEnumerable<BoundTrait> GetTraits()
|
||||
{
|
||||
return _definitions.OfType<BoundTrait>();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using NubLang.Syntax.Binding;
|
||||
using NubLang.Syntax.Binding.Node;
|
||||
using NubLang.Syntax.Tokenization;
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text;
|
||||
using NubLang.Syntax.Binding;
|
||||
using NubLang.Syntax.Binding.Node;
|
||||
using NubLang.Syntax.Tokenization;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user