in src/Refasmer/Importer/ImportLogic.cs [273:324]
private void ImportEvent( EventDefinitionHandle srcHandle )
{
var src = _reader.GetEventDefinition(srcHandle);
var accessors = src.GetAccessors();
var adder = Import(accessors.Adder);
var remover = Import(accessors.Remover);
var raiser = Import(accessors.Raiser);
var others = accessors.Others
.Select(a => Tuple.Create(a, Import(a)))
.Where(a => !a.Item2.IsNil)
.ToList();
if (adder.IsNil && remover.IsNil && raiser.IsNil && !others.Any())
{
Trace?.Invoke($"Not imported event {_reader.ToString(src)}");
return;
}
var dstHandle = _builder.AddEvent(src.Attributes, ImportValue(src.Name), Import(src.Type));
_eventDefinitionCache.Add(srcHandle, dstHandle);
Trace?.Invoke($"Imported event {_reader.ToString(src)} -> {RowId(dstHandle)}");
using var _ = WithLogPrefix($"[{_reader.ToString(src)}]");
if (!adder.IsNil)
{
_builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Adder, adder);
Trace?.Invoke($"Imported adder {_reader.ToString(accessors.Adder)} -> {RowId(adder)}");
}
if (!remover.IsNil)
{
_builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Remover, remover);
Trace?.Invoke($"Imported remover {_reader.ToString(accessors.Remover)} -> {RowId(remover)}");
}
if (!raiser.IsNil)
{
_builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Raiser, raiser);
Trace?.Invoke($"Imported raiser {_reader.ToString(accessors.Raiser)} -> {RowId(raiser)}");
}
foreach (var (srcAccessor, dstAccessor) in others)
{
_builder.AddMethodSemantics(dstHandle, MethodSemanticsAttributes.Other, dstAccessor);
Trace?.Invoke($"Imported other {_reader.ToString(srcAccessor)} -> {RowId(dstAccessor)}");
}
}