Lines Matching refs:info

235     __dynamic_cast_info info = {thrown_class_type, 0, this, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
236 info.number_of_dst_type = 1;
237 thrown_class_type->has_unambiguous_public_base(&info, adjustedPtr, public_path);
238 if (info.path_dst_ptr_to_static_ptr == public_path)
240 adjustedPtr = const_cast<void*>(info.dst_ptr_leading_to_static_ptr);
251 __class_type_info::process_found_base_class(__dynamic_cast_info* info,
255 if (info->dst_ptr_leading_to_static_ptr == 0)
258 info->dst_ptr_leading_to_static_ptr = adjustedPtr;
259 info->path_dst_ptr_to_static_ptr = path_below;
260 info->number_to_static_ptr = 1;
262 else if (info->dst_ptr_leading_to_static_ptr == adjustedPtr)
265 if (info->path_dst_ptr_to_static_ptr == not_public_path)
266 info->path_dst_ptr_to_static_ptr = path_below;
272 info->number_to_static_ptr += 1;
273 info->path_dst_ptr_to_static_ptr = not_public_path;
274 info->search_done = true;
279 __class_type_info::has_unambiguous_public_base(__dynamic_cast_info* info,
283 if (is_equal(this, info->static_type, false))
284 process_found_base_class(info, adjustedPtr, path_below);
288 __si_class_type_info::has_unambiguous_public_base(__dynamic_cast_info* info,
292 if (is_equal(this, info->static_type, false))
293 process_found_base_class(info, adjustedPtr, path_below);
295 __base_type->has_unambiguous_public_base(info, adjustedPtr, path_below);
299 __base_class_type_info::has_unambiguous_public_base(__dynamic_cast_info* info,
314 info,
320 __vmi_class_type_info::has_unambiguous_public_base(__dynamic_cast_info* info,
324 if (is_equal(this, info->static_type, false))
325 process_found_base_class(info, adjustedPtr, path_below);
331 p->has_unambiguous_public_base(info, adjustedPtr, path_below);
336 p->has_unambiguous_public_base(info, adjustedPtr, path_below);
337 if (info->search_done)
433 __dynamic_cast_info info = {thrown_class_type, 0, catch_class_type, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
434 info.number_of_dst_type = 1;
435 thrown_class_type->has_unambiguous_public_base(&info, adjustedPtr, public_path);
436 if (info.path_dst_ptr_to_static_ptr == public_path)
439 adjustedPtr = const_cast<void*>(info.dst_ptr_leading_to_static_ptr);
653 // Initialize info struct for this search.
654 __dynamic_cast_info info = {dst_type, static_ptr, static_type, src2dst_offset, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,};
659 // Using giant short cut. Add that information to info.
660 info.number_of_dst_type = 1;
662 dynamic_type->search_above_dst(&info, dynamic_ptr, dynamic_ptr, public_path, false);
666 if (info.path_dst_ptr_to_static_ptr == unknown)
678 info = {dst_type, static_ptr, static_type, src2dst_offset, 0};
679 info.number_of_dst_type = 1;
680 dynamic_type->search_above_dst(&info, dynamic_ptr, dynamic_ptr, public_path, true);
684 if (info.path_dst_ptr_to_static_ptr == public_path)
690 dynamic_type->search_below_dst(&info, dynamic_ptr, public_path, false);
694 if (info.path_dst_ptr_to_static_ptr == unknown &&
695 info.path_dynamic_ptr_to_static_ptr == unknown)
707 info = {dst_type, static_ptr, static_type, src2dst_offset, 0};
708 dynamic_type->search_below_dst(&info, dynamic_ptr, public_path, true);
712 switch (info.number_to_static_ptr)
715 if (info.number_to_dst_ptr == 1 &&
716 info.path_dynamic_ptr_to_static_ptr == public_path &&
717 info.path_dynamic_ptr_to_dst_ptr == public_path)
718 dst_ptr = info.dst_ptr_not_leading_to_static_ptr;
721 if (info.path_dst_ptr_to_static_ptr == public_path ||
723 info.number_to_dst_ptr == 0 &&
724 info.path_dynamic_ptr_to_static_ptr == public_path &&
725 info.path_dynamic_ptr_to_dst_ptr == public_path
728 dst_ptr = info.dst_ptr_leading_to_static_ptr;
749 __class_type_info::process_static_type_above_dst(__dynamic_cast_info* info,
755 info->found_any_static_type = true;
756 if (current_ptr == info->static_ptr)
759 info->found_our_static_ptr = true;
760 if (info->dst_ptr_leading_to_static_ptr == 0)
763 info->dst_ptr_leading_to_static_ptr = dst_ptr;
764 info->path_dst_ptr_to_static_ptr = path_below;
765 info->number_to_static_ptr = 1;
768 if (info->number_of_dst_type == 1 && info->path_dst_ptr_to_static_ptr == public_path)
769 info->search_done = true;
771 else if (info->dst_ptr_leading_to_static_ptr == dst_ptr)
774 if (info->path_dst_ptr_to_static_ptr == not_public_path)
775 info->path_dst_ptr_to_static_ptr = path_below;
778 if (info->number_of_dst_type == 1 && info->path_dst_ptr_to_static_ptr == public_path)
779 info->search_done = true;
785 info->number_to_static_ptr += 1;
786 info->search_done = true;
796 __class_type_info::process_static_type_below_dst(__dynamic_cast_info* info,
800 if (current_ptr == info->static_ptr)
804 if (info->path_dynamic_ptr_to_static_ptr != public_path)
805 info->path_dynamic_ptr_to_static_ptr = path_below;
823 // __vmi_class_type_info::search_below_dst(__dynamic_cast_info* info,
828 // if (this == info->static_type)
829 // process_static_type_below_dst(info, current_ptr, path_below);
830 // else if (this == info->dst_type)
833 // if (info->path_dynamic_ptr_to_dst_ptr != public_path)
834 // info->path_dynamic_ptr_to_dst_ptr = path_below;
838 // p->search_above_dst(info, current_ptr, current_ptr, public_path);
839 // if (info->found_our_static_ptr)
848 // info->dst_ptr_not_leading_to_static_ptr = current_ptr;
849 // info->number_to_dst_ptr += 1;
857 // p->search_below_dst(info, current_ptr, public_path);
863 __vmi_class_type_info::search_below_dst(__dynamic_cast_info* info,
869 if (is_equal(this, info->static_type, use_strcmp))
870 process_static_type_below_dst(info, current_ptr, path_below);
871 else if (is_equal(this, info->dst_type, use_strcmp))
875 if (current_ptr == info->dst_ptr_leading_to_static_ptr ||
876 current_ptr == info->dst_ptr_not_leading_to_static_ptr)
882 info->path_dynamic_ptr_to_dst_ptr = public_path;
888 info->path_dynamic_ptr_to_dst_ptr = path_below;
892 if (info->is_dst_type_derived_from_static_type != no)
910 info->found_our_static_ptr = false;
911 info->found_any_static_type = false;
912 p->search_above_dst(info, current_ptr, current_ptr, public_path, use_strcmp);
913 if (info->search_done)
915 if (info->found_any_static_type)
918 if (info->found_our_static_ptr)
922 if (info->path_dst_ptr_to_static_ptr == public_path)
945 info->is_dst_type_derived_from_static_type = yes;
947 info->is_dst_type_derived_from_static_type = no;
954 info->dst_ptr_not_leading_to_static_ptr = current_ptr;
955 info->number_to_dst_ptr += 1;
960 if (info->number_to_static_ptr == 1 &&
961 info->path_dst_ptr_to_static_ptr == not_public_path)
962 info->search_done = true;
971 p->search_below_dst(info, current_ptr, path_below, use_strcmp);
974 if ((__flags & __diamond_shaped_mask) || info->number_to_static_ptr == 1)
982 if (info->search_done)
984 p->search_below_dst(info, current_ptr, path_below, use_strcmp);
994 if (info->search_done)
1000 if (info->number_to_static_ptr == 1 &&
1001 info->path_dst_ptr_to_static_ptr == public_path)
1003 p->search_below_dst(info, current_ptr, path_below, use_strcmp);
1013 if (info->search_done)
1024 if (info->number_to_static_ptr == 1)
1026 p->search_below_dst(info, current_ptr, path_below, use_strcmp);
1036 __si_class_type_info::search_below_dst(__dynamic_cast_info* info,
1041 if (is_equal(this, info->static_type, use_strcmp))
1042 process_static_type_below_dst(info, current_ptr, path_below);
1043 else if (is_equal(this, info->dst_type, use_strcmp))
1047 if (current_ptr == info->dst_ptr_leading_to_static_ptr ||
1048 current_ptr == info->dst_ptr_not_leading_to_static_ptr)
1054 info->path_dynamic_ptr_to_dst_ptr = public_path;
1060 info->path_dynamic_ptr_to_dst_ptr = path_below;
1064 if (info->is_dst_type_derived_from_static_type != no)
1069 info->found_our_static_ptr = false;
1070 info->found_any_static_type = false;
1071 __base_type->search_above_dst(info, current_ptr, current_ptr, public_path, use_strcmp);
1072 if (info->found_any_static_type)
1075 if (info->found_our_static_ptr)
1083 info->is_dst_type_derived_from_static_type = yes;
1085 info->is_dst_type_derived_from_static_type = no;
1092 info->dst_ptr_not_leading_to_static_ptr = current_ptr;
1093 info->number_to_dst_ptr += 1;
1097 if (info->number_to_static_ptr == 1 &&
1098 info->path_dst_ptr_to_static_ptr == not_public_path)
1099 info->search_done = true;
1106 __base_type->search_below_dst(info, current_ptr, path_below, use_strcmp);
1113 __class_type_info::search_below_dst(__dynamic_cast_info* info,
1118 if (is_equal(this, info->static_type, use_strcmp))
1119 process_static_type_below_dst(info, current_ptr, path_below);
1120 else if (is_equal(this, info->dst_type, use_strcmp))
1124 if (current_ptr == info->dst_ptr_leading_to_static_ptr ||
1125 current_ptr == info->dst_ptr_not_leading_to_static_ptr)
1131 info->path_dynamic_ptr_to_dst_ptr = public_path;
1137 info->path_dynamic_ptr_to_dst_ptr = path_below;
1141 info->dst_ptr_not_leading_to_static_ptr = current_ptr;
1142 info->number_to_dst_ptr += 1;
1146 if (info->number_to_static_ptr == 1 &&
1147 info->path_dst_ptr_to_static_ptr == not_public_path)
1148 info->search_done = true;
1150 info->is_dst_type_derived_from_static_type = no;
1163 // __vmi_class_type_info::search_above_dst(__dynamic_cast_info* info,
1168 // if (this == info->static_type)
1169 // process_static_type_above_dst(info, dst_ptr, current_ptr, path_below);
1176 // p->search_above_dst(info, dst_ptr, current_ptr, public_path);
1182 __vmi_class_type_info::search_above_dst(__dynamic_cast_info* info,
1188 if (is_equal(this, info->static_type, use_strcmp))
1189 process_static_type_above_dst(info, dst_ptr, current_ptr, path_below);
1195 bool found_our_static_ptr = info->found_our_static_ptr;
1196 bool found_any_static_type = info->found_any_static_type;
1209 info->found_our_static_ptr = false;
1210 info->found_any_static_type = false;
1211 p->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp);
1212 found_our_static_ptr |= info->found_our_static_ptr;
1213 found_any_static_type |= info->found_any_static_type;
1218 if (info->search_done)
1220 if (info->found_our_static_ptr)
1223 if (info->path_dst_ptr_to_static_ptr == public_path)
1231 else if (info->found_any_static_type)
1240 info->found_our_static_ptr = false;
1241 info->found_any_static_type = false;
1242 p->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp);
1243 found_our_static_ptr |= info->found_our_static_ptr;
1244 found_any_static_type |= info->found_any_static_type;
1248 info->found_our_static_ptr = found_our_static_ptr;
1249 info->found_any_static_type = found_any_static_type;
1256 __si_class_type_info::search_above_dst(__dynamic_cast_info* info,
1262 if (is_equal(this, info->static_type, use_strcmp))
1263 process_static_type_above_dst(info, dst_ptr, current_ptr, path_below);
1265 __base_type->search_above_dst(info, dst_ptr, current_ptr, path_below, use_strcmp);
1271 __class_type_info::search_above_dst(__dynamic_cast_info* info,
1277 if (is_equal(this, info->static_type, use_strcmp))
1278 process_static_type_above_dst(info, dst_ptr, current_ptr, path_below);
1286 __base_class_type_info::search_above_dst(__dynamic_cast_info* info,
1298 __base_type->search_above_dst(info, dst_ptr,
1307 __base_class_type_info::search_below_dst(__dynamic_cast_info* info,
1318 __base_type->search_below_dst(info,