private void ScanDynatableAccessors(QueryNode queryNode, SelectorResolver resolver) { if (queryNode is DataFilter || queryNode is DataAggregator || queryNode is DataSorter) ScanDynatableAccessors(queryNode.ChildNodes[0], resolver); else if (queryNode is DataJoin || queryNode is DetailJoin) { ScanDynatableAccessors(queryNode.ChildNodes[0], resolver); ScanDynatableAccessors(queryNode.ChildNodes[1], resolver); } else if (queryNode is DynatableAccessor) { DynatableAccessor accessor = (DynatableAccessor)queryNode; object[] terms = Lisp.GetTerms(accessor.AccessPredicate); foreach (object o1 in resolver.Resultsets) foreach(object o2 in terms) if (o1 == o2) { accessor.CopyContext = true; break; } } }
public void Remove(QueryNode value) { List.Remove(value); }
public bool Contains(QueryNode value) { return (List.Contains(value)); }
public int IndexOf(QueryNode value) { return (List.IndexOf(value)); }
public void Insert(int index, QueryNode value) { List.Insert(index, value); }
public int Add(QueryNode value) { return (List.Add(value)); }
public QueryNodeCollection(QueryNode container) { _container = container; }
private static object ProcessNodeList(QueryNode.LispProcessingContext owner, XmlNodeList nodeList) { if (nodeList.Count == 0) return null; else if (nodeList.Count == 1) { XmlNode node = nodeList.Item(0); if (node is XmlElement) if (node.ChildNodes.Count == 1 && node.FirstChild is XmlText) return XmlDataAccessor.Convert(XmlDataAccessor.GetNodeType(node, XmlDataAccessor.GetTypeManager(owner.Node)), node); else return node; else return node.Value; } return nodeList; }
public LispProcessingContext(QueryNode node, Resultset[] src, QueryContext queryContext, Object[] parameters) : base(src) { _node = node; _parameters = parameters; _queryContext = queryContext; _executive = queryContext.CreateExecutive(this); }
public LispProcessingContext(QueryNode node, Resultset src, QueryContext queryContext, Object[] parameters) : this(node, new Resultset[] { src }, queryContext, parameters) { }