copy_constructor_call_generator_base.g.hh

Go to the documentation of this file.
00001 // This file is automatically generated, do not edit.
00002 
00003 /*!
00004         \file
00005         \brief Generator of copy-constructor call.
00006         \author jaz
00007 */
00008 
00009 #ifndef lestes__md__types__copy_constructor_call_generator_base_g_hh__included
00010 #define lestes__md__types__copy_constructor_call_generator_base_g_hh__included
00011 
00012 #include <lestes/common.hh>
00013 #include <lestes/std/vector.hh>
00014 #include <lestes/md/common.hh>
00015 
00016 #include <lestes/std/objectize_macros.hh>
00017 package(lestes);
00018 package(std);
00019 class object;
00020 end_package(std);
00021 end_package(lestes);
00022 
00023 package(lestes);
00024 package(backend_v2);
00025 package(intercode);
00026 class pi_operand;
00027 end_package(intercode);
00028 end_package(backend_v2);
00029 end_package(lestes);
00030 
00031 package(lestes);
00032 package(backend_v2);
00033 package(intercode);
00034 class pi_mem;
00035 end_package(intercode);
00036 end_package(backend_v2);
00037 end_package(lestes);
00038 
00039 package(lestes);
00040 package(backend_v2);
00041 package(intercode);
00042 class ge_operand;
00043 end_package(intercode);
00044 end_package(backend_v2);
00045 end_package(lestes);
00046 
00047 package(lestes);
00048 package(backend_v2);
00049 package(intercode);
00050 class pi_pi;
00051 end_package(intercode);
00052 end_package(backend_v2);
00053 end_package(lestes);
00054 
00055 package(lestes);
00056 package(backend_v2);
00057 package(intercode);
00058 class ge_pi;
00059 end_package(intercode);
00060 end_package(backend_v2);
00061 end_package(lestes);
00062 
00063 package(lestes);
00064 package(backend_v2);
00065 package(intercode);
00066 class pi_sp;
00067 end_package(intercode);
00068 end_package(backend_v2);
00069 end_package(lestes);
00070 
00071 package(lestes);
00072 package(md);
00073 package(types);
00074 
00075 
00076 class copy_constructor_call_generator_base;
00077 
00078 
00079 /*! \brief Copies value of operand to memory.
00080 
00081 Generates list of pseudoinstructions that copy value of pi_operand to pi_mem. 
00082                         
00083 Generated list depends on:
00084 1. tm_data_type of operand - If type of operands is a builtin or POD type (copy-constructor not defined), then the function creates list of pseudoinstructions 
00085 that copies value of from into into. Otherwise function creates list containing single pi_function_call pseudoinstruction which 
00086 represents copy constructor call for the type.
00087 2.Kind of source operand - copying reg->mem vs. mem->mem  
00088 
00089 Note: A concrete derived class is target dependent and it is placed in 
00090 /target/machine/${TARGET_CPU}/lestes/md/types/ directory.
00091 
00092 */
00093 class copy_constructor_call_generator_base : public ::lestes::std::object {
00094 public:
00095         // WARNING: Detailed doxygen description for method
00096         // should be near it's implementation, not in XML file.
00097 
00098         /*! \brief Generates list of pi-pseudoinstructions that copies operand to memory.
00099 
00100         \param into A destination operand.
00101                                         \param from A source operand.
00102                                         \param psp A sequencepoint that is set as psp to any generated code.
00103                                         \param nsp A sequencepoint that is set as nsp to any generated code.
00104                                 
00105         */
00106         ptr<list<srp< ::lestes::backend_v2::intercode::pi_pi> > > generate(ptr< ::lestes::backend_v2::intercode::pi_mem > into, ptr< ::lestes::backend_v2::intercode::pi_operand > from, ptr< ::lestes::backend_v2::intercode::pi_sp > psp, ptr< ::lestes::backend_v2::intercode::pi_sp > nsp);
00107 
00108         // WARNING: Detailed doxygen description for method
00109         // should be near it's implementation, not in XML file.
00110 
00111         /*! \brief Generates list of ge-pseudoinstructions that copies value between operands and inserts them to an output code list.
00112 
00113         \param op An operand to be copied.
00114                                         \param copy_code An list of output instructions.
00115                                         \return A new copy of the operand.
00116                                 
00117         */
00118         virtual ptr< ::lestes::backend_v2::intercode::ge_operand > generate_copy(ptr< ::lestes::backend_v2::intercode::ge_operand > op, ptr<vector<srp< ::lestes::backend_v2::intercode::ge_pi> > > copy_code) abstract;
00119 
00120         
00121 
00122         //! for purposes of dumping
00123         virtual ptr<reflection_list> reflection_get() const;
00124         //! for purposes of dumping
00125         virtual ptr<field_list_list> field_values_get() const;
00126         
00127 protected:
00128         //! Generated constructor for class copy_constructor_call_generator_base.
00129         copy_constructor_call_generator_base (
00130                 );
00131 
00132         //! Marking routine for class copy_constructor_call_generator_base. 
00133         virtual void gc_mark();
00134 
00135 private:
00136         static ptr<reflection_list> reflection;
00137         
00138 }; // copy_constructor_call_generator_base
00139 
00140 
00141 end_package(types);
00142 end_package(md);
00143 end_package(lestes);
00144 
00145 #endif // lestes__md__types__copy_constructor_call_generator_base_g_hh__included

Generated on Mon Feb 12 18:27:09 2007 for lestes by doxygen 1.5.1-20070107