---
name: "MouseX::NativeTraits::Counter"
section: "3pm"
platform: "linux"
package: "libmousex-nativetraits-perl"
version: "1.09-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/MouseX::NativeTraits::Counter"
---

# MouseX::NativeTraits::Counter(3pm)

Helper trait for counter attributes

## NAME

MouseX::NativeTraits::Counter - Helper trait for counter attributes

## SYNOPSIS

```
  package MyHomePage;
  use Mouse;
  has 'counter' => (
      traits    => ['Counter'],
      is        => 'ro',
      isa       => 'Num',
      default   => 0,
      handles   => {
          inc_counter   => 'inc',
          dec_counter   => 'dec',
          reset_counter => 'reset',
      },
  );
  my $page = MyHomePage->new();
  $page->inc_counter; # same as $page->counter( $page->counter + 1 );
  $page->dec_counter; # same as $page->counter( $page->counter - 1 );
```

## DESCRIPTION

This module provides a simple counter attribute, which can be incremented and decremented.

If your attribute definition does not include any of *is*, *isa*, *default* or *handles* but does use the `"Counter"` trait, then this module applies defaults as in the "SYNOPSIS" above. This allows for a very basic counter definition:

```
  has 'foo' => (traits => ['Counter']);
  $obj->inc_foo;
```

## PROVIDED METHODS

These methods are implemented in MouseX::NativeTraits::MethodProvider::Counter. It is important to note that all those methods do in place modification of the value stored in the attribute.

- **set($value)**

  Set the counter to the specified value.

- **inc**

  Increments the value stored in this slot by 1. Providing an argument will cause the counter to be increased by specified amount.

- **dec**

  Decrements the value stored in this slot by 1. Providing an argument will cause the counter to be increased by specified amount.

- **reset**

  Resets the value stored in this slot to it's default value.

## METHODS

- **meta**

  - **method\_provider\_class**

  - **helper\_type**

  ## SEE ALSO

MouseX::NativeTraits
