Esempio n. 1
0
        public virtual long GetRecordUid(bool allocate = true)
        {
            long result;

            result = -1;

            if (allocate)
            {
                if (FreeUids.Count > 0)
                {
                    result = FreeUids[0];

                    FreeUids.RemoveAt(0);
                }
                else
                {
                    CurrUid++;

                    result = CurrUid;
                }
            }
            else
            {
                result = CurrUid;
            }

            return(result);
        }
Esempio n. 2
0
        public virtual void FreeRecordUid(long uid)
        {
            if (uid < 1)
            {
                // PrintError

                goto Cleanup;
            }

            if (CurrUid == uid)
            {
                CurrUid--;
            }
            else if (!FreeUids.Contains(uid))
            {
                FreeUids.Add(uid);
            }

Cleanup:

            ;
        }
Esempio n. 3
0
        public virtual RetCode FreeRecords(bool dispose = true)
        {
            if (dispose)
            {
                foreach (var record in Records)
                {
                    record.Dispose();
                }
            }

            Records.Clear();

            for (var i = 0; i < Cache.Length; i++)
            {
                Cache[i] = default(T);
            }

            FreeUids.Clear();

            CurrUid = 0;

            return(RetCode.Success);
        }