Exemplo n.º 1
0
        private ArrayView PackDefinitions(TSystemType?[] data, int maxDefinitionLevel, out int[] definitionLevels, out int definitionsLength, out int nullCount)
        {
            definitionLevels  = IntPool.Rent(data.Length);
            definitionsLength = data.Length;

            WritableArrayView <TSystemType> result = ArrayView.CreateWritable <TSystemType>(data.Length);
            int ir = 0;

            nullCount = 0;

            for (int i = 0; i < data.Length; i++)
            {
                TSystemType?value = data[i];

                if (value == null)
                {
                    definitionLevels[i] = 0;
                    nullCount++;
                }
                else
                {
                    definitionLevels[i] = maxDefinitionLevel;
                    result[ir++]        = value.Value;
                }
            }

            return(result);
        }
        protected ArrayView PackDefinitions <TNullable>(TNullable[] data, int maxDefinitionLevel, out int[] definitionLevels, out int definitionsLength, out int nullCount)
            where TNullable : class
        {
            definitionLevels  = IntPool.Rent(data.Length);
            definitionsLength = data.Length;

            nullCount = 0;
            WritableArrayView <TNullable> result = ArrayView.CreateWritable <TNullable>(data.Length);
            int ir = 0;

            for (int i = 0; i < data.Length; i++)
            {
                TNullable value = data[i];

                if (value == null)
                {
                    definitionLevels[i] = 0;
                    nullCount++;
                }
                else
                {
                    definitionLevels[i] = maxDefinitionLevel;
                    result[ir++]        = value;
                }
            }

            return(result);
        }