message: added Column.ofIntTokens, .ofFloatTokens, .ofStringTokens
diff: /**
  - * Copyright (c) 2017-2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
  + * Copyright (c) 2017-2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
  import * as ColumnHelpers from './column-helpers'
  import { Tensor as Tensors } from '../../mol-math/linear-algebra'
  +import { Tokens } from '../../mol-io/reader/common/text/tokenizer';
  +import { parseInt as fastParseInt, parseFloat as fastParseFloat } from '../../mol-io/reader/common/text/number-parser';
  interface Column<T> {
  readonly schema: Column.Schema,
  @@ -128,6 +130,37 @@ namespace Column {
  return arrayColumn({ array, schema: Schema.str });
  }
  + export function ofIntTokens(tokens: Tokens) {
  + const { count, data, indices } = tokens
  + return lambdaColumn({
  + value: (row: number) => fastParseInt(data, indices[2 * row], indices[2 * row + 1]) || 0,
  + rowCount: count,
  + schema: Schema.int,
  + });
  + }
  +
  + export function ofFloatTokens(tokens: Tokens) {
  + const { count, data, indices } = tokens
  + return lambdaColumn({
  + value: (row: number) => fastParseFloat(data, indices[2 * row], indices[2 * row + 1]) || 0,
  + rowCount: count,
  + schema: Schema.float,
  + });
  + }
  +
  + export function ofStringTokens(tokens: Tokens) {
  + const { count, data, indices } = tokens
  + return lambdaColumn({
  + value: (row: number) => {
  + const ret = data.substring(indices[2 * row], indices[2 * row + 1]);
  + if (ret === '.' || ret === '?') return '';
  + return ret;
  + },
  + rowCount: count,
  + schema: Schema.str,
  + });
  + }
  +
  export function window<T>(column: Column<T>, start: number, end: number) {
  return windowColumn(column, start, end);
  }
  