示例#1
0
 public static bool Combo(string label, ref int current_item, string[] items, int popup_max_height_in_items = -1)
 {
     using CStringArray strArr = stackalloc IntPtr[items.Length];
     for (int i = 0; i < items.Length; i++)
     {
         strArr[i] = StringHelper.ToPtr(items[i]);
     }
     return(ComboStr_arr(label, ref current_item, (byte **)strArr.Ptr, items.Length, popup_max_height_in_items));
 }
示例#2
0
        public static bool ListBox(string label, ref int current_item, string[] items, int items_count, int height_in_items = -1)
        {
            using CStringArray strArr = stackalloc IntPtr[items.Length];
            for (int i = 0; i < items.Length; i++)
            {
                strArr[i] = StringHelper.ToPtr(items[i]);
            }

            return(ListBoxStr_arr(label, ref current_item, (byte **)strArr.Ptr, items_count, height_in_items));
        }
示例#3
0
        public object MarshalNativeToManaged(IntPtr pNativeData)
        {
            CStringArray arr = (CStringArray)Marshal.PtrToStructure(pNativeData, typeof(CStringArray));

            string[] managedStringArray = new string[arr.len];
            IntPtr[] pIntPtrArray       = new IntPtr[arr.len];
            Marshal.Copy(arr.stringArray, pIntPtrArray, 0, arr.len);
            for (int i = 0; i < arr.len; i++)
            {
                managedStringArray[i] = Marshal.PtrToStringAnsi(pIntPtrArray[i]);
            }
            return(managedStringArray);
        }
示例#4
0
        /// <summary> Specialised default constructor for use only by derived class. </summary>
        protected unsafe QApp(IReadOnlyCollection <string> opts)
        {
            argc = opts.Count;
            char **argv = null;

            if (opts.Count > 0)
            {
                // Convert the string list to a C String Array
                COpts = new CStringArray(opts);
                COpts.Alloc();
                argv = (char **)COpts.Address();
            }
            _QApplication = new QApplication(ref argc, argv);
        }
示例#5
0
        public void CleanUpNativeData(IntPtr pNativeData)
        {
            CStringArray arr = (CStringArray)Marshal.PtrToStructure(pNativeData, typeof(CStringArray));

            IntPtr[] pIntPtrArray = new IntPtr[arr.len];
            Marshal.Copy(arr.stringArray, pIntPtrArray, 0, arr.len);
            for (int i = 0; i < arr.len; i++)
            {
                Marshal.FreeCoTaskMem(pIntPtrArray[i]);
            }
            if (arr.len > 0)
            {
                Marshal.FreeCoTaskMem(arr.stringArray);
            }
            Marshal.FreeCoTaskMem(pNativeData);
        }
示例#6
0
        protected virtual void Dispose(bool disposing)
        {
            if (disposed)
            {
                return;
            }
            if (disposing)
            {
                // Free other state (managed objects).
                _QApplication.Dispose();
            }

            // Free your own state (unmanaged objects).
            // Set large fields to null.
            //COpts.DeAlloc();
            COpts         = null;
            _QApplication = null;
            disposed      = true;
        }
示例#7
0
 internal static extern SNIPS_RESULT snips_nlu_engine_run_parse_into_json(IntPtr client, string input, CStringArray intents_whitelist, CStringArray intents_blacklist, ref string result_json);