Package com.trifork.clj_ds

Examples of com.trifork.clj_ds.IPersistentMap


  }

  /** return a list of elements at given key */
  @Override
  protected ESeq lookup(EObject key) {
    IPersistentMap ipm = deref();
    IPersistentCollection set = (IPersistentCollection) ipm.valAt(key);
    ESeq res = ERT.NIL;
    if (set == null) return res;
    for(ISeq s = set.seq(); s != null; s = s.next())
    {
      res = res.cons((EObject) s.first());
View Full Code Here


    return res.reverse();
  }

  @Override
  protected EAtom member(EObject key) {
    IPersistentMap ipm = deref();
    IPersistentCollection set = (IPersistentCollection) ipm.valAt(key);
    if (set != null && set.count() != 0) {
      return ERT.TRUE;
    } else {
      return ERT.FALSE;
    }
View Full Code Here

 
  @Override
  protected EObject first() {
    // no need to run in_tx if we're only reading
    IPersistentMap map = deref();
   
    if (map.count() == 0) {
      return Native.am_$end_of_table;
    } else {
      ISeq entseq = map.seq();
      IMapEntry<EObject, EObject> ent = (IMapEntry<EObject, EObject>) entseq.first();
      return (EObject) ent.getKey();
    }
  }
View Full Code Here

    if (key == null) {
     
      // oops, .. tablescan
      ESeq res = ERT.NIL;
     
      IPersistentMap map = deref();
      for (ISeq entseq = map.seq(); entseq != null; entseq = entseq.next()) {
        IMapEntry ent = (IMapEntry) entseq.first();

        if (ent == null) continue;
       
        Seqable coll = (Seqable)ent.getValue();
        res = matcher.match_vars(res, coll.seq());
      }
     
      return res.reverse();
    }
   
    IPersistentMap map = deref();
    IPersistentCollection coll = (IPersistentCollection) map.valAt(key);
    if (coll == null) return ERT.NIL;
   
    return matcher.match_vars(ERT.NIL, coll.seq()).reverse();
  }
View Full Code Here

    if (key == null) {
     
      // oops, .. tablescan
      ESeq res = ERT.NIL;
     
      IPersistentMap map = deref();
      for (ISeq entseq = map.seq(); entseq != null; entseq = entseq.next()) {
        IMapEntry ent = (IMapEntry) entseq.first();

        if (ent == null) break;
       
        Seqable coll = (Seqable)ent.getValue();
        res = matcher.match_members(res, coll.seq());
      }
     
      return res.reverse();
    }
   
    IPersistentMap map = deref();
    IPersistentCollection coll = (IPersistentCollection) map.valAt(key);
    if (coll == null) return ERT.NIL;
   
    return matcher.match_members(ERT.NIL, coll.seq()).reverse();
  }
View Full Code Here

 

  @Override
  public EObject select(final EMatchSpec matcher, int limit) {
   
    IPersistentMap map = deref();
   
    EObject key = matcher.getTupleKey(keypos1);
   
    if (key == null) {
      EBagCont cont0 = new EBagCont(matcher, map.seq(), null, limit);
      return cont0.select();
     
    } else {
      IPersistentCollection coll = (IPersistentCollection) map.valAt(key);
      if (coll == null) {
        return Native.am_$end_of_table;       
      } else {
        EBagCont cont0 = new EBagCont(matcher, null, coll.seq(), limit);
        return cont0.select();
View Full Code Here

    });
  }

  @Override
  public ESeq slot() {
    IPersistentMap map = deref();
    if (map.count() == 0) return ERT.NIL;
    return new ELSeq(map.seq());
  }
View Full Code Here

  public String toString() {
    StringBuilder sb = new StringBuilder("[");

    boolean first = true;

    IPersistentMap xregs = this.xregs;

    first = printRegs(sb, first, (Map<Integer,Type>)xregs, 'x');
    first = printRegs(sb, first, fregs, 'f');
    first = printYRegs(sb, first);
View Full Code Here

  private static boolean eq(ExceptionHandler e1, ExceptionHandler e2) {
    return (e1==e2) || (e1 != null && e1.equals(e2));
  }

  public TypeMap mergeFrom(TypeMap other) {
    IPersistentMap new_x = eq((Map)xregs, (Map)other.xregs) ? xregs : merge_regs(xregs,
        other.xregs);
    Type[] new_f = eq(fregs, other.fregs) ? fregs : merge_regs(fregs,
        other.fregs);

    Type[] new_y = yregs;
View Full Code Here

    assert(eq(r1,res) || differs_from_r1);
    return differs_from_r1 ? res : r1;
  }

  private IPersistentMap merge_regs(IPersistentMap r1, IPersistentMap r2) {
    IPersistentMap out = PersistentHashMap.EMPTY;
    for (Integer r : ((Map<Integer,Type>)r1).keySet()) {
      Type t1 = (Type) r1.valAt(r);
      Type t2 = (Type) r2.valAt(r);
     
      Type m = merge(t1,t2);
      if (m != null) {
        out = out.assoc(r, m);
      }
    }

    return out;
  }
View Full Code Here

TOP

Related Classes of com.trifork.clj_ds.IPersistentMap

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.