public ScriptOperation( int numArgs, String block, Class returnType, String[] parameterNames, Class[] parameterTypes ) { super( numArgs ); this.parameterNames = parameterNames == null ? null : Arrays.copyOf( parameterNames, parameterNames.length ); this.block = block; this.returnType = returnType == null ? this.returnType : returnType; this.parameterTypes = Arrays.copyOf( parameterTypes, parameterTypes.length ); if( getParameterNamesInternal().length != getParameterTypesInternal().length ) throw new IllegalArgumentException( "parameterNames must be same length as parameterTypes" ); }
private Class[] getParameterTypesInternal() { if( !hasParameterNames() ) return parameterTypes; if( hasParameterNames() && parameterNames.length == parameterTypes.length ) return parameterTypes; if( parameterNames.length > 0 && parameterTypes.length != 1 ) throw new IllegalStateException( "wrong number of parameter types, expects: " + parameterNames.length ); Class[] types = new Class[ parameterNames.length ]; Arrays.fill( types, parameterTypes[ 0 ] ); parameterTypes = types; return parameterTypes; }
private Fields getParameterFields() { return makeFields( getParameterNamesInternal() ); }
if( hasParameterNames() && hasParameterTypes() ) context.parameterNames = getParameterNamesInternal(); context.parameterFields = argumentFields.select( getParameterFields() ); // inherit argument types context.parameterTypes = getParameterTypesInternal(); else if( hasParameterTypes() ) context.parameterNames = toNames( argumentFields ); context.parameterFields = argumentFields.applyTypes( getParameterTypesInternal() ); context.parameterTypes = getParameterTypesInternal(); context.parameterNames = toNames( argumentFields ); context.parameterFields = argumentFields; context.parameterTypes = argumentFields.getTypesClasses(); context.scriptEvaluator = getEvaluator( getReturnType(), context.parameterNames, context.parameterTypes ); context.intermediate = TupleViews.createNarrow( argumentFields.getPos( context.parameterFields ) ); context.result = Tuple.size( 1 ); // re-use the output tuple
private Fields makeFields( String[] parameters ) { Comparable[] fields = new Comparable[ parameters.length ]; for( int i = 0; i < parameters.length; i++ ) { String parameter = parameters[ i ]; if( parameter.startsWith( "$" ) ) fields[ i ] = parse( parameter ); // returns parameter if not a number after $ else fields[ i ] = parameter; } return new Fields( fields ); }
private String[] getParameterNamesInternal() { if( parameterNames != null ) return parameterNames; try { parameterNames = guessParameterNames(); } catch( IOException exception ) { throw new OperationException( "could not read expression: " + block, exception ); } catch( CompileException exception ) { throw new OperationException( "could not compile expression: " + block, exception ); } return parameterNames; }
if( hasParameterNames() && hasParameterTypes() ) context.parameterNames = getParameterNamesInternal(); context.parameterFields = argumentFields.select( getParameterFields() ); // inherit argument types context.parameterTypes = getParameterTypesInternal(); else if( hasParameterTypes() ) context.parameterNames = toNames( argumentFields ); context.parameterFields = argumentFields.applyTypes( getParameterTypesInternal() ); context.parameterTypes = getParameterTypesInternal(); context.parameterNames = toNames( argumentFields ); context.parameterFields = argumentFields; context.parameterTypes = argumentFields.getTypesClasses(); context.scriptEvaluator = getEvaluator( getReturnType(), context.parameterNames, context.parameterTypes ); context.intermediate = TupleViews.createNarrow( argumentFields.getPos( context.parameterFields ) ); context.result = Tuple.size( 1 ); // re-use the output tuple
private Fields makeFields( String[] parameters ) { Comparable[] fields = new Comparable[ parameters.length ]; for( int i = 0; i < parameters.length; i++ ) { String parameter = parameters[ i ]; if( parameter.startsWith( "$" ) ) fields[ i ] = parse( parameter ); // returns parameter if not a number after $ else fields[ i ] = parameter; } return new Fields( fields ); }
private String[] getParameterNamesInternal() { if( parameterNames != null ) return parameterNames; try { parameterNames = guessParameterNames(); } catch( IOException exception ) { throw new OperationException( "could not read expression: " + block, exception ); } catch( CompileException exception ) { throw new OperationException( "could not compile expression: " + block, exception ); } return parameterNames; }
public ScriptOperation( int numArgs, Fields fieldDeclaration, String block, Class returnType, String[] parameterNames, Class[] parameterTypes ) { super( numArgs, fieldDeclaration ); this.parameterNames = parameterNames == null ? null : Arrays.copyOf( parameterNames, parameterNames.length ); this.block = block; this.returnType = returnType == null ? this.returnType : returnType; this.parameterTypes = Arrays.copyOf( parameterTypes, parameterTypes.length ); if( getParameterNamesInternal().length != getParameterTypesInternal().length ) throw new IllegalArgumentException( "parameterNames must be same length as parameterTypes" ); }
private Fields getParameterFields() { return makeFields( getParameterNamesInternal() ); }
private Class[] getParameterTypesInternal() { if( !hasParameterNames() ) return parameterTypes; if( hasParameterNames() && parameterNames.length == parameterTypes.length ) return parameterTypes; if( parameterNames.length > 0 && parameterTypes.length != 1 ) throw new IllegalStateException( "wrong number of parameter types, expects: " + parameterNames.length ); Class[] types = new Class[ parameterNames.length ]; Arrays.fill( types, parameterTypes[ 0 ] ); parameterTypes = types; return parameterTypes; }
public ScriptOperation( int numArgs, String block, Class returnType, String[] parameterNames, Class[] parameterTypes ) { super( numArgs ); this.parameterNames = parameterNames == null ? null : Arrays.copyOf( parameterNames, parameterNames.length ); this.block = block; this.returnType = returnType == null ? this.returnType : returnType; this.parameterTypes = Arrays.copyOf( parameterTypes, parameterTypes.length ); if( getParameterNamesInternal().length != getParameterTypesInternal().length ) throw new IllegalArgumentException( "parameterNames must be same length as parameterTypes" ); }
public ScriptOperation( int numArgs, Fields fieldDeclaration, String block, Class returnType, String[] parameterNames, Class[] parameterTypes ) { super( numArgs, fieldDeclaration ); this.parameterNames = parameterNames == null ? null : Arrays.copyOf( parameterNames, parameterNames.length ); this.block = block; this.returnType = returnType == null ? this.returnType : returnType; this.parameterTypes = Arrays.copyOf( parameterTypes, parameterTypes.length ); if( getParameterNamesInternal().length != getParameterTypesInternal().length ) throw new IllegalArgumentException( "parameterNames must be same length as parameterTypes" ); }