Changeset View
Changeset View
Standalone View
Standalone View
src/hardpoint/ArcanistHardpointObject.php
- This file was added.
| <?php | |||||
| abstract class ArcanistHardpointObject | |||||
| extends Phobject { | |||||
| private $hardpointList; | |||||
| final public function getHardpoint($hardpoint) { | |||||
| return $this->getHardpointList()->getHardpoint( | |||||
| $this, | |||||
| $hardpoint); | |||||
| } | |||||
| final public function attachHardpoint($hardpoint, $value) { | |||||
| $this->getHardpointList()->attachHardpoint( | |||||
| $this, | |||||
| $hardpoint, | |||||
| $value); | |||||
| return $this; | |||||
| } | |||||
| final public function mergeHardpoint($hardpoint, $value) { | |||||
| $hardpoint_list = $this->getHardpointList(); | |||||
| $hardpoint_def = $hardpoint_list->getHardpointDefinition( | |||||
| $this, | |||||
| $hardpoint); | |||||
| $old_value = $this->getHardpoint($hardpoint); | |||||
| $new_value = $hardpoint_def->mergeHardpointValues( | |||||
| $this, | |||||
| $old_value, | |||||
| $value); | |||||
| $hardpoint_list->setHardpointValue( | |||||
| $this, | |||||
| $hardpoint, | |||||
| $new_value); | |||||
| return $this; | |||||
| } | |||||
| final public function hasHardpoint($hardpoint) { | |||||
| return $this->getHardpointList()->hasHardpoint($this, $hardpoint); | |||||
| } | |||||
| final public function hasAttachedHardpoint($hardpoint) { | |||||
| return $this->getHardpointList()->hasAttachedHardpoint( | |||||
| $this, | |||||
| $hardpoint); | |||||
| } | |||||
| protected function newHardpoints() { | |||||
| return array(); | |||||
| } | |||||
| final protected function newHardpoint($hardpoint_key) { | |||||
| return id(new ArcanistScalarHardpoint()) | |||||
| ->setHardpointKey($hardpoint_key); | |||||
| } | |||||
| final protected function newVectorHardpoint($hardpoint_key) { | |||||
| return id(new ArcanistVectorHardpoint()) | |||||
| ->setHardpointKey($hardpoint_key); | |||||
| } | |||||
| final public function getHardpointList() { | |||||
| if ($this->hardpointList === null) { | |||||
| $list = $this->newHardpointList(); | |||||
| // TODO: Cache the hardpoint list with the class name as a key? If so, | |||||
| // it needs to be purged when the request cache is purged. | |||||
| $hardpoints = $this->newHardpoints(); | |||||
| // TODO: Verify the hardpoints list is structured properly. | |||||
| $list->setHardpoints($hardpoints); | |||||
| $this->hardpointList = $list; | |||||
| } | |||||
| return $this->hardpointList; | |||||
| } | |||||
| private function newHardpointList() { | |||||
| return new ArcanistHardpointList(); | |||||
| } | |||||
| } | |||||