Beispiel #1
0
        public void Insert(TItem newItem)
        {
            TItem currentNodeValue = NodeData;

            if (currentNodeValue.CompareTo(newItem) > 0)
            {
                //Insert the new item to left subtree
                if (LeftTree == null)
                {
                    LeftTree = new Tree <TItem>(newItem);
                }
                else
                {
                    LeftTree.Insert(newItem);
                }
            }
            else
            {
                //Insert the new item to right subtree
                if (RightTree == null)
                {
                    RightTree = new Tree <TItem>(newItem);
                }
                else
                {
                    RightTree.Insert(newItem);
                }
            }
        }
Beispiel #2
0
            public TreeNode GetNodeWithIndex(int index)
            {
                if (Number.Equals(index))
                {
                    return(this);
                }

                if (LeftTree != null)
                {
                    TreeNode leftIndex = LeftTree.GetNodeWithIndex(index);
                    if (leftIndex != null)
                    {
                        return(leftIndex);
                    }
                }

                if (RightTree != null)
                {
                    TreeNode rightIndex = RightTree.GetNodeWithIndex(index);
                    if (rightIndex != null)
                    {
                        return(rightIndex);
                    }
                }

                return(null);
            }
Beispiel #3
0
        public override void Compile(TScriptData scriptData)
        {
            LeftTree.Compile(scriptData);
            RightTree.Compile(scriptData);
            switch (type)
            {
            case TokenType.PLUS:
                scriptData.CodeList.Add(new AddOpCode());
                break;

            case TokenType.MINUS:
                scriptData.CodeList.Add(new SubOpCode());
                break;

            case TokenType.MUL:
                scriptData.CodeList.Add(new MulOpCode());
                break;

            case TokenType.DIV:
                scriptData.CodeList.Add(new DivOpCode());
                break;

            default:
                break;
            }
        }
Beispiel #4
0
        public void Insert(T item)//create method and pass parameter item
        {
            T currentNodeValue = NodeData;

            if ((currentNodeValue.CompareTo(item)) > 0)
            {
                if (LeftTree == null)
                {
                    LeftTree = new BST <T>(item);
                }
                else
                {
                    LeftTree.Insert(item);
                }
            }
            else
            {
                if (RightTree == null)
                {
                    RightTree = new BST <T>(item);
                }
                else
                {
                    RightTree.Insert(item);
                }
            }
        }
Beispiel #5
0
        public void Insert(TI newItem)
        {
            TI currentNodeValue = NodeData;

            if (currentNodeValue.CompareTo(newItem) > 0)
            {
                if (LeftTree == null)
                {
                    LeftTree = new Tree <TI>(newItem);
                }
                else
                {
                    LeftTree.Insert(newItem);
                }
            }
            else
            {
                if (RightTree == null)
                {
                    RightTree = new Tree <TI>(newItem);
                }
                else
                {
                    RightTree.Insert(newItem);
                }
            }
        }
Beispiel #6
0
 public virtual bool LoadLowestLevelHashs(FileDataIO fileInput)
 {
     if (DataSize <= BaseSize)
     { // sanity
         // lowest level, read hash
         Hash.Read(fileInput);
         //theApp.AddDebugLogLine(false,Hash.GetString());
         HashValid = true;
         return(true);
     }
     else
     {
         ulong nBlocks = DataSize / BaseSize + ((DataSize % BaseSize != 0) ? (ulong)1 : (ulong)0);
         ulong nLeft   = (((IsLeftBranch) ? nBlocks + 1 : nBlocks) / 2) * BaseSize;
         ulong nRight  = DataSize - nLeft;
         if (LeftTree == null)
         {
             LeftTree = MuleApplication.Instance.AICHObjectManager.CreateAICHHashTree(nLeft, true, (nLeft <= MuleConstants.PARTSIZE) ? MuleConstants.EMBLOCKSIZE : MuleConstants.PARTSIZE);
         }
         if (RightTree == null)
         {
             RightTree = MuleApplication.Instance.AICHObjectManager.CreateAICHHashTree(nRight, false, (nRight <= MuleConstants.PARTSIZE) ? MuleConstants.EMBLOCKSIZE : MuleConstants.PARTSIZE);
         }
         return(LeftTree.LoadLowestLevelHashs(fileInput) &&
                RightTree.LoadLowestLevelHashs(fileInput));
     }
 }
Beispiel #7
0
 public virtual bool WriteLowestLevelHashs(FileDataIO fileDataOut, uint wHashIdent, bool bNoIdent, bool b32BitIdent)
 {
     wHashIdent <<= 1;
     wHashIdent  |= (IsLeftBranch) ? (uint)1 : (uint)0;
     if (LeftTree == null && RightTree == null)
     {
         if (DataSize <= BaseSize && HashValid)
         {
             if (!bNoIdent && !b32BitIdent)
             {
                 fileDataOut.WriteUInt16((ushort)wHashIdent);
             }
             else if (!bNoIdent && b32BitIdent)
             {
                 fileDataOut.WriteUInt32(wHashIdent);
             }
             Hash.Write(fileDataOut);
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else if (LeftTree == null || RightTree == null)
     {
         return(false);
     }
     else
     {
         return(LeftTree.WriteLowestLevelHashs(fileDataOut, wHashIdent, bNoIdent, b32BitIdent) &&
                RightTree.WriteLowestLevelHashs(fileDataOut, wHashIdent, bNoIdent, b32BitIdent));
     }
 }
Beispiel #8
0
 public void PrintInorderTraversal()
 {
     if (LeftTree != null)
     {
         LeftTree.PrintInorderTraversal();
     }
     Console.Write(Number + " ");
     if (RightTree != null)
     {
         RightTree.PrintInorderTraversal();
     }
 }
Beispiel #9
0
 private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
 {
     if (FChangeExecuting)
     {
         return;
     }
     FChangeExecuting      = true;
     LeftTree.SelectedNode = e.Node;
     LeftTree.BeginUpdate();
     CheckAllChildNodes(e.Node, e.Node.Checked);
     LeftTree.EndUpdate();
     FChangeExecuting = false;
 }
Beispiel #10
0
        public void WalkTree()
        {
            if (LeftTree != null)
            {
                LeftTree.WalkTree();
            }

            Console.WriteLine(NodeData.ToString());

            if (RightTree != null)
            {
                RightTree.WalkTree();
            }
        }
Beispiel #11
0
 public void Display()
 {
     if (LeftTree != null)
     {
         LeftCount++;
         LeftTree.Display();
     }
     Console.Write(NodeData.ToString() + "-->");
     if (RightTree != null)
     {
         RightCount++;
         RightTree.Display();
     }
 }
Beispiel #12
0
        public string WalkTree()
        {
            string result = "";

            if (LeftTree != null)
            {
                result = LeftTree.WalkTree();
            }
            result += $" {NodeData.ToString()} ";
            if (this.RightTree != null)
            {
                result += RightTree.WalkTree();
            }
            return(result);
        }
Beispiel #13
0
 public void SwapTreesAtHeight(int h)
 {
     if (Depth % h == 0)
     {
         var temp = LeftTree;
         LeftTree  = RightTree;
         RightTree = temp;
     }
     if (LeftTree != null)
     {
         LeftTree.SwapTreesAtHeight(h);
     }
     if (RightTree != null)
     {
         RightTree.SwapTreesAtHeight(h);
     }
 }
Beispiel #14
0
        public string WalkTree()
        {
            var result = "";

            if (LeftTree != null)
            {
                result = LeftTree.WalkTree();
            }

            result += string.Format(" {0} ", NodeData);

            if (RightTree != null)
            {
                result += RightTree.WalkTree();
            }

            return(result);
        }
Beispiel #15
0
        private void openPccToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog opf = new OpenFileDialog();

            opf.Title       = "Select game package on disk";
            opf.Filter      = "Mass Effect Package|*.pcc;*.sfm;*.upk";
            opf.Multiselect = true;

            if (opf.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    int NoMorphPcc = 0;
                    this.Cursor = Cursors.WaitCursor;
                    foreach (string pccPath in opf.FileNames)
                    {
                        TreeNode node = data.BuildPccTree(pccPath);
                        if (node != null)
                        {
                            LeftTree.Nodes.Add(node);
                            LeftTree.Refresh();
                        }
                        else
                        {
                            NoMorphPcc++;
                        }
                    }
                    if (NoMorphPcc > 0)
                    {
                        MessageBox.Show("Some pcc files were not added because they do not contain any morph or because they have been already added to the tree before.");
                    }
                }
                catch (ArgumentException ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    this.Cursor = Cursors.Default;
                }
            }
        }
        public IEnumerable <TItem> PreOrder(TItem node)
        {
            if (node != null)
            {
                yield return(node);

                if (LeftTree != null)
                {
                    foreach (var x in LeftTree.PreOrder(LeftTree.Node))
                    {
                        yield return(x);
                    }
                }
                if (RightTree != null)
                {
                    foreach (var x in RightTree.PreOrder(RightTree.Node))
                    {
                        yield return(x);
                    }
                }
            }
        }
Beispiel #17
0
        public bool SetHash(FileDataIO fileInput, uint wHashIdent, sbyte nLevel, bool bAllowOverwrite)
        {
            if (nLevel == -1)
            {
                // first call, check how many level we need to go
                byte i;
                for (i = 0; i != 32 && (wHashIdent & 0x80000000) == 0; i++)
                {
                    wHashIdent <<= 1;
                }

                if (i > 31)
                {
                    //TODO:Log
                    //theApp.QueueDebugLogLine(/*DLP_HIGH,*/ false, _T("CAICHHashTree::SetHash - found invalid HashIdent (0)"));
                    return(false);
                }
                else
                {
                    nLevel = (sbyte)(31 - i);
                }
            }
            if (nLevel == 0)
            {
                // this is the searched hash
                if (HashValid && !bAllowOverwrite)
                {
                    // not allowed to overwrite this hash, however move the filepointer by reading a hash
                    AICHHash hash = MuleApplication.Instance.AICHObjectManager.CreateAICHHash(fileInput);

                    return(true);
                }

                Hash.Read(fileInput);
                HashValid = true;
                return(true);
            }
            else if (DataSize <= BaseSize)
            { // sanity
              // this is already the last level, cant go deeper

                return(false);
            }
            else
            {
                // adjust ident to point the path to the next node
                wHashIdent <<= 1;
                nLevel--;
                ulong nBlocks = DataSize / BaseSize + ((DataSize % BaseSize != 0) ? (ulong)1 : (ulong)0);
                ulong nLeft   = (((IsLeftBranch) ? nBlocks + 1 : nBlocks) / 2) * BaseSize;
                ulong nRight  = DataSize - nLeft;
                if ((wHashIdent & 0x80000000) > 0)
                {
                    if (LeftTree == null)
                    {
                        LeftTree = MuleApplication.Instance.AICHObjectManager.CreateAICHHashTree(nLeft, true, (nLeft <= MuleConstants.PARTSIZE) ? MuleConstants.EMBLOCKSIZE : MuleConstants.PARTSIZE);
                    }
                    return(LeftTree.SetHash(fileInput, wHashIdent, nLevel));
                }
                else
                {
                    if (RightTree == null)
                    {
                        RightTree = MuleApplication.Instance.AICHObjectManager.CreateAICHHashTree(nRight, false, (nRight <= MuleConstants.PARTSIZE) ? MuleConstants.EMBLOCKSIZE : MuleConstants.PARTSIZE);
                    }
                    return(RightTree.SetHash(fileInput, wHashIdent, nLevel));
                }
            }
        }
 public int GetCount()
 {
     return(1 + (LeftTree?.GetCount() ?? 0) + (RightTree?.GetCount() ?? 0));
 }
Beispiel #19
0
 private void SortButton_Click(object sender, EventArgs e)
 {
     LeftTree.Sort();
 }
Beispiel #20
0
        private void CompileButton_Click(object sender, EventArgs e)
        {
            XmlDataDocument xmldoc = new XmlDataDocument();
            XmlNodeList     xmlnode, xmlCheck;

            FTokenLst.Clear();
            string StartupPath = Application.StartupPath;

            if (StartupPath[StartupPath.Length - 1] != '\\')
            {
                StartupPath += '\\';
            }
            FileStream fs = new FileStream(StartupPath + "SQLScriptSorterConfig.xml", FileMode.Open, FileAccess.Read);

            xmldoc.Load(fs);
            xmlnode = xmldoc.GetElementsByTagName("SQLScript");
            for (int i = 0; i < xmlnode.Count; i++)
            {
                XmlNode  XmlN  = xmlnode[i];
                TreeNode TreeN = LeftTree.Nodes.Add(XmlN.Attributes["TreeName"].Value);
                switch (XmlN.Attributes["TreeKey"].Value.ToUpper())
                {
                case "FUN":
                    TreeN.ImageIndex = 0;
                    break;

                case "VIEW":
                    TreeN.ImageIndex = 3;
                    break;

                case "TABLE":
                    TreeN.ImageIndex = 2;
                    break;

                case "PROC":
                    TreeN.ImageIndex = 1;
                    break;
                }
                TreeN.StateImageIndex = TreeN.SelectedImageIndex = TreeN.ImageIndex;
                FTokenLst.Add(new TokenItem(TreeN, XmlN.InnerText));
            }

            xmlCheck = xmldoc.GetElementsByTagName("MissObject");

            for (int i = 0; i < xmlCheck.Count; i++)
            {
                XmlNode CheckXml = xmlCheck[i];

                for (int j = 0; j < xmlnode.Count; j++)
                {
                    XmlNode XmlN = xmlnode[j];
                    if (CheckXml.Attributes["TreeKey"].Value == XmlN.Attributes["TreeKey"].Value)
                    {
                        NotCheckedId.Add(XmlN.Attributes["TreeName"].Value);
                        break;
                    }
                }
                eScript.Text += NotCheckedId[i].ToString() + "\n";
                NotCheckedValue.Add(CheckXml.InnerText);
                eScript.Text += NotCheckedValue[i].ToString() + "\n";
            }
            fs.Close();

            string     ScriptTxt = "";
            ScriptItem ScriptI   = null;

            for (int i = 0; i < SQLFileList.Count; i++)
            {
                string LineTxt    = SQLFileList[i].ToUpper();
                string ScriptName = SQLFileList[i];
                if (LineTxt.Length > 6 && LineTxt.Substring(0, 6) == "CREATE")
                {
                    ScriptTxt = "";
                    string t1 = LineTxt.Remove(0, 7);
                    ScriptName = ScriptName.Remove(0, 7);
                    int SpacePos = t1.IndexOf(" ");
                    if (SpacePos > 0)
                    {
                        string    TokenKind = t1.Substring(0, SpacePos);
                        TokenItem TokenI    = FTokenLst.GetItem(TokenKind);
                        if (TokenI != null)
                        {
                            ScriptI = new ScriptItem(ScriptName);
                            TokenI.Scripts.Add(ScriptI);
                        }
                    }
                }
                if (SQLFileList[i].Trim() != "")
                {
                    if (ScriptTxt != "")
                    {
                        ScriptTxt += Environment.NewLine;
                    }
                    ScriptTxt += SQLFileList[i];
                }
                if (SQLFileList[i] == "GO")
                {
                    if (ScriptI != null)
                    {
                        ScriptI.Text = ScriptTxt;
                    }
                    ScriptI   = null;
                    ScriptTxt = "";
                }
            }
            LeftTree.BeginUpdate();
            FTokenLst.BuildTree();
            foreach (TreeNode N in LeftTree.Nodes)
            {
                N.Expand();
            }
            LeftTree.EndUpdate();
            SaveCompileTextButton.Enabled = true;
            CompileButton.Enabled         = false;
        }