---
name: "Class::MakeMethods::Utility::Inheritable"
section: "3pm"
platform: "linux"
package: "libclass-makemethods-perl"
version: "1.01-7"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Class::MakeMethods::Utility::Inheritable"
---

# Class::MakeMethods::Utility::Inheritable(3pm)

"Inheritable" data

## NAME

Class::MakeMethods::Utility::Inheritable - "Inheritable" data

## SYNOPSIS

```
  package MyClass;
  sub new { ... }

  package MySubclass;
  @ISA = 'MyClass';
  ...
  my $obj = MyClass->new(...);
  my $subobj = MySubclass->new(...);

  use Class::MakeMethods::Utility::Inheritable qw(get_vvalue set_vvalue );

  my $dataset = {};
  set_vvalue($dataset, 'MyClass', 'Foobar');    # Set value for class
  get_vvalue($dataset, 'MyClass');              # Gets value "Foobar"

  get_vvalue($dataset, $obj);                   # Objects "inherit"
  set_vvalue($dataset, $obj, 'Foible');         # Until you override
  get_vvalue($dataset, $obj);                   # Now finds "Foible"

  get_vvalue($dataset, 'MySubclass');           # Subclass "inherits"
  get_vvalue($dataset, $subobj);                # As do its objects
  set_vvalue($dataset, 'MySubclass', 'Foozle'); # Until we override it
  get_vvalue($dataset, 'MySubclass');           # Now finds "Foozle"

  get_vvalue($dataset, $subobj);                # Change cascades down
  set_vvalue($dataset, $subobj, 'Foolish');     # Until we override again

  get_vvalue($dataset, 'MyClass');              # Superclass is unchanged
```

## DESCRIPTION

This module provides several functions which allow you to store values in a hash corresponding to both objects and classes, and to retrieve those values by searching a object's inheritance tree until it finds a matching entry.

This functionality is used by Class::MakeMethods::Standard::Inheritable and Class::MakeMethods::Composite::Inheritable to construct methods that can both store class data and be overridden on a per-object level.

## REFERENCE

### find\_vself

```
  $vself = find_vself( $dataset, $instance );
```

Searches `$instance`'s inheritance tree until it finds a matching entry in the dataset, and returns either the instance, the class that matched, or undef.

### get\_vvalue

```
  $value = get_vvalue( $dataset, $instance );
```

Searches `$instance`'s inheritance tree until it finds a matching entry in the dataset, and returns that value

### set\_vvalue

```
  $value = set_vvalue( $dataset, $instance, $value );
```

Searches `$instance`'s inheritance tree until it finds a matching entry in the dataset, and returns that value
