示例#1
0
        public string GetClassHashCodeOrDefault(AbstractSyntaxTreeNode node)
        {
            var visitor = new AbstractSyntaxTreeWordSearchVisitor(Splitter, "CXXRecordDecl");

            node.BreadthFirst(visitor);
            node.BreadthFirst(visitor);

            if (!visitor.Found)
            {
                return(null);
            }

            var values = Splitter.Split(visitor.Node.Value);

            return(values.Length > 1 ? values[1] : null);
        }
示例#2
0
        public bool ContainsDefinitionData(AbstractSyntaxTreeNode node)
        {
            var visitor = new AbstractSyntaxTreeWordSearchVisitor(Splitter, "DefinitionData");

            node.BreadthFirst(visitor);
            return(visitor.Found);
        }
示例#3
0
        public AbstractSyntaxTreeNode GetCallNodeOrDefault(AbstractSyntaxTreeNode root, string hashCode)
        {
            var visitor = new HashCodeExtractorSearchVisitor(Splitter, hashCode);

            root.BreadthFirst(visitor);
            return(visitor.Node);
        }
示例#4
0
        public bool IsDefinedClassMethod(AbstractSyntaxTreeNode node, string hashCode)
        {
            var values = Splitter.Split(node.Value);

            if (values.Length <= 4 || values[2] != "parent" || values[3] != hashCode)
            {
                return(false);
            }

            if (node.Value.EndsWith("default"))
            {
                return(true);
            }

            var visitor = new AbstractSyntaxTreeWordSearchVisitor(Splitter, "CompoundStmt");

            node.BreadthFirst(visitor);
            return(visitor.Found);
        }