Package org.eclipse.imp.pdb.facts

Examples of org.eclipse.imp.pdb.facts.IListWriter


  public <U extends IValue, V extends IValue> Result<U> slice(Result<?> first, Result<?> second, Result<?> end) {
    return super.slice(first, second, end, getValue().arity());
  }
 
  public Result<IValue> makeSlice(int first, int second, int end){
    IListWriter w = getValueFactory().listWriter();
    int increment = second - first;
    if(first == end || increment == 0){
      // nothing to be done
    } else
    if(first <= end){
      for(int i = first; i >= 0 && i < end; i += increment){
        w.append(getValue().get(i));
      }
    } else {
      for(int j = first; j >= 0 && j > end && j < getValue().arity(); j += increment){
        w.append(getValue().get(j));
      }
    }
    TypeFactory tf = TypeFactory.getInstance();
    return makeResult(tf.listType(tf.valueType()), w.done(), ctx);
  }
View Full Code Here


 
  public IList getProfileData(){
    TypeFactory TF = TypeFactory.getInstance();
    Type elemType = TF.tupleType(TF.sourceLocationType(), TF.integerType());
    IValueFactory VF = ValueFactoryFactory.getValueFactory();
    IListWriter w = VF.listWriter(elemType);
    for(Map.Entry<ISourceLocation, Count> e : sortData()){
      w.insert(VF.tuple(e.getKey(), VF.integer(e.getValue().getTicks())));
    }
    return w.done();
  }
View Full Code Here

        elementType = elementType.lub(resultElem.getType());
        results.add(results.size(), resultElem.getValue());
      }

      Type resultType = TF.listType(elementType);
      IListWriter w = __eval.__getVf().listWriter();
      w.appendAll(results);
      return org.rascalmpl.interpreter.result.ResultFactory.makeResult(resultType, w.done(), __eval);
    }
View Full Code Here

    if (!isList(tree)) {
      throw new ImplementationError(
          "This is not a context-free list production: " + tree);
    }
    IList children = getArgs(tree);
    IListWriter writer = ValueFactoryFactory.getValueFactory().listWriter(Factory.Args.getElementType());

    for (int i = 0; i < children.length(); ++i) {
      IValue kid = children.get(i);
      writer.append(kid);
      // skip layout and/or separators
      if (isSeparatedList(tree)) {
        i += getSeparatorCount(tree);
      } else {
        ++i;
      }
    }
    return writer.done();
  }
View Full Code Here

    if (isLexical(tree)) {
      throw new ImplementationError("This is not a context-free production: " + tree);
    }

    IList children = getArgs(tree);
    IListWriter writer = ValueFactoryFactory.getValueFactory().listWriter(Factory.Args.getElementType());

    for (int i = 0; i < children.length(); i++) {
      IConstructor kid = (IConstructor) children.get(i);
      if (!isLiteral(kid) && !isCILiteral(kid)) {
        writer.append(kid);
      }
      // skip layout
      i++;
    }
    return writer.done();
  }
View Full Code Here

    // is a character
    return false;
  }

  public static IList searchCategory(IConstructor tree, String category) {
    IListWriter writer = ValueFactoryFactory.getValueFactory().listWriter(Factory.Args.getElementType());
    if (isAppl(tree)) {
      String s = ProductionAdapter.getCategory(getProduction(tree));
      if (s == category)
        writer.append(tree);
      else {
        IList z = getArgs(tree);
        for (IValue q : z) {
          if (!(q instanceof IConstructor))
            continue;
          IList p = searchCategory((IConstructor) q, category);
          writer.appendAll(p);
        }
      }
    }
    return writer.done();
  }
View Full Code Here

      tmpArr[i++] = elem;
    }
   
    new Sorting(tmpArr, new Less((ICallableValue) cmpv)).sort();
   
    IListWriter writer = values.listWriter();
    for(IValue v : tmpArr){
      writer.append(v);
    }
   
    return writer.done();
  }
View Full Code Here

   
    return writer.done();
  }
 
  private IList makeUpTill(int from,int len){
    IListWriter writer = values.listWriter();
    for(int i = from ; i < len; i++){
      writer.append(values.integer(i));
    }
    return writer.done();
  }
View Full Code Here

  public IValue insertAt(IList lst, IInteger n, IValue elm)
    throws IndexOutOfBoundsException
   //@doc{insertAt -- add an element at a specific position in a list}
   {
     IListWriter w = values.listWriter();
    
     int k = n.intValue();
      if(k >= 0 && k <= lst.length()){
        if(k == lst.length()){
          w.insert(elm);
        }
        for(int i = lst.length()-1; i >= 0; i--) {
          w.insert(lst.get(i));
          if(i == k){
            w.insert(elm);
          }
        }
        return w.done();
      }
     
    throw RuntimeExceptionFactory.indexOutOfBounds(n, null, null);
   }
View Full Code Here

     int n = lst.length();
    
     if(n > 0){
         int k = random.nextInt(n);
         IValue pick = lst.get(0);
         IListWriter w = values.listWriter();
   
        for(int i = n - 1; i >= 0; i--) {
           if(i == k){
             pick = lst.get(i);
           } else {
              w.insert(lst.get(i));
           }
        }
        return values.tuple(pick, w.done());
       }
    
     throw RuntimeExceptionFactory.emptyList(null, null);
  }
View Full Code Here

TOP

Related Classes of org.eclipse.imp.pdb.facts.IListWriter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.