static void Main()
        {
            // CArray nums = new CArray(10);
            // Random rnd = new Random(100);
            // for(int i = 0; i < 10; i++)
            //     nums.Insert((int)(rnd.NextDouble() * 100));
            // nums.DisplayElements();

            // Console.WriteLine("Before sorting: \n");
            // nums.DisplayElements();
            // Console.WriteLine("During sorting: \n");
            // //nums.BubbleSort();
            // //nums.SelectionSort();
            // nums.InsertionSort();
            // Console.WriteLine("After sorting: \n");
            // nums.DisplayElements();

            Timing sortTime = new Timing();
            Random rnd      = new Random(100);
            int    numItems = 10000;
            CArray theArray = new CArray(numItems);

            for (int i = 0; i < numItems; i++)
            {
                theArray.Insert((int)(rnd.NextDouble() * 100));
            }
            sortTime.startTime();
            theArray.SelectionSort();
            sortTime.stopTime();
            Console.WriteLine("Time for Selection sort: " +
                              sortTime.Result().TotalMilliseconds);

            theArray.Clear();

            for (int i = 0; i < numItems; i++)
            {
                theArray.Insert((int)(rnd.NextDouble() * 100));
            }
            sortTime.startTime();
            theArray.BubbleSort();
            sortTime.stopTime();
            Console.WriteLine("Time for Bubble sort: " +
                              sortTime.Result().
                              TotalMilliseconds);

            theArray.Clear();

            for (int i = 0; i < numItems; i++)
            {
                theArray.Insert((int)(rnd.NextDouble() * 100));
            }
            sortTime.startTime();
            theArray.InsertionSort();
            sortTime.stopTime();
            Console.WriteLine("Time for Insertion sort: " +
                              sortTime.Result().
                              TotalMilliseconds);
        }
Beispiel #2
0
        public void RemoveAtRange(int aIndex, int aCount)
        {
            m_Count -= aCount;
            if (aIndex < m_Count)
            {
                Array.Copy(m_Array, aIndex + aCount, m_Array, aIndex, m_Count - aIndex);
            }

            CArray.Clear(m_Array, m_Count, aCount);
        }
Beispiel #3
0
        /// <summary>
        /// Make a continuous data block ,begin with 0 index,better for iterator
        /// </summary>
        public void Compress()
        {
            if (m_Count == m_EndIndex)
            {
                return;
            }

            int i      = 0;
            int a      = 0;
            var aItems = m_Entities;

            while (i < m_EndIndex)
            {
                if (aItems[i].m_Hashcode < 0)
                {
                    ++i;
                    continue;
                }
                if (a != i)
                {
                    aItems[a] = aItems[i];
                }

                ++a;
                ++i;
            }

            //clear
            i = a;
            while (i < m_EndIndex)
            {
                aItems[i].m_Key = default;
                m_Values[i]     = default;
                ++i;
            }

            //rebuild
            m_EndIndex = m_Count = a;
            i          = 0;
            int aLen = m_Buckets.Length;

            CArray.Clear(m_Buckets, 0, aLen);
            while (i < m_EndIndex)
            {
                a = aItems[i].m_Hashcode % aLen;
                aItems[i].m_Next = m_Buckets[a] - 1;
                m_Buckets[a]     = ++i;
            }
        }
Beispiel #4
0
        /// <summary>
        /// Compress and sort the data.
        /// </summary>
        public void SortByValue(IComparer <Value> aComparer)
        {
            int i      = 0;
            int a      = 0;
            var aItems = m_Entities;

            while (i < m_EndIndex)
            {
                if (aItems[i].m_Hashcode < 0)
                {
                    ++i;
                    continue;
                }
                if (a != i)
                {
                    aItems[a] = aItems[i];
                }

                ++a;
                ++i;
            }

            //clear
            i = a;
            while (i < m_EndIndex)
            {
                aItems[i].m_Key = default;
                m_Values[i]     = default;
                ++i;
            }

            QuickSortValue(0, a, aComparer);

            //rebuild
            m_EndIndex = m_Count = a;
            i          = 0;
            int aLen = m_Buckets.Length;

            CArray.Clear(m_Buckets, 0, aLen);
            while (i < m_EndIndex)
            {
                a = aItems[i].m_Hashcode % aLen;
                aItems[i].m_Next = m_Buckets[a] - 1;
                m_Buckets[a]     = ++i;
            }
        }
Beispiel #5
0
        private void Execute()
        {
            try
            {
                SetAmbientContext();

                var toExecutes = new CArray <CAction>();

                while (_running)
                {
                    lock (_sync)
                        _readyToSchedules.MoveAllTo(toExecutes);

                    if (toExecutes.Count == 0)
                    {
                        lock (_sync)
                        {
                            _synchronizationQueue.MoveAllTo(_readyToSchedules);

                            _objectStore.Persist(_detectCircularDependencies);
                        }
                    }
                    else
                    {
                        foreach (var toExecute in toExecutes)
                        {
                            try
                            {
                                toExecute.Action();
                            }
                            catch
                            {
                                //todo let the world around know about the fact that a work item threw an exception
                            }
                        }

                        toExecutes.Clear();
                    }
                }
            }
            catch (Exception e)
            {
                lock (_sync)
                    _excepted = e;
            }
        }
Beispiel #6
0
        public void Clear()
        {
            if (m_Count != 0)
            {
                int aCount = m_Array.Length - m_Head;
                if (m_Count > aCount)
                {
                    CArray.Clear(m_Array, m_Head, aCount);
                    CArray.Clear(m_Array, 0, m_Count - aCount);
                }
                else
                {
                    CArray.Clear(m_Array, m_Head, m_Count);
                }
            }

            m_Head  = 0;
            m_Count = 0;
        }
Beispiel #7
0
    }    //FOLD00

    //  Процедура построения выписки//FOLD00
    public bool    Build()
    {
        bool Result    = false;
        long OldRootId = 0;

        OldBranchId       = -1;
        OldUserId         = -1;
        FileName1         = "";
        FileName2         = "";
        NeedNewFileCreate = true;
        Accounts          = new   CRecordSet(Conn1);
        if (Accounts.Open(GetCmdText(1)))
        {
            if (Accounts.Read())
            {
                CArray AccountList = new   CArray();
                do
                {
                    MapAccountFields();
                    AccountList.Add(
                        __.Left(Accounts_Code, 32)
                        + __.Left(Accounts_Tag, 8)
                        + __.Left(Accounts_Id.ToString().Trim(), 20)
                        + __.Left(Accounts_ExtId.ToString().Trim(), 20)
                        + __.Left(Accounts_RootId.ToString().Trim(), 20)
                        + __.Left(Accounts_UserId.ToString().Trim(), 20)
                        + __.Left(Accounts_BranchId.ToString().Trim(), 20)
                        + Accounts_Path
                        );
                } while (Accounts.Read());
                Accounts.Close();
                BankInfo = new   CRecordSet(Conn1);
                if (BankInfo.Open(" select Code,Name,MainCrncyTag from dbo.vMega_Common_MyBankInfo "))
                {
                    if (BankInfo.Read())
                    {
                        BankCode     = BankInfo["Code"].Trim();
                        BankName     = __.FixUkrI(BankInfo["Name"]);
                        MainCrncyTag = BankInfo["MainCrncyTag"].Trim();
                    }
                }
                BankInfo.Close();
                BankInfo  = null;
                Amounts   = new   CRecordSet(Conn1);
                Transfers = new   CRecordSet(Conn2);
                foreach (string Account in AccountList)
                {
                    Accounts_Code     = Account.Substring(0, 32).Trim();
                    Accounts_Tag      = Account.Substring(32, 8).Trim();
                    Accounts_Id       = __.CLng(Account.Substring(40, 20).Trim());
                    Accounts_ExtId    = __.CLng(Account.Substring(60, 20).Trim());
                    Accounts_RootId   = __.CLng(Account.Substring(80, 20).Trim());
                    Accounts_UserId   = __.CLng(Account.Substring(100, 20).Trim());
                    Accounts_BranchId = __.CLng(Account.Substring(120, 20).Trim());
                    Accounts_Path     = Account.Substring(140);
                    OpenOutputStreams();
                    if (Accounts_RootId == 0)
                    {
                        PrintAccount();
                    }
                    if ((Accounts_RootId != 0) &&
                        (Accounts_RootId != OldRootId)
                        )
                    {
                        OldRootId = Accounts_RootId;
                        PrintAccount();
                    }
                }
                ;
                AccountList.Clear();
                AccountList = null;
                CloseOutputStreams();
                Transfers.Close();
                Amounts.Close();
                Result = true;
            }
            else
            {
                Accounts.Close();
            }
        }
        else
        {
            Accounts.Close();
        }
        Transfers = null;
        Accounts  = null;
        Amounts   = null;
        return(Result);
    }                            //FOLD00
Beispiel #8
0
 public void Clear()
 {
     CArray.Clear(m_Array, 0, m_Count);
     m_Count = 0;
 }
Beispiel #9
0
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    //	Вычитка списка пунктов открытия/закрытия дня
    static bool    LoadHistory(int Mode)
    {
        int MenuItemWidth = (Mode == 1) ? 32 : 25;

        Connection = new CConnection(ConnectionString);
        RecordSet  = new   CRecordSet(Connection);
        bool Result = false;

        if (RecordSet.Open("exec Mega_Day_Close;10  @DayDate=" + DayDate.ToString() + " , @Mode= " + Mode.ToString()))
        {
            while (RecordSet.Read())
            {
                if (CCommon.CInt(RecordSet["Cnt"]) == 0)
                {
                    MNames.Add(CCommon.Left(RecordSet["Name"], MenuItemWidth) + "*");
                }
                else
                {
                    MNames.Add(CCommon.Left(RecordSet["Name"], MenuItemWidth) + "* " + RecordSet["Cnt"].Trim());
                }
                MCommands.Add(RecordSet["Command"]);
                MParams.Add(RecordSet["Params"]);
                MKinds.Add(RecordSet["Kind"]);
                Result = true;
            }
        }
        else
        {
            Result = false;
        }
        RecordSet.Close();
        int MenuCount = MNames.Count;

        MenuNames    = new   string[MenuCount];
        MenuKinds    = new   string[MenuCount];
        MenuParams   = new   string[MenuCount];
        MenuCommands = new   string[MenuCount];
        MenuCount    = 0;
        foreach (string MenuName in MNames)
        {
            MenuNames[MenuCount++] = MenuName;
        }
        MenuCount = 0;
        foreach (string MenuKind in MKinds)
        {
            MenuKinds[MenuCount++] = MenuKind;
        }
        MenuCount = 0;
        foreach (string MenuParam in MParams)
        {
            MenuParams[MenuCount++] = MenuParam;
        }
        MenuCount = 0;
        foreach (string MenuCommand in MCommands)
        {
            MenuCommands[MenuCount++] = MenuCommand;
        }
        MCommands.Clear();
        MParams.Clear();
        MKinds.Clear();
        MNames.Clear();
        Connection.Close();
        return(Result);
    }