00001 /* 00002 The lestes compiler suite 00003 Copyright (C) 2002, 2003, 2004, 2005 Miroslav Tichy 00004 Copyright (C) 2002, 2003, 2004, 2005 Petr Zika 00005 Copyright (C) 2002, 2003, 2004, 2005 Vojtech Hala 00006 Copyright (C) 2002, 2003, 2004, 2005 Jiri Kosina 00007 Copyright (C) 2002, 2003, 2004, 2005 Pavel Sanda 00008 Copyright (C) 2002, 2003, 2004, 2005 Jan Zouhar 00009 Copyright (C) 2002, 2003, 2004, 2005 Rudolf Thomas 00010 00011 This program is free software; you can redistribute it and/or modify 00012 it under the terms of the GNU General Public License as published by 00013 the Free Software Foundation; version 2 of the License. 00014 00015 This program is distributed in the hope that it will be useful, 00016 but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 GNU General Public License for more details. 00019 00020 See the full text of the GNU General Public License version 2, and 00021 the limitations in the file doc/LICENSE. 00022 00023 By accepting the license the licensee waives any and all claims 00024 against the copyright holder(s) related in whole or in part to the 00025 work, its use, and/or the inability to use it. 00026 00027 */ 00028 /*! 00029 \file 00030 \brief Visitors returning lstring for ss_decl_name. 00031 \author jaz 00032 */ 00033 00034 #include <lestes/lang/cplus/sem/ss_decl_name2lstring_base.g.hh> 00035 #include <lestes/lang/cplus/sem/ss_decl_name.g.hh> 00036 #include <sstream> 00037 00038 package(lestes); 00039 package(lang); 00040 package(cplus); 00041 package(sem); 00042 00043 ptr< ss_decl_name2mangled_name > ss_decl_name2mangled_name::instance(){ 00044 if ( !singleton_instance ) { 00045 singleton_instance = ss_decl_name2mangled_name::create(); 00046 } 00047 return singleton_instance; 00048 } 00049 00050 lstring ss_decl_name2mangled_name::visit_ss_dummy_name(ptr< ::lestes::lang::cplus::sem::ss_dummy_name > decl_name) { 00051 lassert(decl_name); 00052 return lstring(); 00053 } 00054 00055 00056 lstring ss_decl_name2mangled_name::visit_ss_ordinary_name(ptr< ::lestes::lang::cplus::sem::ss_ordinary_name > decl_name) { 00057 lassert(decl_name); 00058 00059 ::std::ostringstream oss; 00060 00061 ucn_string name = decl_name->name_get(); 00062 lassert(name.length()); 00063 00064 oss << name; 00065 00066 return oss.str(); 00067 } 00068 00069 lstring ss_decl_name2mangled_name::visit_ss_conversion_name(ptr< ::lestes::lang::cplus::sem::ss_conversion_name > decl_name) { 00070 lassert(decl_name); 00071 return lstring("cv"); //TODO + type name 00072 } 00073 00074 lstring ss_decl_name2mangled_name::visit_ss_operator_new(ptr< ::lestes::lang::cplus::sem::ss_operator_new > decl_name){ 00075 lassert(decl_name); 00076 return lstring("nw"); 00077 } 00078 00079 lstring ss_decl_name2mangled_name::visit_ss_operator_delete(ptr< ::lestes::lang::cplus::sem::ss_operator_delete > decl_name){ 00080 lassert(decl_name); 00081 return lstring("dl"); 00082 } 00083 00084 lstring ss_decl_name2mangled_name::visit_ss_operator_new_array(ptr< ::lestes::lang::cplus::sem::ss_operator_new_array > decl_name){ 00085 lassert(decl_name); 00086 return lstring("na"); 00087 } 00088 00089 lstring ss_decl_name2mangled_name::visit_ss_operator_delete_array(ptr< ::lestes::lang::cplus::sem::ss_operator_delete_array > decl_name){ 00090 lassert(decl_name); 00091 return lstring("da"); 00092 } 00093 00094 lstring ss_decl_name2mangled_name::visit_ss_operator_add(ptr< ::lestes::lang::cplus::sem::ss_operator_add > decl_name){ 00095 lassert(decl_name); 00096 return lstring("pl"); 00097 } 00098 00099 lstring ss_decl_name2mangled_name::visit_ss_operator_sub(ptr< ::lestes::lang::cplus::sem::ss_operator_sub > decl_name){ 00100 lassert(decl_name); 00101 return lstring("mi"); 00102 } 00103 00104 lstring ss_decl_name2mangled_name::visit_ss_operator_mul(ptr< ::lestes::lang::cplus::sem::ss_operator_mul > decl_name){ 00105 lassert(decl_name); 00106 return lstring("ml"); 00107 } 00108 00109 lstring ss_decl_name2mangled_name::visit_ss_operator_div(ptr< ::lestes::lang::cplus::sem::ss_operator_div > decl_name){ 00110 lassert(decl_name); 00111 return lstring("dv"); 00112 } 00113 00114 lstring ss_decl_name2mangled_name::visit_ss_operator_mod(ptr< ::lestes::lang::cplus::sem::ss_operator_mod > decl_name){ 00115 lassert(decl_name); 00116 return lstring("rm"); 00117 } 00118 00119 lstring ss_decl_name2mangled_name::visit_ss_operator_bxor(ptr< ::lestes::lang::cplus::sem::ss_operator_bxor > decl_name){ 00120 lassert(decl_name); 00121 return lstring("eo"); 00122 } 00123 00124 lstring ss_decl_name2mangled_name::visit_ss_operator_band(ptr< ::lestes::lang::cplus::sem::ss_operator_band > decl_name){ 00125 lassert(decl_name); 00126 return lstring("an"); 00127 } 00128 00129 lstring ss_decl_name2mangled_name::visit_ss_operator_bor(ptr< ::lestes::lang::cplus::sem::ss_operator_bor > decl_name){ 00130 lassert(decl_name); 00131 return lstring("or"); 00132 } 00133 00134 lstring ss_decl_name2mangled_name::visit_ss_operator_bnot(ptr< ::lestes::lang::cplus::sem::ss_operator_bnot > decl_name){ 00135 lassert(decl_name); 00136 return lstring("co"); 00137 } 00138 00139 lstring ss_decl_name2mangled_name::visit_ss_operator_lnot(ptr< ::lestes::lang::cplus::sem::ss_operator_lnot > decl_name){ 00140 lassert(decl_name); 00141 return lstring("nt"); 00142 } 00143 00144 lstring ss_decl_name2mangled_name::visit_ss_operator_assign(ptr< ::lestes::lang::cplus::sem::ss_operator_assign > decl_name){ 00145 lassert(decl_name); 00146 return lstring("aS"); 00147 } 00148 00149 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_add(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_add > decl_name){ 00150 lassert(decl_name); 00151 return lstring("pL"); 00152 } 00153 00154 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_sub(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_sub > decl_name){ 00155 lassert(decl_name); 00156 return lstring("mI"); 00157 } 00158 00159 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_mul(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_mul > decl_name){ 00160 lassert(decl_name); 00161 return lstring("mL"); 00162 } 00163 00164 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_div(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_div > decl_name){ 00165 lassert(decl_name); 00166 return lstring("dV"); 00167 } 00168 00169 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_mod(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_mod > decl_name){ 00170 lassert(decl_name); 00171 return lstring("rM"); 00172 } 00173 00174 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_bxor(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_bxor > decl_name){ 00175 lassert(decl_name); 00176 return lstring("eO"); 00177 } 00178 00179 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_band(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_band > decl_name){ 00180 lassert(decl_name); 00181 return lstring("aN"); 00182 } 00183 00184 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_bor(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_bor > decl_name){ 00185 lassert(decl_name); 00186 return lstring("oR"); 00187 } 00188 00189 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_shl(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_shl > decl_name){ 00190 lassert(decl_name); 00191 return lstring("lS"); 00192 } 00193 00194 lstring ss_decl_name2mangled_name::visit_ss_operator_assign_shr(ptr< ::lestes::lang::cplus::sem::ss_operator_assign_shr > decl_name){ 00195 lassert(decl_name); 00196 return lstring("rS"); 00197 } 00198 00199 lstring ss_decl_name2mangled_name::visit_ss_operator_shr(ptr< ::lestes::lang::cplus::sem::ss_operator_shr > decl_name){ 00200 lassert(decl_name); 00201 return lstring("rs"); 00202 } 00203 00204 lstring ss_decl_name2mangled_name::visit_ss_operator_shl(ptr< ::lestes::lang::cplus::sem::ss_operator_shl > decl_name){ 00205 lassert(decl_name); 00206 return lstring("ls"); 00207 } 00208 00209 lstring ss_decl_name2mangled_name::visit_ss_operator_sbl(ptr< ::lestes::lang::cplus::sem::ss_operator_sbl > decl_name){ 00210 lassert(decl_name); 00211 return lstring("lt"); 00212 } 00213 00214 lstring ss_decl_name2mangled_name::visit_ss_operator_sbg(ptr< ::lestes::lang::cplus::sem::ss_operator_sbg > decl_name){ 00215 lassert(decl_name); 00216 return lstring("gt"); 00217 } 00218 00219 lstring ss_decl_name2mangled_name::visit_ss_operator_sbng(ptr< ::lestes::lang::cplus::sem::ss_operator_sbng > decl_name){ 00220 lassert(decl_name); 00221 return lstring("le"); 00222 } 00223 00224 lstring ss_decl_name2mangled_name::visit_ss_operator_sbnl(ptr< ::lestes::lang::cplus::sem::ss_operator_sbnl > decl_name){ 00225 lassert(decl_name); 00226 return lstring("ge"); 00227 } 00228 00229 lstring ss_decl_name2mangled_name::visit_ss_operator_sbe(ptr< ::lestes::lang::cplus::sem::ss_operator_sbe > decl_name){ 00230 lassert(decl_name); 00231 return lstring("eq"); 00232 } 00233 00234 lstring ss_decl_name2mangled_name::visit_ss_operator_sbne(ptr< ::lestes::lang::cplus::sem::ss_operator_sbne > decl_name){ 00235 lassert(decl_name); 00236 return lstring("ne"); 00237 } 00238 00239 lstring ss_decl_name2mangled_name::visit_ss_operator_land(ptr< ::lestes::lang::cplus::sem::ss_operator_land > decl_name){ 00240 lassert(decl_name); 00241 return lstring("aa"); 00242 } 00243 00244 lstring ss_decl_name2mangled_name::visit_ss_operator_lor(ptr< ::lestes::lang::cplus::sem::ss_operator_lor > decl_name){ 00245 lassert(decl_name); 00246 return lstring("oo"); 00247 } 00248 00249 lstring ss_decl_name2mangled_name::visit_ss_operator_inc(ptr< ::lestes::lang::cplus::sem::ss_operator_inc > decl_name){ 00250 lassert(decl_name); 00251 return lstring("pp"); 00252 } 00253 00254 lstring ss_decl_name2mangled_name::visit_ss_operator_dec(ptr< ::lestes::lang::cplus::sem::ss_operator_dec > decl_name){ 00255 lassert(decl_name); 00256 return lstring("mm"); 00257 } 00258 00259 lstring ss_decl_name2mangled_name::visit_ss_operator_comma(ptr< ::lestes::lang::cplus::sem::ss_operator_comma > decl_name){ 00260 lassert(decl_name); 00261 return lstring("cm"); 00262 } 00263 00264 lstring ss_decl_name2mangled_name::visit_ss_operator_access(ptr< ::lestes::lang::cplus::sem::ss_operator_access > decl_name){ 00265 lassert(decl_name); 00266 return lstring("pt"); 00267 } 00268 00269 lstring ss_decl_name2mangled_name::visit_ss_operator_access_member(ptr< ::lestes::lang::cplus::sem::ss_operator_access_member > decl_name){ 00270 lassert(decl_name); 00271 return lstring("pm"); 00272 } 00273 00274 lstring ss_decl_name2mangled_name::visit_ss_operator_function_call(ptr< ::lestes::lang::cplus::sem::ss_operator_function_call > decl_name){ 00275 lassert(decl_name); 00276 return lstring("cl"); 00277 } 00278 00279 lstring ss_decl_name2mangled_name::visit_ss_operator_array(ptr< ::lestes::lang::cplus::sem::ss_operator_array > decl_name){ 00280 lassert(decl_name); 00281 return lstring("ix"); 00282 } 00283 00284 lstring ss_decl_name2mangled_name::visit_ss_operator_ternary(ptr< ::lestes::lang::cplus::sem::ss_operator_ternary > decl_name){ 00285 lassert(decl_name); 00286 return lstring("qu"); 00287 } 00288 00289 00290 00291 end_package(sem); 00292 end_package(cplus); 00293 end_package(lang); 00294 end_package(lestes); 00295
1.5.1-20070107