00001 // $Id: osuif_visitor_info.h,v 1.1.1.1 2000/06/08 00:10:03 afikes Exp $ 00002 00003 #ifndef OSUIFPRINT__OSUIF_VISITOR_INFO_H 00004 #define OSUIFPRINT__OSUIF_VISITOR_INFO_H 00005 00006 #include <iostream.h> 00007 #include <new.h> 00008 00009 #include "common/suif_list.h" 00010 #include "common/suif_vector.h" 00011 #include "common/suif_indexed_list.h" 00012 #include "common/formatted.h" 00013 #include "suifkernel/suifkernel_messages.h" // needed by iter.h 00014 #include "suifkernel/iter.h" 00015 #include "common/i_integer.h" 00016 #include "basicnodes/basic.h" 00017 #include "suifnodes/suif.h" 00018 #include "suifkernel/forwarders.h" 00019 #include "iokernel/meta_class.h" 00020 #include "iokernel/aggregate_meta_class.h" 00021 #include "iokernel/union_meta_class.h" 00022 #include "iokernel/clone_stream.h" 00023 #include "iokernel/pointer_meta_class.h" 00024 #include "iokernel/stl_meta_class.h" 00025 #include "iokernel/object_factory.h" 00026 #include "iokernel/virtual_iterator.h" 00027 #include "suifkernel/suif_object.h" 00028 #include "suifkernel/real_object_factory.h" 00029 #include "suifkernel/suif_env.h" 00030 #include "suifkernel/module_subsystem.h" 00031 #include "suifkernel/module.h" 00032 #include "basicnodes/basic_factory.h" 00033 00034 #include "osuifnodes/osuif.h" 00035 #include "osuifnodes/osuif_forwarders.h" 00036 #include "osuifnodes/osuif_factory.h" 00037 00038 #include "osuifprint/printing_maps.h" 00039 00040 class OsuifVisitorInfo{ 00041 private: 00042 PrintingMaps *printingMaps; 00043 public: 00044 OsuifVisitorInfo(PrintingMaps *map); 00045 00046 void get_object_address(char* result, Address obj); 00047 00048 static void do_method_type(Address vis, MethodType* method_type); 00049 virtual void print_method_type(MethodType *method_type, ostream& output, 00050 bool blnStatic); 00051 00052 static void do_static_method_type(Address vis, 00053 StaticMethodType* static_method_type); 00054 virtual void print_static_method_type(StaticMethodType *static_method_type, 00055 ostream& output); 00056 00057 static void do_instance_method_type(Address vis, 00058 InstanceMethodType* instance_method_type); 00059 virtual void print_instance_method_type( 00060 InstanceMethodType *instance_method_type, 00061 ostream& output); 00062 00063 static void do_instance_method_symbol(Address vis, 00064 InstanceMethodSymbol* method_symbol); 00065 virtual void print_instance_method_symbol( 00066 InstanceMethodSymbol* instance_method_symbol, 00067 ostream& output); 00068 00069 static void do_instance_field_symbol(Address vis, 00070 InstanceFieldSymbol* method_symbol); 00071 virtual void print_instance_field_symbol( 00072 InstanceFieldSymbol *instance_field_symbol, 00073 ostream& output); 00074 00075 static void do_static_field_symbol(Address vis, 00076 StaticFieldSymbol* static_field_symbol); 00077 virtual void print_static_field_symbol(StaticFieldSymbol *static_field_symbol, 00078 ostream& output); 00079 00080 static void do_static_method_symbol(Address vis, 00081 StaticMethodSymbol* static_method_symbol); 00082 virtual void print_static_method_symbol( 00083 StaticMethodSymbol *static_method_symbol, 00084 ostream& output); 00085 00086 static void do_class_type(Address vis, ClassType* class_type); 00087 virtual void print_class_type(ClassType* class_type, ostream& output); 00088 00089 static void do_inheritance_link(Address vis, 00090 InheritanceLink* inheritance_link); 00091 virtual void print_inheritance_link(InheritanceLink* inheritance_link, 00092 ostream& output); 00093 00094 static void do_static_method_call_statement(Address vis, 00095 StaticMethodCallStatement* method_call_statement); 00096 virtual void print_static_method_call_statement( 00097 StaticMethodCallStatement *method_call_expression, ostream& output); 00098 00099 static void do_instance_method_call_statement(Address vis, 00100 InstanceMethodCallStatement* method_call_statement); 00101 virtual void print_instance_method_call_statement( 00102 InstanceMethodCallStatement *method_call_statement, ostream& output); 00103 00104 static void do_procedure_definition(Address vis, 00105 ProcedureDefinition* procedure_definition); 00106 virtual void print_procedure_definition( 00107 ProcedureDefinition *procedure_definition, ostream& output); 00108 00109 static void do_statement_list(Address vis, 00110 StatementList* statement_list); 00111 virtual void print_statement_list(StatementList *statement_list, 00112 ostream& output); 00113 00114 static void do_eval_statement(Address vis, 00115 EvalStatement* eval_statement); 00116 virtual void print_eval_statement(EvalStatement *eval_statement, 00117 ostream& output); 00118 00119 static void do_call_statement(Address vis, 00120 CallStatement* call_statement); 00121 virtual void print_call_statement(CallStatement *call_statement, 00122 ostream& output); 00123 00124 static void do_basic_symbol_table(Address vis, 00125 BasicSymbolTable *basic_symbol_table); 00126 virtual void print_basic_symbol_table(BasicSymbolTable* basicSymbolTable, 00127 ostream& output); 00128 00129 static void do_variable_definition(Address vis, 00130 VariableDefinition *variableDefinition); 00131 virtual void print_variable_definition(VariableDefinition *variableDefinition, 00132 ostream& output); 00133 00134 static void do_definition_block(Address vis, 00135 DefinitionBlock *definitionBlock); 00136 virtual void print_definition_block( 00137 DefinitionBlock *definitionBlock, 00138 ostream& output); 00139 00140 static void do_symbol_address_expression(Address vis, 00141 SymbolAddressExpression* symbol_addess_expression); 00142 virtual void print_symbol_address_expression( 00143 SymbolAddressExpression *symbol_address_expression, 00144 ostream& output); 00145 void initOsuifObjects(); 00146 }; 00147 00148 #endif /* OSUIFPRINT__OSUIF_VISITOR_INFO_H */