---
name: "MooseX::AttributeHelpers::Trait::Counter"
section: "3pm"
platform: "linux"
package: "libmoosex-attributehelpers-perl"
version: "0.25-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/MooseX::AttributeHelpers::Trait::Counter"
---

# MooseX::AttributeHelpers::Trait::Counter(3pm)

simple counter attribute

## NAME

MooseX::AttributeHelpers::Trait::Counter - simple counter attribute

## VERSION

version 0.25

## SYNOPSIS

```
  package MyHomePage;
  use Moose;
  use MooseX::AttributeHelpers;

  has 'counter' => (
      metaclass => 'Counter',
      is        => 'ro',
      isa       => 'Num',
      default   => sub { 0 },
      provides  => {
          inc => 'inc_counter',
          dec => 'dec_counter',
          reset => 'reset_counter',
      }
  );
  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 decremeneted.

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

```
  has 'foo' => (metaclass => 'Counter');
  $obj->inc_foo;
```

## METHODS

- **meta**

  - **method\_provider**

  - **has\_method\_provider**

  - **helper\_type**

  - **process\_options\_for\_provides**

  Run before its superclass method.

- **check\_provides\_values**

  Run after its superclass method.

## PROVIDED METHODS

It is important to note that all those methods do in place modification of the value stored in the attribute.

- *set*

  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.

## SUPPORT

Bugs may be submitted through the RT bug tracker \<https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-AttributeHelpers\> (or bug-MooseX-AttributeHelpers@rt.cpan.org \<mailto:bug-MooseX-AttributeHelpers@rt.cpan.org\>).

There is also a mailing list available for users of this distribution, at \<http://lists.perl.org/list/moose.html\>.

There is also an irc channel available for users of this distribution, at `"#moose"` on `"irc.perl.org"` \<irc://irc.perl.org/#moose\>.

## AUTHOR

Stevan Little \<stevan@iinteractive.com\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2007 by Stevan Little and Infinity Interactive, Inc.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
