public static int length(GNode gnode) { if ( ! isListNode(gnode) ) return -1 ; int len = 0 ; while ( ! listEnd(gnode) ) { len++ ; gnode = next(gnode) ; } return len ; }
public static void members(GNode gnode, final Collection<Node> acc) { if ( ! isListNode(gnode) ) return ; while( ! listEnd(gnode) ) { Node n = car(gnode) ; if ( n != null ) acc.add(n) ; gnode = next(gnode) ; } }
public static void allTriples(GNode gnode, Collection<Triple> acc) { if ( ! isListNode(gnode) ) return ; while( ! listEnd(gnode) ) { triples(gnode, acc) ; gnode = next(gnode) ; } }
public static List<Integer> indexes(GNode gnode, Node value) { List<Integer> x = new ArrayList<>() ; if ( ! isListNode(gnode) ) return x ; int idx = 0 ; while ( ! listEnd(gnode) ) { Node v = car(gnode) ; if ( v != null && v.equals(value) ) x.add(new Integer(idx)) ; gnode = next(gnode) ; idx++ ; } return x ; }
public static Node get(GNode gnode, int idx) { // if ( idx == 0 ) // return car(gnode) ; // Node n = next(gnode) ; // return get(graph, n, idx-1) ; if ( ! isListNode(gnode) ) return null ; while ( ! listEnd(gnode) ) { if ( idx == 0 ) return car(gnode) ; gnode = next(gnode) ; idx -- ; } return null ; }
public static int index(GNode gnode, Node value) { if ( ! isListNode(gnode) ) return -1 ; int idx = 0 ; while ( ! listEnd(gnode) ) { Node v = car(gnode) ; if ( v != null && v.equals(value) ) return idx ; gnode = next(gnode) ; idx++ ; } return -1 ; }
private static PropertyFunctionInstance magicProperty(Context context, Triple pfTriple, BasicPattern triples) { List<Triple> listTriples = new ArrayList<>() ; GNode sGNode = new GNode(triples, pfTriple.getSubject()) ; GNode oGNode = new GNode(triples, pfTriple.getObject()) ; List<Node> sList = null ; List<Node> oList = null ; if ( GraphList.isListNode(sGNode) ) { sList = GraphList.members(sGNode) ; GraphList.allTriples(sGNode, listTriples) ; } if ( GraphList.isListNode(oGNode) ) { oList = GraphList.members(oGNode) ; GraphList.allTriples(oGNode, listTriples) ; } PropFuncArg subjArgs = new PropFuncArg(sList, pfTriple.getSubject()) ; PropFuncArg objArgs = new PropFuncArg(oList, pfTriple.getObject()) ; // Confuses single arg with a list of one. PropertyFunctionInstance pfi = new PropertyFunctionInstance(subjArgs, pfTriple.getPredicate(), objArgs) ; triples.getList().removeAll(listTriples) ; return pfi ; }
if ( GraphList.isListNode(entry) ) {