00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include <lestes/lang/cplus/sem/or_ics.g.hh>
00037 #include <lestes/lang/cplus/sem/or_ics_actual_visitors.g.hh>
00038 #include <lestes/lang/cplus/sem/ss_declaration.g.hh>
00039 #include <lestes/lang/cplus/sem/ss_misc.g.hh>
00040 #include <lestes/lang/cplus/sem/or_or.g.hh>
00041 #include <lestes/std/source_location.hh>
00042 #include <lestes/msg/logger.hh>
00043 #include <lestes/lang/cplus/sem/or_ics_logger.hh>
00044 #include <lestes/lang/cplus/sem/or_actual_visitors.g.hh>
00045
00046 package(lestes);
00047 package(lang);
00048 package(cplus);
00049 package(sem);
00050
00051 declare_logger( or_ics_log );
00052 initialize_logger( or_ics_log, "or_ics_finder", or_ics_logger );
00053
00054 #define IS_PTR_BOOL_CONV(t1,t2) ((t1) == OR_CV_PTR || (t1) == OR_CV_MEMBER_PTR) && ((t2) == OR_CV_BOOL)
00055 #define IS_PTR(t1) ((t1) == OR_CV_PTR)
00056 #define IS_MEMBER_PTR(t1) ((t1) == OR_CV_MEMBER_PTR)
00057 #define IS_CLASS(t1) t1 == OR_CV_CLASS
00058 #define IS_VOID(t1) t1 == OR_CV_VOID
00059 #define DEREF_PTR(t1) (t1.dncast<ss_pointer>()->what_get()->accept_or_ics_base_cv(v))
00060 #define DEREF_PTR_NOVIS(t1) ((t1).dncast<ss_pointer>()->what_get())
00061 #define MEMBER_PTR_BASE(t1) ((t1).dncast<ss_member_pointer>()->base_get()).dncast<ss_class>()
00062 #define IS_VOLATILE(x) (((x) == OR_CV_VOLATILE) || (x) == OR_CV_CONST_VOLATILE)
00063 #define IS_PSEUDOREFERENCE(x) (((x) == OR_CV_PSEUDOREFERENCE))
00064 #define IS_REFERENCE(x) (((x) == OR_CV_REFERENCE))
00065 #define IS_CONST(x) (((x) == OR_CV_CONST))
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076 bool is_better_conv_seq ( ptr< or_ics_functional > r1, ptr< or_or_functional > e1,
00077 ptr< or_ics_functional > r2, ptr< or_or_functional > e2)
00078 {
00079 typedef ::lestes::std::list< srp< ss_type > > typelist;
00080 ptr< typelist > conv_list = typelist::create();
00081 ptr< typelist > list1, list2;
00082 typelist::iterator it1, it2;
00083 ptr< or_ics_functional_visitor > v_t = or_ics_functional_visitor::create(conv_list);
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 if (r1->rank_get() < r2->rank_get()) {
00094 return true;
00095 }
00096
00097
00098
00099
00100
00101
00102 list1 = r1->accept_or_ics_functional_base(v_t);
00103 list2 = r2->accept_or_ics_functional_base(v_t);
00104
00105
00106 it1 = list1->begin();
00107 it2 = list2->end();
00108
00109 while (it1 != list1->end() && it2 != list2->end() && (*it1)->equals(*it2)) {
00110 it1++;
00111 it2++;
00112 }
00113
00114 if (it1 == list1->end() && it2 != list2->end()) {
00115 return true;
00116 }
00117
00118 return false;
00119
00120
00121
00122
00123
00124
00125
00126
00127 ptr< ss_type > s1 = e1->type_get();
00128 ptr< ss_type > s2 = e2->type_get();
00129 ptr< ss_type > t1 = (*(list1->end()));
00130 ptr< ss_type > t2 = (*(list2->end()));
00131
00132 ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
00133 or_cv_enum ts1 = t1->accept_or_ics_base_cv(v);
00134 or_cv_enum ts2 = t1->accept_or_ics_base_cv(v);
00135 or_cv_enum tt1 = t1->accept_or_ics_base_cv(v);
00136 or_cv_enum tt2 = t2->accept_or_ics_base_cv(v);
00137 if (IS_PTR_BOOL_CONV(ts2,tt2) && !IS_PTR_BOOL_CONV(ts1,tt1))
00138 return true;
00139
00140
00141 if (IS_PTR(ts1) && IS_PTR(tt1) &&
00142 IS_CLASS(DEREF_PTR(s1)) && IS_CLASS(DEREF_PTR(t1)) && DEREF_PTR_NOVIS(t1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s1).dncast<ss_class>()) &&
00143 s1->equals(s2) && IS_PTR(tt2) && IS_VOID(DEREF_PTR(t2)))
00144 return true;
00145
00146
00147 if (IS_PTR(ts1) && IS_PTR(ts2) && IS_PTR(tt1) && IS_PTR(tt2) &&
00148 IS_CLASS(DEREF_PTR(s1)) && IS_CLASS(DEREF_PTR(s2)) && IS_VOID(DEREF_PTR(t1)) && IS_VOID(DEREF_PTR(t2)) &&
00149 DEREF_PTR_NOVIS(s1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s2).dncast<ss_class>()))
00150 return true;
00151
00152
00153
00154 if (IS_PTR(ts1) && IS_PTR(tt1) && IS_PTR(tt2) &&
00155 IS_CLASS(DEREF_PTR(s1)) && IS_CLASS(DEREF_PTR(t1)) && IS_CLASS(DEREF_PTR(t2)) &&
00156 DEREF_PTR_NOVIS(t2).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(t1).dncast<ss_class>())
00157 && DEREF_PTR_NOVIS(t1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s1).dncast<ss_class>()) &&
00158 s1->equals(s2))
00159 return true;
00160
00161
00162
00163
00164
00165
00166 if (IS_MEMBER_PTR(ts1) && IS_MEMBER_PTR(tt1) && IS_MEMBER_PTR(tt2) &&
00167 MEMBER_PTR_BASE(s1)->is_ancestor(MEMBER_PTR_BASE(t1)) &&
00168 MEMBER_PTR_BASE(t1)->is_ancestor(MEMBER_PTR_BASE(t2)) &&
00169 s1->equals(s2))
00170 return true;
00171
00172
00173 if (IS_CLASS(ts1) && IS_CLASS(tt1) && IS_CLASS(tt2) &&
00174 s1->equals(s2) &&
00175 t1.dncast<ss_class>()->is_ancestor(s1.dncast<ss_class>()) && t2.dncast<ss_class>()->is_ancestor(t1.dncast<ss_class>()))
00176 return true;
00177
00178
00179 if (IS_PTR(tt1) && IS_PTR(ts1) && IS_PTR(ts2) &&
00180 IS_CLASS(DEREF_PTR(t1)) && IS_CLASS(DEREF_PTR(s1)) && IS_CLASS(DEREF_PTR(s2)) &&
00181 DEREF_PTR_NOVIS(t1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s2).dncast<ss_class>()) &&
00182 DEREF_PTR_NOVIS(s1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s2).dncast<ss_class>()) &&
00183 t1->equals(t2))
00184 return true;
00185
00186
00187
00188
00189
00190
00191 if (IS_MEMBER_PTR(ts2) && IS_MEMBER_PTR(ts1) && IS_MEMBER_PTR(tt1) &&
00192 MEMBER_PTR_BASE(s2)->is_ancestor(MEMBER_PTR_BASE(s1)) &&
00193 MEMBER_PTR_BASE(s1)->is_ancestor(MEMBER_PTR_BASE(t1)) &&
00194 t1->equals(t2))
00195 return true;
00196
00197
00198
00199
00200
00201 if (IS_CLASS(tt1) && IS_CLASS(ts1) && IS_CLASS(ts2) &&
00202 t1.dncast<ss_class>()->is_ancestor(s1.dncast<ss_class>()) &&
00203 s1.dncast<ss_class>()->is_ancestor(s2.dncast<ss_class>())
00204 && t1->equals(t2))
00205 return true;
00206
00207 return false;
00208 }
00209
00210 bool is_not_worse_conv_seq( ptr< or_ics_functional > r1, ptr< or_or_functional > e1,
00211 ptr< or_ics_functional > r2, ptr< or_or_functional > e2)
00212 {
00213 return (!(is_better_conv_seq(r2, e2, r1, e1)));
00214 }
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224 ptr< ::lestes::std::list< srp< or_ics_functional > > > filter_type(ptr< ::lestes::std::list< srp< or_ics_functional > > > lst, ptr< ss_type > tgt)
00225 {
00226 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_del;
00227 ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
00228 ptr< ::lestes::std::list< srp< or_ics_functional > > > ret = ::lestes::std::list< srp< or_ics_functional > >::create();
00229
00230
00231
00232
00233
00234 llog(or_ics_log) << "Filtering ...\n";
00235 for(it = lst->begin(); it != lst->end();it++){
00236
00237 if ( (*it)->target_type_get()->equals(tgt) ) {
00238 ret->push_back(*it);
00239 llog(or_ics_log) << "Found identical type\n";
00240 }
00241 }
00242 return ret;
00243 }
00244
00245 ptr< or_ics_functional > get_best_conversion(ptr< ::lestes::std::list< srp< or_ics_functional > > > lst, ptr< or_or_functional > e)
00246 {
00247 ::lestes::std::list< srp< or_ics_functional > >::iterator it = lst->begin();
00248 ptr< or_ics_functional > best = *it;
00249
00250 for(; it != lst->end(); it++) {
00251 if (is_better_conv_seq(*it, e, best, e))
00252 best = *it;
00253 }
00254
00255 return best;
00256 }
00257
00258
00259
00260
00261
00262
00263
00264
00265
00266 ptr< or_ics_functional > or_find_ics(ptr< or_or_functional > source, ptr< ss_type > target)
00267 {
00268 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00269
00270 llog(or_ics_log) << "Entering or_find_ics()\n";
00271
00272 ptr< funclist > scs_tgts_seq = funclist::create();
00273 ptr< funclist > scs_srcs_seq = funclist::create();
00274 ptr< funclist > filtered_list;
00275
00276 ptr< or_ics_visitor_tgts > v_t = or_ics_visitor_tgts::create(source, 1, scs_tgts_seq);
00277 ptr< or_ics_functional > best_conv;
00278
00279 ptr< funclist > scs_imaginable_tgts, scs_imaginable_srcs;
00280
00281
00282
00283
00284
00285 llog(or_ics_log) << "Executing first phase\n";
00286 scs_imaginable_tgts = source->type_get()->accept_or_ics_base(v_t);
00287
00288
00289 ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
00290 if(source->type_get()->accept_or_ics_base_cv(v) != OR_CV_PSEUDOREFERENCE) {
00291
00292 ptr< ss_type > type1 = source->type_get();
00293 ptr< or_ics_functional_for_std_conversion > conversion1 = or_ics_functional_for_std_conversion::create(RANK_EXACT, type1);
00294 scs_tgts_seq->push_back(conversion1);
00295
00296 llog(or_ics_log) << "Source is not pseudoreference, executing second and third phases\n";
00297 scs_imaginable_tgts = source->type_get()->accept_or_ics_base(v_t);
00298 scs_imaginable_tgts = source->type_get()->accept_or_ics_base(v_t);
00299 }
00300
00301 llog(or_ics_log) << "Found " << scs_imaginable_tgts->size() << " imaginable target types\n";
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318 filtered_list = filter_type(scs_imaginable_tgts, target);
00319
00320 llog(or_ics_log) << "After filtering " << filtered_list->size() << " left\n";
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335 if (filtered_list->size() > 0)
00336 return filtered_list->front();
00337 else
00338 return NULL;
00339 }
00340
00341
00342
00343
00344
00345 ptr< ss_expression > or_ics_functional_for_std_conversion::operator()(
00346 ptr< ss_expression > arg, ptr< ss_sp > psp, ptr< ss_sp > nsp)
00347 {
00348 if (target_type_get()->equals(arg->type_get()))
00349 return arg;
00350 else
00351 return ss_conversion::create (arg->location_get(),
00352 target_type_get(),
00353 psp,
00354 nsp,
00355 arg,
00356 arg->type_get()
00357 );
00358 }
00359
00360
00361
00362
00363
00364 ptr< ss_expression > or_ics_functional_for_arr_ptr_conversion::operator()(
00365 ptr< ss_expression > arg, ptr< ss_sp > psp, ptr< ss_sp > nsp)
00366 {
00367 return ss_array_to_pointer::create (arg->location_get(),
00368 target_type_get(),
00369 psp,
00370 nsp,
00371 arg,
00372 arg->type_get()
00373 );
00374 }
00375
00376
00377
00378
00379
00380 ptr< ss_expression > or_ics_functional_for_reference_bind_conversion::operator()(
00381 ptr< ss_expression > arg, ptr< ss_sp > psp, ptr< ss_sp > nsp)
00382 {
00383 return ss_bind_reference::create (arg->location_get(),
00384 target_type_get(),
00385 psp,
00386 nsp,
00387 arg,
00388 arg->type_get()
00389 );
00390 }
00391
00392
00393
00394
00395
00396 ptr< ss_expression > or_ics_functional_for_bind_to_temporary_conversion::operator()(
00397 ptr< ss_expression > arg, ptr< ss_sp > psp, ptr< ss_sp > nsp)
00398 {
00399 return ss_bind_to_temporary::create (arg->location_get(),
00400 target_type_get(),
00401 psp,
00402 nsp,
00403 arg,
00404 arg->type_get()
00405 );
00406 }
00407
00408
00409
00410
00411
00412
00413
00414
00415 ptr< ss_expression > or_ics_functional_for_lval_rval_conversion::operator()(
00416 ptr< ss_expression > arg,ptr< ss_sp > psp, ptr< ss_sp > nsp)
00417 {
00418 ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
00419
00420 if(IS_VOLATILE(arg->type_get()->accept_or_ics_base_cv(v)))
00421 return ss_vol_get::create(arg->location_get(),
00422 arg->type_get(),
00423 psp,
00424 nsp,
00425 arg);
00426 else if (IS_PSEUDOREFERENCE(arg->type_get()->accept_or_ics_base_cv(v)))
00427 if(IS_CONST(arg->type_get().dncast<ss_pseudoreference>()->what_get()->accept_or_ics_base_cv(v)))
00428 return ss_get::create(arg->location_get(),
00429 arg->type_get().dncast<ss_pseudoreference>()->what_get().dncast<ss_const>()->what_get(),
00430 psp,
00431 nsp,
00432 arg);
00433 else
00434 return ss_get::create(arg->location_get(),
00435 arg->type_get().dncast<ss_pseudoreference>()->what_get(),
00436 psp,
00437 nsp,
00438 arg);
00439 else if (IS_REFERENCE(arg->type_get()->accept_or_ics_base_cv(v)))
00440 return ss_get::create(arg->location_get(),
00441 arg->type_get().dncast<ss_reference>()->what_get(),
00442 psp,
00443 nsp,
00444 arg);
00445 else
00446 lassert2(false, "Don't know how to do lval->rval conversion for this type\n");
00447 return NULL;
00448 }
00449
00450
00451
00452
00453
00454 ptr< ss_expression > or_ics_functional_for_user_conversion_by_constructor::operator()(
00455 ptr< ss_expression > arg, ptr< ss_sp > psp, ptr< ss_sp > nsp)
00456 {
00457 ptr< ::lestes::std::list< srp< ss_expression > > > arg_list;
00458
00459 arg_list->push_back(arg);
00460
00461 return ss_funcall::create(arg->location_get(),
00462 target_type_get(),
00463 psp,
00464 nsp,
00465 arg_list,
00466 used_constructor);
00467
00468 }
00469
00470
00471
00472
00473
00474
00475 ptr< ss_expression > or_ics_functional_for_user_conversion_by_conversion_function::operator()(
00476 ptr< ss_expression > arg, ptr< ss_sp > psp, ptr< ss_sp > nsp)
00477 {
00478 ptr< ::lestes::std::list< srp< ss_expression > > > arg_list;
00479
00480 arg_list->push_back(arg);
00481
00482
00483
00484 if (used_conversion_function_get().dncast<ss_method_declaration>()->virtuality_get())
00485 return ss_vfuncall::create(arg->location_get(),
00486 target_type_get(),
00487 psp,
00488 nsp,
00489 arg_list,
00490 used_conversion_function,
00491 arg);
00492 else
00493 return ss_funcall::create(arg->location_get(),
00494 target_type_get(),
00495 psp,
00496 nsp,
00497 arg_list,
00498 used_conversion_function);
00499 }
00500
00501
00502
00503
00504
00505
00506
00507 ptr< ss_expression > or_ics_functional_for_compound_conversion::operator() (
00508 ptr< ss_expression > arg, ptr< ss_sp > psp, ptr< ss_sp> nsp)
00509 {
00510 return (*outter_conversion)((*inner_conversion)(arg, psp, nsp), psp, nsp);
00511 }
00512
00513
00514
00515
00516 ptr< ss_expression > or_ics_functional::operator() (ptr< ss_expression >, ptr< ss_sp >, ptr< ss_sp>)
00517 {
00518 return NULL;
00519 }
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535 ptr< ss_expression > convert_ptr_to_cv(ptr< or_or_functional > source)
00536 {
00537
00538 typedef ::lestes::std::list< srp< ss_expression > > funclist;
00539 ptr< funclist > seq = funclist::create();
00540
00541 ptr< ss_type > p = source->type_get();
00542 ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
00543
00544 or_cv_enum q = p.dncast<ss_pointer>()->what_get()->accept_or_ics_base_cv(v);
00545
00546
00547 switch (q){
00548 case OR_CV_NONE:;
00549 case OR_CV_CONST:;
00550 case OR_CV_VOLATILE:;
00551 case OR_CV_CONST_VOLATILE:;
00552 default:;
00553 }
00554
00555
00556 return NULL;
00557 }
00558
00559
00560
00561
00562
00563
00564
00565
00566
00567 #define CONVERT_TO(type,rank){ \
00568 for(it = it_orig; it != seq_list_end; ++it){ \
00569 ptr< ss_type > type1 = ss_type_##type::instance(); \
00570 ptr< or_ics_functional_for_std_conversion > conversion1 = or_ics_functional_for_std_conversion::create(rank, type1); \
00571 ptr< or_ics_functional_for_compound_conversion > conversion2 = or_ics_functional_for_compound_conversion::create( \
00572 MAX((*it)->rank_get(), rank), \
00573 conversion1->target_type_get(), \
00574 conversion1, \
00575 *it); \
00576 new_list->push_back(conversion2); \
00577 }\
00578 funclist::iterator it_f = new_list->begin();\
00579 }
00580
00581 #define CONVERT_TO_POINTER(_type,rank) \
00582 ::lestes::std::list< srp< or_ics_functional > >::iterator it = seq_list->begin(); \
00583 ptr< ss_type > type1 = ss_pointer::instance(_type); \
00584 ptr< or_ics_functional_for_std_conversion > conversion1 = or_ics_functional_for_std_conversion::create(rank, type1); \
00585 ptr< or_ics_functional_for_compound_conversion > conversion2 = or_ics_functional_for_compound_conversion::create( \
00586 MAX((*it)->rank_get(), rank), \
00587 conversion1->target_type_get(), \
00588 conversion1, \
00589 *it); \
00590 seq_list->push_back(conversion2); \
00591
00592 #define CONVERT_TO_NONTYPE(type,rank){ \
00593 for(it = it_orig; it != seq_list_end; it++){ \
00594 ptr< ss_type > type1 = ss_##type::instance(); \
00595 ptr< or_ics_functional_for_std_conversion > conversion1 = or_ics_functional_for_std_conversion::create(rank, type1); \
00596 ptr< or_ics_functional_for_compound_conversion > conversion2 = or_ics_functional_for_compound_conversion::create( \
00597 MAX((*it)->rank_get(), rank), \
00598 conversion1->target_type_get(), \
00599 conversion1, \
00600 *it); \
00601 new_list->push_back(conversion2); \
00602 }\
00603 }
00604
00605
00606 #define CONVERT_LVAL_RVAL() \
00607 ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create(); \
00608 llog(or_ics_log) << "Performing lval->rval conversion\n"; \
00609 if(source_get()->type_get()->accept_or_ics_base_cv(v) == OR_CV_REFERENCE ) { \
00610 llog(or_ics_log) << "We are holding reference type\n"; \
00611 \
00612 \
00613 ::lestes::std::list< srp< or_ics_functional > >::iterator it = seq_list->begin(); \
00614 ptr< or_ics_functional_for_lval_rval_conversion > conversion1 = \
00615 or_ics_functional_for_lval_rval_conversion::create(RANK_EXACT, source_get()->type_get()); \
00616 ptr< or_ics_functional_for_compound_conversion > conversion2 = or_ics_functional_for_compound_conversion::create( \
00617 RANK_EXACT, \
00618 conversion1->target_type_get(), \
00619 conversion1, \
00620 *it); \
00621 seq_list->push_back(conversion2); \
00622
00623
00624 \
00625 seq_list->pop_front(); \
00626 } \
00627
00628 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_class(ptr< ss_class > type)
00629 {
00630 if (scs_phase_get() == 1) {
00631 }
00632
00633 if (scs_phase_get() == 2) {
00634
00635 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
00636 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
00637
00638 ::lestes::std::list< srp< ss_class > >::iterator it_cl, it_cl_orig, it_cl_end;
00639 ::lestes::std::list< srp< ss_base_specifier > >::iterator it_b;
00640 ptr< ::lestes::std::list< srp< or_ics_functional > > > new_list = ::lestes::std::list< srp< or_ics_functional > >::create();
00641
00642
00643 for (it = it_orig; it != seq_list_end; it++) {
00644 for (it_b = type->bases_get()->begin(); it_b != type->bases_get()->end(); it_b++) {
00645 ptr< or_ics_functional_for_std_conversion > conversion1 = or_ics_functional_for_std_conversion::create(RANK_CONVERSION,(*it_b)->base_class_get());
00646 ptr< or_ics_functional_for_compound_conversion > conversion2 = or_ics_functional_for_compound_conversion::create(
00647 MAX(RANK_CONVERSION, (*it)->rank_get()),
00648 conversion1->target_type_get(),
00649 conversion1,
00650 *it);
00651 new_list->push_back(conversion2);
00652 }
00653 }
00654 for(it = new_list->begin(); it != new_list->end(); it++)
00655 seq_list->push_back(*it);
00656 }
00657
00658
00659 if (scs_phase_get() == 3) {
00660
00661 }
00662
00663
00664 scs_phase_set(scs_phase_get()+1);
00665
00666 return seq_list;
00667
00668 }
00669
00670
00671
00672
00673
00674 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_const(ptr< ss_const > )
00675 {
00676 if (scs_phase_get() == 1) {
00677 }
00678 if (scs_phase_get() == 2) {
00679 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
00680 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
00681 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00682 ptr< funclist > new_list = funclist::create();
00683
00684
00685
00686
00687 CONVERT_TO_NONTYPE(bool, RANK_CONVERSION);
00688
00689 funclist::iterator it_f = new_list->begin();
00690 for(; it_f != new_list->end(); ++it_f)
00691 seq_list->push_back(*it_f);
00692
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713 }
00714
00715 if (scs_phase_get() == 3) {
00716
00717 }
00718
00719
00720 scs_phase_set(scs_phase_get()+1);
00721
00722 return seq_list;
00723
00724
00725 }
00726
00727 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_volatile(ptr< ss_volatile > )
00728 {
00729 lassert2(false, "conversions for volatile types not implemented yet\n");
00730 if (scs_phase_get() == 1) {
00731 }
00732 if (scs_phase_get() == 2) {
00733
00734 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00735 ptr< funclist > tgts_seq = funclist::create();
00736 ptr< or_ics_visitor_tgts > v_t = or_ics_visitor_tgts::create(source, 1, tgts_seq);
00737 ptr< funclist > tgts;
00738 funclist::iterator it;
00739
00740
00741 tgts = source->type_get()->accept_or_ics_base(v_t);
00742
00743 for (it = tgts->begin(); it != tgts->end(); it++)
00744 seq_list->push_back(*it);
00745
00746
00747 }
00748
00749 if (scs_phase_get() == 3) {
00750
00751 }
00752
00753
00754 scs_phase_set(scs_phase_get()+1);
00755
00756 return seq_list;
00757 }
00758
00759
00760 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_const_volatile(ptr< ss_const_volatile > )
00761 {
00762 lassert2(false, "conversions for const volatile types not implemented yet\n");
00763
00764 if (scs_phase_get() == 1) {
00765
00766
00767 }
00768 if (scs_phase_get() == 2) {
00769
00770 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00771 ptr< funclist > tgts_seq = funclist::create();
00772 ptr< or_ics_visitor_tgts > v_t = or_ics_visitor_tgts::create(source, 1, tgts_seq);
00773 ptr< funclist > tgts;
00774 funclist::iterator it;
00775
00776
00777 tgts = source->type_get()->accept_or_ics_base(v_t);
00778
00779 for (it = tgts->begin(); it != tgts->end(); it++)
00780 seq_list->push_back(*it);
00781
00782
00783 }
00784
00785 if (scs_phase_get() == 3) {
00786
00787 }
00788
00789
00790 scs_phase_set(scs_phase_get()+1);
00791
00792 return seq_list;
00793 }
00794
00795 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_bool(ptr< ss_bool > )
00796 {
00797
00798 if (scs_phase_get() == 1) {
00799 }
00800 if (scs_phase_get() == 2) {
00801
00802 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
00803 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
00804 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00805 ptr< funclist > new_list = funclist::create();
00806
00807
00808 CONVERT_TO(float,RANK_CONVERSION);
00809 CONVERT_TO(ldouble,RANK_CONVERSION);
00810 CONVERT_TO(ldouble,RANK_CONVERSION);
00811
00812
00813 CONVERT_TO(sshort,RANK_CONVERSION);
00814 CONVERT_TO(ushort,RANK_CONVERSION);
00815 CONVERT_TO(uchar,RANK_CONVERSION);
00816 CONVERT_TO(schar,RANK_CONVERSION);
00817 CONVERT_TO(pchar,RANK_CONVERSION);
00818 CONVERT_TO(uint,RANK_CONVERSION);
00819 CONVERT_TO(sint,RANK_PROMOTION);
00820 CONVERT_TO(slong,RANK_CONVERSION);
00821 CONVERT_TO(ulong,RANK_CONVERSION);
00822 funclist::iterator it_f = new_list->begin();
00823 for(; it_f != new_list->end(); ++it_f)
00824 seq_list->push_back(*it_f);
00825
00826 }
00827
00828 if (scs_phase_get() == 3) {
00829
00830 }
00831
00832
00833 scs_phase_set(scs_phase_get()+1);
00834
00835 return seq_list;
00836 }
00837
00838 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_array(ptr< ss_array > type)
00839 {
00840
00841 if (scs_phase_get() == 1) {
00842
00843
00844
00845
00846
00847
00848 }
00849 if (scs_phase_get() == 2) {
00850 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
00851 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
00852 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00853 ptr< funclist > new_list = funclist::create();
00854 for(it = it_orig; it != seq_list_end; ++it){
00855 ptr< ss_type > type1 = ss_pointer::instance(type->type_get());
00856 ptr< or_ics_functional_for_arr_ptr_conversion > conversion1 = or_ics_functional_for_arr_ptr_conversion::create(RANK_CONVERSION, type1);
00857 ptr< or_ics_functional_for_compound_conversion > conversion2 = or_ics_functional_for_compound_conversion::create(
00858 MAX((*it)->rank_get(), RANK_CONVERSION),
00859 conversion1->target_type_get(),
00860 conversion1,
00861 *it);
00862 new_list->push_back(conversion2);
00863 }
00864 funclist::iterator it_f = new_list->begin();
00865 for(; it_f != new_list->end(); ++it_f)
00866 seq_list->push_back(*it_f);
00867
00868
00869 }
00870
00871 if (scs_phase_get() == 3) {
00872
00873
00874 }
00875
00876
00877 scs_phase_set(scs_phase_get()+1);
00878
00879 return seq_list;
00880
00881 }
00882
00883 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_function(ptr< ss_function > type)
00884 {
00885 lassert2(false, "conversions of function type are not implemented yet\n");
00886 if (scs_phase_get() == 1) {
00887
00888
00889
00890
00891 ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
00892 if(! (source_get()->type_get()->accept_or_ics_base_cv(v) == OR_CV_REFERENCE || source_get()->type_get()->accept_or_ics_base_cv(v) == OR_CV_PSEUDOREFERENCE)) {
00893 CONVERT_TO_POINTER(type, RANK_EXACT);
00894 }
00895
00896
00897 }
00898 if (scs_phase_get() == 2) {
00899
00900 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
00901 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
00902 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00903 ptr< funclist > new_list = funclist::create();
00904
00905
00906
00907 }
00908
00909 if (scs_phase_get() == 3) {
00910
00911 }
00912
00913
00914 scs_phase_set(scs_phase_get()+1);
00915
00916 return seq_list;
00917
00918 }
00919
00920 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_pointer(ptr< ss_pointer > type)
00921 {
00922 if (scs_phase_get() == 1) {
00923 }
00924 if (scs_phase_get() == 2) {
00925
00926 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
00927 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
00928 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00929 ptr< funclist > new_list = funclist::create();
00930
00931
00932
00933
00934 CONVERT_TO_NONTYPE(bool, RANK_CONVERSION);
00935 funclist::iterator it_f = new_list->begin();
00936
00937 for(it = it_orig; it != seq_list_end; ++it){
00938 ptr< ss_type > type1 = ss_pointer::instance(ss_const::instance(type->what_get()));
00939 ptr< or_ics_functional_for_std_conversion > conversion1 = or_ics_functional_for_std_conversion::create(RANK_CONVERSION, type1);
00940 ptr< or_ics_functional_for_compound_conversion > conversion2 = or_ics_functional_for_compound_conversion::create(
00941 MAX((*it)->rank_get(), RANK_CONVERSION),
00942 conversion1->target_type_get(),
00943 conversion1,
00944 *it);
00945 new_list->push_back(conversion2);
00946 }
00947
00948
00949 for(; it_f != new_list->end(); ++it_f) {
00950 seq_list->push_back(*it_f);
00951
00952 }
00953
00954 }
00955
00956 if (scs_phase_get() == 3) {
00957
00958 }
00959
00960
00961 scs_phase_set(scs_phase_get()+1);
00962
00963 return seq_list;
00964 }
00965
00966 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_member_pointer(ptr< ss_member_pointer > )
00967 {
00968
00969 if (scs_phase_get() == 1) {
00970 }
00971 if (scs_phase_get() == 2) {
00972
00973 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
00974 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
00975 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00976 ptr< funclist > new_list = funclist::create();
00977
00978
00979
00980
00981 CONVERT_TO_NONTYPE(bool, RANK_CONVERSION);
00982
00983 funclist::iterator it_f = new_list->begin();
00984 for(; it_f != new_list->end(); ++it_f)
00985 seq_list->push_back(*it_f);
00986 }
00987
00988 if (scs_phase_get() == 3) {
00989
00990 }
00991
00992
00993 scs_phase_set(scs_phase_get()+1);
00994
00995 return seq_list;
00996 }
00997
00998 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_union(ptr< ss_union > )
00999 {
01000 if (scs_phase_get() == 1) {
01001 }
01002 if (scs_phase_get() == 2) {
01003
01004 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01005 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01006
01007
01008 }
01009
01010 if (scs_phase_get() == 3) {
01011
01012 }
01013
01014
01015 scs_phase_set(scs_phase_get()+1);
01016
01017 return seq_list;
01018 }
01019
01020 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_void(ptr< ss_void > )
01021 {
01022 if (scs_phase_get() == 1) {
01023 }
01024 if (scs_phase_get() == 2) {
01025 }
01026
01027 if (scs_phase_get() == 3) {
01028 }
01029
01030
01031 scs_phase_set(scs_phase_get()+1);
01032
01033 return seq_list;
01034 }
01035
01036 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_reference(ptr< ss_reference > type)
01037 {
01038
01039 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01040
01041
01042 ptr< or_ics_functional_for_std_conversion > conversion1 = or_ics_functional_for_std_conversion::create(RANK_EXACT, type);
01043 seq_list->push_back(conversion1);
01044
01045
01046 funclist::iterator id_it = seq_list->begin();
01047 ptr< or_ics_functional_for_lval_rval_conversion > id_conversion1 =
01048 or_ics_functional_for_lval_rval_conversion::create(RANK_EXACT, type->what_get());
01049 ptr< or_ics_functional_for_compound_conversion > id_conversion2 = or_ics_functional_for_compound_conversion::create(
01050 RANK_EXACT,
01051 type->what_get(),
01052 id_conversion1,
01053 *id_it);
01054 seq_list->push_back(id_conversion2);
01055
01056 return seq_list;
01057 }
01058 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_sint(ptr< ss_type_sint > )
01059 {
01060 if (scs_phase_get() == 1) {
01061 }
01062 if (scs_phase_get() == 2) {
01063
01064
01065 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01066 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01067 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01068 ptr< funclist > new_list = funclist::create();
01069
01070 CONVERT_TO(sshort,RANK_CONVERSION);
01071 CONVERT_TO(ushort,RANK_CONVERSION);
01072 CONVERT_TO(schar,RANK_CONVERSION);
01073 CONVERT_TO(uchar,RANK_CONVERSION);
01074 CONVERT_TO(pchar,RANK_CONVERSION);
01075 CONVERT_TO(uint,RANK_CONVERSION);
01076 CONVERT_TO(ulong,RANK_CONVERSION);
01077 CONVERT_TO(slong,RANK_CONVERSION);
01078 CONVERT_TO(double,RANK_CONVERSION);
01079 CONVERT_TO(ldouble,RANK_CONVERSION);
01080 CONVERT_TO(float,RANK_CONVERSION);
01081 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01082
01083 funclist::iterator it_f = new_list->begin();
01084 for(; it_f != new_list->end(); ++it_f)
01085 seq_list->push_back(*it_f);
01086
01087 }
01088
01089 if (scs_phase_get() == 3) {
01090
01091 }
01092
01093
01094 scs_phase_set(scs_phase_get()+1);
01095
01096 return seq_list;
01097
01098 }
01099
01100 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_uint(ptr< ss_type_uint > )
01101 {
01102 if (scs_phase_get() == 1) {
01103 }
01104 if (scs_phase_get() == 2) {
01105
01106
01107 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01108 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01109 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01110 ptr< funclist > new_list = funclist::create();
01111
01112 CONVERT_TO(sshort,RANK_CONVERSION);
01113 CONVERT_TO(ushort,RANK_CONVERSION);
01114 CONVERT_TO(schar,RANK_CONVERSION);
01115 CONVERT_TO(uchar,RANK_CONVERSION);
01116 CONVERT_TO(pchar,RANK_CONVERSION);
01117 CONVERT_TO(sint,RANK_CONVERSION);
01118 CONVERT_TO(ulong,RANK_CONVERSION);
01119 CONVERT_TO(slong,RANK_CONVERSION);
01120 CONVERT_TO(double,RANK_CONVERSION);
01121 CONVERT_TO(ldouble,RANK_CONVERSION);
01122 CONVERT_TO(float,RANK_CONVERSION);
01123 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01124
01125 funclist::iterator it_f = new_list->begin();
01126 for(; it_f != new_list->end(); ++it_f)
01127 seq_list->push_back(*it_f);
01128
01129 }
01130
01131 if (scs_phase_get() == 3) {
01132
01133 }
01134
01135
01136 scs_phase_set(scs_phase_get()+1);
01137
01138 return seq_list;
01139 }
01140
01141 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_slong(ptr< ss_type_slong > )
01142 {
01143 if (scs_phase_get() == 1) {
01144 }
01145 if (scs_phase_get() == 2) {
01146
01147 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01148 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01149 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01150 ptr< funclist > new_list = funclist::create();
01151
01152 CONVERT_TO(sshort,RANK_CONVERSION);
01153 CONVERT_TO(ushort,RANK_CONVERSION);
01154 CONVERT_TO(schar,RANK_CONVERSION);
01155 CONVERT_TO(uchar,RANK_CONVERSION);
01156 CONVERT_TO(pchar,RANK_CONVERSION);
01157 CONVERT_TO(sint,RANK_CONVERSION);
01158 CONVERT_TO(uint,RANK_CONVERSION);
01159 CONVERT_TO(ulong,RANK_CONVERSION);
01160 CONVERT_TO(double,RANK_CONVERSION);
01161 CONVERT_TO(ldouble,RANK_CONVERSION);
01162 CONVERT_TO(float,RANK_CONVERSION);
01163 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01164
01165 funclist::iterator it_f = new_list->begin();
01166 for(; it_f != new_list->end(); ++it_f)
01167 seq_list->push_back(*it_f);
01168 }
01169
01170 if (scs_phase_get() == 3) {
01171
01172 }
01173
01174
01175 scs_phase_set(scs_phase_get()+1);
01176
01177 return seq_list;
01178
01179 }
01180
01181 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_ulong(ptr< ss_type_ulong > )
01182 {
01183 if (scs_phase_get() == 1) {
01184 }
01185 if (scs_phase_get() == 2) {
01186
01187
01188 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01189 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01190 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01191 ptr< funclist > new_list = funclist::create();
01192
01193 CONVERT_TO(sshort,RANK_CONVERSION);
01194 CONVERT_TO(ushort,RANK_CONVERSION);
01195 CONVERT_TO(schar,RANK_CONVERSION);
01196 CONVERT_TO(uchar,RANK_CONVERSION);
01197 CONVERT_TO(pchar,RANK_CONVERSION);
01198 CONVERT_TO(sint,RANK_CONVERSION);
01199 CONVERT_TO(uint,RANK_CONVERSION);
01200 CONVERT_TO(slong,RANK_CONVERSION);
01201 CONVERT_TO(double,RANK_CONVERSION);
01202 CONVERT_TO(ldouble,RANK_CONVERSION);
01203 CONVERT_TO(float,RANK_CONVERSION);
01204 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01205 funclist::iterator it_f = new_list->begin();
01206
01207 for(; it_f != new_list->end(); ++it_f)
01208 seq_list->push_back(*it_f);
01209 }
01210
01211 if (scs_phase_get() == 3) {
01212
01213 }
01214
01215
01216 scs_phase_set(scs_phase_get()+1);
01217
01218 return seq_list;
01219 }
01220
01221 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_sshort(ptr< ss_type_sshort > )
01222 {
01223 if (scs_phase_get() == 1) {
01224 }
01225 if (scs_phase_get() == 2) {
01226
01227 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01228 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01229 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01230 ptr< funclist > new_list = funclist::create();
01231
01232
01233 CONVERT_TO(sint,RANK_PROMOTION);
01234
01235
01236 CONVERT_TO(ushort,RANK_CONVERSION);
01237 CONVERT_TO(schar,RANK_CONVERSION);
01238 CONVERT_TO(uchar,RANK_CONVERSION);
01239 CONVERT_TO(pchar,RANK_CONVERSION);
01240 CONVERT_TO(uint,RANK_CONVERSION);
01241 CONVERT_TO(slong,RANK_CONVERSION);
01242 CONVERT_TO(ulong,RANK_CONVERSION);
01243 CONVERT_TO(double,RANK_CONVERSION);
01244 CONVERT_TO(ldouble,RANK_CONVERSION);
01245 CONVERT_TO(float,RANK_CONVERSION);
01246 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01247 funclist::iterator it_f = new_list->begin();
01248 for(; it_f != new_list->end(); ++it_f)
01249 seq_list->push_back(*it_f);
01250 }
01251
01252 if (scs_phase_get() == 3) {
01253
01254 }
01255
01256
01257 scs_phase_set(scs_phase_get()+1);
01258
01259 return seq_list;
01260
01261 }
01262
01263 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_ushort(ptr< ss_type_ushort > )
01264 {
01265 if (scs_phase_get() == 1) {
01266 }
01267 if (scs_phase_get() == 2) {
01268
01269 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01270 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01271 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01272 ptr< funclist > new_list = funclist::create();
01273
01274
01275 CONVERT_TO(sint,RANK_PROMOTION);
01276
01277
01278 CONVERT_TO(sshort,RANK_CONVERSION);
01279 CONVERT_TO(schar,RANK_CONVERSION);
01280 CONVERT_TO(uchar,RANK_CONVERSION);
01281 CONVERT_TO(pchar,RANK_CONVERSION);
01282 CONVERT_TO(uint,RANK_CONVERSION);
01283 CONVERT_TO(slong,RANK_CONVERSION);
01284 CONVERT_TO(ulong,RANK_CONVERSION);
01285 CONVERT_TO(double,RANK_CONVERSION);
01286 CONVERT_TO(ldouble,RANK_CONVERSION);
01287 CONVERT_TO(float,RANK_CONVERSION);
01288 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01289
01290 funclist::iterator it_f = new_list->begin();
01291 for(; it_f != new_list->end(); ++it_f)
01292 seq_list->push_back(*it_f);
01293 }
01294
01295 if (scs_phase_get() == 3) {
01296
01297 }
01298
01299
01300 scs_phase_set(scs_phase_get()+1);
01301
01302 return seq_list;
01303 }
01304
01305 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_schar(ptr< ss_type_schar > )
01306 {
01307 if (scs_phase_get() == 1) {
01308 }
01309 if (scs_phase_get() == 2) {
01310
01311 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01312 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01313 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01314 ptr< funclist > new_list = funclist::create();
01315
01316
01317 CONVERT_TO(sint,RANK_PROMOTION);
01318
01319
01320 CONVERT_TO(sshort,RANK_CONVERSION);
01321 CONVERT_TO(ushort,RANK_CONVERSION);
01322 CONVERT_TO(uchar,RANK_CONVERSION);
01323 CONVERT_TO(pchar,RANK_CONVERSION);
01324 CONVERT_TO(uint,RANK_CONVERSION);
01325 CONVERT_TO(slong,RANK_CONVERSION);
01326 CONVERT_TO(ulong,RANK_CONVERSION);
01327 CONVERT_TO(double,RANK_CONVERSION);
01328 CONVERT_TO(ldouble,RANK_CONVERSION);
01329 CONVERT_TO(float,RANK_CONVERSION);
01330 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01331
01332 funclist::iterator it_f = new_list->begin();
01333 for(; it_f != new_list->end(); ++it_f)
01334 seq_list->push_back(*it_f);
01335 }
01336
01337 if (scs_phase_get() == 3) {
01338
01339 }
01340
01341
01342 scs_phase_set(scs_phase_get()+1);
01343
01344 return seq_list;
01345 }
01346
01347 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_uchar(ptr< ss_type_uchar > )
01348 {
01349 if (scs_phase_get() == 1) {
01350
01351 CONVERT_LVAL_RVAL();
01352
01353
01354 }
01355 if (scs_phase_get() == 2) {
01356
01357 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01358 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01359 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01360 ptr< funclist > new_list = funclist::create();
01361
01362
01363 CONVERT_TO(sint,RANK_PROMOTION);
01364
01365
01366 CONVERT_TO(sshort,RANK_CONVERSION);
01367 CONVERT_TO(ushort,RANK_CONVERSION);
01368 CONVERT_TO(schar,RANK_CONVERSION);
01369 CONVERT_TO(pchar,RANK_CONVERSION);
01370 CONVERT_TO(uint,RANK_CONVERSION);
01371 CONVERT_TO(slong,RANK_CONVERSION);
01372 CONVERT_TO(ulong,RANK_CONVERSION);
01373 CONVERT_TO(double,RANK_CONVERSION);
01374 CONVERT_TO(ldouble,RANK_CONVERSION);
01375 CONVERT_TO(float,RANK_CONVERSION);
01376 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01377
01378 funclist::iterator it_f = new_list->begin();
01379 for(; it_f != new_list->end(); ++it_f)
01380 seq_list->push_back(*it_f);
01381 }
01382
01383 if (scs_phase_get() == 3) {
01384
01385 }
01386
01387
01388 scs_phase_set(scs_phase_get()+1);
01389
01390 return seq_list;
01391 }
01392
01393 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_pchar(ptr< ss_type_pchar > )
01394 {
01395 if (scs_phase_get() == 1) {
01396
01397 CONVERT_LVAL_RVAL();
01398
01399
01400 }
01401 if (scs_phase_get() == 2) {
01402
01403 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01404 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01405 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01406 ptr< funclist > new_list = funclist::create();
01407
01408
01409 CONVERT_TO(sint,RANK_PROMOTION);
01410
01411
01412 CONVERT_TO(sshort,RANK_CONVERSION);
01413 CONVERT_TO(ushort,RANK_CONVERSION);
01414 CONVERT_TO(uchar,RANK_CONVERSION);
01415 CONVERT_TO(schar,RANK_CONVERSION);
01416 CONVERT_TO(uint,RANK_CONVERSION);
01417 CONVERT_TO(slong,RANK_CONVERSION);
01418 CONVERT_TO(ulong,RANK_CONVERSION);
01419 CONVERT_TO(double,RANK_CONVERSION);
01420 CONVERT_TO(ldouble,RANK_CONVERSION);
01421 CONVERT_TO(float,RANK_CONVERSION);
01422 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01423
01424 funclist::iterator it_f = new_list->begin();
01425 for(; it_f != new_list->end(); ++it_f)
01426 seq_list->push_back(*it_f);
01427 }
01428
01429 if (scs_phase_get() == 3) {
01430
01431 }
01432
01433
01434 scs_phase_set(scs_phase_get()+1);
01435
01436 return seq_list;
01437 }
01438
01439 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_float(ptr< ss_type_float > )
01440 {
01441 if (scs_phase_get() == 1) {
01442
01443 CONVERT_LVAL_RVAL();
01444
01445
01446 }
01447 if (scs_phase_get() == 2) {
01448
01449 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01450 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01451 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01452 ptr< funclist > new_list = funclist::create();
01453
01454
01455 CONVERT_TO(double,RANK_PROMOTION);
01456
01457
01458 CONVERT_TO(ldouble,RANK_CONVERSION);
01459
01460
01461 CONVERT_TO(sshort,RANK_CONVERSION);
01462 CONVERT_TO(ushort,RANK_CONVERSION);
01463 CONVERT_TO(uchar,RANK_CONVERSION);
01464 CONVERT_TO(schar,RANK_CONVERSION);
01465 CONVERT_TO(pchar,RANK_CONVERSION);
01466 CONVERT_TO(uint,RANK_CONVERSION);
01467 CONVERT_TO(sint,RANK_CONVERSION);
01468 CONVERT_TO(slong,RANK_CONVERSION);
01469 CONVERT_TO(ulong,RANK_CONVERSION);
01470 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01471
01472 funclist::iterator it_f = new_list->begin();
01473 for(; it_f != new_list->end(); ++it_f)
01474 seq_list->push_back(*it_f);
01475
01476 }
01477
01478 if (scs_phase_get() == 3) {
01479
01480 }
01481
01482
01483 scs_phase_set(scs_phase_get()+1);
01484
01485 return seq_list;
01486 }
01487
01488 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_double(ptr< ss_type_double > )
01489 {
01490 if (scs_phase_get() == 1) {
01491
01492 CONVERT_LVAL_RVAL();
01493
01494
01495 }
01496 if (scs_phase_get() == 2) {
01497
01498 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01499 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01500 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01501 ptr< funclist > new_list = funclist::create();
01502
01503
01504 CONVERT_TO(float,RANK_CONVERSION);
01505 CONVERT_TO(ldouble,RANK_CONVERSION);
01506
01507
01508 CONVERT_TO(sshort,RANK_CONVERSION);
01509 CONVERT_TO(ushort,RANK_CONVERSION);
01510 CONVERT_TO(uchar,RANK_CONVERSION);
01511 CONVERT_TO(schar,RANK_CONVERSION);
01512 CONVERT_TO(pchar,RANK_CONVERSION);
01513 CONVERT_TO(uint,RANK_CONVERSION);
01514 CONVERT_TO(sint,RANK_CONVERSION);
01515 CONVERT_TO(slong,RANK_CONVERSION);
01516 CONVERT_TO(ulong,RANK_CONVERSION);
01517 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01518
01519 funclist::iterator it_f = new_list->begin();
01520 for(; it_f != new_list->end(); ++it_f)
01521 seq_list->push_back(*it_f);
01522
01523 }
01524
01525 if (scs_phase_get() == 3) {
01526
01527 }
01528
01529
01530 scs_phase_set(scs_phase_get()+1);
01531
01532 return seq_list;
01533 }
01534
01535 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_ldouble(ptr< ss_type_ldouble > )
01536 {
01537 if (scs_phase_get() == 1) {
01538 }
01539 if (scs_phase_get() == 2) {
01540
01541 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01542 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01543 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01544 ptr< funclist > new_list = funclist::create();
01545
01546
01547 CONVERT_TO(float,RANK_CONVERSION);
01548 CONVERT_TO(double,RANK_CONVERSION);
01549
01550
01551 CONVERT_TO(sshort,RANK_CONVERSION);
01552 CONVERT_TO(ushort,RANK_CONVERSION);
01553 CONVERT_TO(uchar,RANK_CONVERSION);
01554 CONVERT_TO(schar,RANK_CONVERSION);
01555 CONVERT_TO(pchar,RANK_CONVERSION);
01556 CONVERT_TO(uint,RANK_CONVERSION);
01557 CONVERT_TO(sint,RANK_CONVERSION);
01558 CONVERT_TO(slong,RANK_CONVERSION);
01559 CONVERT_TO(ulong,RANK_CONVERSION);
01560 CONVERT_TO_NONTYPE(bool,RANK_CONVERSION);
01561
01562 funclist::iterator it_f = new_list->begin();
01563 for(; it_f != new_list->end(); ++it_f)
01564 seq_list->push_back(*it_f);
01565 }
01566
01567 if (scs_phase_get() == 3) {
01568
01569 }
01570
01571
01572 scs_phase_set(scs_phase_get()+1);
01573
01574 return seq_list;
01575 }
01576
01577 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_enum(ptr< ss_enum > )
01578 {
01579 if (scs_phase_get() == 1) {
01580 }
01581 if (scs_phase_get() == 2) {
01582
01583 ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_orig = seq_list->begin();
01584 ::lestes::std::list< srp< or_ics_functional > >::iterator seq_list_end = seq_list->end();
01585 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01586 ptr< funclist > new_list = funclist::create();
01587
01588
01589
01590 CONVERT_TO(uint,RANK_CONVERSION);
01591
01592
01593 CONVERT_TO_NONTYPE(bool, RANK_CONVERSION);
01594
01595 funclist::iterator it_f = new_list->begin();
01596 for(; it_f != new_list->end(); ++it_f)
01597 seq_list->push_back(*it_f);
01598
01599 }
01600
01601 if (scs_phase_get() == 3) {
01602
01603 }
01604
01605
01606 scs_phase_set(scs_phase_get()+1);
01607
01608 return seq_list;
01609
01610 }
01611
01612
01613
01614
01615
01616
01617
01618
01619
01620
01621
01622
01623
01624
01625
01626
01627
01628
01629
01630
01631
01632
01633
01634
01635
01636
01637
01638
01639 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_pseudoreference(ptr< ss_pseudoreference > type)
01640 {
01641 typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
01642 ptr< funclist > tgts_seq = funclist::create();
01643
01644 ptr< funclist > tgts;
01645 funclist::iterator it, it_sav_begin, it_sav_end;
01646 ptr< or_ics_functional > first;
01647 ptr< or_or_functional > fake_func;
01648
01649 llog(or_ics_log) << "visit_ss_pseudoreference\n";
01650
01651
01652
01653
01654
01655
01656
01657 ptr< or_or_functional_to_enum > v_f = or_or_functional_to_enum::create();
01658 source->accept_or_or_functional_visitor(v_f);
01659 or_or_functional_enum e = v_f->result_get();
01660
01661 if (e == OR_OR_FUNCTIONAL_DECL)
01662 fake_func = or_or_functional_decl::create(type->what_get(), source.dncast<or_or_functional_decl>()->declaration_get());
01663 else if (e == OR_OR_FUNCTIONAL_CONCRETE)
01664 fake_func = or_or_functional_decl::create(type->what_get(), source.dncast<or_or_functional_concrete>()->declaration_get());
01665 else if (e == OR_OR_FUNCTIONAL_COMMA)
01666 fake_func = or_or_functional_this::create(type->what_get());
01667 else
01668
01669 fake_func = or_or_functional_this::create(type->what_get());
01670
01671
01672 ptr< or_ics_visitor_tgts > v_t = or_ics_visitor_tgts::create(fake_func, 1, tgts_seq);
01673
01674
01675
01676
01677
01678
01679
01680
01681 ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
01682 ptr< or_ics_functional_for_lval_rval_conversion > i_conversion1;
01683 if (type->what_get()->accept_or_ics_base_cv(v) == OR_CV_CONST) {
01684 i_conversion1 = or_ics_functional_for_lval_rval_conversion::create(RANK_EXACT, type->what_get().dncast<ss_const>()->what_get());
01685 }
01686 else {
01687 i_conversion1 = or_ics_functional_for_lval_rval_conversion::create(RANK_EXACT, type->what_get());
01688 }
01689
01690 tgts_seq->push_back(i_conversion1);
01691
01692
01693
01694
01695 tgts = type->what_get()->accept_or_ics_base(v_t);
01696 tgts = type->what_get()->accept_or_ics_base(v_t);
01697 tgts = type->what_get()->accept_or_ics_base(v_t);
01698 llog(or_ics_log) << tgts->size() << " targets generated\n";
01699
01700
01701 ptr< or_ics_functional_for_std_conversion > conversion1 = or_ics_functional_for_std_conversion::create(RANK_EXACT, type);
01702 seq_list->push_back(conversion1);
01703
01704
01705 ptr< or_ics_functional_for_reference_bind_conversion > r_conversion1 = or_ics_functional_for_reference_bind_conversion::create(RANK_EXACT,
01706 ss_reference::instance(type->what_get()));
01707 seq_list->push_back(r_conversion1);
01708
01709
01710 funclist::iterator id_it = seq_list->begin();
01711 ptr< or_ics_functional_for_lval_rval_conversion > id_conversion1 =
01712 or_ics_functional_for_lval_rval_conversion::create(RANK_EXACT, type->what_get());
01713 ptr< or_ics_functional_for_compound_conversion > id_conversion2 = or_ics_functional_for_compound_conversion::create(
01714 RANK_EXACT,
01715 type->what_get(),
01716 id_conversion1,
01717 *id_it);
01718 seq_list->push_back(id_conversion2);
01719
01720
01721
01722
01723
01724 it_sav_begin = tgts->begin();
01725 it_sav_end = tgts->end();
01726 for (it = it_sav_begin; it != it_sav_end; it++) {
01727
01728
01729
01730
01731
01732
01733
01734
01735
01736
01737
01738 seq_list->push_back(*it);
01739 }
01740
01741 llog(or_ics_log) << "references for all these types added to imaginables. returning " << seq_list->size() << " seq_list elements\n";
01742
01743 return seq_list;
01744 }
01745
01746 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_type_wchar_t(ptr< ss_type_wchar_t > )
01747 {
01748 lassert2(false, "Conversions for wchar_t are not implemented yet\n");
01749 }
01750 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_member_function(ptr< ss_member_function > )
01751 {
01752 lassert2(false, "Conversions for member functions are not implemented yet\n");
01753 }
01754
01755 #if the_class_is_no_longer_abstract
01756 ptr< ::lestes::std::list< srp< or_ics_functional > > > or_ics_visitor_tgts::visit_ss_typename_type(ptr< ss_typename_type > )
01757 {
01758 lassert2(false, "Conversions for typename_type are not implemented yet\n");
01759 }
01760 #endif
01761
01762
01763
01764 or_cv_enum or_ics_visitor_cv::visit_ss_const(ptr< ss_const > )
01765 {
01766 return OR_CV_CONST;
01767 }
01768
01769 or_cv_enum or_ics_visitor_cv::visit_ss_volatile(ptr< ss_volatile > )
01770 {
01771 return OR_CV_VOLATILE;
01772 }
01773
01774 or_cv_enum or_ics_visitor_cv::visit_ss_const_volatile(ptr< ss_const_volatile > )
01775 {
01776 return OR_CV_CONST_VOLATILE;
01777 }
01778
01779 or_cv_enum or_ics_visitor_cv::visit_ss_union(ptr< ss_union > )
01780 {
01781 return OR_CV_NONE;
01782 }
01783
01784 or_cv_enum or_ics_visitor_cv::visit_ss_pointer(ptr< ss_pointer > )
01785 {
01786 return OR_CV_PTR;
01787 }
01788
01789 or_cv_enum or_ics_visitor_cv::visit_ss_enum(ptr< ss_enum > )
01790 {
01791 return OR_CV_NONE;
01792 }
01793
01794 or_cv_enum or_ics_visitor_cv::visit_ss_array(ptr< ss_array > )
01795 {
01796 return OR_CV_NONE;
01797 }
01798
01799 or_cv_enum or_ics_visitor_cv::visit_ss_member_pointer(ptr< ss_member_pointer > )
01800 {
01801 return OR_CV_MEMBER_PTR;
01802 }
01803
01804 or_cv_enum or_ics_visitor_cv::visit_ss_function(ptr< ss_function > )
01805 {
01806 return OR_CV_NONE;
01807 }
01808
01809 or_cv_enum or_ics_visitor_cv::visit_ss_class(ptr< ss_class > )
01810 {
01811 return OR_CV_NONE;
01812 }
01813
01814 or_cv_enum or_ics_visitor_cv::visit_ss_bool(ptr< ss_bool > )
01815 {
01816 return OR_CV_BOOL;
01817 }
01818
01819 or_cv_enum or_ics_visitor_cv::visit_ss_void(ptr< ss_void > )
01820 {
01821 return OR_CV_VOID;
01822 }
01823
01824 or_cv_enum or_ics_visitor_cv::visit_ss_type_sint(ptr< ss_type_sint > )
01825 {
01826 return OR_CV_SINT;
01827 }
01828
01829 or_cv_enum or_ics_visitor_cv::visit_ss_type_uint(ptr< ss_type_uint > )
01830 {
01831 return OR_CV_NONE;
01832 }
01833
01834 or_cv_enum or_ics_visitor_cv::visit_ss_type_slong(ptr< ss_type_slong > )
01835 {
01836 return OR_CV_NONE;
01837 }
01838
01839 or_cv_enum or_ics_visitor_cv::visit_ss_type_ulong(ptr< ss_type_ulong > )
01840 {
01841 return OR_CV_NONE;
01842 }
01843
01844 or_cv_enum or_ics_visitor_cv::visit_ss_type_sshort(ptr< ss_type_sshort > )
01845 {
01846 return OR_CV_NONE;
01847 }
01848
01849 or_cv_enum or_ics_visitor_cv::visit_ss_type_ushort(ptr< ss_type_ushort > )
01850 {
01851 return OR_CV_NONE;
01852 }
01853
01854 or_cv_enum or_ics_visitor_cv::visit_ss_type_schar(ptr< ss_type_schar > )
01855 {
01856 return OR_CV_NONE;
01857 }
01858
01859 or_cv_enum or_ics_visitor_cv::visit_ss_type_uchar(ptr< ss_type_uchar > )
01860 {
01861 return OR_CV_NONE;
01862 }
01863
01864 or_cv_enum or_ics_visitor_cv::visit_ss_type_pchar(ptr< ss_type_pchar > )
01865 {
01866 return OR_CV_NONE;
01867 }
01868
01869 or_cv_enum or_ics_visitor_cv::visit_ss_type_float(ptr< ss_type_float > )
01870 {
01871 return OR_CV_NONE;
01872 }
01873
01874 or_cv_enum or_ics_visitor_cv::visit_ss_type_double(ptr< ss_type_double > )
01875 {
01876 return OR_CV_NONE;
01877 }
01878
01879 or_cv_enum or_ics_visitor_cv::visit_ss_type_ldouble(ptr< ss_type_ldouble > )
01880 {
01881 return OR_CV_NONE;
01882 }
01883
01884 or_cv_enum or_ics_visitor_cv::visit_ss_reference(ptr< ss_reference > )
01885 {
01886 return OR_CV_REFERENCE;
01887 }
01888 or_cv_enum or_ics_visitor_cv::visit_ss_type_wchar_t(ptr< ss_type_wchar_t > )
01889 {
01890 return OR_CV_NONE;
01891 }
01892 or_cv_enum or_ics_visitor_cv::visit_ss_member_function(ptr< ss_member_function > )
01893 {
01894 return OR_CV_NONE;
01895 }
01896 or_cv_enum or_ics_visitor_cv::visit_ss_pseudoreference(ptr< ss_pseudoreference > )
01897 {
01898 return OR_CV_PSEUDOREFERENCE;
01899 }
01900 #if the_class_is_no_longer_abstract
01901 or_cv_enum or_ics_visitor_cv::visit_ss_typename_type(ptr< ss_typename_type > )
01902 {
01903 return OR_CV_NONE;
01904 }
01905 #endif
01906
01907
01908 ptr< ::lestes::std::list< srp< ss_type > > > or_ics_functional_visitor::visit_or_ics_functional_for_std_conversion(ptr< or_ics_functional_for_std_conversion > func)
01909 {
01910 conv_list->push_front(func->target_type_get());
01911 return conv_list;
01912 }
01913
01914 ptr< ::lestes::std::list< srp< ss_type > > > or_ics_functional_visitor::visit_or_ics_functional_for_arr_ptr_conversion(ptr< or_ics_functional_for_arr_ptr_conversion > func)
01915 {
01916 conv_list->push_front(func->target_type_get());
01917 return conv_list;
01918 }
01919
01920
01921 ptr< ::lestes::std::list< srp< ss_type > > > or_ics_functional_visitor::visit_or_ics_functional_for_reference_bind_conversion(ptr< or_ics_functional_for_reference_bind_conversion > func)
01922 {
01923 conv_list->push_front(func->target_type_get());
01924 return conv_list;
01925 }
01926
01927 ptr< ::lestes::std::list< srp< ss_type > > > or_ics_functional_visitor::visit_or_ics_functional_for_bind_to_temporary_conversion(ptr< or_ics_functional_for_bind_to_temporary_conversion > func)
01928 {
01929 conv_list->push_front(func->target_type_get());
01930 return conv_list;
01931 }
01932 ptr< ::lestes::std::list< srp< ss_type > > > or_ics_functional_visitor::visit_or_ics_functional_for_lval_rval_conversion(ptr< or_ics_functional_for_lval_rval_conversion >)
01933 {
01934 return conv_list;
01935 }
01936
01937 ptr< ::lestes::std::list< srp< ss_type > > > or_ics_functional_visitor::visit_or_ics_functional_for_user_conversion_by_conversion_function(ptr< or_ics_functional_for_user_conversion_by_conversion_function > func)
01938 {
01939 conv_list->push_front(func->target_type_get());
01940 return conv_list;
01941 }
01942
01943 ptr< ::lestes::std::list< srp< ss_type > > > or_ics_functional_visitor::visit_or_ics_functional_for_user_conversion_by_constructor(ptr< or_ics_functional_for_user_conversion_by_constructor > func)
01944 {
01945 conv_list->push_front(func->target_type_get());
01946 return conv_list;
01947 }
01948
01949 ptr< ::lestes::std::list< srp< ss_type > > > or_ics_functional_visitor::visit_or_ics_functional_for_compound_conversion(ptr< or_ics_functional_for_compound_conversion > func)
01950 {
01951 ptr< or_ics_functional_visitor > v_t = or_ics_functional_visitor::create(conv_list);
01952 func->outter_conversion_get()->accept_or_ics_functional_base(v_t);
01953 func->inner_conversion_get()->accept_or_ics_functional_base(v_t);
01954 return conv_list;
01955
01956 }
01957
01958 end_package(sem);
01959 end_package(cplus);
01960 end_package(lang);
01961 end_package(lestes);
01962