DLSet
using Org.BouncyCastle.Utilities.Collections;
using System;
using System.Collections.Generic;
namespace Org.BouncyCastle.Asn1
{
public class DLSet : DerSet
{
public new static readonly DLSet Empty = new DLSet();
public new static DLSet FromCollection(IReadOnlyCollection<Asn1Encodable> elements)
{
if (elements.Count >= 1)
return new DLSet(elements);
return Empty;
}
public new static DLSet FromElement(Asn1Encodable element)
{
return new DLSet(element);
}
public new static DLSet FromVector(Asn1EncodableVector elementVector)
{
if (elementVector.Count >= 1)
return new DLSet(elementVector);
return Empty;
}
public new static DLSet Map<T>(T[] ts, Func<T, Asn1Encodable> func)
{
if (ts.Length >= 1)
return new DLSet(false, CollectionUtilities.Map(ts, func));
return Empty;
}
public new static DLSet Map<T>(IReadOnlyCollection<T> c, Func<T, Asn1Encodable> func)
{
if (c.Count >= 1)
return new DLSet(false, CollectionUtilities.Map(c, func));
return Empty;
}
public DLSet()
{
}
public DLSet(Asn1Encodable element)
: base(element)
{
}
public DLSet(params Asn1Encodable[] elements)
: base(elements, false)
{
}
public DLSet(Asn1EncodableVector elementVector)
: base(elementVector, false)
{
}
public DLSet(IReadOnlyCollection<Asn1Encodable> elements)
: base(elements, false)
{
}
internal DLSet(bool isSorted, Asn1Encodable[] elements)
: base(isSorted, elements)
{
}
internal override IAsn1Encoding GetEncoding(int encoding)
{
if (3 == encoding)
return base.GetEncoding(encoding);
return new ConstructedDLEncoding(0, 17, Asn1OutputStream.GetContentsEncodings(2, m_elements));
}
internal override IAsn1Encoding GetEncodingImplicit(int encoding, int tagClass, int tagNo)
{
if (3 == encoding)
return base.GetEncodingImplicit(encoding, tagClass, tagNo);
return new ConstructedDLEncoding(tagClass, tagNo, Asn1OutputStream.GetContentsEncodings(2, m_elements));
}
}
}