getParam method
Implementation
int getParam( ClipToken funcParam, ClipParam parentParam, ClipParam childParam ){
int code;
dynamic token;
int index;
ClipToken? saveLine = _curLine.token();
_curLine.setToken( funcParam );
int i = ClipMath.charCode0;
int j = 0;
childParam.initUpdateParam();
funcParam.beginGetToken();
while( funcParam.getTokenParam( parentParam ) ){
code = ClipToken.curCode();
token = ClipToken.curToken();
if( j > 9 ){
_curLine.setToken( saveLine );
return _retError( ClipGlobal.procErrFuncParaNum, code, token );
}
childParam.updateParamCodeArray().add( code );
childParam.updateParamIndexArray().add( 0 );
switch( code ){
case ClipGlobal.codeVariable:
index = varIndexParam( parentParam, token );
childParam.setUpdateParamIndex( j, index );
childParam.variable().set( i, parentParam.val( index ), true );
_updateValue( parentParam, childParam.variable().val( i ) );
break;
case ClipGlobal.codeAutoVar:
index = autoVarIndex( parentParam, token );
childParam.setUpdateParamIndex( j, index );
childParam.variable().set( i, parentParam.val( index ), true );
_updateValue( parentParam, childParam.variable().val( i ) );
break;
case ClipGlobal.codeGlobalVar:
index = autoVarIndex( globalParam(), token );
childParam.setUpdateParamIndex( j, index );
childParam.variable().set( i, globalParam().val( index ), true );
_updateValue( globalParam(), childParam.variable().val( i ) );
break;
case ClipGlobal.codeArray:
index = arrayIndexParam( parentParam, token );
childParam.setUpdateParamIndex( j, index );
parentParam.array().dup( childParam.array(), index, i, true );
_updateArray( parentParam, childParam.array(), i );
if( token == 0 ){
childParam.variable().set( i, parentParam.val( 0 ), true );
_updateValue( parentParam, childParam.variable().val( i ) );
}
break;
case ClipGlobal.codeAutoArray:
index = autoArrayIndex( parentParam, token );
childParam.setUpdateParamIndex( j, index );
parentParam.array().dup( childParam.array(), index, i, true );
_updateArray( parentParam, childParam.array(), i );
break;
case ClipGlobal.codeGlobalArray:
index = autoArrayIndex( globalParam(), token );
childParam.setUpdateParamIndex( j, index );
globalParam().array().dup( childParam.array(), index, i, true );
_updateArray( globalParam(), childParam.array(), i );
break;
case ClipGlobal.codeString:
strSet( childParam.array(), i, token );
break;
case ClipGlobal.codeConstant:
childParam.variable().set( i, token, true );
_updateValue( parentParam, childParam.variable().val( i ) );
break;
case ClipGlobal.codeMatrix:
childParam.array().setMatrix( i, token, true );
_updateMatrix( parentParam, childParam.array().matrix(i) );
break;
case ClipGlobal.codeMultiPrec:
childParam.array().move( i );
childParam.array().mp(i).attach( (token as MPData).clone() );
{
var str = _procMp.fnum2str( childParam.array().mp(i), parentParam.mpPrec() );
var val = ClipMath.stringToFloat( str, 0, ParamInteger() );
childParam.variable().set( i, val, true );
_updateValue( parentParam, childParam.variable().val( i ) );
}
break;
default:
_curLine.setToken( saveLine );
return _retError( ClipGlobal.procErrFuncParaCode, code, token );
}
i++;
j++;
}
_curLine.setToken( saveLine );
childParam.variable().set( ClipMath.charCodeEx, j, true );
return ClipGlobal.noErr;
}