GHashTable * Type::CopyProperties (bool inherited) { GHashTable *props = g_hash_table_new (g_str_hash, g_str_equal); Type *type = this; do { if (type->properties) g_hash_table_foreach (type->properties, property_add, props); if (!inherited || !type->HasParent ()) break; type = type->GetParentType (); } while (type); return props; }
DependencyProperty * DependencyProperty::GetDependencyPropertyFull (Type::Kind type, const char *name, bool inherits) { DependencyProperty *property; Type *t = Type::Find (Deployment::GetCurrent (), type); if (t == NULL) return NULL; property = GetDependencyProperty (t, name, inherits); if (property == NULL) { if (inherits) property = GetDependencyProperty (t, name, false); if (property == NULL && t->HasParent ()) return GetDependencyPropertyFull (t->GetParentType (), name, inherits); } return property; }