getArray method
Implementation
getArray( String chr, [int? dim] ){
_setEnv();
List<dynamic> _array = [];
int _dim = -1;
List<int> _index = [];
int code;
dynamic token;
int i;
ClipToken array = _param.array().makeToken( ClipToken(), ClipMath.char( chr ) );
array.beginGetToken();
while( array.getToken() ){
code = ClipToken.curCode();
token = ClipToken.curToken();
if( code == ClipGlobal.codeArrayTop ){
_dim++;
if( _index.length <= _dim ){
_index.add( 0 );
}
} else if( code == ClipGlobal.codeArrayEnd ){
_index[_dim] = 0;
_dim--;
if( _dim >= 0 ) {
_index[_dim]++;
}
} else if( code == ClipGlobal.codeConstant ){
if( (dim == null) || (dim == _dim + 1) ){
if( _dim > 0 ){
if( _array.length <= _index[0] ){
for( i = _array.length; i <= _index[0]; i++ ) {
_array.add( [] );
}
}
if( _array[_index[0]] is! List ){
_array[_index[0]] = [];
}
}
if( _dim > 1 ){
if( _array[_index[0]].length <= _index[1] ){
for( i = _array[_index[0]].length; i <= _index[1]; i++ ) {
_array[_index[0]].add( [] );
}
}
if( _array[_index[0]][_index[1]] is! List ){
_array[_index[0]][_index[1]] = [];
}
}
if( _dim > 2 ){
if( _array[_index[0]][_index[1]].length <= _index[2] ){
for( i = _array[_index[0]][_index[1]].length; i <= _index[2]; i++ ) {
_array[_index[0]][_index[1]].add( [] );
}
}
if( _array[_index[0]][_index[1]][_index[2]] is! List ){
_array[_index[0]][_index[1]][_index[2]] = [];
}
}
switch( _dim ){
case 0:
if( _array.length <= _index[0] ){
for( i = _array.length; i <= _index[0]; i++ ) {
_array.add( 0.0 );
}
}
if( _array[_index[0]] is! List ){
_array[_index[0]] = token.toFloat();
}
break;
case 1:
if( _array[_index[0]].length <= _index[1] ){
for( i = _array[_index[0]].length; i <= _index[1]; i++ ) {
_array[_index[0]].add( 0.0 );
}
}
if( _array[_index[0]][_index[1]] is! List ){
_array[_index[0]][_index[1]] = token.toFloat();
}
break;
case 2:
if( _array[_index[0]][_index[1]].length <= _index[2] ){
for( i = _array[_index[0]][_index[1]].length; i <= _index[2]; i++ ) {
_array[_index[0]][_index[1]].add( 0.0 );
}
}
if( _array[_index[0]][_index[1]][_index[2]] is! List ){
_array[_index[0]][_index[1]][_index[2]] = token.toFloat();
}
break;
case 3:
if( _array[_index[0]][_index[1]][_index[2]].length <= _index[3] ){
for( i = _array[_index[0]][_index[1]][_index[2]].length; i <= _index[3]; i++ ) {
_array[_index[0]][_index[1]][_index[2]].add( 0.0 );
}
}
if( _array[_index[0]][_index[1]][_index[2]][_index[3]] is! List ){
_array[_index[0]][_index[1]][_index[2]][_index[3]] = token.toFloat();
}
break;
}
}
_index[_dim]++;
}
}
return _array;
}