Пример #1
0
 private void Enqueue(LogNode log)
 {
     lock (locker)
     {
         logNodes.Enqueue(log);
     }
 }
Пример #2
0
        private void FillDataGrid(DataTable table)
        {
            var users = Program.dataManager.GetUserNames();

            if (table != null & table.Rows.Count > 0)
            {
                foreach (var tableRow in table.Rows)
                {
                    LogNode node = new LogNode((DataRow)tableRow);

                    int rowIndex = dataGridView1.Rows.Add();
                    var newRow   = dataGridView1.Rows[rowIndex];

                    newRow.Cells["userID"].Value =
                        users[node.userID.ToString()];

                    newRow.Cells["date"].Value =
                        node.date;

                    newRow.Cells["time"].Value =
                        node.time;

                    newRow.Cells["message"].Value =
                        node.message;

                    newRow.Cells["dataBaseQuery"].Value =
                        node.dataBaseQuery;
                }
            }
        }
            private string GetLogString(LogNode logNode)
            {
                Color32 color    = GetLogStringColor(logNode.LogType);
                string  hexColor = ColorUtility.ToHtmlStringRGB(color);

                return("<color=#" + hexColor + ">" + logNode.LogTime.ToString(dateTimeFormat) + logNode.LogMsg + "</color>");
            }
Пример #4
0
            /// <summary>
            /// set the parent for logger node
            /// </summary>
            /// <param name="parent">logger</param>
            public void WalkAndSetParent(Logger parent)
            {
                if (children == null)
                {
                    return;
                }

                for (int i = 0; i <= children.Count - 1; i++)
                {
                    try
                    {
                        LogNode node = (LogNode)children[i];
                        if (node.logger == null)
                        {
                            node.WalkAndSetParent(parent);
                        }
                        else
                        {
                            DoSetParent(node.logger, parent);
                        }
                    }
                    catch
                    {
                    }
                }
            }
        private static Function createLogFunction()
        {
            Declaration    declaration = new Declaration("log(x)");
            EvaluationNode node        = new LogNode();
            EvaluationTree tree        = new EvaluationTree(node);

            return(new Function(declaration, tree));
        }
            private string GetLogString(LogNode logNode)
            {
                Color32 color = GetLogStringColor(logNode.LogType);

                return(Utility.Text.Format("<color=#{0}{1}{2}{3}>[{4}][{5}] {6}</color>",
                                           color.r.ToString("x2"), color.g.ToString("x2"), color.b.ToString("x2"), color.a.ToString("x2"),
                                           logNode.LogTime.ToString("HH:mm:ss.fff"), logNode.LogFrameCount.ToString(), logNode.LogMessage));
            }
Пример #7
0
 private void Clear()
 {
     lock (locker)
     {
         logNodes.Clear();
         selectedNode = null;
     }
 }
            private string GetLogString(LogNode logNode)
            {
                Color32 color = GetLogStringColor(logNode.LogType);

                return(string.Format("<color=#{0}{1}{2}{3}>{4}{5}</color>",
                                     color.r.ToString("x2"), color.g.ToString("x2"), color.b.ToString("x2"), color.a.ToString("x2"),
                                     logNode.LogTime.ToString(m_DateTimeFormat), logNode.LogMessage));
            }
Пример #9
0
        public void GetExtraOrderInfo(string orderId, LogNode parentNode = null)
        {
            LogNode onlinePaysLog = null;

            if (parentNode != null)
            {
                onlinePaysLog = parentNode.AddSubNode("Online payments:");
            }
            else
            {
                onlinePaysLog = LogNode.Create("Online payments:");
            }

            List <OnlinePayment> onlinePays = this.Ctx.OnlinePayment.Where(op => op.ObjectId == orderId).ToList();

            foreach (OnlinePayment olPay in onlinePays)
            {
                LogNode olPayLog = onlinePaysLog.AddSubNode("Online payment € {0}", olPay.Amount);
                olPayLog.AddItem("Created at: {0} - Updated at: {1}", olPay.CreatedAt.ToString(), olPay.UpdatedAt.ToString());

                if (!string.IsNullOrWhiteSpace(olPay.FinalAutoResponse))
                {
                    LogNode finalAutoResponseLog = olPayLog.AddSubNode("FinalAutoResponse");

                    WorldlinePayment worldline = new WorldlinePayment(WorldlinePaymentType.Acquirer, olPay.FinalAutoResponse);

                    //string codeInfo = worldline.ResponseCodeInfo;


                    finalAutoResponseLog.AddItem("Response code: {0} = {1}", worldline.ResponseCode, worldline.ResponseCodeInfo);
                    finalAutoResponseLog.AddItem("TransactionDateTime: {0}", worldline.TransactionDateTime);
                    finalAutoResponseLog.AddItem("PaymentMeanBrand: {0}", worldline.PaymentMeanBrand);
                }
                else
                {
                    olPayLog.AddSubNode("No autoresponse available!");
                }
            }

            /*
             * LogNode orderLog = LogNode.Create("Order id='{0}'", this.Id);
             *
             * LogNode orderLog = LogNode.Create("Info about order");
             *
             *
             * OrderSvc orderSvc = new OrderSvc();
             *
             * Order order = orderSvc.GetOrder(orderId, this.Ctx);
             *
             * if (order.OrderLines != null)
             * {
             *  foreach (var orderLine in order.OrderLines)
             *  {
             *      orderLog.AddSubNode("{0} x {1}", orderLine.Quantity, orderLine.Description);
             *  }
             * }
             */
        }
Пример #10
0
            /// <summary>
            /// 创建日志记录结点。
            /// </summary>
            /// <param name="logType">日志类型。</param>
            /// <param name="logMessage">日志内容。</param>
            /// <param name="stackTrack">日志堆栈信息。</param>
            /// <returns>创建的日志记录结点。</returns>
            public static LogNode Create(LogType logType, string logMessage, string stackTrack)
            {
                LogNode logNode = ReferencePool.Acquire <LogNode>();

                logNode.m_LogTime    = DateTime.Now;
                logNode.m_LogType    = logType;
                logNode.m_LogMessage = logMessage;
                logNode.m_StackTrack = stackTrack;
                return(logNode);
            }
Пример #11
0
            private void OnLogMessageReceived(string logMsg, string stackTrace, LogType logtype)
            {
                if (logtype == LogType.Assert || logtype == LogType.Exception)
                {
                    logtype = LogType.Error;
                }
                LogNode log = new LogNode().Fill(logtype, logMsg, stackTrace);

                Enqueue(log);
            }
Пример #12
0
 private void Log(LogNode node)
 {
     try
     {
         dataBase.ExecuteCommand(node.ToDataBaseCommand());
         Console.WriteLine("LogManaget log successful " + node.ToDataBaseCommand());
     }
     catch (Exception ex)
     {
         Console.WriteLine("LogManager Exception: \n" + node.ToDataBaseCommand() + "\n" + ex.ToString());
     }
 }
Пример #13
0
        public static void LogReportUpdate(int userID, int reportID, string dataBaseQuery)
        {
            LogNode node = new LogNode
            {
                userID        = userID,
                tableName     = "Reports",
                itemID        = reportID,
                message       = "Редактирование отчета",
                dataBaseQuery = dataBaseQuery,
            };

            Instance.Log(node);
        }
Пример #14
0
        public static void LogPurchaseUpdate(int userId, int purchaseID, string dataBaseQuery)
        {
            LogNode node = new LogNode
            {
                userID        = userId,
                tableName     = "Purchases",
                itemID        = purchaseID,
                message       = "Редактирование закупки",
                dataBaseQuery = dataBaseQuery,
            };

            Instance.Log(node);
        }
Пример #15
0
        public static void LogOrganisationUpdate(int userId, int organisationID, string dataBaseQuery)
        {
            LogNode node = new LogNode
            {
                userID        = userId,
                tableName     = "Organisations",
                itemID        = organisationID,
                message       = "Редактирование организации",
                dataBaseQuery = dataBaseQuery,
            };

            Instance.Log(node);
        }
            private void OnLogMessageReceived(string logMessage, string stackTrace, LogType logType)
            {
                if (logType == LogType.Assert)
                {
                    logType = LogType.Error;
                }

                m_LogNodes.Enqueue(LogNode.Create(logType, logMessage, stackTrace));
                while (m_LogNodes.Count > m_MaxLine)
                {
                    ReferencePool.Release(m_LogNodes.Dequeue());
                }
            }
Пример #17
0
        private DataBaseManager dataBase;       //БД для хранения логов. Она отделена от основной БД


        public static void LogPurchaseAdding(int userId, int purchaseID, string dataBaseQuery)
        {
            //залогировать добавление новой закупки
            LogNode node = new LogNode
            {
                userID        = userId,
                tableName     = "Purchases",
                itemID        = purchaseID,
                message       = "Создание закупки",
                dataBaseQuery = dataBaseQuery,
            };

            Instance.Log(node);
        }
Пример #18
0
        /// <summary>
        /// Find the available node
        /// </summary>
        /// <param name="name">name of the node</param>
        /// <returns>LogNode</returns>
        private LogNode FindNode(String name)
        {
            if (name == null || name.Equals(""))
            {
                return(root);
            }
            LogNode node = root;

            while (name.Length > 0)
            {
                int    ix = name.IndexOf(".");
                String head;
                if (ix > 0)
                {
                    head = name.Substring(0, ix);
                    name = name.Substring(ix + 1);
                }
                else
                {
                    head = name;
                    name = "";
                }
                if (node.children == null)
                {
                    node.children = new Dictionary <Object, Object>();
                }

                LogNode child = null;

                if (node.children.ContainsKey(head))
                {
                    child = (LogNode)node.children[head];
                }

                if (child == null)
                {
                    child = new LogNode(node);
                    if (node.children.ContainsKey(head))
                    {
                        node.children[head] = child;
                    }
                    else
                    {
                        node.children.Add(head, child);
                    }
                }
                node = child;
            }
            return(node);
        }
 private void OnLogMessageReceived(string logMsg, string stackTrace, LogType logtype)
 {
     if (logtype == LogType.Assert)
     {
         logtype = LogType.Error;
     }
     logNodes.Enqueue(Pool <LogNode> .Instance.Allocate().Fill(logtype, logMsg, stackTrace));
     while (logNodes.Count > maxLine)
     {
         if (selectedNode == logNodes.Peek())
         {
             selectedNode = null;
         }
         Pool <LogNode> .Instance.Recycle(logNodes.Dequeue());
     }
 }
Пример #20
0
    static public GraphNodeExample Create(NodeType type)
    {
        GraphNodeExample node = null;

        switch (type)
        {
        case NodeType.Start:
            node = new StartNode();
            break;

        case NodeType.String:
            node = new StringNode();
            break;

        case NodeType.Log:
            node = new LogNode();
            break;
        }
        return(node);
    }
Пример #21
0
        public Word Visit(LogNode logNode)
        {
            var result = logNode.Expr.Accept(this);

            if (IsError(result))
            {
                return(ErrorFactory.LogError(logNode.Expr, result));
            }
            PyObj pyObj;

            if (IsMemoryBlock(result))//comentar ese if else si se hace la desereferencia en atomic expr.
            {
                pyObj = ((MemoryBlock)result).Value;
            }
            else
            {
                pyObj = (PyObj)result;
            }
            RuntimeEnvironment.Console.Instance.PrintLine(pyObj);
            return(null);
        }
Пример #22
0
        private static string GetLogString(LogNode logNode)
        {
            string logString = null;

            switch (logNode.LogType)
            {
            case LogType.Log:
            case LogType.Warning:
                logString = string.Format("{0} {1} {2}", logNode.LogType.ToString(), logNode.LogTime.ToString(m_DateTimeFormat), logNode.LogMessage);
                break;

            case LogType.Assert:
            case LogType.Error:
            case LogType.Exception:
            default:
                logString = string.Format("{0} {1} {2} {3}", logNode.LogType.ToString(), logNode.LogTime.ToString(m_DateTimeFormat), logNode.LogMessage, logNode.StackTrack);
                break;
            }

            return(logString);
        }
            public void OnDraw()
            {
                RefreshCount();
                GUILayout.BeginHorizontal();
                {
                    if (GUILayout.Button("Clear All"))
                    {
                        Clear();
                    }
                    lockScroll = GUILayout.Toggle(lockScroll, "Lock Scroll");
                    GUILayout.FlexibleSpace();
                    logFilter       = GUILayout.Toggle(logFilter, "Info (" + logCount + ")");
                    warningFilter   = GUILayout.Toggle(warningFilter, "Warning (" + warningCount + ")");
                    errorFilter     = GUILayout.Toggle(errorFilter, "Error (" + errorCount + ")");
                    exceptionFilter = GUILayout.Toggle(exceptionFilter, "Exception (" + exceptionCount + ")");
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginVertical("box");
                {
                    if (lockScroll)
                    {
                        logScrollPosition.y = float.MaxValue;
                    }
                    logScrollPosition = GUILayout.BeginScrollView(logScrollPosition);
                    {
                        foreach (LogNode logNode in logNodes)
                        {
                            switch (logNode.LogType)
                            {
                            case LogType.Log:
                                if (!logFilter)
                                {
                                    continue;
                                }
                                break;

                            case LogType.Warning:
                                if (!warningFilter)
                                {
                                    continue;
                                }
                                break;

                            case LogType.Error:
                                if (!errorFilter)
                                {
                                    continue;
                                }
                                break;

                            case LogType.Exception:
                                if (!exceptionFilter)
                                {
                                    continue;
                                }
                                break;
                            }
                            if (GUILayout.Toggle(selectedNode == logNode, GetLogString(logNode)))
                            {
                                if (selectedNode != logNode)
                                {
                                    selectedNode             = logNode;
                                    stackTraceScrollPosition = Vector2.zero;
                                }
                            }
                        }
                    }
                    GUILayout.EndScrollView();
                }
                GUILayout.EndVertical();
                GUILayout.BeginVertical("box");
                {
                    stackTraceScrollPosition = GUILayout.BeginScrollView(stackTraceScrollPosition, GUILayout.Height(100f));
                    {
                        if (selectedNode != null)
                        {
                            GUILayout.BeginHorizontal();

                            GUILayout.Label(selectedNode.LogMsg);
                            if (GUILayout.Button("Copy", GUILayout.Width(60f), GUILayout.Height(30f)))
                            {
                                TextEditor textEditor = new TextEditor
                                {
                                    text = selectedNode.LogMsg + "\n" + selectedNode.StackTrace
                                };
                                textEditor.OnFocus();
                                textEditor.Copy();
                            }
                            GUILayout.EndHorizontal();
                            GUILayout.Label(selectedNode.StackTrace);
                        }
                        GUILayout.EndScrollView();
                    }
                }
                GUILayout.EndVertical();
            }
Пример #24
0
            public void OnDraw()
            {
                if (Event.current.type == EventType.Layout)
                {
                    tempLogNodes = new List <LogNode>(ToArray(logNodes));
                    RefreshCount();
                }
                GUILayout.BeginHorizontal();
                {
                    if (GUILayout.Button("Clear All", GUILayout.Height(30f), GUILayout.Width(100f)))
                    {
                        Clear();
                    }
                    lockScroll = GUILayout.Toggle(lockScroll, "Lock Scroll", GUILayout.Height(30f));
                    GUILayout.FlexibleSpace();
                    logFilter = GUILayout.Toggle(logFilter, "Info (" + logCount + ")", GUILayout.Height(30f));
                    if (!logFilter)
                    {
                    }
                    warningFilter = GUILayout.Toggle(warningFilter, "Warning (" + warningCount + ")", GUILayout.Height(30f));
                    errorFilter   = GUILayout.Toggle(errorFilter, "Error (" + errorCount + ")", GUILayout.Height(30f));
                }
                GUILayout.EndHorizontal();
                if (!logFilter || !warningFilter || !errorFilter)
                {
                    List <LogNode> tempFilterLogs = tempLogNodes;
                    for (int i = tempFilterLogs.Count - 1; i >= 0; i--)
                    {
                        switch (tempFilterLogs[i].LogType)
                        {
                        case LogType.Log:
                            if (!logFilter)
                            {
                                tempFilterLogs.Remove(tempFilterLogs[i]);
                            }
                            break;

                        case LogType.Warning:
                            if (!warningFilter)
                            {
                                tempFilterLogs.Remove(tempFilterLogs[i]);
                            }
                            break;

                        case LogType.Error:
                            if (!errorFilter)
                            {
                                tempFilterLogs.Remove(tempFilterLogs[i]);
                            }
                            break;
                        }
                    }
                    tempLogNodes = tempFilterLogs;
                }
                GUILayout.BeginVertical("box");
                {
                    if (lockScroll)
                    {
                        logScrollPosition.y = tempLogNodes.Count * logHeight;
                    }
                    logScrollPosition = GUILayout.BeginScrollView(logScrollPosition);
                    {
                        int maxLine = 20;

                        if (maxLine > tempLogNodes.Count)
                        {
                            maxLine = tempLogNodes.Count;
                        }

                        int logIndex = (int)logScrollPosition.y / logHeight;

                        logIndex = Mathf.Clamp(logIndex, 0, tempLogNodes.Count - maxLine);

                        for (int i = 0; i < logIndex; i++)
                        {
                            GUILayout.Space(logHeight);
                        }
                        for (int i = logIndex; i < logIndex + maxLine; i++)
                        {
                            LogNode logNode    = tempLogNodes[i];
                            bool    isSelected = GUILayout.Toggle(selectedNode == logNode, GetLogString(logNode), GUILayout.Height(logHeight));
                            if (isSelected && selectedNode != logNode)
                            {
                                selectedNode             = logNode;
                                lockScroll               = false;
                                stackTraceScrollPosition = Vector2.zero;
                            }
                        }
                        for (int i = logIndex + maxLine; i < tempLogNodes.Count; i++)
                        {
                            GUILayout.Space(logHeight);
                        }
                    }
                    GUILayout.EndScrollView();
                }
                GUILayout.EndVertical();

                if (selectedNode != null)
                {
                    GUILayout.BeginVertical("box", GUILayout.Height(100));
                    stackTraceScrollPosition = GUILayout.BeginScrollView(stackTraceScrollPosition);
                    GUILayout.Label(selectedNode.LogMsg + "\n" + selectedNode.StackTrace);
                    GUILayout.EndScrollView();
                    GUILayout.EndVertical();
                }
            }
Пример #25
0
        async Task <IInstanceNode> BuildNode(ScriptLanguage?language, NodeData node, Guid?nodeid = null)
        {
            nodeid ??= Guid.NewGuid();

            IInstanceNode instance;

            switch (node.Type)
            {
            case NodeType.Start:
                instance = new StartNode(nodeid.Value, node.Name, node.Parameters.Deserialize <StartParameters>(), compiler);
                break;

            case NodeType.Expression:
                ExecuteExpressionParameters parameters = node.Parameters.Deserialize <ExecuteExpressionParameters>();
                instance = new ExpressionNode(nodeid.Value, node.Name, await compiler.CompileCodeAsync(parameters.Code, parameters.Language));
                break;

            case NodeType.Script:
                instance = new ScriptNode(nodeid.Value, node.Name, node.Parameters.Deserialize <CallWorkableParameters>(), compiler, language);
                break;

            case NodeType.Workflow:
                instance = new WorkflowInstanceNode(nodeid.Value, node.Name, node.Parameters.Deserialize <CallWorkableParameters>(), compiler, language);
                break;

            case NodeType.BinaryOperation:
                BinaryOpParameters binparameters = node.Parameters.Deserialize <BinaryOpParameters>();
                instance = new BinaryNode(nodeid.Value, node.Name, binparameters, compiler);
                break;

            case NodeType.Value:
                ValueParameters valueparameters = node.Parameters.Deserialize <ValueParameters>();
                instance = new ValueNode(nodeid.Value, node.Name, valueparameters.Value, compiler);
                break;

            case NodeType.Suspend:
                instance = new SuspendNode(nodeid.Value, node.Name, node.Parameters.Deserialize <SuspendParameters>());
                break;

            case NodeType.Call:
                instance = new CallNode(nodeid.Value, node.Name, node.Parameters.Deserialize <CallParameters>(), compiler);
                break;

            case NodeType.Iterator:
                instance = new IteratorNode(nodeid.Value, node.Name, node.Parameters.Deserialize <IteratorParameters>(), compiler);
                break;

            case NodeType.Log:
                instance = new LogNode(nodeid.Value, node.Name, compiler, node.Parameters.Deserialize <LogParameters>());
                break;

            default:
                instance = new InstanceNode(nodeid.Value, node.Name);
                break;
            }

            if (!string.IsNullOrEmpty(node.Variable))
            {
                instance = new AssignStateNode(instance, node.Variable, node.VariableOperation, compiler);
            }
            return(instance);
        }
Пример #26
0
            public void OnDraw()
            {
                RefreshCount();

                GUILayout.BeginHorizontal();
                {
                    if (GUILayout.Button("Clear All", GUILayout.Width(100f)))
                    {
                        Clear();
                    }
                    m_LockScroll = GUILayout.Toggle(m_LockScroll, "Lock Scroll", GUILayout.Width(90f));
                    GUILayout.FlexibleSpace();
                    m_InfoFilter    = GUILayout.Toggle(m_InfoFilter, Utility.Text.Format("Info ({0})", m_InfoCount.ToString()), GUILayout.Width(90f));
                    m_WarningFilter = GUILayout.Toggle(m_WarningFilter, Utility.Text.Format("Warning ({0})", m_WarningCount.ToString()), GUILayout.Width(90f));
                    m_ErrorFilter   = GUILayout.Toggle(m_ErrorFilter, Utility.Text.Format("Error ({0})", m_ErrorCount.ToString()), GUILayout.Width(90f));
                    m_FatalFilter   = GUILayout.Toggle(m_FatalFilter, Utility.Text.Format("Fatal ({0})", m_FatalCount.ToString()), GUILayout.Width(90f));
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginVertical("box");
                {
                    if (m_LockScroll)
                    {
                        m_LogScrollPosition.y = float.MaxValue;
                    }

                    m_LogScrollPosition = GUILayout.BeginScrollView(m_LogScrollPosition);
                    {
                        bool selected = false;
                        foreach (LogNode logNode in m_LogNodes)
                        {
                            switch (logNode.LogType)
                            {
                            case LogType.Log:
                                if (!m_InfoFilter)
                                {
                                    continue;
                                }
                                break;

                            case LogType.Warning:
                                if (!m_WarningFilter)
                                {
                                    continue;
                                }
                                break;

                            case LogType.Error:
                                if (!m_ErrorFilter)
                                {
                                    continue;
                                }
                                break;

                            case LogType.Exception:
                                if (!m_FatalFilter)
                                {
                                    continue;
                                }
                                break;
                            }
                            if (GUILayout.Toggle(m_SelectedNode == logNode, GetLogString(logNode)))
                            {
                                selected = true;
                                if (m_SelectedNode != logNode)
                                {
                                    m_SelectedNode        = logNode;
                                    m_StackScrollPosition = Vector2.zero;
                                }
                            }
                        }
                        if (!selected)
                        {
                            m_SelectedNode = null;
                        }
                    }
                    GUILayout.EndScrollView();
                }
                GUILayout.EndVertical();

                GUILayout.BeginVertical("box");
                {
                    m_StackScrollPosition = GUILayout.BeginScrollView(m_StackScrollPosition, GUILayout.Height(100f));
                    {
                        if (m_SelectedNode != null)
                        {
                            GUILayout.BeginHorizontal();
                            Color32 color = GetLogStringColor(m_SelectedNode.LogType);
                            GUILayout.Label(Utility.Text.Format("<color=#{0}{1}{2}{3}><b>{4}</b></color>", color.r.ToString("x2"), color.g.ToString("x2"), color.b.ToString("x2"), color.a.ToString("x2"), m_SelectedNode.LogMessage));
                            if (GUILayout.Button("COPY", GUILayout.Width(60f), GUILayout.Height(30f)))
                            {
                                TextEditor textEditor = new TextEditor();
                                textEditor.text = Utility.Text.Format("{0}\n\n{1}", m_SelectedNode.LogMessage, m_SelectedNode.StackTrack);
                                textEditor.OnFocus();
                                textEditor.Copy();
                            }
                            GUILayout.EndHorizontal();
                            GUILayout.Label(m_SelectedNode.StackTrack);
                        }
                        GUILayout.EndScrollView();
                    }
                }
                GUILayout.EndVertical();
            }
Пример #27
0
 public HashSet <string> variables;                  //the set of each variable
 public RootNode(LogNode nx, HashSet <string> varis) //constructor. never intended to have a RootNode with out a child hence no defualt constructor also should have a path to a ValNode to be a proper and useful logcal tree.
 {
     variables = varis;
     next      = nx;
 }
Пример #28
0
 public IfNode(LogNode R, LogNode L)//constructor. must have a left and right child.
 {
     leftNode  = L;
     rightNode = R;
 }
Пример #29
0
 public ParNode(LogNode R)
 {
     rightNode = R;
 }
Пример #30
0
 public NotNode(LogNode R)//cannot exist without a value to operate on
 {
     rightNode = R;
 }