//--------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- namespace System.Data.Common.EntitySql.AST { using System; using System.Globalization; using System.Collections; using System.Collections.Generic; using System.Data.Common.CommandTrees; using System.Diagnostics; /// /// Represents invocation expression: expr(...) /// internal sealed class MethodExpr : GroupAggregateExpr { private readonly Node _expr; private readonly NodeList _args; private readonly NodeList _relationships; /// /// Initializes method ast node. /// internal MethodExpr(Node expr, DistinctKind distinctKind, NodeList args) : this (expr, distinctKind, args, null) { } /// /// Intializes a method ast node with relationships. /// internal MethodExpr(Node expr, DistinctKind distinctKind, NodeList args, NodeList relationships) : base(distinctKind) { Debug.Assert(expr != null, "expr != null"); Debug.Assert(args == null || args.Count > 0, "args must be null or a non-empty list"); _expr = expr; _args = args; _relationships = relationships; } /// /// For the following expression: "a.b.c.Foo()", returns "a.b.c.Foo". /// internal Node Expr { get { return _expr; } } /// /// Argument list. /// internal NodeList Args { get { return _args; } } /// /// True if there are associated relationship expressions. /// internal bool HasRelationships { get { return null != _relationships && _relationships.Count > 0; } } /// /// Optional relationship list. /// internal NodeList Relationships { get { return _relationships; } } } }