| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- import { StoreObject } from './storeObject';
 
- import { StoreObjectArray } from './storeObjectArray';
 
- import { CompoundType } from '../../typeSystem/compoundType';
 
- export class StoreObjectArrayAddress extends StoreObject {
 
-   constructor (refID, line, column, store) {
 
-     super(null, null, false);
 
-     this.refID = refID;
 
-     this.store = store;
 
-     this.line = line;
 
-     this.column = column;
 
-   }
 
-   get isRef () {
 
-     return false;
 
-   }
 
-   get inStore () {
 
-     return true;
 
-   }
 
-   get refValue () {
 
-     const refLine = this.store.applyStore(this.refID).value[this.line];
 
-     if (this.column !== null) {
 
-       const refColumn = refLine.value[this.column];
 
-       return refColumn;
 
-     }
 
-     return refLine;
 
-   }
 
-   get value () {
 
-     return this.refValue.value;
 
-   }
 
-   get type () {
 
-     return this.refValue.type;
 
-   }
 
-   get lines () {
 
-     if(!(this.type instanceof CompoundType)) {
 
-       return null;
 
-     }
 
-     return this.refValue.value.length;
 
-   }
 
-   get columns () {
 
-     switch (this.type.dimensions) {
 
-       case 2:
 
-         return this.refValue.value[0].value.length;
 
-       default:
 
-         return null;
 
-     }
 
-   }
 
-   getArrayObject () {
 
-     return this.store.applyStore(this.refID);
 
-   }
 
-   updateArrayObject (stoObj) {
 
-     const anArray =  this.getArrayObject();
 
-     const newArray = Object.assign(new StoreObjectArray(null,null,null), anArray);
 
-     if(!stoObj.type.isCompatible(this.type)) {
 
-       throw new Error(`Invalid operation: cannot assign the value given to ${this.refID}`);
 
-     } else if (this.type instanceof CompoundType && this.type.canAccept(stoObj.type)) {
 
-       throw new Error(`Invalid operation: cannot assign the value given to ${this.refID}`);
 
-     }
 
-     if (this.column !== null) {
 
-      newArray.value[this.line].value[this.column] = stoObj;
 
-      return newArray;
 
-     } else {
 
-      newArray.value[this.line] = stoObj;
 
-      return newArray;
 
-     }
 
-   }
 
-   isCompatible (another) {
 
-     if(this.type.isCompatible(another.type)) {
 
-       if(another.type instanceof CompoundType) {
 
-         return this.lines === another.lines && this.columns === another.columns;
 
-       } else {
 
-         this.refValue.isCompatible(another);
 
-       }
 
-     }
 
-   }
 
- }
 
 
  |