{"schema_version":1,"metadata":{"branch":"release","release":"7.9","architecture":"amd64","generated_at":"2026-09-09T04:04:02.361425+00:00","source_url":"https://cdn.openbsd.org/pub/OpenBSD/7.9/packages/amd64/sqlports-7.54.tgz","source_sha256":"2de00144847bf9da3a365be982f101dbb55d591ed7a915ea94984a16ab0e0404","package_count":12059,"source_kind":"sqlports"},"package":{"name":"p5-Class-Virtual-0.08p0","path":"devel/p5-Class-Virtual","url":"/packages/release/devel/p5-Class-Virtual/","comment":"base class for virtual base classes","homepage":"https://metacpan.org/release/Class-Virtual","maintainer":"The OpenBSD ports mailing-list <ports@openbsd.org>","description":"This is a base class for implementing virtual base classes (what\nsome people call an abstract class). Kinda kooky. It allows you to\nexplicitly declare what methods are virtual and that must be\nimplemented by subclasses. This might seem silly, since your program\nwill halt and catch fire when an unimplemented virtual method is\nhit anyway, but there's some benefits.\n\nThe error message is more informative. Instead of the usual \"Can't\nlocate object method\" error, you'll get one explaining that a virtual\nmethod was left unimplemented.\n\nSubclass authors can explicitly check to make sure they've implemented\nall the necessary virtual methods. When used as part of a regression\ntest, it will shield against the virtual method requirements changing\nout from under the subclass.\n\nFinally, subclass authors can get an explicit list of everything\nthey're expected to implement.\n\nDoesn't hurt and it doesn't slow you down.\n","package_architecture":"*","stem":"p5-Class-Virtual","readme":null,"dependencies":[{"path":"devel/p5-Class-Data-Inheritable","type":"runtime","package_spec":"","url":"/packages/release/devel/p5-Class-Data-Inheritable/"},{"path":"devel/p5-Carp-Assert","type":"runtime","package_spec":"","url":"/packages/release/devel/p5-Carp-Assert/"},{"path":"devel/p5-Class-ISA","type":"runtime","package_spec":"","url":"/packages/release/devel/p5-Class-ISA/"},{"path":"devel/p5-Class-Data-Inheritable","type":"build","package_spec":"","url":"/packages/release/devel/p5-Class-Data-Inheritable/"},{"path":"devel/p5-Carp-Assert","type":"build","package_spec":"","url":"/packages/release/devel/p5-Carp-Assert/"},{"path":"devel/p5-Class-ISA","type":"build","package_spec":"","url":"/packages/release/devel/p5-Class-ISA/"},{"path":"devel/p5-Class-Data-Inheritable","type":"test","package_spec":"","url":"/packages/release/devel/p5-Class-Data-Inheritable/"},{"path":"devel/p5-Carp-Assert","type":"test","package_spec":"","url":"/packages/release/devel/p5-Carp-Assert/"},{"path":"devel/p5-Class-ISA","type":"test","package_spec":"","url":"/packages/release/devel/p5-Class-ISA/"}],"reverse_dependencies":{"count":6,"url":"/packages/data/27/2705d39202d544bd85e1b66df97f48989d0d4a7f6afa56cbe61acbcc1a69a8ac.json"},"categories":["devel","perl5"],"flavors":[],"only_for_architectures":[],"not_for_architectures":[]}}
