#include <PSDL_Interface_Visitor.h>
Inheritance diagram for TAO_PSDL_Interface_Visitor:
Public Member Functions | |
TAO_PSDL_Interface_Visitor () | |
~TAO_PSDL_Interface_Visitor () | |
int | visit_identifier (TAO_PSDL_Identifier *identifier) |
int | visit_forward_dcl (TAO_PSDL_Forward_Dcl *forward_dcl) |
int | visit_interface_dcl (TAO_PSDL_Interface_Dcl *interface_dcl) |
int | visit_interface_header (TAO_PSDL_Interface_Header *interface_header) |
void | gen_code_for_si (void) |
Private Member Functions | |
void | print_for_forward_dcl (void) |
void | print_class_for_interface (void) |
void | print_end_for_interface (void) |
Private Attributes | |
CORBA::Boolean | forward_dcl_ |
ACE_CString | interface_name_ |
|
Definition at line 8 of file PSDL_Interface_Visitor.cpp.
00009 : forward_dcl_ (0), 00010 interface_name_ () 00011 { 00012 // constructor. 00013 } |
|
Definition at line 15 of file PSDL_Interface_Visitor.cpp.
00016 {
00017 // destructor.
00018 }
|
|
Reimplemented from TAO_PSDL_Node_Visitor. Definition at line 688 of file PSDL_Interface_Visitor.cpp.
00689 { 00690 TAO_PSDL_Stream *ps_si = TAO_PSDL_Scope::instance ()->get_si (); 00691 00692 ps_si->reset (); 00693 ps_si->indent (); // start from current indentation level 00694 00695 *ps_si << "int " << this->interface_name_ << "::_tao_class_id = 0;"; 00696 ps_si->nl (); 00697 ps_si->nl (); 00698 00699 *ps_si << this->interface_name_ << "_ptr"; 00700 ps_si->nl (); 00701 *ps_si << "tao_" << this->interface_name_ << "_duplicate ("; 00702 ps_si->incr_indent (0); 00703 ps_si->nl (); 00704 *ps_si << this->interface_name_ << "_ptr p"; 00705 ps_si->nl (); 00706 *ps_si << ")"; 00707 ps_si->decr_indent (0); 00708 ps_si->nl (); 00709 *ps_si << "{"; 00710 ps_si->incr_indent (0); 00711 ps_si->nl (); 00712 *ps_si << "return " << this->interface_name_ << "::_duplicate (p);"; 00713 ps_si->decr_indent (0); 00714 ps_si->nl (); 00715 *ps_si << "}"; 00716 ps_si->nl (); 00717 00718 ps_si->nl (); 00719 00720 *ps_si << "void"; 00721 ps_si->nl (); 00722 00723 *ps_si << "tao_" << this->interface_name_ << "_release ("; 00724 ps_si->incr_indent (0); 00725 ps_si->nl (); 00726 00727 *ps_si << this->interface_name_ << "_ptr p"; 00728 ps_si->nl (); 00729 00730 *ps_si << ")"; 00731 ps_si->decr_indent (0); 00732 ps_si->nl (); 00733 *ps_si << "{"; 00734 00735 ps_si->incr_indent (0); 00736 ps_si->nl (); 00737 *ps_si << "CORBA::release (p);"; 00738 ps_si->decr_indent (0); 00739 ps_si->nl (); 00740 *ps_si << "}"; 00741 00742 ps_si->nl (); 00743 ps_si->nl (); 00744 00745 *ps_si << this->interface_name_ << "_ptr"; 00746 ps_si->nl (); 00747 *ps_si << "tao_" << this->interface_name_ << "_nil ("; 00748 ps_si->incr_indent (0); 00749 ps_si->nl (); 00750 *ps_si << "void"; 00751 ps_si->nl (); 00752 *ps_si << ")"; 00753 ps_si->decr_indent (0); 00754 ps_si->nl (); 00755 *ps_si << "{"; 00756 ps_si->incr_indent (0); 00757 ps_si->nl (); 00758 *ps_si << "return " << this->interface_name_ << "::_nil ();"; 00759 ps_si->decr_indent (0); 00760 ps_si->nl (); 00761 *ps_si << "}"; 00762 ps_si->nl (); 00763 00764 ps_si->nl (); 00765 00766 *ps_si << this->interface_name_ << "_ptr"; 00767 ps_si->nl (); 00768 *ps_si << "tao_" << this->interface_name_ << "_narrow ("; 00769 ps_si->incr_indent (0); 00770 ps_si->nl (); 00771 *ps_si << "CORBA::Object *p"; 00772 ps_si->nl (); 00773 00774 *ps_si << "ACE_ENV_ARG_DECL"; ps_si->nl (); 00775 *ps_si << ")"; 00776 ps_si->decr_indent (0); 00777 ps_si->nl (); 00778 *ps_si << "{"; 00779 00780 ps_si->incr_indent (0); 00781 ps_si->nl (); 00782 00783 *ps_si << "return " << this->interface_name_ 00784 << "::_narrow (p ACE_ENV_ARG_PARAMETER);"; 00785 ps_si->decr_indent (0); 00786 ps_si->nl (); 00787 *ps_si << "}"; 00788 00789 ps_si->nl (); 00790 ps_si->nl (); 00791 00792 *ps_si << "CORBA::Object *"; ps_si->nl (); 00793 *ps_si << "tao_" << this->interface_name_ << "_upcast ("; 00794 00795 ps_si->incr_indent (0); 00796 ps_si->nl (); 00797 00798 *ps_si << "void *src"; ps_si->nl (); 00799 *ps_si << ")"; 00800 ps_si->decr_indent (0); 00801 ps_si->nl (); 00802 00803 *ps_si << "{"; 00804 ps_si->incr_indent (0); 00805 ps_si->nl (); 00806 00807 *ps_si << this->interface_name_ << " **tmp ="; 00808 ps_si->incr_indent (0); 00809 ps_si->nl (); 00810 *ps_si << "ACE_static_cast (" << this->interface_name_ << " **, src);"; 00811 ps_si->decr_indent (0); 00812 ps_si->nl (); 00813 *ps_si << "return *tmp;"; 00814 ps_si->decr_indent (0); 00815 ps_si->nl (); 00816 *ps_si << "}"; 00817 00818 ps_si->nl (); 00819 ps_si->nl (); 00820 00821 *ps_si << "// ***********************************************************"; 00822 ps_si->nl (); 00823 *ps_si << "// " << this->interface_name_ << "_var"; ps_si->nl (); 00824 *ps_si << "// ***********************************************************"; 00825 00826 ps_si->nl (); 00827 ps_si->nl (); 00828 00829 *ps_si << this->interface_name_ << "_var::" 00830 << this->interface_name_ 00831 << "_var (void) // default constructor"; 00832 00833 ps_si->incr_indent (0); 00834 ps_si->nl (); 00835 *ps_si << ": ptr_ (" << this->interface_name_ << "::_nil ())"; 00836 00837 ps_si->decr_indent (0); 00838 ps_si->nl (); 00839 *ps_si << "{}"; 00840 00841 ps_si->nl (); 00842 ps_si->nl (); 00843 00844 *ps_si << "::" << this->interface_name_ << "_ptr"; ps_si->nl (); 00845 *ps_si << this->interface_name_ << "_var::ptr (void) const"; ps_si->nl (); 00846 00847 *ps_si << "{"; 00848 ps_si->incr_indent (0); 00849 ps_si->nl (); 00850 *ps_si << "return this->ptr_;"; 00851 00852 ps_si->decr_indent (0); 00853 ps_si->nl (); 00854 *ps_si << "}"; 00855 00856 ps_si->nl (); 00857 ps_si->nl (); 00858 00859 *ps_si << this->interface_name_ << "_var::" 00860 << this->interface_name_ << "_var (const ::" 00861 << this->interface_name_ << "_var &p) // copy constructor"; 00862 00863 ps_si->incr_indent (0); 00864 ps_si->nl (); 00865 *ps_si << ": TAO_Base_var (),"; 00866 00867 ps_si->incr_indent (0); ps_si->nl (); 00868 *ps_si << "ptr_ (" << this->interface_name_ 00869 << "::_duplicate (p.ptr ()))"; 00870 00871 ps_si->decr_indent (0); 00872 ps_si->decr_indent (0); 00873 ps_si->nl (); 00874 *ps_si << "{}"; 00875 00876 ps_si->nl (); 00877 ps_si->nl (); 00878 00879 *ps_si << this->interface_name_ << "_var::~" 00880 << this->interface_name_ << "_var (void) // destructor"; 00881 00882 ps_si->nl (); 00883 *ps_si << "{"; 00884 ps_si->incr_indent (0); 00885 ps_si->nl (); 00886 *ps_si << "CORBA::release (this->ptr_);"; 00887 00888 ps_si->decr_indent (0); 00889 ps_si->nl (); 00890 *ps_si << "}"; 00891 00892 ps_si->nl (); 00893 ps_si->nl (); 00894 00895 *ps_si << this->interface_name_ << "_var &"; ps_si->nl (); 00896 *ps_si << this->interface_name_ << "_var::operator= (" 00897 << this->interface_name_ << "_ptr p)"; 00898 00899 ps_si->nl (); 00900 *ps_si << "{"; 00901 ps_si->incr_indent (0); 00902 ps_si->nl (); 00903 00904 *ps_si << "this->ptr_ = p;"; ps_si->nl (); 00905 *ps_si << "return *this;"; 00906 00907 ps_si->decr_indent (0); 00908 ps_si->nl (); 00909 *ps_si << "}"; 00910 00911 ps_si->nl (); 00912 ps_si->nl (); 00913 00914 *ps_si << this->interface_name_ << "_var &"; ps_si->nl (); 00915 *ps_si << this->interface_name_ << "_var::operator= (const ::" 00916 << this->interface_name_ << "_var &p)"; 00917 ps_si->nl (); 00918 00919 *ps_si << "{"; 00920 ps_si->incr_indent (0); 00921 ps_si->nl (); 00922 00923 *ps_si << "if (this != &p)"; 00924 00925 ps_si->incr_indent (0); 00926 ps_si->nl (); 00927 *ps_si << "{"; 00928 00929 ps_si->incr_indent (0); 00930 ps_si->nl (); 00931 00932 *ps_si << "CORBA::release (this->ptr_);"; ps_si->nl (); 00933 *ps_si << "this->ptr_ = ::" << this->interface_name_ 00934 << "::_duplicate (p.ptr ());"; 00935 ps_si->decr_indent (0); 00936 ps_si->nl (); 00937 *ps_si << "}"; 00938 00939 ps_si->decr_indent (0); 00940 ps_si->nl (); 00941 00942 *ps_si << "return *this;"; 00943 00944 ps_si->decr_indent (0); 00945 ps_si->nl (); 00946 *ps_si << "}"; 00947 00948 ps_si->nl (); 00949 ps_si->nl (); 00950 00951 *ps_si << this->interface_name_ << "_var::operator const ::" 00952 << this->interface_name_ << "_ptr &() const // cast"; ps_si->nl (); 00953 *ps_si << "{"; 00954 00955 ps_si->incr_indent (0); 00956 ps_si->nl (); 00957 *ps_si << "return this->ptr_;"; 00958 00959 ps_si->decr_indent (0); 00960 ps_si->nl (); 00961 *ps_si << "}"; 00962 00963 ps_si->nl (); 00964 ps_si->nl (); 00965 00966 *ps_si << this->interface_name_ << "_var::operator ::" 00967 << this->interface_name_ << "_ptr &() // cast "; ps_si->nl (); 00968 *ps_si << "{"; 00969 ps_si->incr_indent (0); 00970 ps_si->nl (); 00971 00972 *ps_si << "return this->ptr_;"; 00973 00974 ps_si->decr_indent (0); 00975 ps_si->nl (); 00976 *ps_si << "}"; 00977 00978 ps_si->nl (); 00979 ps_si->nl (); 00980 00981 *ps_si << "::" << this->interface_name_ << "_ptr"; ps_si->nl (); 00982 *ps_si << this->interface_name_ << "_var::operator-> (void) const"; 00983 ps_si->nl (); 00984 00985 *ps_si << "{"; 00986 ps_si->incr_indent (0); 00987 ps_si->nl (); 00988 00989 *ps_si << "return this->ptr_;"; 00990 00991 ps_si->decr_indent (0); 00992 ps_si->nl (); 00993 *ps_si << "}"; 00994 00995 ps_si->nl (); 00996 ps_si->nl (); 00997 00998 *ps_si << "::" << this->interface_name_ << "_ptr"; ps_si->nl (); 00999 *ps_si << this->interface_name_ << "_var::in (void) const"; ps_si->nl (); 01000 01001 *ps_si << "{"; 01002 ps_si->incr_indent (0); 01003 ps_si->nl (); 01004 01005 *ps_si << "return this->ptr_;"; 01006 01007 ps_si->decr_indent (0); 01008 ps_si->nl (); 01009 *ps_si << "}"; 01010 01011 ps_si->nl (); 01012 ps_si->nl (); 01013 01014 *ps_si << "::" << this->interface_name_ << "_ptr &"; ps_si->nl (); 01015 *ps_si << this->interface_name_ << "_var::inout (void)"; ps_si->nl (); 01016 01017 *ps_si << "{"; 01018 ps_si->incr_indent (0); 01019 ps_si->nl (); 01020 01021 *ps_si << "return this->ptr_;"; 01022 01023 ps_si->decr_indent (0); 01024 ps_si->nl (); 01025 *ps_si << "}"; 01026 01027 ps_si->nl (); 01028 ps_si->nl (); 01029 01030 *ps_si << "::" << this->interface_name_ << "_ptr &"; ps_si->nl (); 01031 *ps_si << this->interface_name_ << "_var::out (void)"; ps_si->nl (); 01032 01033 *ps_si << "{"; 01034 ps_si->incr_indent (0); 01035 ps_si->nl (); 01036 01037 *ps_si << "CORBA::release (this->ptr_);"; ps_si->nl (); 01038 *ps_si << "this->ptr_ = ::" << this->interface_name_ << "::_nil ();"; 01039 ps_si->nl (); 01040 *ps_si << "return this->ptr_;"; 01041 01042 ps_si->nl (); 01043 ps_si->decr_indent (0); 01044 *ps_si << "}"; 01045 01046 ps_si->nl (); 01047 ps_si->nl (); 01048 01049 *ps_si << "::" << this->interface_name_ << "_ptr"; ps_si->nl (); 01050 *ps_si << this->interface_name_ << "_var::_retn (void)"; ps_si->nl (); 01051 01052 *ps_si << "{"; 01053 ps_si->incr_indent (0); 01054 ps_si->nl (); 01055 01056 *ps_si << "// yield ownership of managed obj reference"; ps_si->nl (); 01057 *ps_si << "::" << this->interface_name_ << "_ptr val = this->ptr_;"; 01058 ps_si->nl (); 01059 *ps_si << "this->ptr_ = ::" << this->interface_name_ << "::_nil ();"; 01060 ps_si->nl (); 01061 *ps_si << "return val;"; 01062 01063 ps_si->decr_indent (0); 01064 ps_si->nl (); 01065 *ps_si << "}"; 01066 01067 ps_si->nl (); 01068 ps_si->nl (); 01069 01070 *ps_si << "::" << this->interface_name_ << "_ptr"; ps_si->nl (); 01071 *ps_si << this->interface_name_ << "_var::tao_duplicate (" 01072 << this->interface_name_ << "_ptr p)"; 01073 ps_si->nl (); 01074 01075 *ps_si << "{"; 01076 ps_si->incr_indent (0); 01077 ps_si->nl (); 01078 01079 *ps_si << "return ::" << this->interface_name_ << "::_duplicate (p);"; 01080 01081 ps_si->decr_indent (0); 01082 ps_si->nl (); 01083 *ps_si << "}"; 01084 01085 ps_si->nl (); 01086 ps_si->nl (); 01087 01088 *ps_si << "void"; ps_si->nl (); 01089 *ps_si << this->interface_name_ << "_var::tao_release (" 01090 << this->interface_name_ << "_ptr p)"; 01091 ps_si->nl (); 01092 01093 *ps_si << "{"; 01094 ps_si->incr_indent (0); 01095 ps_si->nl (); 01096 01097 *ps_si << "CORBA::release (p);"; 01098 01099 ps_si->nl (); 01100 ps_si->decr_indent (0); 01101 *ps_si << "}"; 01102 01103 ps_si->nl (); 01104 ps_si->nl (); 01105 01106 *ps_si << "::" << this->interface_name_ << "_ptr"; ps_si->nl (); 01107 *ps_si << this->interface_name_ << "_var::tao_nil (void)"; ps_si->nl (); 01108 01109 *ps_si << "{"; 01110 ps_si->incr_indent (0); 01111 ps_si->nl (); 01112 01113 *ps_si << "return ::" << this->interface_name_ << "::_nil ();"; 01114 01115 ps_si->decr_indent (0); 01116 ps_si->nl (); 01117 *ps_si << "}"; 01118 01119 ps_si->nl (); 01120 ps_si->nl (); 01121 01122 *ps_si << "::" << this->interface_name_ << "_ptr"; ps_si->nl (); 01123 *ps_si << this->interface_name_ << "_var::tao_narrow ("; 01124 01125 ps_si->incr_indent (0); 01126 ps_si->nl (); 01127 01128 *ps_si << "CORBA::Object *p"; ps_si->nl (); 01129 *ps_si << "ACE_ENV_ARG_DECL"; ps_si->nl (); 01130 *ps_si << ")"; 01131 01132 ps_si->decr_indent (0); 01133 ps_si->nl (); 01134 01135 *ps_si << "{"; 01136 ps_si->incr_indent (0); 01137 ps_si->nl (); 01138 01139 *ps_si << "return ::" << this->interface_name_ 01140 << "::_narrow (p ACE_ENV_ARG_PARAMETER);"; 01141 01142 ps_si->decr_indent (0); 01143 ps_si->nl (); 01144 *ps_si << "}"; 01145 01146 ps_si->nl (); 01147 ps_si->nl (); 01148 01149 *ps_si << "CORBA::Object *"; ps_si->nl (); 01150 *ps_si << this->interface_name_ << "_var::tao_upcast (void *src)"; 01151 ps_si->nl (); 01152 01153 *ps_si << "{"; 01154 ps_si->incr_indent (0); 01155 ps_si->nl (); 01156 01157 *ps_si << this->interface_name_ << " **tmp ="; ps_si->nl (); 01158 *ps_si << "ACE_static_cast (" << this->interface_name_ << " **, src);"; 01159 ps_si->nl (); 01160 *ps_si << "return *tmp;"; 01161 01162 ps_si->decr_indent (0); 01163 ps_si->nl (); 01164 *ps_si << "}"; 01165 01166 ps_si->nl (); 01167 ps_si->nl (); 01168 01169 *ps_si << "// **********************************************************"; 01170 ps_si->nl (); 01171 *ps_si << "// " << this->interface_name_ << "_out"; ps_si->nl (); 01172 *ps_si << "// **********************************************************"; 01173 01174 ps_si->nl (); 01175 ps_si->nl (); 01176 01177 *ps_si << this->interface_name_ << "_out::" 01178 << this->interface_name_ << "_out (" 01179 << this->interface_name_ << "_ptr &p)"; 01180 01181 ps_si->incr_indent (0); 01182 ps_si->nl (); 01183 *ps_si << ": ptr_ (p)"; 01184 ps_si->decr_indent (0); 01185 ps_si->nl (); 01186 01187 *ps_si << "{"; 01188 ps_si->incr_indent (0); 01189 ps_si->nl (); 01190 01191 *ps_si << "this->ptr_ = ::" << this->interface_name_ << "::_nil ();"; 01192 01193 ps_si->decr_indent (0); 01194 ps_si->nl (); 01195 *ps_si << "}"; 01196 01197 ps_si->nl (); 01198 ps_si->nl (); 01199 01200 *ps_si << this->interface_name_ << "_out::" 01201 << this->interface_name_ << "_out (" 01202 << this->interface_name_ 01203 << "_var &p) // constructor from _var"; 01204 01205 ps_si->decr_indent (0); 01206 ps_si->nl (); 01207 *ps_si << ": ptr_ (p.out ())"; 01208 ps_si->decr_indent (0); 01209 ps_si->nl (); 01210 01211 *ps_si << "{"; 01212 ps_si->incr_indent (0); 01213 ps_si->nl (); 01214 01215 *ps_si << "CORBA::release (this->ptr_);"; ps_si->nl (); 01216 *ps_si << "this->ptr_ = ::" << this->interface_name_ << "::_nil ();"; 01217 01218 ps_si->decr_indent (0); 01219 ps_si->nl (); 01220 *ps_si << "}"; 01221 01222 ps_si->nl (); 01223 ps_si->nl (); 01224 01225 *ps_si << this->interface_name_ << "_out::" 01226 << this->interface_name_ << "_out (const ::" 01227 << this->interface_name_ << "_out &p) // copy constructor"; 01228 01229 ps_si->decr_indent (0); 01230 ps_si->nl (); 01231 *ps_si << ": ptr_ (ACE_const_cast (" 01232 << this->interface_name_ 01233 << "_out &, p).ptr_)"; 01234 ps_si->decr_indent (0); 01235 ps_si->nl (); 01236 01237 *ps_si << "{}"; 01238 01239 ps_si->nl (); 01240 ps_si->nl (); 01241 01242 *ps_si << "::" << this->interface_name_ << "_out &"; ps_si->nl (); 01243 *ps_si << this->interface_name_ << "_out::operator= (const ::" 01244 << this->interface_name_ << "_out &p)"; ps_si->nl (); 01245 01246 *ps_si << "{"; 01247 ps_si->incr_indent (0); 01248 ps_si->nl (); 01249 01250 *ps_si << "this->ptr_ = ACE_const_cast (" 01251 << this->interface_name_ << "_out&, p).ptr_;"; ps_si->nl (); 01252 *ps_si << "return *this;"; 01253 01254 ps_si->decr_indent (0); 01255 ps_si->nl (); 01256 *ps_si << "}"; 01257 01258 ps_si->nl (); 01259 ps_si->nl (); 01260 01261 *ps_si << this->interface_name_ << "_out &"; ps_si->nl (); 01262 *ps_si << this->interface_name_ << "_out::operator= (const ::" 01263 << this->interface_name_ << "_var &p)"; ps_si->nl (); 01264 01265 *ps_si << "{"; 01266 ps_si->incr_indent (0); 01267 ps_si->nl (); 01268 01269 *ps_si << "this->ptr_ = ::" << this->interface_name_ 01270 << "::_duplicate (p.ptr ());"; ps_si->nl (); 01271 *ps_si << "return *this;"; 01272 01273 ps_si->decr_indent (0); 01274 ps_si->nl (); 01275 *ps_si << "}"; 01276 01277 ps_si->nl (); 01278 ps_si->nl (); 01279 01280 *ps_si << this->interface_name_ << "_out &"; ps_si->nl (); 01281 *ps_si << this->interface_name_ << "_out::operator= (" 01282 << this->interface_name_ << "_ptr p)"; ps_si->nl (); 01283 01284 *ps_si << "{"; 01285 ps_si->incr_indent (0); 01286 ps_si->nl (); 01287 01288 *ps_si << "this->ptr_ = p;"; ps_si->nl (); 01289 *ps_si << "return *this;"; 01290 01291 ps_si->decr_indent (0); 01292 ps_si->nl (); 01293 *ps_si << "}"; 01294 01295 ps_si->nl (); 01296 ps_si->nl (); 01297 01298 *ps_si << this->interface_name_ << "_out::operator ::" 01299 << this->interface_name_ << "_ptr &() // cast"; ps_si->nl (); 01300 01301 *ps_si << "{"; 01302 ps_si->incr_indent (0); 01303 ps_si->nl (); 01304 01305 *ps_si << "return this->ptr_;"; 01306 01307 ps_si->decr_indent (0); 01308 ps_si->nl (); 01309 *ps_si << "}"; 01310 01311 ps_si->nl (); 01312 ps_si->nl (); 01313 01314 *ps_si << "::" << this->interface_name_ << "_ptr &"; ps_si->nl (); 01315 *ps_si << this->interface_name_ << "_out::ptr (void) // ptr"; ps_si->nl (); 01316 01317 *ps_si << "{"; 01318 ps_si->incr_indent (0); 01319 ps_si->nl (); 01320 01321 *ps_si << "return this->ptr_;"; 01322 01323 ps_si->decr_indent (0); 01324 ps_si->nl (); 01325 *ps_si << "}"; 01326 01327 ps_si->nl (); 01328 ps_si->nl (); 01329 01330 *ps_si << "::" << this->interface_name_ << "_ptr"; ps_si->nl (); 01331 *ps_si << this->interface_name_ << "_out::operator-> (void)"; ps_si->nl (); 01332 01333 *ps_si << "{"; 01334 ps_si->incr_indent (0); 01335 ps_si->nl (); 01336 01337 *ps_si << "return this->ptr_;"; 01338 01339 ps_si->decr_indent (0); 01340 ps_si->nl (); 01341 *ps_si << "}"; 01342 01343 ps_si->nl (); 01344 ps_si->nl (); 01345 ps_si->nl (); 01346 01347 *ps_si << "#if (TAO_HAS_INTERCEPTORS == 1)"; ps_si->nl (); 01348 *ps_si << "#endif /* TAO_HAS_INTERCEPTORS */"; 01349 01350 ps_si->nl (); 01351 ps_si->nl (); 01352 01353 *ps_si << "///////////////////////////////////////////////////////////////"; ps_si->nl (); 01354 *ps_si << "// Base & Remote Proxy Implementation. "; 01355 ps_si->nl (); 01356 *ps_si << "//"; 01357 01358 ps_si->nl (); 01359 ps_si->nl (); 01360 01361 *ps_si << "_TAO_" << this->interface_name_ << "_Proxy_Impl::_TAO_" 01362 << this->interface_name_ << "_Proxy_Impl (void)"; ps_si->nl (); 01363 *ps_si << "{}"; 01364 01365 ps_si->nl (); 01366 ps_si->nl (); 01367 01368 *ps_si << "_TAO_" << this->interface_name_ 01369 << "_Remote_Proxy_Impl::_TAO_" << this->interface_name_ 01370 << "_Remote_Proxy_Impl (void)"; ps_si->nl (); 01371 *ps_si << "{}"; 01372 01373 ps_si->nl (); 01374 ps_si->nl (); 01375 01376 *ps_si << "// Remote Implementation of the IDL interface methods"; 01377 ps_si->nl (); 01378 ps_si->nl (); 01379 01380 *ps_si << "//"; ps_si->nl (); 01381 *ps_si << "// End Base & Remote Proxy Implemeentation. "; 01382 ps_si->nl (); 01383 01384 *ps_si << "///////////////////////////////////////////////////////////////"; 01385 ps_si->nl (); 01386 ps_si->nl (); 01387 01388 *ps_si << "///////////////////////////////////////////////////////////////"; ps_si->nl (); 01389 *ps_si << "// Remote & Base Proxy Broker Implementation"; 01390 ps_si->nl (); 01391 *ps_si << "//"; 01392 01393 ps_si->nl (); 01394 ps_si->nl (); 01395 01396 *ps_si << "_TAO_" << this->interface_name_ << "_Proxy_Broker::_TAO_" 01397 << this->interface_name_ << "_Proxy_Broker (void)"; ps_si->nl (); 01398 *ps_si << "{"; ps_si->nl (); 01399 *ps_si << "}"; 01400 01401 ps_si->nl (); 01402 ps_si->nl (); 01403 01404 *ps_si << "_TAO_" << this->interface_name_ << "_Proxy_Broker::~_TAO_" 01405 << this->interface_name_ << "_Proxy_Broker (void)"; ps_si->nl (); 01406 *ps_si << "{"; ps_si->nl (); 01407 *ps_si << "}"; 01408 01409 ps_si->nl (); 01410 ps_si->nl (); 01411 01412 *ps_si << "_TAO_" << this->interface_name_ 01413 << "_Proxy_Broker * (*_TAO_" 01414 << this->interface_name_ 01415 << "_Proxy_Broker_Factory_function_pointer) ("; 01416 01417 ps_si->incr_indent (0); 01418 ps_si->nl (); 01419 *ps_si << "CORBA::Object_ptr obj"; 01420 01421 ps_si->nl (); 01422 *ps_si << ") = 0;"; 01423 01424 ps_si->decr_indent (0); 01425 01426 ps_si->nl (); 01427 ps_si->nl (); 01428 01429 *ps_si << "// Factory Member function Implementation."; ps_si->nl (); 01430 *ps_si << "_TAO_" << this->interface_name_ << "_Remote_Proxy_Broker *"; 01431 ps_si->nl (); 01432 *ps_si << "_TAO_" << this->interface_name_ 01433 << "_Remote_Proxy_Broker::the_TAO_" 01434 << this->interface_name_ 01435 << "_Remote_Proxy_Broker (void)"; ps_si->nl (); 01436 01437 *ps_si << "{"; 01438 ps_si->incr_indent (0); 01439 ps_si->nl (); 01440 01441 *ps_si << "static ::_TAO_" << this->interface_name_ 01442 << "_Remote_Proxy_Broker remote_proxy_broker;"; ps_si->nl (); 01443 *ps_si << "return &remote_proxy_broker;"; 01444 01445 ps_si->decr_indent (0); 01446 ps_si->nl (); 01447 *ps_si << "}"; 01448 01449 ps_si->nl (); 01450 ps_si->nl (); 01451 01452 *ps_si << "_TAO_" << this->interface_name_ 01453 << "_Remote_Proxy_Broker::_TAO_" 01454 << this->interface_name_ << "_Remote_Proxy_Broker (void)"; ps_si->nl (); 01455 *ps_si << "{"; ps_si->nl (); 01456 *ps_si << "}"; 01457 01458 ps_si->nl (); 01459 ps_si->nl (); 01460 01461 *ps_si << "_TAO_" << this->interface_name_ 01462 << "_Remote_Proxy_Broker::~_TAO_" 01463 << this->interface_name_ << "_Remote_Proxy_Broker (void)"; ps_si->nl (); 01464 *ps_si << "{"; ps_si->nl (); 01465 *ps_si << "}"; 01466 01467 ps_si->nl (); 01468 ps_si->nl (); 01469 01470 *ps_si << "_TAO_" << this->interface_name_ << "_Proxy_Impl&"; ps_si->nl (); 01471 *ps_si << "_TAO_" << this->interface_name_ 01472 << "_Remote_Proxy_Broker::select_proxy ("; 01473 01474 ps_si->incr_indent (0); 01475 ps_si->nl (); 01476 *ps_si << "::" << this->interface_name_ << " *"; ps_si->nl (); 01477 *ps_si << "ACE_ENV_ARG_DECL_NOT_USED"; ps_si->nl (); 01478 *ps_si << ")"; 01479 ps_si->decr_indent (0); 01480 ps_si->nl (); 01481 01482 *ps_si << "{"; 01483 ps_si->incr_indent (0); 01484 ps_si->nl (); 01485 01486 *ps_si << "return this->remote_proxy_impl_;"; 01487 01488 ps_si->decr_indent (0); 01489 ps_si->nl (); 01490 *ps_si << "}"; 01491 01492 ps_si->nl (); 01493 ps_si->nl (); 01494 ps_si->nl (); 01495 01496 *ps_si << "//"; ps_si->nl (); 01497 *ps_si << "// End Remote & Base Proxy Broker Implementation"; ps_si->nl (); 01498 *ps_si << "///////////////////////////////////////////////////////////////"; ps_si->nl (); 01499 ps_si->nl (); 01500 ps_si->nl (); 01501 01502 *ps_si << this->interface_name_ << "::" 01503 << this->interface_name_ << " (int collocated)"; ps_si->nl (); 01504 01505 *ps_si << "{"; 01506 ps_si->incr_indent (0); 01507 ps_si->nl (); 01508 01509 *ps_si << "this->" << this->interface_name_ 01510 << "_setup_collocation (collocated);"; 01511 01512 ps_si->decr_indent (0); 01513 ps_si->nl (); 01514 *ps_si << "}"; 01515 01516 ps_si->nl (); 01517 ps_si->nl (); 01518 01519 *ps_si << this->interface_name_ << "::~" 01520 << this->interface_name_ << " (void)"; ps_si->nl (); 01521 *ps_si << "{}"; 01522 01523 ps_si->nl (); 01524 ps_si->nl (); 01525 01526 *ps_si << "void"; ps_si->nl (); 01527 *ps_si << this->interface_name_ << "::" 01528 << this->interface_name_ 01529 << "_setup_collocation (int collocated)"; ps_si->nl (); 01530 01531 *ps_si << "{"; 01532 ps_si->incr_indent (0); 01533 ps_si->nl (); 01534 01535 *ps_si << "if (collocated)"; 01536 ps_si->incr_indent (0); 01537 ps_si->nl (); 01538 01539 *ps_si << "this->the_TAO_" 01540 << this->interface_name_ << "_Proxy_Broker_ ="; 01541 01542 ps_si->incr_indent (0); 01543 ps_si->nl (); 01544 01545 *ps_si << "::_TAO_" << this->interface_name_ 01546 << "_Proxy_Broker_Factory_function_pointer (this);"; 01547 01548 ps_si->decr_indent (0); 01549 ps_si->decr_indent (0); 01550 ps_si->nl (); 01551 01552 *ps_si << "else"; 01553 ps_si->incr_indent (0); 01554 ps_si->nl (); 01555 *ps_si << "this->the_TAO_" 01556 << this->interface_name_ 01557 << "_Proxy_Broker_ ="; 01558 01559 ps_si->incr_indent (0); 01560 ps_si->nl (); 01561 01562 *ps_si << "::_TAO_" << this->interface_name_ 01563 << "_Remote_Proxy_Broker::the_TAO_" 01564 << this->interface_name_ 01565 << "_Remote_Proxy_Broker ();"; 01566 01567 ps_si->decr_indent (0); 01568 ps_si->decr_indent (0); 01569 ps_si->decr_indent (0); 01570 ps_si->decr_indent (0); 01571 01572 ps_si->nl (); 01573 *ps_si << "}"; 01574 01575 ps_si->nl (); 01576 ps_si->nl (); 01577 01578 *ps_si << "void " << this->interface_name_ 01579 << "::_tao_any_destructor (void *_tao_void_pointer)"; ps_si->nl (); 01580 01581 *ps_si << "{"; 01582 ps_si->incr_indent (0); 01583 ps_si->nl (); 01584 01585 *ps_si << this->interface_name_ 01586 << " *tmp = ACE_static_cast (" 01587 << this->interface_name_ << "*, _tao_void_pointer);"; ps_si->nl (); 01588 *ps_si << "CORBA::release (tmp);"; 01589 01590 ps_si->decr_indent (0); 01591 ps_si->nl (); 01592 *ps_si << "}"; 01593 01594 ps_si->nl (); 01595 ps_si->nl (); 01596 01597 *ps_si << this->interface_name_ << "_ptr " 01598 << this->interface_name_ << "::_narrow ("; 01599 01600 ps_si->incr_indent (0); 01601 ps_si->nl (); 01602 *ps_si << "CORBA::Object_ptr obj"; ps_si->nl (); 01603 *ps_si << "ACE_ENV_ARG_DECL"; 01604 01605 ps_si->decr_indent (0); 01606 ps_si->nl (); 01607 *ps_si << ")"; 01608 ps_si->nl (); 01609 01610 *ps_si << "{"; 01611 ps_si->incr_indent (0); 01612 ps_si->nl (); 01613 01614 *ps_si << "if (CORBA::is_nil (obj))"; 01615 ps_si->incr_indent (0); 01616 ps_si->nl (); 01617 01618 *ps_si << "return " << this->interface_name_ << "::_nil ();"; 01619 01620 ps_si->decr_indent (0); 01621 ps_si->nl (); 01622 ps_si->nl (); 01623 01624 *ps_si << "if (! obj->_is_local ())"; 01625 ps_si->incr_indent (0); 01626 ps_si->nl (); 01627 *ps_si << "{"; 01628 ps_si->incr_indent (0); 01629 ps_si->nl (); 01630 01631 *ps_si << "CORBA::Boolean is_a = obj->_is_a (\"IDL:" 01632 << this->interface_name_ << ":1.0\" ACE_ENV_ARG_PARAMETER);"; 01633 ps_si->nl (); 01634 *ps_si << "ACE_CHECK_RETURN (" << this->interface_name_ << "::_nil ());"; ps_si->nl (); 01635 01636 *ps_si << "if (is_a == 0)"; 01637 ps_si->incr_indent (0); 01638 ps_si->nl (); 01639 *ps_si << "return " << this->interface_name_ << "::_nil ();"; 01640 01641 ps_si->decr_indent (0); 01642 ps_si->decr_indent (0); 01643 ps_si->nl (); 01644 *ps_si << "}"; 01645 ps_si->decr_indent (0); 01646 ps_si->nl (); 01647 01648 *ps_si << "return " << this->interface_name_ 01649 << "::_unchecked_narrow (obj ACE_ENV_ARG_PARAMETER);"; 01650 01651 ps_si->decr_indent (0); 01652 ps_si->nl (); 01653 *ps_si << "}"; 01654 01655 ps_si->nl (); 01656 ps_si->nl (); 01657 01658 *ps_si << this->interface_name_ << "_ptr "; ps_si->nl (); 01659 *ps_si << this->interface_name_ << "::_unchecked_narrow ("; 01660 01661 ps_si->incr_indent (0); 01662 ps_si->nl (); 01663 *ps_si << "CORBA::Object_ptr obj"; ps_si->nl (); 01664 *ps_si << "ACE_ENV_ARG_DECL_NOT_USED"; ps_si->nl (); 01665 *ps_si << ")"; 01666 01667 ps_si->decr_indent (0); 01668 ps_si->nl (); 01669 01670 *ps_si << "{"; 01671 01672 ps_si->incr_indent (0); 01673 ps_si->nl (); 01674 *ps_si << "if (CORBA::is_nil (obj))"; 01675 ps_si->incr_indent (0); 01676 ps_si->nl (); 01677 01678 *ps_si << "return " << this->interface_name_ << "::_nil ();"; 01679 01680 ps_si->decr_indent (0); 01681 ps_si->nl (); 01682 01683 *ps_si << "if (! obj->_is_local ())"; ps_si->nl (); 01684 *ps_si << "{"; 01685 ps_si->incr_indent (0); 01686 ps_si->nl (); 01687 *ps_si << "TAO_Stub* stub = obj->_stubobj ();"; ps_si->nl (); 01688 01689 *ps_si << "if (stub)"; 01690 ps_si->incr_indent (0); 01691 ps_si->nl (); 01692 01693 *ps_si << " stub->_incr_refcnt ();"; 01694 01695 ps_si->decr_indent (0); 01696 ps_si->nl (); 01697 01698 *ps_si << this->interface_name_ << "_ptr default_proxy = " 01699 << this->interface_name_ << "::_nil ();"; ps_si->nl (); 01700 ps_si->nl (); 01701 *ps_si << "if ("; 01702 ps_si->incr_indent (0); 01703 ps_si->nl (); 01704 *ps_si << "!CORBA::is_nil (stub->servant_orb_var ().ptr ()) &&"; ps_si->nl (); 01705 *ps_si << "stub->servant_orb_var ()->orb_core ()->optimize_collocation_objects () &&"; ps_si->nl (); 01706 *ps_si << "obj->_is_collocated () &&"; ps_si->nl (); 01707 *ps_si << "_TAO_" << this->interface_name_ 01708 << "_Proxy_Broker_Factory_function_pointer != 0"; ps_si->nl (); 01709 *ps_si << ")"; 01710 ps_si->decr_indent (0); 01711 ps_si->nl (); 01712 01713 *ps_si << " {"; 01714 ps_si->incr_indent (0); 01715 ps_si->nl (); 01716 01717 *ps_si << " ACE_NEW_RETURN ("; 01718 ps_si->incr_indent (0); 01719 ps_si->nl (); 01720 01721 *ps_si << "default_proxy,"; ps_si->nl (); 01722 *ps_si << "::" << this->interface_name_ << " ("; 01723 ps_si->incr_indent (0); 01724 ps_si->incr_indent (0); 01725 ps_si->nl (); 01726 01727 *ps_si << "stub,"; ps_si->nl (); 01728 *ps_si << "1,"; ps_si->nl (); 01729 *ps_si << "obj->_servant ()"; ps_si->nl (); 01730 *ps_si << "),"; 01731 ps_si->decr_indent (0); 01732 ps_si->decr_indent (0); 01733 ps_si->nl (); 01734 *ps_si << this->interface_name_ << "::_nil ()"; ps_si->nl (); 01735 01736 *ps_si << ");"; 01737 ps_si->decr_indent (0); 01738 ps_si->decr_indent (0); 01739 ps_si->nl (); 01740 *ps_si << " }"; 01741 01742 ps_si->nl (); 01743 ps_si->nl (); 01744 01745 *ps_si << "if (CORBA::is_nil (default_proxy))"; 01746 ps_si->incr_indent (0); 01747 ps_si->nl (); 01748 *ps_si << "{"; 01749 01750 ps_si->incr_indent (0); 01751 ps_si->nl (); 01752 01753 *ps_si << "ACE_NEW_RETURN ("; 01754 ps_si->incr_indent (0); 01755 ps_si->nl (); 01756 01757 *ps_si << "default_proxy,"; ps_si->nl (); 01758 01759 *ps_si << "::" << this->interface_name_ << " ("; 01760 ps_si->incr_indent (0); 01761 ps_si->incr_indent (0); 01762 ps_si->nl (); 01763 01764 *ps_si << "stub,"; ps_si->nl (); 01765 *ps_si << "0,"; ps_si->nl (); 01766 *ps_si << "obj->_servant ()"; ps_si->nl (); 01767 *ps_si << "),"; 01768 01769 ps_si->decr_indent (0); 01770 ps_si->decr_indent (0); 01771 ps_si->nl (); 01772 01773 *ps_si << this->interface_name_ << "::_nil ()"; ps_si->nl (); 01774 *ps_si << ");"; 01775 ps_si->decr_indent (0); 01776 ps_si->nl (); 01777 01778 *ps_si << " }"; 01779 ps_si->decr_indent (0); 01780 ps_si->nl (); 01781 01782 *ps_si << "return default_proxy;"; 01783 ps_si->decr_indent (0); 01784 ps_si->nl (); 01785 01786 *ps_si << "}"; ps_si->nl (); 01787 *ps_si << "else"; 01788 ps_si->incr_indent (0); 01789 ps_si->nl (); 01790 *ps_si << "return"; 01791 01792 ps_si->incr_indent (0); 01793 ps_si->nl (); 01794 01795 *ps_si << "ACE_reinterpret_cast"; ps_si->nl (); 01796 *ps_si << "("; 01797 ps_si->incr_indent (0); 01798 ps_si->nl (); 01799 *ps_si << this->interface_name_ << "_ptr,"; ps_si->nl (); 01800 *ps_si << "obj->_tao_QueryInterface"; ps_si->nl (); 01801 *ps_si << "("; 01802 ps_si->incr_indent (0); 01803 ps_si->nl (); 01804 01805 *ps_si << "ACE_reinterpret_cast"; ps_si->nl (); 01806 *ps_si << "("; 01807 ps_si->incr_indent (0); 01808 ps_si->nl (); 01809 *ps_si << "ptrdiff_t,"; ps_si->nl (); 01810 *ps_si << "&" << this->interface_name_ << "::_tao_class_id"; 01811 ps_si->nl (); 01812 01813 *ps_si << ")"; 01814 ps_si->decr_indent (0); 01815 ps_si->nl (); 01816 01817 *ps_si << ")"; 01818 ps_si->decr_indent (0); 01819 ps_si->decr_indent (0); 01820 ps_si->nl (); 01821 01822 *ps_si << " );"; 01823 ps_si->decr_indent (0); 01824 ps_si->decr_indent (0); 01825 ps_si->decr_indent (0); 01826 ps_si->decr_indent (0); 01827 ps_si->decr_indent (0); 01828 ps_si->decr_indent (0); 01829 ps_si->nl (); 01830 01831 *ps_si << "}"; 01832 01833 ps_si->nl (); 01834 ps_si->nl (); 01835 01836 *ps_si << this->interface_name_ << "_ptr"; ps_si->nl (); 01837 *ps_si << this->interface_name_ << "::_duplicate (" 01838 << this->interface_name_ << "_ptr obj)"; ps_si->nl (); 01839 *ps_si << "{"; 01840 ps_si->incr_indent (0); 01841 ps_si->nl (); 01842 *ps_si << "if (!CORBA::is_nil (obj))"; 01843 ps_si->incr_indent (0); 01844 ps_si->nl (); 01845 *ps_si << "obj->_add_ref ();"; 01846 01847 ps_si->decr_indent (0); 01848 ps_si->nl (); 01849 01850 *ps_si << "return obj;"; 01851 01852 ps_si->decr_indent (0); 01853 ps_si->nl (); 01854 *ps_si << "}"; 01855 01856 ps_si->nl (); 01857 ps_si->nl (); 01858 01859 *ps_si << "CORBA::Boolean " << this->interface_name_ 01860 << "::_is_a (const CORBA::Char *value ACE_ENV_ARG_DECL)"; ps_si->nl (); 01861 01862 *ps_si << "{"; 01863 ps_si->incr_indent (0); 01864 ps_si->nl (); 01865 01866 *ps_si << "if ("; 01867 ps_si->incr_indent (0); 01868 ps_si->nl (); 01869 01870 *ps_si << "(!ACE_OS::strcmp ((char *)value, \"IDL:" 01871 << this->interface_name_ << ":1.0\")) ||"; ps_si->nl (); 01872 *ps_si << "(!ACE_OS::strcmp ((char *)value," 01873 << "\"IDL:omg.org/CORBA/Object:1.0\")))"; ps_si->nl (); 01874 01875 *ps_si << "return 1; // success using local knowledge"; 01876 01877 ps_si->decr_indent (0); 01878 ps_si->nl (); 01879 *ps_si << "else"; 01880 01881 ps_si->incr_indent (0); 01882 ps_si->nl (); 01883 *ps_si << "return this->Object::_is_a (value ACE_ENV_ARG_PARAMETER);"; 01884 ps_si->decr_indent (0); 01885 ps_si->decr_indent (0); 01886 ps_si->nl (); 01887 *ps_si << "}"; 01888 01889 ps_si->nl (); 01890 ps_si->nl (); 01891 01892 *ps_si << "void *" << this->interface_name_ 01893 << "::_tao_QueryInterface (ptrdiff_t type)"; ps_si->nl (); 01894 *ps_si << "{"; 01895 ps_si->incr_indent (0); 01896 ps_si->nl (); 01897 *ps_si << "void *retv = 0;"; ps_si->nl (); 01898 *ps_si << "if (type == ACE_reinterpret_cast"; 01899 ps_si->incr_indent (0); 01900 ps_si->nl (); 01901 *ps_si << "(ptrdiff_t,"; ps_si->nl (); 01902 *ps_si << "&" << this->interface_name_ << "::_tao_class_id))"; ps_si->nl (); 01903 *ps_si << "retv = reinterpret_cast<void*> (this);"; 01904 ps_si->decr_indent (0); 01905 ps_si->nl (); 01906 01907 *ps_si << "else if (type == ACE_reinterpret_cast " 01908 << "(ptrdiff_t, &CORBA::Object::_tao_class_id))"; 01909 01910 ps_si->incr_indent (0); 01911 ps_si->nl (); 01912 01913 *ps_si << "retv = ACE_reinterpret_cast (void *,"; 01914 ps_si->incr_indent (0); 01915 ps_si->nl (); 01916 *ps_si << "static_cast<CORBA::Object_ptr> (this));"; 01917 01918 ps_si->decr_indent (0); 01919 ps_si->decr_indent (0); 01920 01921 ps_si->nl (); 01922 ps_si->nl (); 01923 *ps_si << "if (retv)"; 01924 ps_si->incr_indent (0); 01925 ps_si->nl (); 01926 *ps_si << "this->_add_ref ();"; 01927 01928 ps_si->decr_indent (0); 01929 ps_si->nl (); 01930 01931 *ps_si << "return retv;"; 01932 01933 ps_si->decr_indent (0); 01934 ps_si->nl (); 01935 *ps_si << "}"; 01936 01937 ps_si->nl (); 01938 ps_si->nl (); 01939 01940 *ps_si << "const char* " << this->interface_name_ 01941 << "::_interface_repository_id (void) const"; ps_si->nl (); 01942 01943 *ps_si << "{"; 01944 ps_si->incr_indent (0); 01945 ps_si->nl (); 01946 *ps_si << "return \"IDL:" << this->interface_name_ << ":1.0\";"; 01947 ps_si->decr_indent (0); 01948 ps_si->nl (); 01949 01950 *ps_si << "}"; 01951 01952 ps_si->nl (); 01953 ps_si->nl (); 01954 01955 *ps_si << "static const CORBA::Long _oc_" 01956 << this->interface_name_ << "[] ="; ps_si->nl (); 01957 *ps_si << "{"; ps_si->nl (); 01958 *ps_si << "// typecode related information goes here"; 01959 01960 ps_si->nl (); 01961 *ps_si << "};"; 01962 01963 ps_si->nl (); 01964 ps_si->nl (); 01965 01966 01967 *ps_si << "static CORBA::TypeCode _tc_TAO_tc_" 01968 << this->interface_name_ << " ("; 01969 01970 ps_si->incr_indent (0); 01971 ps_si->incr_indent (0); 01972 ps_si->nl (); 01973 01974 *ps_si << "CORBA::tk_objref,"; ps_si->nl (); 01975 *ps_si << "sizeof (_oc_" << this->interface_name_ << "),"; ps_si->nl (); 01976 *ps_si << "(char *) &_oc_" << this->interface_name_ << ","; ps_si->nl (); 01977 *ps_si << "0,"; ps_si->nl (); 01978 *ps_si << "sizeof (" << this->interface_name_ << ")"; 01979 ps_si->decr_indent (0); 01980 ps_si->nl (); 01981 *ps_si << ");"; 01982 01983 ps_si->decr_indent (0); 01984 ps_si->nl (); 01985 ps_si->nl (); 01986 01987 *ps_si << "::CORBA::TypeCode_ptr _tc_" << this->interface_name_ << " ="; 01988 ps_si->decr_indent (0); 01989 ps_si->nl (); 01990 *ps_si << "&_tc_TAO_tc_" << this->interface_name_ << ";"; 01991 ps_si->decr_indent (0); 01992 01993 ps_si->nl (); 01994 ps_si->nl (); 01995 01996 *ps_si << "void operator<<= ("; 01997 ps_si->incr_indent (0); 01998 ps_si->incr_indent (0); 01999 ps_si->nl (); 02000 02001 *ps_si << "CORBA::Any &_tao_any,"; ps_si->nl (); 02002 *ps_si << this->interface_name_ << "_ptr _tao_elem"; 02003 ps_si->decr_indent (0); 02004 ps_si->nl (); 02005 02006 *ps_si << ")"; 02007 ps_si->decr_indent (0); 02008 ps_si->nl (); 02009 02010 *ps_si << "{"; 02011 ps_si->incr_indent (0); 02012 ps_si->nl (); 02013 02014 *ps_si << "TAO_OutputCDR stream;"; 02015 ps_si->nl (); 02016 ps_si->nl (); 02017 02018 *ps_si << "if (stream << _tao_elem)"; 02019 ps_si->incr_indent (0); 02020 ps_si->nl (); 02021 02022 *ps_si << "{"; 02023 ps_si->incr_indent (0); 02024 ps_si->nl (); 02025 02026 *ps_si << "_tao_any._tao_replace ("; 02027 ps_si->incr_indent (0); 02028 ps_si->incr_indent (0); 02029 ps_si->nl (); 02030 02031 *ps_si << "_tc_" << this->interface_name_ << ", "; ps_si->nl (); 02032 *ps_si << "TAO_ENCAP_BYTE_ORDER,"; ps_si->nl (); 02033 *ps_si << "stream.begin (),"; ps_si->nl (); 02034 *ps_si << "1,"; ps_si->nl (); 02035 *ps_si << this->interface_name_ << "::_duplicate (_tao_elem),"; ps_si->nl (); 02036 *ps_si << this->interface_name_ << "::_tao_any_destructor"; 02037 ps_si->decr_indent (0); 02038 ps_si->nl (); 02039 *ps_si << ");"; 02040 02041 ps_si->decr_indent (0); 02042 ps_si->decr_indent (0); 02043 ps_si->nl (); 02044 *ps_si << "}"; 02045 02046 ps_si->decr_indent (0); 02047 ps_si->decr_indent (0); 02048 ps_si->nl (); 02049 *ps_si << "}"; 02050 02051 ps_si->nl (); 02052 ps_si->nl (); 02053 02054 *ps_si << "void operator<<= ("; 02055 ps_si->incr_indent (0); 02056 ps_si->nl (); 02057 *ps_si << "CORBA::Any &_tao_any,"; ps_si->nl (); 02058 *ps_si << this->interface_name_ << "_ptr *_tao_elem"; 02059 ps_si->nl (); 02060 02061 *ps_si << ")"; 02062 ps_si->decr_indent (0); 02063 ps_si->nl (); 02064 02065 *ps_si << "{"; 02066 ps_si->incr_indent (0); 02067 ps_si->nl (); 02068 02069 *ps_si << "TAO_OutputCDR stream;"; 02070 ps_si->nl (); 02071 ps_si->nl (); 02072 02073 *ps_si << "if (stream << *_tao_elem)"; 02074 ps_si->incr_indent (0); 02075 ps_si->nl (); 02076 02077 *ps_si << "{"; 02078 ps_si->incr_indent (0); 02079 ps_si->nl (); 02080 02081 *ps_si << "_tao_any._tao_replace ("; 02082 ps_si->incr_indent (0); 02083 ps_si->nl (); 02084 *ps_si << "_tc_" << this->interface_name_ << ", "; ps_si->nl (); 02085 *ps_si << "TAO_ENCAP_BYTE_ORDER,"; ps_si->nl (); 02086 *ps_si << "stream.begin (),"; ps_si->nl (); 02087 *ps_si << "1,"; ps_si->nl (); 02088 *ps_si << "*_tao_elem,"; ps_si->nl (); 02089 *ps_si << this->interface_name_ << "::_tao_any_destructor"; 02090 02091 ps_si->decr_indent (0); 02092 ps_si->nl (); 02093 *ps_si << ");"; 02094 02095 ps_si->decr_indent (0); 02096 ps_si->nl (); 02097 *ps_si << "}"; 02098 02099 ps_si->decr_indent (0); 02100 ps_si->decr_indent (0); 02101 ps_si->nl (); 02102 *ps_si << "}"; 02103 02104 ps_si->nl (); 02105 ps_si->nl (); 02106 02107 *ps_si << "CORBA::Boolean operator>>= ("; 02108 ps_si->incr_indent (0); 02109 ps_si->incr_indent (0); 02110 ps_si->nl (); 02111 *ps_si << "const CORBA::Any &_tao_any,"; ps_si->nl (); 02112 *ps_si << this->interface_name_ << "_ptr &_tao_elem"; 02113 02114 ps_si->decr_indent (0); 02115 ps_si->nl (); 02116 *ps_si << ")"; 02117 02118 ps_si->decr_indent (0); 02119 ps_si->nl (); 02120 02121 *ps_si << "{"; 02122 ps_si->incr_indent (0); 02123 ps_si->nl (); 02124 02125 *ps_si << "ACE_TRY_NEW_ENV"; ps_si->nl (); 02126 *ps_si << "{"; 02127 ps_si->incr_indent (0); 02128 ps_si->nl (); 02129 02130 *ps_si << "_tao_elem = " << this->interface_name_ << "::_nil ();"; 02131 ps_si->nl (); 02132 *ps_si << "CORBA::TypeCode_var type = _tao_any.type ();"; 02133 ps_si->nl (); 02134 ps_si->nl (); 02135 02136 *ps_si << "CORBA::Boolean result ="; 02137 ps_si->incr_indent (0); 02138 ps_si->nl (); 02139 02140 *ps_si << "type->equivalent ("; 02141 ps_si->incr_indent (0); 02142 ps_si->incr_indent (0); 02143 ps_si->nl (); 02144 *ps_si << "_tc_" << this->interface_name_ << ""; ps_si->nl (); 02145 *ps_si << "ACE_ENV_ARG_PARAMETER"; 02146 02147 ps_si->decr_indent (0); 02148 ps_si->nl (); 02149 *ps_si << ");"; 02150 02151 ps_si->decr_indent (0); 02152 ps_si->decr_indent (0); 02153 ps_si->nl (); 02154 *ps_si << "ACE_TRY_CHECK;"; 02155 02156 ps_si->nl (); 02157 ps_si->nl (); 02158 02159 *ps_si << "if (!result)"; 02160 ps_si->incr_indent (0); 02161 ps_si->nl (); 02162 02163 *ps_si << "{"; 02164 ps_si->incr_indent (0); 02165 ps_si->nl (); 02166 *ps_si << "return 0; // not equivalent"; 02167 02168 ps_si->decr_indent (0); 02169 ps_si->nl (); 02170 *ps_si << "}"; 02171 02172 ps_si->decr_indent (0); 02173 ps_si->nl (); 02174 ps_si->nl (); 02175 02176 *ps_si << "TAO_InputCDR stream ("; 02177 ps_si->incr_indent (0); 02178 ps_si->incr_indent (0); 02179 ps_si->nl (); 02180 02181 *ps_si << "_tao_any._tao_get_cdr (),"; 02182 ps_si->nl (); 02183 *ps_si << "_tao_any._tao_byte_order ()"; 02184 ps_si->decr_indent (0); 02185 ps_si->nl (); 02186 *ps_si << ");"; 02187 02188 ps_si->decr_indent (0); 02189 ps_si->nl (); 02190 ps_si->nl (); 02191 02192 *ps_si << "if (stream >> _tao_elem)"; 02193 ps_si->incr_indent (0); 02194 ps_si->nl (); 02195 02196 *ps_si << "{"; 02197 ps_si->incr_indent (0); 02198 ps_si->nl (); 02199 02200 *ps_si << "((CORBA::Any *)&_tao_any)->_tao_replace ("; 02201 ps_si->incr_indent (0); 02202 ps_si->incr_indent (0); 02203 ps_si->nl (); 02204 02205 *ps_si << "_tc_" << this->interface_name_ << ","; ps_si->nl (); 02206 *ps_si << "1,"; ps_si->nl (); 02207 *ps_si << "_tao_elem,"; ps_si->nl (); 02208 *ps_si << this->interface_name_ << "::_tao_any_destructor"; 02209 02210 ps_si->decr_indent (0); 02211 ps_si->nl (); 02212 *ps_si << ");"; 02213 02214 ps_si->decr_indent (0); 02215 ps_si->nl (); 02216 ps_si->nl (); 02217 *ps_si << "return 1;"; 02218 02219 ps_si->decr_indent (0); 02220 ps_si->nl (); 02221 *ps_si << "}"; 02222 02223 ps_si->decr_indent (0); 02224 ps_si->decr_indent (0); 02225 ps_si->nl (); 02226 *ps_si << "}"; 02227 ps_si->nl (); 02228 02229 *ps_si << "ACE_CATCHANY"; 02230 ps_si->incr_indent (0); 02231 ps_si->nl (); 02232 *ps_si << "{"; ps_si->nl (); 02233 *ps_si << "}"; 02234 ps_si->decr_indent (0); 02235 ps_si->nl (); 02236 *ps_si << "ACE_ENDTRY;"; 02237 02238 ps_si->nl (); 02239 ps_si->nl (); 02240 02241 *ps_si << "_tao_elem = " << this->interface_name_ << "::_nil ();"; 02242 ps_si->nl (); 02243 *ps_si << "return 0;"; 02244 02245 ps_si->decr_indent (0); 02246 ps_si->nl (); 02247 *ps_si << "}"; 02248 02249 ps_si->nl (); 02250 ps_si->nl (); 02251 02252 *ps_si << "CORBA::Boolean operator<< ("; 02253 02254 ps_si->incr_indent (0); 02255 ps_si->incr_indent (0); 02256 ps_si->nl (); 02257 02258 *ps_si << "TAO_OutputCDR &strm,"; ps_si->nl (); 02259 *ps_si << "const " << this->interface_name_ << "_ptr _tao_objref"; 02260 02261 ps_si->decr_indent (0); 02262 ps_si->nl (); 02263 *ps_si << ")"; 02264 ps_si->decr_indent (0); 02265 ps_si->nl (); 02266 02267 *ps_si << "{"; 02268 ps_si->incr_indent (0); 02269 ps_si->nl (); 02270 02271 *ps_si << "CORBA::Object_ptr _tao_corba_obj = _tao_objref;"; ps_si->nl (); 02272 *ps_si << "return (strm << _tao_corba_obj);"; 02273 02274 ps_si->decr_indent (0); 02275 ps_si->nl (); 02276 *ps_si << "}"; 02277 02278 ps_si->nl (); 02279 ps_si->nl (); 02280 02281 *ps_si << "CORBA::Boolean operator>> ("; 02282 ps_si->incr_indent (0); 02283 ps_si->incr_indent (0); 02284 ps_si->nl (); 02285 02286 *ps_si << "TAO_InputCDR &strm,"; ps_si->nl (); 02287 *ps_si << this->interface_name_ << "_ptr &_tao_objref"; 02288 02289 ps_si->decr_indent (0); 02290 ps_si->nl (); 02291 *ps_si << ")"; 02292 02293 ps_si->decr_indent (0); 02294 ps_si->nl (); 02295 02296 *ps_si << "{"; 02297 ps_si->incr_indent (0); 02298 ps_si->nl (); 02299 02300 *ps_si << "ACE_TRY_NEW_ENV"; ps_si->nl (); 02301 *ps_si << "{"; 02302 ps_si->incr_indent (0); 02303 ps_si->nl (); 02304 02305 *ps_si << "CORBA::Object_var obj;"; ps_si->nl (); 02306 *ps_si << "if ((strm >> obj.inout ()) == 0)"; 02307 02308 ps_si->incr_indent (0); 02309 ps_si->nl (); 02310 *ps_si << "return 0;"; 02311 ps_si->decr_indent (0); 02312 ps_si->nl (); 02313 02314 *ps_si << "// narrow to the right type"; ps_si->nl (); 02315 *ps_si << "_tao_objref ="; 02316 ps_si->incr_indent (0); 02317 ps_si->nl (); 02318 *ps_si << this->interface_name_ << "::_unchecked_narrow ("; 02319 02320 ps_si->incr_indent (0); 02321 ps_si->incr_indent (0); 02322 ps_si->nl (); 02323 02324 *ps_si << "obj.in ()"; ps_si->nl (); 02325 *ps_si << "ACE_ENV_ARG_PARAMETER"; 02326 02327 ps_si->decr_indent (0); 02328 ps_si->nl (); 02329 02330 *ps_si << ");"; 02331 02332 ps_si->decr_indent (0); 02333 ps_si->decr_indent (0); 02334 ps_si->nl (); 02335 02336 *ps_si << "ACE_TRY_CHECK;"; ps_si->nl (); 02337 *ps_si << "return 1;"; 02338 02339 ps_si->decr_indent (0); 02340 ps_si->nl (); 02341 *ps_si << "}"; 02342 02343 ps_si->nl (); 02344 *ps_si << "ACE_CATCHANY"; ps_si->nl (); 02345 *ps_si << "{"; 02346 02347 ps_si->incr_indent (0); 02348 ps_si->nl (); 02349 *ps_si << "// do nothing"; 02350 02351 ps_si->decr_indent (0);ps_si->nl (); 02352 *ps_si << "}"; 02353 02354 ps_si->nl (); 02355 *ps_si << "ACE_ENDTRY;"; ps_si->nl (); 02356 *ps_si << "return 0;"; 02357 02358 ps_si->decr_indent (0); 02359 ps_si->nl (); 02360 02361 *ps_si << "}"; 02362 02363 ps_si->nl (); 02364 ps_si->nl (); 02365 02366 } |
|
Definition at line 431 of file PSDL_Interface_Visitor.cpp. References ACE_CString, TAO_PSDL_Stream::decr_indent(), TAO_PSDL_Scope::get_name_space(), TAO_PSDL_Scope::get_sh(), TAO_PSDL_Stream::incr_indent(), TAO_PSDL_Scope::instance(), TAO_PSDL_Stream::nl(), and print_for_forward_dcl(). Referenced by visit_interface_header().
00432 { 00433 this->print_for_forward_dcl (); 00434 00435 ACE_CString name_space = TAO_PSDL_Scope::instance ()->get_name_space (); 00436 00437 // Get a pointer to PSDL_Stream of the stub header. 00438 TAO_PSDL_Stream *ps_sh = TAO_PSDL_Scope::instance ()->get_sh (); 00439 00440 *ps_sh << "#if !defined (_" << name_space << "_" << this->interface_name_ 00441 << "_CH_)"; ps_sh->nl (); 00442 *ps_sh << "#define _" << name_space << this->interface_name_ 00443 << "_CH_"; ps_sh->nl (); 00444 00445 *ps_sh << "// Forward Classes Declaration."; ps_sh->nl (); 00446 *ps_sh << "class _TAO_" << this->interface_name_ << "_Proxy_Impl;"; ps_sh->nl (); 00447 *ps_sh << "class _TAO_" << this->interface_name_ << "_Remote_Proxy_Impl;"; ps_sh->nl (); 00448 *ps_sh << "class _TAO_" << this->interface_name_ << "_Proxy_Broker;"; ps_sh->nl (); 00449 *ps_sh << "class _TAO_" << this->interface_name_ << "_Remote_Proxy_Broker;"; ps_sh->nl (); 00450 00451 00452 *ps_sh << "class " << this->interface_name_; 00453 *ps_sh << ": public virtual CORBA::Object"; ps_sh->nl (); 00454 00455 *ps_sh << "{"; 00456 ps_sh->nl (); 00457 ps_sh->incr_indent (0); 00458 00459 *ps_sh << "public:"; ps_sh->nl (); 00460 00461 *ps_sh << "typedef " << this->interface_name_ << "_ptr _ptr_type;"; ps_sh->nl (); 00462 *ps_sh << "typedef " << this->interface_name_ << "_var _var_type;"; ps_sh->nl (); 00463 00464 *ps_sh << "static int _tao_class_id;"; ps_sh->nl (); 00465 00466 *ps_sh << "// The static operations."; ps_sh->nl (); 00467 *ps_sh << "static " << this->interface_name_ 00468 << "_ptr _duplicate (" 00469 << this->interface_name_ << "_ptr obj);" 00470 ; 00471 00472 *ps_sh << "static " << this->interface_name_ << "_ptr _narrow ("; ps_sh->nl (); 00473 *ps_sh << "CORBA::Object_ptr obj"; ps_sh->nl (); 00474 *ps_sh << "ACE_ENV_ARG_DECL_WITH_DEFAULTS"; ps_sh->nl (); 00475 *ps_sh << ");"; ps_sh->nl (); 00476 00477 *ps_sh << "static " << this->interface_name_ 00478 << "_ptr _unchecked_narrow ("; ps_sh->nl (); 00479 *ps_sh << "CORBA::Object_ptr obj"; ps_sh->nl (); 00480 *ps_sh << "ACE_ENV_ARG_DECL_WITH_DEFAULTS"; ps_sh->nl (); 00481 *ps_sh << ");"; ps_sh->nl (); 00482 00483 *ps_sh << "static " << this->interface_name_ << "_ptr _nil (void)"; ps_sh->nl (); 00484 *ps_sh << "{"; ps_sh->nl (); 00485 *ps_sh << "return (" << this->interface_name_ << "_ptr)0;"; 00486 00487 ps_sh->decr_indent (0); 00488 ps_sh->nl (); 00489 00490 *ps_sh << "}"; ps_sh->nl (); 00491 00492 *ps_sh << "static void _tao_any_destructor (void*);"; ps_sh->nl (); 00493 00494 00495 } |
|
Definition at line 498 of file PSDL_Interface_Visitor.cpp. References ACE_CString, TAO_PSDL_Scope::get_name_space(), TAO_PSDL_Scope::get_sh(), TAO_PSDL_Scope::instance(), and TAO_PSDL_Stream::nl(). Referenced by visit_interface_dcl().
00499 { 00500 ACE_CString name_space = TAO_PSDL_Scope::instance ()->get_name_space (); 00501 00502 // Get a pointer to PSDL_Stream of the stub header. 00503 TAO_PSDL_Stream *ps_sh = TAO_PSDL_Scope::instance ()->get_sh (); 00504 00505 *ps_sh << "virtual CORBA::Boolean _is_a ("; ps_sh->nl (); 00506 *ps_sh << "const CORBA::Char *type_id"; ps_sh->nl (); 00507 *ps_sh << "ACE_ENV_ARG_DECL_WITH_DEFAULTS"; ps_sh->nl (); 00508 *ps_sh << ");"; ps_sh->nl (); 00509 00510 *ps_sh << "virtual void *_tao_QueryInterface (ptrdiff_t type);"; ps_sh->nl (); 00511 00512 *ps_sh << "virtual const char* _interface_repository_id (void) const;"; ps_sh->nl (); 00513 00514 *ps_sh << "private:"; ps_sh->nl (); 00515 *ps_sh << "_TAO_" << this->interface_name_ << "_Proxy_Broker *the_TAO_" << this->interface_name_ << "_Proxy_Broker_;"; ps_sh->nl (); 00516 00517 *ps_sh << "protected:"; ps_sh->nl (); 00518 *ps_sh << this->interface_name_ << "(int collocated = 0);"; ps_sh->nl (); 00519 00520 *ps_sh << "// These methods travese the inheritance tree and set the"; ps_sh->nl (); 00521 *ps_sh << "// parents piece of the given class in the right mode"; ps_sh->nl (); 00522 *ps_sh << "virtual void " << name_space << "_" << this->interface_name_ 00523 << "_setup_collocation (int collocated);"; ps_sh->nl (); 00524 00525 *ps_sh << this->interface_name_ << "("; ps_sh->nl (); 00526 *ps_sh << "TAO_Stub *objref, "; ps_sh->nl (); 00527 *ps_sh << "CORBA::Boolean _tao_collocated = 0,"; ps_sh->nl (); 00528 *ps_sh << "TAO_Abstract_ServantBase *servant = 0"; ps_sh->nl (); 00529 *ps_sh << ");"; ps_sh->nl (); 00530 00531 *ps_sh << "friend class _TAO_" << this->interface_name_ << "_Remote_Proxy_Impl;"; ps_sh->nl (); 00532 *ps_sh << "friend class _TAO_" << this->interface_name_ << "_ThruPOA_Proxy_Impl;"; ps_sh->nl (); 00533 *ps_sh << "friend class _TAO_" << this->interface_name_ << "_Direct_Proxy_Impl;"; ps_sh->nl (); 00534 00535 *ps_sh << "virtual ~" << this->interface_name_ << "(void);"; ps_sh->nl (); 00536 00537 *ps_sh << "private:"; ps_sh->nl (); 00538 *ps_sh << this->interface_name_ << "(const " << this->interface_name_ << "&);"; ps_sh->nl (); 00539 *ps_sh << "void operator= (const " << this->interface_name_ << "&);"; ps_sh->nl (); 00540 *ps_sh << "};"; ps_sh->nl (); 00541 00542 *ps_sh << "// The Proxy Implementations are used by each interface to"; ps_sh->nl (); 00543 *ps_sh << "// perform a call. Each different implementation encapsulate"; ps_sh->nl (); 00544 *ps_sh << "// an invocation logics."; ps_sh->nl (); 00545 00546 00547 *ps_sh << "///////////////////////////////////////////////////////////////////////"; ps_sh->nl (); 00548 *ps_sh << "// Base Proxy Impl. Declaration"; ps_sh->nl (); 00549 *ps_sh << "//"; ps_sh->nl (); 00550 00551 *ps_sh << "class _TAO_" << this->interface_name_ << "_Proxy_Impl"; ps_sh->nl (); 00552 *ps_sh << ": public virtual TAO_Object_Proxy_Impl"; ps_sh->nl (); 00553 00554 *ps_sh << "{"; 00555 ps_sh->nl (); 00556 ps_sh->incr_indent (0); 00557 00558 *ps_sh << "public:"; ps_sh->nl (); 00559 *ps_sh << "virtual ~_TAO_" << this->interface_name_ << "_Proxy_Impl (void) { }"; ps_sh->nl (); 00560 00561 *ps_sh << "protected:"; ps_sh->nl (); 00562 *ps_sh << "_TAO_" << this->interface_name_ << "_Proxy_Impl (void);"; ps_sh->nl (); 00563 *ps_sh << "};"; ps_sh->nl (); 00564 00565 *ps_sh << "//"; ps_sh->nl (); 00566 *ps_sh << "// End Base Proxy Impl. Declaration"; ps_sh->nl (); 00567 *ps_sh << "///////////////////////////////////////////////////////////////////////"; ps_sh->nl (); 00568 00569 00570 *ps_sh << "///////////////////////////////////////////////////////////////////////"; ps_sh->nl (); 00571 *ps_sh << "// Remote Proxy Impl. Declaration"; ps_sh->nl (); 00572 *ps_sh << "//"; ps_sh->nl (); 00573 00574 *ps_sh << "class _TAO_" << this->interface_name_ << "_Remote_Proxy_Impl"; ps_sh->nl (); 00575 *ps_sh << ": public virtual _TAO_" << this->interface_name_ << "_Proxy_Impl,"; ps_sh->nl (); 00576 *ps_sh << "public virtual TAO_Remote_Object_Proxy_Impl"; ps_sh->nl (); 00577 00578 *ps_sh << "{"; 00579 ps_sh->nl (); 00580 ps_sh->incr_indent (0); 00581 00582 *ps_sh << "public:"; 00583 ps_sh->nl (); 00584 00585 *ps_sh << "_TAO_" << this->interface_name_ 00586 << "_Remote_Proxy_Impl (void);"; 00587 ps_sh->nl (); 00588 00589 *ps_sh << "virtual ~_TAO_" << this->interface_name_ 00590 << "_Remote_Proxy_Impl (void) { }"; 00591 00592 ps_sh->decr_indent (0); 00593 ps_sh->nl (); 00594 00595 *ps_sh << "};"; ps_sh->nl (); 00596 00597 *ps_sh << "//"; ps_sh->nl (); 00598 *ps_sh << "// End Remote Proxy Impl. Declaration"; ps_sh->nl (); 00599 *ps_sh << "///////////////////////////////////////////////////////////////////////"; ps_sh->nl (); 00600 00601 *ps_sh << "// The Proxy Brokers are used by each interface to get"; ps_sh->nl (); 00602 *ps_sh << "// the right proxy for performing a call. In the new "; ps_sh->nl (); 00603 *ps_sh << "// collocation scheme, the proxy to be used can vary on"; ps_sh->nl (); 00604 *ps_sh << "// a call by call basis."; ps_sh->nl (); 00605 00606 00607 *ps_sh << "///////////////////////////////////////////////////////////////////////"; ps_sh->nl (); 00608 *ps_sh << "// Base Proxy Broker Declaration "; ps_sh->nl (); 00609 *ps_sh << "//"; ps_sh->nl (); 00610 00611 *ps_sh << "class _TAO_" << this->interface_name_ << "_Proxy_Broker"; 00612 ps_sh->nl (); 00613 00614 *ps_sh << "{"; 00615 ps_sh->incr_indent (0); 00616 ps_sh->nl (); 00617 00618 *ps_sh << "public:"; 00619 ps_sh->nl (); 00620 *ps_sh << "virtual ~_TAO_" << this->interface_name_ << "_Proxy_Broker (void);"; ps_sh->nl (); 00621 *ps_sh << "virtual _TAO_" << this->interface_name_ << "_Proxy_Impl &select_proxy ("; ps_sh->nl (); 00622 *ps_sh << this->interface_name_ << "*object"; ps_sh->nl (); 00623 *ps_sh << "ACE_ENV_ARG_DECL_WITH_DEFAULTS"; ps_sh->nl (); 00624 *ps_sh << ") = 0;"; ps_sh->nl (); 00625 00626 *ps_sh << "protected:"; ps_sh->nl (); 00627 *ps_sh << "_TAO_" << this->interface_name_ << "_Proxy_Broker (void);"; 00628 ps_sh->nl (); 00629 00630 *ps_sh << "};"; ps_sh->nl (); 00631 00632 *ps_sh << "//"; ps_sh->nl (); 00633 *ps_sh << "// End Base Proxy Broker Declaration "; ps_sh->nl (); 00634 *ps_sh << "///////////////////////////////////////////////////////////////"; 00635 ps_sh->nl (); 00636 00637 00638 *ps_sh << "///////////////////////////////////////////////////////////////"; 00639 ps_sh->nl (); 00640 *ps_sh << "// Remote Proxy Broker Declaration "; 00641 ps_sh->nl (); 00642 *ps_sh << "//"; 00643 ps_sh->nl (); 00644 00645 *ps_sh << "class _TAO_" << this->interface_name_ << "_Remote_Proxy_Broker"; 00646 ps_sh->nl (); 00647 *ps_sh << ": public virtual _TAO_" << this->interface_name_ 00648 << "_Proxy_Broker"; 00649 ps_sh->nl (); 00650 00651 *ps_sh << "{"; 00652 ps_sh->incr_indent (0); 00653 ps_sh->nl (); 00654 00655 *ps_sh << "public: "; ps_sh->nl (); 00656 *ps_sh << "_TAO_" << this->interface_name_ << "_Remote_Proxy_Broker (void);"; ps_sh->nl (); 00657 00658 *ps_sh << "virtual ~_TAO_" << this->interface_name_ << "_Remote_Proxy_Broker (void);"; ps_sh->nl (); 00659 00660 *ps_sh << "virtual _TAO_" << this->interface_name_ << "_Proxy_Impl &select_proxy ("; ps_sh->nl (); 00661 *ps_sh << this->interface_name_ << "*object"; ps_sh->nl (); 00662 *ps_sh << "ACE_ENV_ARG_DECL"; ps_sh->nl (); 00663 *ps_sh << ");"; ps_sh->nl (); 00664 00665 *ps_sh << "private:"; ps_sh->nl (); 00666 *ps_sh << "_TAO_" << this->interface_name_ << "_Remote_Proxy_Impl remote_proxy_impl_;"; ps_sh->nl (); 00667 00668 *ps_sh << "public:"; ps_sh->nl (); 00669 *ps_sh << "// This member function is used to get an handle to the unique instance"; ps_sh->nl (); 00670 *ps_sh << "// of the Remote Proxy Broker that is available for a given"; ps_sh->nl (); 00671 *ps_sh << "// interface."; ps_sh->nl (); 00672 *ps_sh << "static _TAO_" << this->interface_name_ << "_Remote_Proxy_Broker *the_TAO_" << this->interface_name_ << "_Remote_Proxy_Broker (void);"; ps_sh->nl (); 00673 *ps_sh << "};"; ps_sh->nl (); 00674 00675 *ps_sh << "//"; ps_sh->nl (); 00676 *ps_sh << "// End Remote Proxy Broker Declaration "; ps_sh->nl (); 00677 *ps_sh << "//////////////////////////////////////////////////////////////"; 00678 ps_sh->nl (); 00679 00680 *ps_sh << "#endif /* end #if !defined */"; ps_sh->nl (); 00681 00682 *ps_sh << "TAO_NAMESPACE_STORAGE_CLASS ::CORBA::TypeCode_ptr _tc_" 00683 << this->interface_name_ << ";"; 00684 ps_sh->nl (); 00685 } |
|
Definition at line 97 of file PSDL_Interface_Visitor.cpp. References ACE_CString, TAO_PSDL_Stream::decr_indent(), forward_dcl_, TAO_PSDL_Scope::get_name_space(), TAO_PSDL_Scope::get_sh(), TAO_PSDL_Stream::incr_indent(), TAO_PSDL_Scope::instance(), TAO_PSDL_Stream::nl(), and TAO_PSDL_Stream::reset(). Referenced by print_class_for_interface(), and visit_forward_dcl().
00098 { 00099 // Get a pointer to PSDL_Stream of the stub header. 00100 TAO_PSDL_Stream *ps_sh = TAO_PSDL_Scope::instance ()->get_sh (); 00101 00102 ps_sh->reset (); 00103 00104 ps_sh->nl (); 00105 00106 ACE_CString name_space = TAO_PSDL_Scope::instance ()->get_name_space (); 00107 00108 *ps_sh << "#if !defined (_" << name_space << "_" << this->interface_name_ 00109 << "___PTR_CH_)"; ps_sh->nl (); 00110 00111 *ps_sh << "#define _" << name_space << "_" 00112 << this->interface_name_ << "___PTR_CH_"; 00113 00114 ps_sh->nl (); 00115 ps_sh->nl (); 00116 00117 if (this->forward_dcl_ != 1) 00118 { 00119 *ps_sh << "class " << this->interface_name_ << ";"; ps_sh->nl (); 00120 } 00121 00122 *ps_sh << "typedef " << this->interface_name_ << "*" 00123 << this->interface_name_ << "_ptr;"; 00124 ps_sh->nl (); 00125 ps_sh->nl (); 00126 00127 *ps_sh << "#endif /* end #if !defined */" << "\n\n"; ps_sh->nl (); 00128 00129 *ps_sh << "#if !defined (_" << name_space << "_" 00130 << this->interface_name_ << "___VAR_CH_)"; 00131 ps_sh->nl (); 00132 00133 *ps_sh << "#define _" << name_space << "_" 00134 << this->interface_name_ << "___VAR_CH_"; 00135 ps_sh->nl (); 00136 ps_sh->nl (); 00137 00138 *ps_sh << "class " << this->interface_name_.c_str () 00139 << "_var : public TAO_Base_Var"; ps_sh->nl (); 00140 00141 *ps_sh << "{"; 00142 ps_sh->nl (); 00143 ps_sh->incr_indent (0); 00144 00145 *ps_sh << "public:"; 00146 ps_sh->nl (); 00147 00148 *ps_sh << this->interface_name_ << "_var (void);" 00149 << "// default constructor"; 00150 ps_sh->nl (); 00151 00152 *ps_sh << this->interface_name_ << "_var (" << this->interface_name_ 00153 << "_ptr p) : ptr_ (p) {}"; 00154 ps_sh->nl (); 00155 00156 *ps_sh << this->interface_name_ << "_var (const " 00157 << this->interface_name_ 00158 << "_var &);" << "// copy constructor"; 00159 ps_sh->nl (); 00160 00161 *ps_sh << " ~" << this->interface_name_ << "_var (void" 00162 << "); // destructor"; 00163 ps_sh->nl (); 00164 ps_sh->nl (); 00165 00166 *ps_sh << this->interface_name_ << "_var" 00167 << "&operator= (" << this->interface_name_ 00168 << "_ptr);"; ps_sh->nl (); 00169 00170 *ps_sh << this->interface_name_ << "_var" 00171 << "&operator= (const " << this->interface_name_ 00172 << "_var &);"; 00173 ps_sh->nl (); 00174 00175 *ps_sh << this->interface_name_ 00176 << "_ptr operator-> (void) const;"; 00177 ps_sh->nl (); 00178 ps_sh->nl (); 00179 00180 *ps_sh << "operator const " 00181 << this->interface_name_ << "_ptr &() const;"; ps_sh->nl (); 00182 00183 *ps_sh << "operator " 00184 << this->interface_name_ << "_ptr &();"; 00185 00186 ps_sh->nl (); 00187 ps_sh->nl (); 00188 00189 *ps_sh << "// in, inout, out, _retn"; ps_sh->nl (); 00190 00191 *ps_sh << this->interface_name_ << "_ptr in (void) const;"; 00192 ps_sh->nl (); 00193 00194 *ps_sh << this->interface_name_ << "_ptr &inout (void);"; 00195 ps_sh->nl (); 00196 00197 *ps_sh << this->interface_name_ << "_ptr &out (void);"; 00198 ps_sh->nl (); 00199 00200 *ps_sh << this->interface_name_ << "_ptr _retn (void);"; 00201 ps_sh->nl (); 00202 00203 *ps_sh << this->interface_name_ << "_ptr ptr (void) const;"; 00204 ps_sh->nl (); 00205 ps_sh->nl (); 00206 00207 *ps_sh << "// Hooks used by template sequence and object manager classes"; 00208 ps_sh->nl (); 00209 00210 *ps_sh << "// for non-defined forward declared interfaces."; ps_sh->nl (); 00211 00212 *ps_sh << "static " << this->interface_name_ << "_ptr tao_duplicate (" 00213 << this->interface_name_ << "_ptr);"; 00214 ps_sh->nl (); 00215 00216 *ps_sh << "static void tao_release (" 00217 << this->interface_name_ << "_ptr);"; 00218 ps_sh->nl (); 00219 00220 *ps_sh << "static " << this->interface_name_ 00221 << "_ptr tao_nil (void);"; ps_sh->nl (); 00222 00223 *ps_sh << "static " << this->interface_name_ << "_ptr tao_narrow ("; 00224 ps_sh->incr_indent (0); 00225 ps_sh->nl (); 00226 00227 *ps_sh << "CORBA::Object *"; 00228 ps_sh->nl (); 00229 *ps_sh << "ACE_ENV_ARG_DECL_NOT_USED"; 00230 00231 ps_sh->decr_indent (0); 00232 ps_sh->nl (); 00233 00234 *ps_sh << ");"; 00235 ps_sh->nl (); 00236 00237 *ps_sh << "static CORBA::Object * tao_upcast (void *);"; 00238 00239 ps_sh->reset (); 00240 ps_sh->nl (); 00241 ps_sh->nl (); 00242 00243 *ps_sh << "private:"; 00244 ps_sh->incr_indent (0); 00245 ps_sh->nl (); 00246 00247 *ps_sh << this->interface_name_ << "_ptr ptr_;"; 00248 ps_sh->nl (); 00249 00250 *ps_sh << "// Unimplemented - prevents widening assignment."; 00251 ps_sh->nl (); 00252 00253 *ps_sh << this->interface_name_ << "_var (const TAO_Base_var &rhs);"; 00254 ps_sh->nl (); 00255 00256 *ps_sh << this->interface_name_ 00257 << "_var &operator= (const TAO_Base_var &rhs);"; 00258 ps_sh->nl (); 00259 00260 ps_sh->decr_indent (0); 00261 ps_sh->nl (); 00262 00263 *ps_sh << "};"; 00264 ps_sh->nl (); 00265 00266 *ps_sh << "#endif /* end #if !defined */"; 00267 ps_sh->nl (); 00268 ps_sh->nl (); 00269 00270 ps_sh->reset (); 00271 00272 *ps_sh << "#if !defined (_" << name_space 00273 << "_" << this->interface_name_ << "___OUT_CH_)"; 00274 ps_sh->nl (); 00275 00276 *ps_sh << "#define _" << name_space 00277 << "_" << this->interface_name_ << "___OUT_CH_"; 00278 ps_sh->nl (); 00279 ps_sh->nl (); 00280 00281 *ps_sh << "class " << this->interface_name_ << "_out"; ps_sh->nl (); 00282 *ps_sh << "{"; 00283 ps_sh->nl (); 00284 ps_sh->incr_indent (0); 00285 00286 *ps_sh << "public:"; ps_sh->nl (); 00287 *ps_sh << this->interface_name_ << "_out (" << this->interface_name_ 00288 << "_ptr &);"; ps_sh->nl (); 00289 *ps_sh << this->interface_name_ << "_out (" << this->interface_name_ 00290 << "_var &);"; ps_sh->nl (); 00291 *ps_sh << this->interface_name_ << "_out (const " 00292 << this->interface_name_ << "_out &);"; ps_sh->nl (); 00293 *ps_sh << this->interface_name_ << "_out &operator= (const " 00294 << this->interface_name_ << "_out &);"; ps_sh->nl (); 00295 *ps_sh << this->interface_name_ << "_out &operator= (const " 00296 << this->interface_name_ << "_var &);"; ps_sh->nl (); 00297 *ps_sh << this->interface_name_ << "_out &operator= (" 00298 << this->interface_name_ << "_ptr);"; ps_sh->nl (); 00299 *ps_sh << "operator " << this->interface_name_ << "_ptr &();"; ps_sh->nl (); 00300 *ps_sh << this->interface_name_ << "_ptr &ptr (void);"; ps_sh->nl (); 00301 00302 *ps_sh << this->interface_name_ << "_ptr operator-> (void);"; 00303 00304 ps_sh->reset (); 00305 ps_sh->nl (); 00306 ps_sh->nl (); 00307 00308 *ps_sh << "private:"; 00309 ps_sh->incr_indent (0); 00310 ps_sh->nl (); 00311 *ps_sh << this->interface_name_ << "_ptr &ptr_;"; ps_sh->nl (); 00312 00313 ps_sh->decr_indent (0); 00314 ps_sh->nl (); 00315 00316 *ps_sh << "};\n"; 00317 00318 *ps_sh << "#endif /* end #if !defined */"; 00319 00320 ps_sh->reset (); 00321 00322 ps_sh->nl (); 00323 ps_sh->nl (); 00324 00325 00326 *ps_sh << "// External declarations for undefined interface"; 00327 ps_sh->nl (); 00328 *ps_sh << "//" << this->interface_name_; 00329 ps_sh->nl (); 00330 ps_sh->nl (); 00331 00332 *ps_sh << this->interface_name_ << "_ptr"; 00333 ps_sh->nl (); 00334 00335 *ps_sh << "tao_" << this->interface_name_ << "_duplicate ("; 00336 ps_sh->incr_indent (0); 00337 ps_sh->nl (); 00338 00339 *ps_sh << this->interface_name_ << "_ptr"; 00340 00341 ps_sh->decr_indent (0); 00342 ps_sh->nl (); 00343 *ps_sh << ");"; 00344 00345 ps_sh->nl (); 00346 ps_sh->nl (); 00347 00348 *ps_sh << "void"; 00349 ps_sh->nl (); 00350 *ps_sh << "tao_" << this->interface_name_ << "_release ("; 00351 ps_sh->incr_indent (0); 00352 ps_sh->nl (); 00353 *ps_sh << this->interface_name_ << "_ptr"; 00354 ps_sh->decr_indent (0); 00355 ps_sh->nl (); 00356 *ps_sh << ");"; 00357 00358 ps_sh->nl (); 00359 ps_sh->nl (); 00360 00361 *ps_sh << this->interface_name_ << "_ptr"; 00362 ps_sh->nl (); 00363 00364 *ps_sh << "tao_" << this->interface_name_ << "_nil ("; 00365 ps_sh->incr_indent (0); 00366 ps_sh->nl (); 00367 *ps_sh << "void"; 00368 ps_sh->decr_indent (0); 00369 ps_sh->nl (); 00370 *ps_sh << ");"; 00371 00372 ps_sh->nl (); 00373 ps_sh->nl (); 00374 00375 *ps_sh << this->interface_name_ << "_ptr"; 00376 ps_sh->nl (); 00377 00378 *ps_sh << "tao_" << this->interface_name_ << "_narrow ("; 00379 ps_sh->incr_indent (0); 00380 ps_sh->nl (); 00381 00382 *ps_sh << "CORBA::Object *"; 00383 ps_sh->nl (); 00384 00385 *ps_sh << "ACE_ENV_ARG_DECL_NOT_USED"; 00386 00387 ps_sh->decr_indent (0); 00388 ps_sh->nl (); 00389 *ps_sh << ");"; 00390 00391 ps_sh->nl (); 00392 ps_sh->nl (); 00393 00394 *ps_sh << "CORBA::Object *"; 00395 ps_sh->nl (); 00396 *ps_sh << "tao_" << this->interface_name_ << "_upcast ("; 00397 ps_sh->incr_indent (0); 00398 ps_sh->nl (); 00399 *ps_sh << "void *"; 00400 ps_sh->decr_indent (0); 00401 ps_sh->nl (); 00402 *ps_sh << ");"; 00403 00404 ps_sh->nl (); 00405 ps_sh->nl (); 00406 00407 *ps_sh << "// Any operators for interface " << this->interface_name_; 00408 ps_sh->nl (); 00409 00410 *ps_sh << "void operator<<= (CORBA::Any &, " << this->interface_name_ << "_ptr);"; 00411 ps_sh->nl (); 00412 00413 *ps_sh << "CORBA::Boolean operator>>= (const CORBA::Any &, " << this->interface_name_ << " *&);"; 00414 ps_sh->nl (); 00415 ps_sh->nl (); 00416 *ps_sh << "#ifndef __ACE_INLINE__"; 00417 ps_sh->nl (); 00418 ps_sh->nl (); 00419 00420 *ps_sh << " CORBA::Boolean operator<< (TAO_OutputCDR &, const " << this->interface_name_ << "_ptr );"; 00421 ps_sh->nl (); 00422 *ps_sh << " CORBA::Boolean operator>> (TAO_InputCDR &, " << this->interface_name_ << "_ptr &);"; 00423 ps_sh->nl (); 00424 ps_sh->nl (); 00425 *ps_sh << "#endif /* __ACE_INLINE__ */"; 00426 ps_sh->nl (); 00427 00428 } |
|
Reimplemented from TAO_PSDL_Node_Visitor. Definition at line 33 of file PSDL_Interface_Visitor.cpp. References TAO_PSDL_Node::accept(), forward_dcl_, TAO_PSDL_Scope::get_sh(), TAO_PSDL_Forward_Dcl::identifier(), TAO_PSDL_Scope::instance(), TAO_PSDL_Stream::nl(), print_for_forward_dcl(), and TAO_PSDL_Stream::reset().
00034 { 00035 if (forward_dcl->identifier ()->accept (this) == -1) 00036 return -1; 00037 00038 this->interface_name_ = this->identifiers_[this->count_]; 00039 00040 // Get a pointer to PSDL_Stream of the stub header. 00041 TAO_PSDL_Stream *ps_sh = TAO_PSDL_Scope::instance ()->get_sh (); 00042 00043 ps_sh->reset (); 00044 00045 *ps_sh << "class " << this->interface_name_ << ";"; 00046 ps_sh->nl (); 00047 00048 this->forward_dcl_ = 1; 00049 this->print_for_forward_dcl (); 00050 00051 return 0; 00052 } |
|
Reimplemented from TAO_PSDL_Node_Visitor. Definition at line 21 of file PSDL_Interface_Visitor.cpp. References ACE_Array_Base< ACE_CString >::size(), and TAO_PSDL_Identifier::value().
00022 { 00023 this->identifiers_.size (1); 00024 this->count_ = 0; 00025 00026 // Save the identifier. 00027 this->identifiers_ [this->count_] = identifier->value (); 00028 00029 return 0; 00030 } |
|
Reimplemented from TAO_PSDL_Node_Visitor. Definition at line 55 of file PSDL_Interface_Visitor.cpp. References TAO_PSDL_Node::accept(), TAO_PSDL_Interface_Dcl::interface_body(), TAO_PSDL_Interface_Dcl::interface_header(), and print_end_for_interface().
00056 { 00057 if (interface_dcl->interface_header ()->accept (this) == -1) 00058 return -1; 00059 00060 if (interface_dcl->interface_body () != 0) 00061 { 00062 if (interface_dcl->interface_body ()->accept (this) == -1) 00063 return -1; 00064 } 00065 00066 // The generated code for interfaces. 00067 this->print_end_for_interface (); 00068 return 0; 00069 } |
|
Reimplemented from TAO_PSDL_Node_Visitor. Definition at line 72 of file PSDL_Interface_Visitor.cpp. References TAO_PSDL_Node::accept(), TAO_PSDL_Interface_Header::identifier(), TAO_PSDL_Scope::instance(), TAO_PSDL_Interface_Header::interface_inheritance_spec(), print_class_for_interface(), TAO_PSDL_Scope::set_interface_name(), and TAO_PSDL_Interface_Header::type().
00073 { 00074 if (interface_header->identifier ()->accept (this) == -1) 00075 return -1; 00076 00077 this->interface_name_ = this->identifiers_[this->count_]; 00078 TAO_PSDL_Scope::instance ()->set_interface_name (this->interface_name_); 00079 this->print_class_for_interface (); 00080 00081 if (interface_header->type () != 0) 00082 { 00083 if (interface_header->type ()->accept (this) == -1) 00084 return -1; 00085 } 00086 00087 if (interface_header->interface_inheritance_spec () != 0) 00088 { 00089 if (interface_header->interface_inheritance_spec ()->accept (this) == -1) 00090 return -1; 00091 } 00092 00093 return 0; 00094 } |
|
Definition at line 59 of file PSDL_Interface_Visitor.h. Referenced by print_for_forward_dcl(), and visit_forward_dcl(). |
|
Definition at line 60 of file PSDL_Interface_Visitor.h. |