__rhandle = $rhandle; $this->__epoch = $epoch; } public function __destruct() { \ShirabeRustObjectRegistry::release($this->__rhandle); } public function __shirabeRustHandleDescriptor(): array { return [ '__rhandle' => $this->__rhandle, '__class' => static::class, '__epoch' => $this->__epoch, ]; } public function __clone() { // PHP has already shallow-copied this stub, so both copies would point at one // entity and release it twice. The Rust side clones the entity instead, applying // whatever __clone semantics the real class defines, and this copy rebinds to the // fresh handle. Entities without clone semantics answer with an explicit error. [$this->__rhandle, $this->__epoch] = \ShirabeRpcRuntime::callRust($this->__rhandle, '__shirabeClone', []); \ShirabeRustObjectRegistry::adopt($this->__rhandle, $this); } public function hasPackage(PackageInterface $package) { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'hasPackage', [$package]); } public function findPackage(string $name, $constraint) { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'findPackage', [$name, $constraint]); } public function findPackages(string $name, $constraint = null) { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'findPackages', [$name, $constraint]); } public function getPackages() { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'getPackages', []); } public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = []) { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'loadPackages', [$packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded]); } public function search(string $query, int $mode = 0, ?string $type = null) { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'search', [$query, $mode, $type]); } public function getProviders(string $packageName) { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'getProviders', [$packageName]); } public function getRepoName() { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'getRepoName', []); } public function addPackage(PackageInterface $package) { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'addPackage', [$package]); } public function removePackage(PackageInterface $package) { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'removePackage', [$package]); } public function count(): int { return \ShirabeRpcRuntime::callRust($this->__rhandle, 'count', []); } }