_Bool __go_type_equal_empty_interface (const void *vv1, const void *vv2, uintptr_t key_size __attribute__ ((unused))) { const struct __go_empty_interface *v1; const struct __go_empty_interface *v2; const struct __go_type_descriptor* v1_descriptor; const struct __go_type_descriptor* v2_descriptor; v1 = (const struct __go_empty_interface *) vv1; v2 = (const struct __go_empty_interface *) vv2; v1_descriptor = v1->__type_descriptor; v2_descriptor = v2->__type_descriptor; if (v1_descriptor == NULL || v2_descriptor == NULL) return v1_descriptor == v2_descriptor; if (!__go_type_descriptors_equal (v1_descriptor, v2_descriptor)) return 0; if (v1_descriptor->__equalfn == NULL) runtime_panicstring ("comparing uncomparable types"); if (__go_is_pointer_type (v1_descriptor)) return v1->__object == v2->__object; else return __go_call_equalfn (v1_descriptor->__equalfn, v1->__object, v2->__object, v1_descriptor->__size); }
_Bool __go_type_equal_empty_interface (const void *vv1, const void *vv2, size_t key_size __attribute__ ((unused))) { const struct __go_empty_interface *v1; const struct __go_empty_interface *v2; const struct __go_type_descriptor* v1_descriptor; const struct __go_type_descriptor* v2_descriptor; v1 = (const struct __go_empty_interface *) vv1; v2 = (const struct __go_empty_interface *) vv2; v1_descriptor = v1->__type_descriptor; v2_descriptor = v2->__type_descriptor; if (((uintptr_t) v1_descriptor & reflectFlags) != 0 || ((uintptr_t) v2_descriptor & reflectFlags) != 0) runtime_panicstring ("invalid interface value"); if (v1_descriptor == NULL || v2_descriptor == NULL) return v1_descriptor == v2_descriptor; if (!__go_type_descriptors_equal (v1_descriptor, v2_descriptor)) return 0; if (__go_is_pointer_type (v1_descriptor)) return v1->__object == v2->__object; else return v1_descriptor->__equalfn (v1->__object, v2->__object, v1_descriptor->__size); }
int __go_empty_interface_compare (struct __go_empty_interface left, struct __go_empty_interface right) { const struct __go_type_descriptor *left_descriptor; left_descriptor = left.__type_descriptor; if (((uintptr_t) left_descriptor & reflectFlags) != 0 || ((uintptr_t) right.__type_descriptor & reflectFlags) != 0) __go_panic_msg ("invalid interface value"); if (left_descriptor == NULL && right.__type_descriptor == NULL) return 0; if (left_descriptor == NULL || right.__type_descriptor == NULL) return 1; if (!__go_type_descriptors_equal (left_descriptor, right.__type_descriptor)) return 1; if (__go_is_pointer_type (left_descriptor)) return left.__object == right.__object ? 0 : 1; if (!left_descriptor->__equalfn (left.__object, right.__object, left_descriptor->__size)) return 1; return 0; }
int __go_interface_compare (struct __go_interface left, struct __go_interface right) { const struct __go_type_descriptor *left_descriptor; if (left.__methods == NULL && right.__methods == NULL) return 0; if (left.__methods == NULL || right.__methods == NULL) return 1; left_descriptor = left.__methods[0]; if (!__go_type_descriptors_equal (left_descriptor, right.__methods[0])) return 1; if (__go_is_pointer_type (left_descriptor)) return left.__object == right.__object ? 0 : 1; if (!left_descriptor->__equalfn (left.__object, right.__object, left_descriptor->__size)) return 1; return 0; }
_Bool __go_type_equal_interface (const void *vv1, const void *vv2, uintptr_t key_size __attribute__ ((unused))) { const struct __go_interface *v1; const struct __go_interface *v2; const struct __go_type_descriptor* v1_descriptor; const struct __go_type_descriptor* v2_descriptor; v1 = (const struct __go_interface *) vv1; v2 = (const struct __go_interface *) vv2; if (v1->__methods == NULL || v2->__methods == NULL) return v1->__methods == v2->__methods; v1_descriptor = (const struct __go_type_descriptor *) v1->__methods[0]; v2_descriptor = (const struct __go_type_descriptor *) v2->__methods[0]; if (!__go_type_descriptors_equal (v1_descriptor, v2_descriptor)) return 0; if (__go_is_pointer_type (v1_descriptor)) return v1->__object == v2->__object; else return v1_descriptor->__equalfn (v1->__object, v2->__object, v1_descriptor->__size); }