Warning: session_start(): open(/var/lib/php/sessions/sess_i7n3r4242pncbjjaddg7lgv6si, 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
sclass MetaTransformer {
sinterface StructureHandler {
O transform(O o, IF1 recurse);
void visit(O o, IVF1 recurse);
}
L structureHandlers;
//bool keepUnknown; // assume true for now
*() {}
*(StructureHandler... handlers) { structureHandlers = asList(handlers); }
// if f returns null, go through structure
// if f returns an object, do not recurse into it
O transform(IF1 f, O o) {
ping();
try object f.get(o);
IF1 recurse = asFunction(f);
fOr (StructureHandler h : structureHandlers) {
ping();
ifdef MetaTransformer_debug
print("Calling structure handler " + h + " on " + o);
endifdef
try object h.transform(o, recurse);
}
//ret keepUnknown ? o : null;
ret o;
}
// transform without result
void visit(IF1 f, O o) {
ping();
try object f.get(o);
IF1 recurse = x -> visit(f, x);
fOr (StructureHandler h : structureHandlers) {
ping();
ifdef MetaTransformer_debug
print("Calling structure handler " + h + " on " + o);
endifdef
try object h.visit(o, recurse);
}
//ret keepUnknown ? o : null;
ret o;
}
IF1 asFunction(IF1 f) {
ret o -> transform(f, o);
}
}