/// <summary> /// Run helper /// </summary> /// <param name="names">names to convert to zero terminated utf8 and pin</param> /// <param name="cleanupList">list to add pinned memory to for later disposal</param> /// <returns></returns> private IntPtr[] ConvertNamesToUtf8 <T>(IReadOnlyCollection <T> inputs, NameExtractor <T> extractor, DisposableList <IDisposable> cleanupList) { var result = new IntPtr[inputs.Count]; for (int i = 0; i < inputs.Count; ++i) { var name = extractor(inputs.ElementAt(i)); var utf8Name = NativeOnnxValueHelper.StringToZeroTerminatedUtf8(name); var pinnedHandle = new PinnedGCHandle(GCHandle.Alloc(utf8Name, GCHandleType.Pinned)); result[i] = pinnedHandle.Pointer; cleanupList.Add(pinnedHandle); } return(result); }
/// <summary> /// Initialize a new instance of the <see cref="Settings"/> class. /// </summary> public Settings() { Type thisType = GetType(); DisplayName = thisType.GetCustomAttribute <DisplayNameAttribute>()?.DisplayName ?? NameExtractor.Replace(thisType.Name, x => string.Empty); Guid = thisType.GUID; Properties = thisType .GetProperties() .Where(x => x.CanRead && x.CanWrite && x.GetIndexParameters().Length == 0) .ToDictionary(x => x.Name, StringComparer.InvariantCultureIgnoreCase); Keys = Properties.Keys.ToList().AsReadOnly(); }
public void ExtractTestConstructor() { //The class' constructor takes an INameProvider instance and will call this interface in order to fetch the name to break down //Name should be extracted on construction time, not extraction MockNameProvider prv = new MockNameProvider(validTitles[0] + " " + validFirstNames[0] + " " + validLastNames[0]); NameExtractor exractor = new NameExtractor(prv); prv.replaceMockName(validTitles[1] + " " + validFirstNames[1] + " " + validLastNames[1]); CheckResults(exractor.Extract(), new NameExtractionResult() { Title = validTitles[0], FirstName = validFirstNames[0], LastName = validLastNames[0] }); }