view src/app/services/feature-extraction/FeatureReducers.ts @ 509:041468f553e1 tip master

Merge pull request #57 from LucasThompson/fix/session-stack-max-call-stack Fix accidental recursion in PersistentStack
author Lucas Thompson <LucasThompson@users.noreply.github.com>
date Mon, 27 Nov 2017 11:04:30 +0000
parents c39df81c4dae
children
line wrap: on
line source
/**
 * Created by lucast on 26/04/2017.
 */
import {StreamingResponse} from 'piper-js/streaming';

export const arrayReducer = <T>(acc: T[], val: T[]): T[] => {
  const len = val.length;
  for (let i = 0; i < len; ++i) {
    acc.push(val[i]);
  }
  return acc;
};

export const typedArrayReducer = (acc: Float32Array,
                                  val: Float32Array): Float32Array => {
  return Float32Array.of(...acc, ...val);
};

const inPlaceTypedArrayReducer = (acc: Float32Array,
                                  val: Float32Array,
                                  i: number): Float32Array => {
  acc.set(val, i);
  return acc;
};

export const streamingResponseReducer = (acc: StreamingResponse,
                                         val: StreamingResponse):
  StreamingResponse => {
  acc.progress = val.progress;
  if (val.configuration) {
    acc.configuration = val.configuration;
  }
  arrayReducer(acc.features, val.features);
  return acc;
};