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;
- }
- }
- }
|