All Downloads are FREE. Search and download functionalities are using the official Maven repository.

z3-z3-4.13.0.src.ast.for_each_ast.cpp Maven / Gradle / Ivy

The newest version!
/*++
Copyright (c) 2006 Microsoft Corporation

Module Name:

    for_each_ast.cpp

Abstract:

    For each ast visitor

Author:

    Leonardo de Moura (leonardo) 2006-10-18.

Revision History:

--*/

#include "ast/for_each_ast.h"

struct ast_counter_proc {
    unsigned m_num;
    ast_counter_proc():m_num(0) {}
    void operator()(ast *) { m_num++; } 
};

unsigned get_num_nodes(ast * n) {
    for_each_ast_proc counter;
    for_each_ast(counter, n);
    return counter.m_num;
}


bool for_each_parameter(ptr_vector & stack, ast_mark & visited, unsigned num_args, parameter const * params) {
    bool result = true;
    for (unsigned i = 0; i < num_args; i++) {
        parameter const& p = params[i];
        if (p.is_ast() && !visited.is_marked(p.get_ast())) {
            stack.push_back(p.get_ast());
            result = false;
        }
    }
    return result;    
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy