00001 #ifndef MISC_H_INCLUDED_
00002 #define MISC_H_INCLUDED_
00003
00004 #include "rose.h"
00005 #include <string>
00006
00007 namespace risc
00008 {
00009
00010 namespace tools
00011 {
00012
00019 bool
00020 is_data_structure(SgType* type);
00021
00028 bool
00029 is_builtin_type(SgType* type);
00030
00031
00038 bool
00039 class_types_are_identical(SgClassDefinition* cd1, SgClassDefinition* cd2);
00040
00047 bool
00048 is_func_name(const SgFunctionDeclaration* function, const std::string& name);
00049
00055 void
00056 print_indented(std::string s, unsigned indent);
00057
00064 SgClassDefinition*
00065 class_definition_of_variable(SgVariableDeclaration* var_decl);
00066
00074 bool
00075 is_builtin_function(SgFunctionDeclaration *func_decl);
00076
00099 bool
00100 all_cfg_branches_end_in_break(SgNode *node, int &break_counter);
00101
00124 bool
00125 all_cfg_branches_end_in_continue(SgNode *node, int &continue_counter);
00126
00134 SgStatement*
00135 get_previous_stmt_in_basic_block(SgNode *node);
00136
00144 bool
00145 is_conditional_break(SgScopeStatement const * const loop_stmt,
00146 SgBreakStmt const * const break_stmt);
00147
00154 SgScopeStatement*
00155 find_break_surrounding_scope(SgBreakStmt *break_stmt);
00156
00165 bool
00166 break_belongs_to_loop(SgScopeStatement *loop_stmt,
00167 SgBreakStmt const * const break_stmt);
00168
00169 bool is_located_in_rose_header(SgNode *node);
00170
00178 SgMemberFunctionDeclaration*
00179 get_constructor(SgClassDefinition *class_def);
00180
00186 void
00187 find_and_replace_all(
00188 std::string &input,
00189 const std::string &from,
00190 const std::string &to);
00191
00197 std::string get_mangled_name(SgClassDefinition *class_def);
00198
00204 SgVariableSymbol* find_global_variable(std::string name, SgProject *project);
00205
00206
00212 bool is_known_function(SgFunctionDeclaration *statement);
00213
00219 bool is_in_std_namespace(SgDeclarationStatement *statement);
00220
00226 bool is_in_systemc_namespace(SgDeclarationStatement *statement);
00227
00233 bool is_in_gnu_cxx_namespace(SgDeclarationStatement *statement);
00234
00243 SgVariableSymbol* get_most_outer_var(SgExpression *expr);
00244
00249 bool has_no_variable_expressions(SgExpression *expr);
00250
00251 };
00252
00253 };
00254
00255 #endif
00256
00257