// See the file "COPYING" in the main distribution directory for copyright. // Auxiliary information associated with statements to aid script // optimization. #pragma once namespace zeek::detail { class StmtOptInfo { public: // We number statements by their traversal order in the AST. int stmt_num = -1; // -1 = not assigned yet // The confluence block nesting associated with the statement. // We number these using 0 for the outermost block of a function // (which, strictly speaking, isn't a confluence block). int block_level = -1; // True if we observe that there is a branch out of the statement // to just beyond its extent, such as due to a "break". bool contains_branch_beyond = false; // Whether this statement is free of the possible influence // of conditional code. bool is_free_of_conditionals = true; // Number of statements and expressions in a function body. int num_stmts = 0; int num_exprs = 0; }; } // namespace zeek::detail