/// <summary> /// Sets engine field parameter value. /// </summary> /// <param name="field">Engine field.</param> /// <param name="value">Value to change.</param> public void SetField(EngineField field, object value) { ArgValidate.NotNull(value, nameof(value)); ThrowIfCompiled(); if (value is string || value is char) { var val = Marshal.StringToCoTaskMemAnsi(value.ToString()); NativeMethods.cl_engine_set_str(_handle.Handle, field, val).ThrowIfError(); } else { NativeMethods.cl_engine_set_num(_handle.Handle, field, Convert.ToInt16(value)); } }
/// <summary> /// Gets engine field parameter value. /// </summary> /// <param name="field">Engine field.</param> /// <returns>Engine parameter value.</returns> public object GetField(EngineField field) { ThrowIfCompiled(); object value; var errorCode = (int)cl_error_t.CL_SUCCESS; if (field == EngineField.PuaCategories || field == EngineField.Keeptmp) { var data = NativeMethods.cl_engine_get_str(_handle.Handle, field, ref errorCode); errorCode.ThrowIfError(); value = Marshal.PtrToStringAnsi(data); } else { value = NativeMethods.cl_engine_get_num(_handle.Handle, field, ref errorCode); errorCode.ThrowIfError(); } return(value); }
public static extern IntPtr cl_engine_get_str(IntPtr engine, EngineField field, ref int err);
public static extern int cl_engine_set_str(IntPtr engine, EngineField field, IntPtr str);
public static extern long cl_engine_get_num(IntPtr engine, EngineField field, ref int err);
public static extern int cl_engine_set_num(IntPtr engine, EngineField field, long num);