# man > Class::XSAccessor::Array

---
type: CommandReference
command: Class::XSAccessor::Array
mode: perldoc
section: 3pm
source: perldoc
---

## Quick Reference

- `use Class::XSAccessor::Array getters => { get_foo => 0 }, setters => { set_foo => 0 }` — generate fast XS getters/setters for array-based objects
- `use Class::XSAccessor::Array constructor => 'new'` — generate a simple XS constructor that blesses an empty array
- `use Class::XSAccessor::Array accessors => { buz => 2 }` — generate a mutator (get/set) for array index 2
- `use Class::XSAccessor::Array predicates => { has_buz => 2 }` — generate a predicate returning true if attribute is defined
- `use Class::XSAccessor::Array lvalue_accessors => { baz => 3 }` — generate an lvalue accessor (experimental)
- `use Class::XSAccessor::Array true => ['is_token'], false => ['significant']` — generate methods that always return true/false
- `use Class::XSAccessor::Array { getters => {...} }` — alternative syntax passing options as hashref

## Name

`Class::XSAccessor::Array` — Generate fast XS accessors for array-based objects without runtime compilation

## Synopsis

perl
package MyClassUsingArraysAsInternalStorage;
use Class::XSAccessor::Array
  constructor => 'new',
  getters => {
    get_foo => 0,
    get_bar => 1,
  },
  setters => {
    set_foo => 0,
    set_bar => 1,
  },
  accessors => { buz => 2 },
  predicates => { has_buz => 2 },
  lvalue_accessors => { baz => 3 },
  true => [ 'is_token', 'is_whitespace' ],
  false => [ 'significant' ];
As of version 1.05, options can be passed as a hash reference:

perl
use Class::XSAccessor {
  getters => {
    get_foo => 0,
    get_bar => 1,
  },
};
## Options

Options are specified as key/value pairs alongside accessor declarations.

- `replace` — set to true to suppress warnings about replacing existing subroutines
- `chained` — set to true to make setters and mutators return the object (mutators called without argument still return attribute value)
- `class` — explicitly specify the class where methods are generated (default: calling class)

## Examples

*Constructor* (discards any parameters):

perl
use Class::XSAccessor::Array constructor => 'new';
# Equivalent to: sub new { my $class = shift; return bless [], ref($class)||$class; }
*Chained setters*:

perl
use Class::XSAccessor::Array
  chained => 1,
  setters => { set_foo => 0, set_bar => 1 };
$obj->set_foo(42)->set_bar(99);  # returns $obj
*Fully qualified method names*:

perl
use Class::XSAccessor::Array getters => { 'MyClass::get_foo' => 0 };
## See Also

- [Class::XSAccessor](http://localhost/phpMan.php/perldoc/Class%3A%3AXSAccessor/markdown) — hash-based version
- [AutoXS](http://localhost/phpMan.php/perldoc/AutoXS/markdown)

## Exit Codes

Not documented.