Exemple #1
0
        //called when data for any output pin is requested
        public void Evaluate(int SpreadMax)
        {
            if (_keysready && _valsready && _typeChanged)
            {
                PrepareDict(false);
                _typeChanged = false;
                ((object)_dict).NotifyChange();
            }

            if (_keysready && _valsready && _dict != null)
            {
                PrepareDict(true);

                Clear();
                ResetDefault();
                Set();
                RemoveAdd();
                Remove();
                Get();
                _dictout.SetReflectedChanged(false);
                if (_dictout[0]?.GetHashCode() != _dict?.GetHashCode())
                {
                    _dictout.SetReflectedChanged(true);
                    _dictout[0] = _dict;
                }
            }
        }
Exemple #2
0
        //called when data for any output pin is requested
        public void Evaluate(int SpreadMax)
        {
            if (_keysready && _valsready && _typeChanged)
            {
                PrepareDict(false);
                _typeChanged = false;
                ((object)_dict).NotifyChange();
            }

            if (_keysready && _valsready && _dict != null)
            {
                PrepareDict(true);

                Clear();
                ResetDefault();
                Set();
                RemoveAdd();
                Remove();
                Get();

                var changed = FChanged[0];

                _dictout.SetReflectedChanged(false);
                if (_dictout[0]?.GetHashCode() != _dict?.GetHashCode())
                {
                    _dictout.SetReflectedChanged(true);
                    _dictout[0] = _dict;
                    changed     = true;
                }

                _outKeys.SetReflectedChanged(false);
                _queryVals.SetReflectedChanged(false);

                if (changed || _getKeys.Spread.IsChanged || FGetAll.IsChanged)
                {
                    _outKeys.SetReflectedChanged(true);
                    _queryVals.SetReflectedChanged(true);
                }
            }
        }
        //called when data for any output pin is requested
        public void Evaluate(int SpreadMax)
        {
            if (!_pgready)
            {
                return;
            }
            if (_typeChanged || _firstFrame || Input.IsChanged)
            {
                Success.SliceCount        = Input.SliceCount;
                _output.Spread.SliceCount = Input.SliceCount;
                _input.ResizeAndDismiss(Input.SliceCount, i => new byte[0]);

                for (int i = 0; i < Input.SliceCount; i++)
                {
                    if (Input[i] != null && _input[i].Length < Input[i].Length)
                    {
                        _input[i] = new byte[Input[i].Length];
                    }

                    if (Input[i] == null || Input[i].Read(_input[i], 0, (int)Input[i].Length) <= 0)
                    {
                        _output[i] = null;
                        continue;
                    }

                    try
                    {
                        if (_output[i] == null)
                        {
                            _output[i] = _ceras.Deserialize <object>(_input[i]);
                        }
                        else
                        {
                            var obj = _output[i];
                            _ceras.Deserialize(ref obj, _input[i]);
                            _output[i] = obj;
                        }
                        Success[i] = true;
                    }
                    catch
                    {
                        Success[i] = false;
                        _ceras     = CerasSerializerHelper.Serializer();
                        _output[i] = null;
                        continue;
                    }
                }
                _output.SetReflectedChanged(true);
            }
            else
            {
                _output.SetReflectedChanged(false);
            }

            if (_firstFrame)
            {
                _firstFrame = false;
            }
            if (_typeChanged)
            {
                _typeChanged = false;
            }
        }