| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | import { Types } from './../../ast/types';import { StoreObject } from './storeObject';export class StoreObjectArray extends StoreObject {  constructor (subtype, lines, columns, value, readOnly) {    super(Types.ARRAY, value, readOnly);    this._lines = lines;    this._columns = columns;    this._subtype = subtype;  }  get lines () {    return this._lines;  }  get columns () {    return this._columns;  }  get subtype () {    return this._subtype;  }  isCompatible (another) {    if(another instanceof StoreObjectArray) {      if(this.lines === another.lines &&        this.columns === another.columns &&        this.subtype === another.subtype) {          return super.isCompatible(another);        }    }    return false;  }  get isVector () {    return this.columns === null;  }  get isValid () {    if (this.value !== null) {      if( this.isVector) {        if(this.value.length !== this.lines) {          return false;        }        const mustBeNull = this.value.find(v => v.type !== this.subtype);        if(!!mustBeNull) {          return false;        }      }      return true;    } else {    if(this.lines !== this.value.length) {      return false;    }    for (let i = 0; i < this.lines; i++) {      for (let j = 0; j < this.columns; j++) {        const arr = this.value[i];        if(arr.length !== this.columns) {          return false;        }        const mustBeNull = arr.find(v => v.type !== this.subtype);        if(!!mustBeNull) {          return false;        }                  }    }      return true;    }  }}
 |