예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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();
        }
예제 #3
0
        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]
            });
        }