Ejemplo n.º 1
0
        /// <summary>
        /// Load cache
        /// </summary>
        /// <returns>Return cached columns</returns>
        public ValueTableColumn[] LoadCache()
        {
            Dictionary <ValueTableColumn, ArrayV8> columnValuesByIndex = new Dictionary <ValueTableColumn, ArrayV8>();

            for (int i = 0; i < Columns.Count; i++)
            {
                var col = Columns[i];

                try
                {
                    var valueTypes = col.ValueType.Types;
                    if (valueTypes.Length != 1 || valueTypes[0].Type == TypeEnum.Unknown)
                    {
                        continue;
                    }
                }
                catch
                {
                    continue;
                }


                ArrayV8 columnValuesArr = UnloadColumn(col);
                columnValuesArr.LoadCache();
                columnValuesByIndex[col] = columnValuesArr;
            }

            if (columnValuesByIndex.Count == 0)
            {
                return(new ValueTableColumn[0]);
            }

            int rowsCount = this.Count;

            for (int i = 0; i < rowsCount; i++)
            {
                ValueTableRow row = (ValueTableRow)GetIndexerFromCache(
                    i.ToString(),
                    () => new ValueTableRow(this, i)
                    );

                foreach (KeyValuePair <ValueTableColumn, ArrayV8> pair in columnValuesByIndex)
                {
                    row[pair.Key] = pair.Value[i];
                }
            }

            ValueTableColumn[] cachedColumns = new ValueTableColumn[columnValuesByIndex.Count];
            columnValuesByIndex.Keys.CopyTo(cachedColumns, 0);
            Array.Sort(cachedColumns, (a, b) => System.Collections.Comparer.DefaultInvariant.Compare(a.Index, b.Index));

            return(cachedColumns);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// ЗагрузитьКолонку (LoadColumn)
 /// </summary>
 /// <param name="values"></param>
 /// <param name="columnName"></param>
 public void LoadColumn(ArrayV8 values, string columnName)
 {
     InvokeV8Method("LoadColumn", values.Ptr, columnName);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// ЗагрузитьКолонку (LoadColumn)
 /// </summary>
 /// <param name="values"></param>
 /// <param name="columnIndex"></param>
 public void LoadColumn(ArrayV8 values, int columnIndex)
 {
     InvokeV8Method("LoadColumn", values.Ptr, columnIndex);
 }