Home | History | Annotate | Download | only in src

Lines Matching refs:info

232     __dynamic_cast_info info = {thrown_class_type, 0, this, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
233 info.number_of_dst_type = 1;
234 thrown_class_type->has_unambiguous_public_base(&info, adjustedPtr, public_path);
235 if (info.path_dst_ptr_to_static_ptr == public_path)
237 adjustedPtr = const_cast<void*>(info.dst_ptr_leading_to_static_ptr);
248 __class_type_info::process_found_base_class(__dynamic_cast_info* info,
252 if (info->dst_ptr_leading_to_static_ptr == 0)
255 info->dst_ptr_leading_to_static_ptr = adjustedPtr;
256 info->path_dst_ptr_to_static_ptr = path_below;
257 info->number_to_static_ptr = 1;
259 else if (info->dst_ptr_leading_to_static_ptr == adjustedPtr)
262 if (info->path_dst_ptr_to_static_ptr == not_public_path)
263 info->path_dst_ptr_to_static_ptr = path_below;
269 info->number_to_static_ptr += 1;
270 info->path_dst_ptr_to_static_ptr = not_public_path;
271 info->search_done = true;
276 __class_type_info::has_unambiguous_public_base(__dynamic_cast_info* info,
280 if (is_equal(this, info->static_type, false))
281 process_found_base_class(info, adjustedPtr, path_below);
285 __si_class_type_info::has_unambiguous_public_base(__dynamic_cast_info* info,
289 if (is_equal(this, info->static_type, false))
290 process_found_base_class(info, adjustedPtr, path_below);
292 __base_type->has_unambiguous_public_base(info, adjustedPtr, path_below);
296 __base_class_type_info::has_unambiguous_public_base(__dynamic_cast_info* info,
311 info,
317 __vmi_class_type_info::has_unambiguous_public_base(__dynamic_cast_info* info,
321 if (is_equal(this, info->static_type, false))
322 process_found_base_class(info, adjustedPtr, path_below);
328 p->has_unambiguous_public_base(info, adjustedPtr, path_below);
333 p->has_unambiguous_public_base(info, adjustedPtr, path_below);
334 if (info->search_done)
430 __dynamic_cast_info info = {thrown_class_type, 0, catch_class_type, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
431 info.number_of_dst_type = 1;
432 thrown_class_type->has_unambiguous_public_base(&info, adjustedPtr, public_path);
433 if (info.path_dst_ptr_to_static_ptr == public_path)
436 adjustedPtr = const_cast<void*>(info.dst_ptr_leading_to_static_ptr);
635 // Initialize info struct for this search.
636 __dynamic_cast_info info = {dst_type, static_ptr, static_type, src2dst_offset, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
641 // Using giant short cut. Add that information to info.
642 info.number_of_dst_type = 1;
644 dynamic_type->search_above_dst(&info, dynamic_ptr, dynamic_ptr, public_path, false);
648 if (info.path_dst_ptr_to_static_ptr == unknown)
656 info = {dst_type, static_ptr, static_type, src2dst_offset, 0};
657 info.number_of_dst_type = 1;
658 dynamic_type->search_above_dst(&info, dynamic_ptr, dynamic_ptr, public_path, true);
662 if (info.path_dst_ptr_to_static_ptr == public_path)
668 dynamic_type->search_below_dst(&info, dynamic_ptr, public_path, false);
672 if (info.path_dst_ptr_to_static_ptr == unknown &&
673 info.path_dynamic_ptr_to_static_ptr == unknown)
680 info = {dst_type, static_ptr, static_type, src2dst_offset, 0};
681 dynamic_type->search_below_dst(&info, dynamic_ptr, public_path, true);
685 switch (info.number_to_static_ptr)
688 if (info.number_to_dst_ptr == 1 &&
689 info.path_dynamic_ptr_to_static_ptr == public_path &&
690 info.path_dynamic_ptr_to_dst_ptr == public_path)
691 dst_ptr = info.dst_ptr_not_leading_to_static_ptr;
694 if (info.path_dst_ptr_to_static_ptr == public_path ||
696 info.number_to_dst_ptr == 0 &&
697 info.path_dynamic_ptr_to_static_ptr == public_path &&
698 info.path_dynamic_ptr_to_dst_ptr == public_path
701 dst_ptr = info.dst_ptr_leading_to_static_ptr;
722 __class_type_info::process_static_type_above_dst(__dynamic_cast_info* info,
728 info->found_any_static_type = true;
729 if (current_ptr == info->static_ptr)
732 info->found_our_static_ptr = true;
733 if (info->dst_ptr_leading_to_static_ptr == 0)
736 info->dst_ptr_leading_to_static_ptr = dst_ptr;
737 info->path_dst_ptr_to_static_ptr = path_below;
738 info->number_to_static_ptr = 1;
741 if (info->number_of_dst_type == 1 && info->path_dst_ptr_to_static_ptr == public_path)
742 info->search_done = true;
744 else if (info->dst_ptr_leading_to_static_ptr == dst_ptr)
747 if (info->path_dst_ptr_to_static_ptr == not_public_path)
748 info->path_dst_ptr_to_static_ptr = path_below;
751 if (info->number_of_dst_type == 1 && info->path_dst_ptr_to_static_ptr == public_path)
752 info->search_done = true;
758 info->number_to_static_ptr += 1;
759 info->search_done = true;
769 __class_type_info::process_static_type_below_dst(__dynamic_cast_info* info,
773 if (current_ptr == info->static_ptr)
777 if (info->path_dynamic_ptr_to_static_ptr != public_path)
778 info->path_dynamic_ptr_to_static_ptr = path_below;
796 // __vmi_class_type_info::search_below_dst(__dynamic_cast_info* info,
801 // if (this == info->static_type)
802 // process_static_type_below_dst(info, current_ptr, path_below);
803 // else if (this == info->dst_type)
806 // if (info->path_dynamic_ptr_to_dst_ptr != public_path)
807 // info->path_dynamic_ptr_to_dst_ptr = path_below;
811 // p->search_above_dst(info, current_ptr, current_ptr, public_path);
812 // if (info->found_our_static_ptr)
821 // info->dst_ptr_not_leading_to_static_ptr = current_ptr;
822 // info->number_to_dst_ptr += 1;
830 // p->search_below_dst(info, current_ptr, public_path);
836 __vmi_class_type_info::search_below_dst(__dynamic_cast_info* info,
842 if (is_equal(this, info->static_type, use_strcmp))
843 info, current_ptr, path_below);
844 else if (is_equal(this, info->dst_type, use_strcmp))
848 if (current_ptr == info->dst_ptr_leading_to_static_ptr ||
849 current_ptr == info->dst_ptr_not_leading_to_static_ptr)
855 info->path_dynamic_ptr_to_dst_ptr = public_path;
861 info->path_dynamic_ptr_to_dst_ptr = path_below;
864 if (info->is_dst_type_derived_from_static_type != no)
882 info->found_our_static_ptr = false;
883 info->found_any_static_type = false;
884 p->search_above_dst(info, current_ptr, current_ptr, public_path, use_strcmp);
885 if (info->search_done)
887 if (info->found_any_static_type)
890 if (info->found_our_static_ptr)
894 if (info->path_dst_ptr_to_static_ptr == public_path)
917 info->dst_ptr_not_leading_to_static_ptr = current_ptr;
918 info->number_to_dst_ptr += 1;
923 if (info->number_to_static_ptr == 1 &&
924 info->path_dst_ptr_to_static_ptr == not_public_path)
925 info->search_done = true;
932 info->is_dst_type_derived_from_static_type = yes;
934 info->is_dst_type_derived_from_static_type = no;
943 p->search_below_dst(info, current_ptr, path_below, use_strcmp);
946 if ((__flags & __diamond_shaped_mask) || info->number_to_static_ptr == 1)
954 if (info->search_done)
956 p->search_below_dst(info, current_ptr, path_below, use_strcmp);
966 if (info->search_done)
972 if (info->number_to_static_ptr == 1 &&
973 info->path_dst_ptr_to_static_ptr == public_path)
975 p->search_below_dst(info, current_ptr, path_below, use_strcmp);
985 if (info->search_done)
996 if (info->number_to_static_ptr == 1)
998 p->search_below_dst(info, current_ptr, path_below, use_strcmp);
1008 __si_class_type_info::search_below_dst(__dynamic_cast_info* info,
1013 if (is_equal(this, info->static_type, use_strcmp))
1014 process_static_type_below_dst(info, current_ptr, path_below);
1015 else if (is_equal(this, info->dst_type, use_strcmp))
1019 if (current_ptr == info->dst_ptr_leading_to_static_ptr ||
1020 current_ptr == info->dst_ptr_not_leading_to_static_ptr)
1026 info->path_dynamic_ptr_to_dst_ptr = public_path;
1032 info->path_dynamic_ptr_to_dst_ptr = path_below;
1035 if (info->is_dst_type_derived_from_static_type != no)
1041 info->found_our_static_ptr = false;
1042 info->found_any_static_type = false;
1043 __base_type->search_above_dst(info, current_ptr, current_ptr, public_path, use_strcmp);
1044 if (info->found_any_static_type)
1047 if (info->found_our_static_ptr)
1055 info->dst_ptr_not_leading_to_static_ptr = current_ptr;
1056 info->number_to_dst_ptr += 1;
1060 if (info->number_to_static_ptr == 1 &&
1061 info->path_dst_ptr_to_static_ptr == not_public_path)
1062 info->search_done = true;
1069 info->is_dst_type_derived_from_static_type = yes;
1071 info->is_dst_type_derived_from_static_type = no;
1078 __base_type->search_below_dst(info, current_ptr, path_below, use_strcmp);
1085 __class_type_info::search_below_dst(__dynamic_cast_info* info,
1090 if (is_equal(this, info->static_type, use_strcmp))
1091 process_static_type_below_dst(info, current_ptr, path_below);
1092 else if (is_equal(this, info->dst_type, use_strcmp))
1096 if (current_ptr == info->dst_ptr_leading_to_static_ptr ||
1097 current_ptr == info->dst_ptr_not_leading_to_static_ptr)
1103 info->path_dynamic_ptr_to_dst_ptr = public_path;
1109 info->path_dynamic_ptr_to_dst_ptr = path_below;
1113 info->dst_ptr_not_leading_to_static_ptr = current_ptr;
1114 info->number_to_dst_ptr += 1;
1118 if (info->number_to_static_ptr == 1 &&
1119 info->path_dst_ptr_to_static_ptr == not_public_path)
1120 info->search_done = true;
1122 info->is_dst_type_derived_from_static_type = no;
1135 // __vmi_class_type_info::search_above_dst(__dynamic_cast_info* info,
1140 // if (this == info->static_type)
1141 // process_static_type_above_dst(info, dst_ptr, current_ptr, path_below);
1148 // p->search_above_dst(info, dst_ptr, current_ptr, public_path);
1154 __vmi_class_type_info::search_above_dst(__dynamic_cast_info* info,
1160 if (is_equal(this, info->static_type, use_strcmp))
1161 process_static_type_above_dst(info, dst_ptr, current_ptr, path_below);
1167 bool found_our_static_ptr = info->found_our_static_ptr;
1168 bool found_any_static_type = info->found_any_static_type;
1181 info->found_our_static_ptr = false;
1182 info->found_any_static_type = false;
1183 p->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp);
1188 if (info->search_done)
1190 if (info->found_our_static_ptr)
1193 if (info->path_dst_ptr_to_static_ptr == public_path)
1201 else if (info->found_any_static_type)
1210 info->found_our_static_ptr = false;
1211 info->found_any_static_type = false;
1212 p->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp);
1216 info->found_our_static_ptr = found_our_static_ptr;
1217 info->found_any_static_type = found_any_static_type;
1224 __si_class_type_info::search_above_dst(__dynamic_cast_info* info,
1230 if (is_equal(this, info->static_type, use_strcmp))
1231 process_static_type_above_dst(info, dst_ptr, current_ptr, path_below);
1233 __base_type->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp);
1239 __class_type_info::search_above_dst(__dynamic_cast_info* info,
1245 if (is_equal(this, info->static_type, use_strcmp))
1246 process_static_type_above_dst(info, dst_ptr, current_ptr, path_below);
1254 __base_class_type_info::search_above_dst(__dynamic_cast_info* info,
1266 __base_type->search_above_dst(info, dst_ptr,
1275 __base_class_type_info::search_below_dst(__dynamic_cast_info* info,
1286 __base_type->search_below_dst(info,