_owner =& $owner; } function &get(&$state) { $owner =& $this->owner(); $value =& $owner->get($state); $subvalue =& $this->get_value($value); return $subvalue; } function is_subproperty() { return true; } function &owner() { return $this->_owner; } function default_value() { } function inherit($old_state, &$new_state) { } function inherit_text($old_state, &$new_state) { } function replace_array($value, &$state_array) { $owner =& $this->owner(); $owner_value = $state_array[$owner->get_property_code()]; if (is_object($owner_value)) { $owner_value = $owner_value->copy(); }; if (is_object($value)) { $this->set_value($owner_value, $value->copy()); } else { $this->set_value($owner_value, $value); }; $state_array[$owner->get_property_code()] = $owner_value; } function replace($value, &$state) { $owner =& $this->owner(); $owner_value = $owner->get($state->getState()); if (is_object($owner_value)) { $owner_value =& $owner_value->copy(); }; if (is_object($value)) { $value_copy =& $value->copy(); $this->set_value($owner_value, $value_copy); } else { $this->set_value($owner_value, $value); }; $owner->replaceDefault($owner_value, $state); $state->set_propertyDefaultFlag($this->get_property_code(), false); } function set_value(&$owner_value, &$value) { error_no_method('set_value', get_class($this)); } function &get_value(&$owner_value) { error_no_method('get_value', get_class($this)); } } ?>