3 changed files with 46 additions and 46 deletions
@ -0,0 +1,38 @@ |
|||
#nullable enable |
|||
|
|||
namespace Avalonia.Styling.Activators |
|||
{ |
|||
internal struct OrActivatorBuilder |
|||
{ |
|||
private IStyleActivator? _single; |
|||
private OrActivator? _multiple; |
|||
|
|||
public int Count => _multiple?.Count ?? (_single is object ? 1 : 0); |
|||
|
|||
public void Add(IStyleActivator? activator) |
|||
{ |
|||
if (activator == null) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
if (_single is null && _multiple is null) |
|||
{ |
|||
_single = activator; |
|||
} |
|||
else |
|||
{ |
|||
if (_multiple is null) |
|||
{ |
|||
_multiple = new OrActivator(); |
|||
_multiple.Add(_single!); |
|||
_single = null; |
|||
} |
|||
|
|||
_multiple.Add(activator); |
|||
} |
|||
} |
|||
|
|||
public IStyleActivator Get() => _single ?? _multiple!; |
|||
} |
|||
} |
|||
Loading…
Reference in new issue