Ejemplo n.º 1
0
        private static IEnumerable <DeclRefExprProperties> GetVariableThatGetsSaid(AstToken methodDecl)
        {
            var memberExpressions = methodDecl.VisitEnumerable
                                    (
                x => x.Type == AstType.MemberExpr && x.parent.Type == AstType.CXXMemberCallExpr && x.properties.Contains("->Say")
                                    );

            foreach (var memberExpression in memberExpressions)
            {
                var otherchildren = memberExpression.parent
                                    .VisitEnumerable(x => x != memberExpression)
                                    .Where(x => x.Type == AstType.DeclRefExpr)
                                    .Select(x => new DeclRefExprProperties(x))
                                    .ToList()
                ;

                //Just take the last one

                if (otherchildren.Count == 1)
                {
                    yield return(otherchildren.FirstOrDefault());
                }
                else
                {
                    //Multiple (path: pSession->Say( &vMSG ))
                    yield return(otherchildren.FirstOrDefault(x => x.Token.properties[0] == "CPacket"));
                }
            }
        }
Ejemplo n.º 2
0
 private static IEnumerable <AstToken> GetUsages(DeclRefExprProperties saidMsg, AstToken methodDecl)
 {
     return(methodDecl.VisitEnumerable
            (
                x => x.Type == AstType.DeclRefExpr && new DeclRefExprProperties(x).Equals(saidMsg)
            ));
 }