Warning: session_start(): open(/var/lib/php/sessions/sess_aqlea4gd4kov33407q7smoa3f7, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
// script that recognizes images or performs some kind of analysis on an image
concept G22Analyzer > G22LeftArrowScript {
new Ref exampleImage;
@Override GazelleV_LeftArrowScriptParser makeParser() {
var parser = super.makeParser();
parser.addVar("image", BufferedImage.class, false);
parser.addVar("context", G22AnalysisContext.class, false);
ret parser;
}
class CompiledAnalyzer > LASCompileResult {
settable double timeout = 10;
O get(BufferedImage image) {
G22AnalysisContext context = new(g22utils(), image);
ret get(context);
}
O get(G22AnalysisContext context) {
if (context.analyzerResults.containsKey(analyzer())) {
O value = context.analyzerResults.get(analyzer());
if (value == G22AnalysisContext.calculating)
fail("Recursive call to analyzer " + this);
ret ((OKOrError) value).getMandatory();
}
context.analyzerResults.put(analyzer(), G22AnalysisContext.calculating);
var result = okOrError(-> {
if (parsedScript == null) rethrow(compileError);
var image = context.image;
if (image == null) fail("Need image");
ret g22utils().evalRegisteredCode(timeout, str(G22Analyzer.this), -> {
new VarContext ctx;
ctx.set(+image);
ctx.set(+context);
ret parsedScript.get(ctx);
});
});
context.analyzerResults.put(analyzer(), result);
ret result.getMandatory();
}
}
selfType analyzer() { this; }
LASCompileResult newCompileResult() { ret new CompiledAnalyzer; }
CompiledAnalyzer compileForAutoRun() {
ret (CompiledAnalyzer) super.compileForAutoRun();
}
}