Пример #1
0
        public static ValList Create(int capacity = 0)
        {
            //Console.WriteLine("ValList create cap = " + capacity + " ID " + _num);
            if (_valuePool == null)
            {
                _valuePool = new ValuePool <ValList>();
            }
            else
            {
                ValList existing = _valuePool.GetInstance();
                if (existing != null)
                {
                    existing._refCount = 1;
                    existing.EnsureCapacity(capacity);
#if MINISCRIPT_DEBUG
                    existing._id = _num++;
#endif
                    return(existing);
                }
            }

#if MINISCRIPT_DEBUG
            _numInstancesAllocated++;
#endif
            return(new ValList(capacity, true));
        }
Пример #2
0
 protected override void ReturnToPool()
 {
     if (!base._poolable)
     {
         return;
     }
     if (_valuePool == null)
     {
         _valuePool = new ValuePool <ValString>();
     }
     _valuePool.ReturnToPool(this);
 }
Пример #3
0
 protected override void ReturnToPool()
 {
     if (!base._poolable)
     {
         return;
     }
     if (_valuePool == null)
     {
         _valuePool = new ValuePool <ValList>();
     }
     _valuePool.ReturnToPool(this);
     //Console.WriteLine("ValList #" + _id + " returned");
 }
Пример #4
0
 protected override void ReturnToPool()
 {
     //Console.WriteLine("Returning ValMap ID " + _id);
     if (!base._poolable)
     {
         return;
     }
     if (_valuePool == null)
     {
         _valuePool = new ValuePool <ValMap>();
     }
     _valuePool.ReturnToPool(this);
 }
Пример #5
0
        public static ValNumber Create(double value)
        {
            //Console.WriteLine("Alloc num " + value + " ID " + (_num));
#if MINISCRIPT_DEBUG
            _instances.Add(_num);
#endif
            // Use a predefined static for common values
            switch (value)
            {
            case -1:
                return(_negativeOne);

            case 0:
                return(_zero);

            case 1:
                return(_one);

            case 2:
                return(_two);

            case 3:
                return(_three);
            }
            if (_valuePool == null)
            {
                _valuePool = new ValuePool <ValNumber>();
            }
            else
            {
                ValNumber val = _valuePool.GetInstance();
                if (val != null)
                {
                    val._refCount = 1;
                    val.value     = value;
#if MINISCRIPT_DEBUG
                    val._id = _num++;
#endif
                    return(val);
                }
            }
#if MINISCRIPT_DEBUG
            _numInstancesAllocated++;
#endif

            return(new ValNumber(value, true));
        }
Пример #6
0
        public bool noInvoke;           // reflects use of "@" (address-of) operator

        public static ValSeqElem Create(Value sequence, Value index)
        {
            if (_valuePool == null)
            {
                _valuePool = new ValuePool <ValSeqElem>();
            }
            else
            {
                ValSeqElem val = _valuePool.GetInstance();
                if (val != null)
                {
                    val.sequence  = sequence;
                    val.index     = index;
                    val._refCount = 1;
                    return(val);
                }
            }
            _numInstancesAllocated++;
            return(new ValSeqElem(sequence, index));
        }
Пример #7
0
        public static ValMap Create()
        {
            //Console.WriteLine("Creating ValMap ID " + _num);
            if (_valuePool == null)
            {
                _valuePool = new ValuePool <ValMap>();
            }
            else
            {
                ValMap valMap = _valuePool.GetInstance();
                if (valMap != null)
                {
                    valMap._refCount = 1;
#if MINISCRIPT_DEBUG
                    valMap._id = _num++;
#endif
                    return(valMap);
                }
            }
#if MINISCRIPT_DEBUG
            _numInstancesAllocated++;
#endif
            return(new ValMap(true));
        }
Пример #8
0
 internal AvailableItemsEnumerator(ValuePool <T> pool)
 {
     _enumerator = pool._availableItems.GetEnumerator();
 }
 public DebugView(ValuePool <T> pool)
 {
     _pool = pool;
 }
Пример #10
0
 internal GraphicsRenderCommandQueue(GraphicsDevice device) : base(device, GraphicsContextKind.Render)
 {
     _contexts      = new ValuePool <GraphicsRenderContext>();
     _contextsMutex = new ValueMutex();
 }
 internal ItemsEnumerator(ValuePool <T> pool)
 {
     _enumerator = pool._items.GetEnumerator();
 }
Пример #12
0
        //TODO add create with ValString for fast add
        public static ValString Create(string val, bool usePool = true)
        {
            if (!usePool)
            {
                return(new ValString(val, false));
            }

            switch (val)
            {
            case "s":
                return(sStr);

            case "self":
                return(selfStr);

            case "to":
                return(toStr);

            case "from":
                return(fromStr);

            case "__isa":
                return(magicIsA);

            case "seq":
                return(seqStr);

            case "super":
                return(superStr);

            case "len":
                return(lenStr);

            case "__events":
                return(eventsStr);

            case "__eventVals":
                return(eventValsStr);

            case "__isAtEnd":
                return(isAtEndStr);

            case "yield":
                return(yieldStr);

            case " ":
                return(spaceStr);

            case "x":
                return(xStr);

            case "y":
                return(yStr);

            case "z":
                return(zStr);

            case "w":
                return(wStr);

            case "name":
                return(nameStr);

            case "position":
                return(positionStr);

            case "rotation":
                return(rotationStr);

            case "velocity":
                return(velocityStr);

            case "angularVelocity":
                return(angularVelocityStr);

            case "forward":
                return(forwardStr);

            case "right":
                return(rightStr);

            case "time":
                return(timeStr);

            case "deltaTime":
                return(deltaTimeStr);

            case "frameCount":
                return(frameCountStr);
            }

            //Console.WriteLine("Alloc str \"" + val + "\" num " + _num);

            if (_valuePool == null)
            {
                _valuePool = new ValuePool <ValString>();
            }
            else
            {
                ValString valStr = _valuePool.GetInstance();
                if (valStr != null)
                {
                    valStr._refCount = 1;
                    valStr.value     = val;
#if MINISCRIPT_DEBUG
                    valStr._id = _num++;
#endif
                    return(valStr);
                }
            }

#if MINISCRIPT_DEBUG
            _numInstancesAllocated++;
#endif
            return(new ValString(val, true));
        }