ListClear
List clear writer is an IWriter<Void, List> implementation for classes and IWriterToRef<Void, List> for structs.
IWriter<Avalanche.Void, List<int>> listClear;
Creating a writer
ListClear<List, Element> is default list writer for IList<T> implementing classes and structs.
IWriter<Avalanche.Void, List<int>> listClear = new ListClear<List<int>, int>();
List.Create(listType, elementType) also creates the writer.
IWriter<Avalanche.Void, List<int>> listClear =
(IWriter<Avalanche.Void, List<int>>)
ListClear.Create(typeof(List<int>), typeof(int));
List clear can adapted from delegate.
IWriter<Avalanche.Void, List<int>> listClear = DelegateWriter.Invoke<List<int>>(list => list.Clear());
ListClearRequest(Type) is a request to build a list clear writer.
ListClearRequest listRequest = new ListClearRequest(typeof(List<int>));
IWriter<Avalanche.Void, List<int>> listClear =
AccessorServices.Instance
.GetRequired<ListClearRequest, IWriter<Avalanche.Void, List<int>>>(listRequest);
Usage
Writer clears list.
List<int> list = new List<int> { 1, 2, 3 };
listClear.Write(default, list);
A ref must be used when accessing a value-typed list on stack.
// Create writer
IWriterToRef<Avalanche.Void, StructList4<int>> listClear =
(IWriterToRef<Avalanche.Void, StructList4<int>>)
ListClear.Create(typeof(StructList4<int>));
// Create list
StructList4<int> list = new StructList4<int> { 1, 2, 3 };
// Clear list
listClear.Write(default, ref list);
.TypeCast<Void, Object>().Write() be used when accessing a value-typed list in heap.
// Create writer
IWriterToRef<Avalanche.Void, StructList4<int>> listClear =
(IWriterToRef<Avalanche.Void, StructList4<int>>)
ListClear.Create(typeof(StructList4<int>));
// Create list
StructList4<int> list = new StructList4<int> { 1, 2, 3 };
// Copy to heap
object box = list;
// Clear list
listClear.TypeCast<Avalanche.Void, object>().Write(default, box);
Full Example
Full example
using System.Collections.Generic;
using Avalanche.Accessor;
using Avalanche.Accessor.List;
using Avalanche.Utilities;
using Avalanche.Writer;
public class listclear
{
public static void Run()
{
{
#pragma warning disable CS0168
// <01>
IWriter<Avalanche.Void, List<int>> listClear;
// </01>
#pragma warning restore CS0168
}
{
// <10>
IWriter<Avalanche.Void, List<int>> listClear = new ListClear<List<int>, int>();
// </10>
List<int> list = new List<int> { 1, 2, 3 };
listClear.Write(default, list);
}
{
// <11>
IWriter<Avalanche.Void, List<int>> listClear =
(IWriter<Avalanche.Void, List<int>>)
ListClear.Create(typeof(List<int>), typeof(int));
// </11>
List<int> list = new List<int> { 1, 2, 3 };
listClear.Write(default, list);
}
{
// <12>
IWriter<Avalanche.Void, List<int>> listClear = DelegateWriter.Invoke<List<int>>(list => list.Clear());
// </12>
List<int> list = new List<int> { 1, 2, 3 };
listClear.Write(default, list);
}
{
// <16>
ListClearRequest listRequest = new ListClearRequest(typeof(List<int>));
IWriter<Avalanche.Void, List<int>> listClear =
AccessorServices.Instance
.GetRequired<ListClearRequest, IWriter<Avalanche.Void, List<int>>>(listRequest);
// </16>
List<int> list = new List<int> { 1, 2, 3 };
listClear.Write(default, list);
}
{
IWriter<Avalanche.Void, List<int>> listClear = new ListClear<List<int>, int>();
// <21>
List<int> list = new List<int> { 1, 2, 3 };
listClear.Write(default, list);
// </21>
}
// Value List on stack
{
// <30>
// Create writer
IWriterToRef<Avalanche.Void, StructList4<int>> listClear =
(IWriterToRef<Avalanche.Void, StructList4<int>>)
ListClear.Create(typeof(StructList4<int>));
// Create list
StructList4<int> list = new StructList4<int> { 1, 2, 3 };
// Clear list
listClear.Write(default, ref list);
// </30>
}
// Value List on heap
{
// <31>
// Create writer
IWriterToRef<Avalanche.Void, StructList4<int>> listClear =
(IWriterToRef<Avalanche.Void, StructList4<int>>)
ListClear.Create(typeof(StructList4<int>));
// Create list
StructList4<int> list = new StructList4<int> { 1, 2, 3 };
// Copy to heap
object box = list;
// Clear list
listClear.TypeCast<Avalanche.Void, object>().Write(default, box);
// </31>
}
}
}