예제 #1
0
 @Override
 public void eval(Interpreter interpreter, Expression... args) {
   Bag eres = null;
   if (args.length < 1) {
     eres = new Bag();
   } else {
     // mamy generyczny bag - args[1] okresla jego typ
     Expression bagTypeExpr = args[1];
     bagTypeExpr.accept(interpreter, null);
     QueryResult qr = interpreter.getQres().pop();
     QueryResult clazz = Utils.collectionToObject(qr);
     JavaClass<Collection> jc = (JavaClass<Collection>) clazz;
     try {
       Collection c = jc.value.newInstance();
       eres = new Bag<Collection<QueryResult>>(c);
     } catch (Exception e) {
       throw new SBQLException(e);
     }
   }
   QueryResult e1res = interpreter.getQres().pop();
   StructSBQL s;
   if (e1res instanceof StructSBQL) {
     s = (StructSBQL) e1res;
   } else {
     s = new StructSBQL();
     if (e1res instanceof Collection) {
       s.addAll((Collection) e1res);
     } else {
       s.add(e1res);
     }
   }
   eres.addAll(s);
   interpreter.getQres().push(eres);
 }