public IObject CreateFunction(ExecutableCode executableCode, ReadOnlyList <string> formalParameters, ILexicalEnvironment scope) { // 13.2 Creating Function Objects var f = new NFunction(this); { f.Class = "Function"; f.Extensible = true; f.Prototype = FunctionPrototype; f.ExecutableCode = executableCode; f.FormalParameters = formalParameters; f.Scope = scope; f.DefineOwnProperty("length", CreateDataDescriptor(CreateNumber(f.FormalParameters.Count), false, false, false), false); f.DefineOwnProperty("constructor", CreateDataDescriptor(f, true, false, true), false); f.DefineOwnProperty("prototype", CreateDataDescriptor(ObjectConstructor.Op_Construct(EmptyArgs), true, false, false), false); if (executableCode.Strict) { var desc = CreateAccessorDescriptor(ThrowTypeErrorFunction, ThrowTypeErrorFunction, false, false); f.DefineOwnProperty("caller", desc, false); f.DefineOwnProperty("arguments", desc, false); } } return(f); }
/// <summary> /// Инициализирует новый экземпляр класса <see cref="NFuzzySet"/>. /// </summary> /// <param name="function">Функция принадлежности.</param> /// <param name="xmin">Массив, содержащий минимумы универсальных множеств для каждой переменной. Размерности /// <see cref="xmin"/> и <see cref="xmax"/> должны совпадать.</param> /// <param name="xmax">>Массив, содержащий максимумы универсальных множеств для каждой переменной. Размерности /// <see cref="xmin"/> и <see cref="xmax"/> должны совпадать.</param> public NFuzzySet(NFunction function, double[] xmin, double[] xmax) { if (xmin.Length == 0) { throw new ArgumentException("Размерность массива должна быть больше 0.", "xmin"); } if (xmax.Length == 0) { throw new ArgumentException("Размерность массива должна быть больше 0.", "xmax"); } if (xmin.Length != xmax.Length) { throw new ArgumentException("Размерности массивов должны совпадать."); } this.function = function; this.xmax = xmax; this.xmin = xmin; }
public UInt32 Send(Client c, int messageid) { ClientObject obj; ClientObject.cache_by_client.TryGetValue(c, out obj); IntPtr L = XLuaManager.Instance.GetLuaEnv().rawL; NFunction f = NModuleManager.GetInstance().GetFunctin(messageid); if (f != null) { Package p = c.PackageFactory.CreatePackage(); p.MessageID = messageid; p.Header.SetExtData(c.NextSendPackageExtData); // Logger.Log("send message id is " + messageid); FormatPackage(p, f, L); c.Send(p); if (null != this.OnSend) { this.OnSend(messageid, p.Header.GetExtData(), p.Header.GetSeqNum()); } #if UNITY_EDITOR StringBuilder sb = new StringBuilder(); sb.Append(f.Nm.Name); sb.Append("."); sb.Append(f.Name); if (!m_allSendMessage.ContainsKey(messageid)) { m_allSendMessage.Add(messageid, sb.ToString()); if (!m_allHandleMessage.ContainsKey(sb.ToString())) { // Logger.Log(string.Format("<color=#ff9900ff><<<need handle message>>>,id:{0} name:{1}</color>", messageid, sb.ToString())); m_allHandleMessage.Add(sb.ToString(), 1); } } //Logger.Log(string.Format("<color=#00ababff><<<send>>>,msgid:{0}({1})</color>", messageid, sb.ToString()), Logger.LogLevel.Important); #endif return(p.Header.GetExtData()); } return(0); }
private void FormatPackage(Package p, NFunction f, RealStatePtr L) { int startparamnum = 3; IList <NParam> parmlist = f.ParamList; using (MemoryStream ms = new MemoryStream()) { for (int i = 0; i < parmlist.Count; i++) { Sio.SData d = format_data(parmlist[i], L, ++startparamnum, true); if (d != null) { d.Serializ(ms); } } byte[] dbyte = new byte[ms.Length]; Array.Copy(ms.GetBuffer(), dbyte, ms.Length); p.Data = dbyte; } }